Upload
-
View
8.189
Download
0
Embed Size (px)
Citation preview
森理 麟(moririring)
Windowsでの
自動化の
作り方入門
自己紹介
森理 麟(moriri-ring)● 職業 : ゲームプログラマ● Twitter : @moririring● ブログ : 森理 麟(moririring)のプログラマブログ● 自作アプリ : クッキツイート,HashifyWin● コミュニティ : VSハッカソン倶楽部
本日の内容に関して
最新技術の話はなし。
代わりに長く使える基本の話。
自動化ですが
このおじさんの話は…なし。
今日のアテンド
● 自動化とは
● 自動化するための技術
● 自動化の実装
● 自動化の応用
自動化とは?
What is Automation?
自動化とは?
人間が行っていた動作を機械に代替して作業要員を減らすこと(Wikipediaより)。
パソコンがやるのが一番効率的だから。言われたこと以外出来ないが言われたことは確実にやる。
なぜパソコンにやらせる?
どうやってパソコンにやらせる?
パソコンに作業を命令する必要がある。作業の命令とはつまりプログラミング。
何をパソコンにやらせる?
ルーチンワークと呼ばれるような作業はほぼ全て自動化してパソコンにやらせるべき。
プログラム出来ないことは?
パソコン上で人間がやる作業で、プログラム出来ない作業は理論上ない。
自動化で人間は怠けるか?
以前ある作業を自動化した時に「人間を怠けさせる仕組みだ」と言われた。しかし、これは間違い。
人間がやるべきことは?
人間は言われたことをさらに良くすることが出来る。すなわちクリエイティブなことをしよう。
何のために自動化をするか?
シンプルに言うと今より少しでも良くすること。毎日続ければ今日より良い明日がずっと来る。
まとめ
● 自動化とは作業をパソコンにやらせること
● パソコンにやらせるためにはプログラミング
● ルーチンワークは全てパソコンに任す
● 空いた時間で人間はクリエイティブなことを
● 自動化は今日より良い明日のためにする
自動化するための
技術
Technology for Automation
バッチ
もっとも簡単に自動化する技術。自動化の基本中の基本。それがバッチ。 バッチは短時間で、シンプルに書ける。実行、配布、修正に至るまでとても簡単。バッチだけでもかなりの自動化は可能。 但し、決められた命令しか使えない。数も多くない。全ての自動化をバッチだけでやるのは難しい。
WSH
Windows Script Host(WSH)。
JScriptとVBScriptの総称。
バッチと同様、Windows上でファイルを作るだけで実行出来る。配布、修正も楽。 バッチで出来ないファイル入出力やActiveXによるアプリ制御可能。その分バッチよりは記述が多くなる。
jscript vs vbscript
VBSとJSのどちらを使えば良いかは難しいところ。
やれることにあまり差はない。VBSの方が文献は多い。 JSの方がコンパイル言語(特にC系;)に近い記述ができる。 因みにJScript=JavaScriptではない。
jsとvbs
実際のアプリ側のスクリプトにもこの2つが使われているケースは多い。● ExcelはVBA制御
● WEBやスマートフォンはJavaScript
● Adobe系はオリジナルのjs(jsx,jsfl)が多い
● autodesk系はjs、vbsどちらも対応している
PS
Windows PowerShell(PS)はバッチの短所を補うために開発されたシェル及びスクリプト言語。 当然バッチよりも多くの機能がある。短い命令を組み合わせて、多くのことをシンプルに書くことが可能。 標準搭載はWindows7から。WSHは今後発展せず、PSに変わっていく。
その他スクリプト言語
Windowsのファイル制御やActiveXの機能などは各スクリプト言語を使えばほぼ同じことが可能。 PerlやRuby、PythonなどでもWSHと同等程度の自動化は出来る。 得意な言語があればそれらを使う選択肢もあり。
Visual Studio
Visual Studio(VS)はVBかC#でGUIアプリを作成することが出来る。 exeで提供出来るため、使い手側も楽で高速。
COMでアプリの制御も出来る。機能的には他で出来ることで出来ないことは殆どない。 GUIでの開発が可能なため、効率も良い。
自動化の技術
自動化に使う技術は、その環境に最初から組み込まれいるネイティブな技術が良い。配布、メンテナンスなども含めたトータルで言うと一番楽。 個人的には、現状ではバッチとWSH。将来性も込みやWin7環境のみならバッチとPS。GUI込みで提供したいならVS。 その他興味や自分の周りの環境で選ぶのもアリ。
まとめ(個人的見解)
技術 手軽さ 機能 記述量 将来性 配布 資料 下位互換
◎ × ◯ × ◎ △ ◯
◯ ◯ ◎ ◯ △ × ◯
◎ △ × × ◎ △ ◯
スクリプト言語 △ △ × ◯ × ◯ × × ◎ △ ◯ ◯ ◯ ◯
まとめ(個人的見解)
技術 手軽さ 機能 記述量 将来性 配布 資料 下位互換
◎ × ◯ × ◎ △ ◯
◯ ◯ ◎ ◯ △ × ◯
◎ △ × × ◎ △ ◯
スクリプト言語 △ △ × ◯ × ◯ ×
◎ ◎ ◎ ◎ ◎ ◎ ◎
自動化の実践
Practice of Automation
具体的な自動化の作り方
バッチとWSHを使って、バージョン管理ツールでソースを取得して、VisualStudioでビルドして、結果をIMで投げるという自動化の作り方。
自動化の作り方が分からない時
どうやって自動化すれば良いか分からない時は、実行したいアプリのマニュアルを読めばよい。恐らくそれが一番近道。
自動化はプログラムのように設計する
クラスのようにSVNで1ファイル、VSのビルドで1ファイルと実行する単位で作るのが良い。 パスなどのマジックナンバーはクラス内に入れず、全部のファイルを呼び出すファイルから引数として渡す。 このように作ることで変更、修正にも強い自動化が可能。オブジェクト指向は何にでも使える。
DEMO
DEMO
自動化は必ずワンクリック
自動化の作り方の重要なポイントとして、ワンクリックしたら、後は待っていれば全ての作業が終わるように作る。
手動で叩くでは自動化とは言えない
いつ終わるか分からない場合、終わったことを確認する作業が必要。これは非常に無駄が多い。 ● 確認にいくたびに一旦作業が中止される● 叩くファイルを間違えることもある● 戻って来た時も、思い出すのに時間が必要● 脳内に無駄なタスクが置いてある状態。● 完全に忘れると今度は終了を気づかない● 1回5分の作業でも結果かなりの時間が潰れる
ワンクリックにしたことで気づいたメリット
マニュアルも引き継ぎもなくても、気軽に作業を頼むことが出来る。
完全な自動化
Windowsにはタスクという機能がある。これを使えば、手軽に完全な自動化が可能。
まとめ
● 方法が分からない時はマニュアルを読む
● 自動化はプログラムを組むように作る
● ワンクリックで全ての作業が終わるように作る
● タイマーで完全自動化が可能
自動化の応用
Application of Automation
自動化は広げていく方が効果は高い
今までの話で個人レベルでの自動化はほぼ可能。ビルドでも、コンバートでも、レンダリングでも、デプロイでも、自動化は効果が高い。 さらにチームやプロジェクト単位でデータを扱うことでもっと効果は高くなる。しかし、皆が使うような永続的な自動化は作ってイコール完成ではない。
完全自動化でもメンテは必要
毎日自動で動く状態を維持し続けると、トラブルは起きる。手動でやるより遥かにコストは下がるが、それでもゼロになる事はほぼない。
さまざまなトラブル(一例)
● 作成と上書きで処理が違う。● 呼び出すべきファイルを他の実行ファイルでロッ
クしている。● 長期休みや停電● サーバーへの接続が出来ない● WindowsUpdateで自動再起動される● 自動化するはずのパソコンなのに帰りに電源を
切られてしまう。● 設定がスリープ状態になっている。● ローカルの編集と衝突する● アプリのバージョンが違う● パソコンが故障● 確認ウィンドウで次の動作に行かず
修正は出来る限り自動化で直せるように
トラブルの修正で一番大事なのは、次は同じことが起きないように根本的な修正をすること。 特にパソコン上のトラブルは、タイムアウトや連続実行、強制終了などの対応をして、自動で修復出来るような修正を可能な限り考える。
自動化の状況を知るためにログ
トラブルの時重要なのがログ。作業経過をログに残し、何処まで作業をやったかを分かるように。
ログはシンプルにして共有する
ログは誰でも見えるようにする。ただしログは詳細であっても、入り口はシンプルにして共有する。基本エラーがあるかないかだけ分かれば十分。
連絡をして導線を作る
ログを見えるようにしていても、見てくれるのは最初は少数。みんなが必ず見る場所に分かりやすく連絡を入れる。そこからログへの導線を作る。
エラーの見える化でチームに良い循環を
ものづくりはエラーとの戦いとも言える。チーム単位で自動化するならエラーを見える化しよう。これでチームに良い循環を作ろう! ● エラーを出したことすぐに気づける● エラーに巻き込まれることもない● エラーの修正・確認も手早く出来る● エラーを出したらすぐに直す習慣が付く● エラーのメンテ自体を罰ゲームにしてエラー自
体を減らす
まとめ
● 自動化は扱うデータを増やすことで効果が増す
● 毎日自動で動く状態でもメンテコストは必須
● 自動化した場合は必ずログが見えるように
● エラーの見える化で良い循環を作る
最後に
● 自動化は身近なところからはじめよう
● 自動化で時間を作ってさらに良くしよう
● 自動化に多くを巻き込んで、効果を大きくしよう
● 自動化は今日より良い明日のために
告知
VSハッカソン倶楽部 大阪 第2回 イベント
MetroStyleハッカソン 2Days 開催決定!
7/14(土) MetroStyleDeveloper
×VSハッカソン倶楽部 MetroStyleアイデアソン
7/21(土) VSハッカソン倶楽部×MetroStyleDeveloper MetroStyleハッカソン
以上
ご清聴有難うございました。