49
森理 麟(moririring) Windowsでの 自動化の 作り方入門

Windowsでの 自動化の 作り方入門

  • Upload
    -

  • View
    8.189

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Windowsでの 自動化の 作り方入門

森理 麟(moririring)

Windowsでの

自動化の

作り方入門

Page 2: Windowsでの 自動化の 作り方入門

自己紹介

   森理 麟(moriri-ring)● 職業 : ゲームプログラマ● Twitter : @moririring● ブログ : 森理 麟(moririring)のプログラマブログ● 自作アプリ : クッキツイート,HashifyWin● コミュニティ : VSハッカソン倶楽部

Page 3: Windowsでの 自動化の 作り方入門

本日の内容に関して

最新技術の話はなし。

代わりに長く使える基本の話。

Page 4: Windowsでの 自動化の 作り方入門

自動化ですが

このおじさんの話は…なし。

Page 5: Windowsでの 自動化の 作り方入門

今日のアテンド

● 自動化とは

● 自動化するための技術

● 自動化の実装

● 自動化の応用

Page 6: Windowsでの 自動化の 作り方入門

自動化とは?

What is Automation?

Page 7: Windowsでの 自動化の 作り方入門

自動化とは?

人間が行っていた動作を機械に代替して作業要員を減らすこと(Wikipediaより)。

Page 8: Windowsでの 自動化の 作り方入門

パソコンがやるのが一番効率的だから。言われたこと以外出来ないが言われたことは確実にやる。

なぜパソコンにやらせる?

Page 9: Windowsでの 自動化の 作り方入門

どうやってパソコンにやらせる?

パソコンに作業を命令する必要がある。作業の命令とはつまりプログラミング。

Page 10: Windowsでの 自動化の 作り方入門

何をパソコンにやらせる?

ルーチンワークと呼ばれるような作業はほぼ全て自動化してパソコンにやらせるべき。

Page 11: Windowsでの 自動化の 作り方入門

プログラム出来ないことは?

パソコン上で人間がやる作業で、プログラム出来ない作業は理論上ない。

Page 12: Windowsでの 自動化の 作り方入門

自動化で人間は怠けるか?

以前ある作業を自動化した時に「人間を怠けさせる仕組みだ」と言われた。しかし、これは間違い。

Page 13: Windowsでの 自動化の 作り方入門

人間がやるべきことは?

人間は言われたことをさらに良くすることが出来る。すなわちクリエイティブなことをしよう。

Page 14: Windowsでの 自動化の 作り方入門

何のために自動化をするか?

シンプルに言うと今より少しでも良くすること。毎日続ければ今日より良い明日がずっと来る。

Page 15: Windowsでの 自動化の 作り方入門

まとめ

● 自動化とは作業をパソコンにやらせること

● パソコンにやらせるためにはプログラミング

● ルーチンワークは全てパソコンに任す

● 空いた時間で人間はクリエイティブなことを

● 自動化は今日より良い明日のためにする

Page 16: Windowsでの 自動化の 作り方入門

自動化するための

技術

Technology for Automation

Page 17: Windowsでの 自動化の 作り方入門

バッチ

もっとも簡単に自動化する技術。自動化の基本中の基本。それがバッチ。 バッチは短時間で、シンプルに書ける。実行、配布、修正に至るまでとても簡単。バッチだけでもかなりの自動化は可能。 但し、決められた命令しか使えない。数も多くない。全ての自動化をバッチだけでやるのは難しい。

Page 18: Windowsでの 自動化の 作り方入門

WSH

Windows Script Host(WSH)。

JScriptとVBScriptの総称。

バッチと同様、Windows上でファイルを作るだけで実行出来る。配布、修正も楽。 バッチで出来ないファイル入出力やActiveXによるアプリ制御可能。その分バッチよりは記述が多くなる。

Page 19: Windowsでの 自動化の 作り方入門

jscript vs vbscript

VBSとJSのどちらを使えば良いかは難しいところ。

やれることにあまり差はない。VBSの方が文献は多い。 JSの方がコンパイル言語(特にC系;)に近い記述ができる。 因みにJScript=JavaScriptではない。

Page 20: Windowsでの 自動化の 作り方入門

jsとvbs

実際のアプリ側のスクリプトにもこの2つが使われているケースは多い。● ExcelはVBA制御

● WEBやスマートフォンはJavaScript

● Adobe系はオリジナルのjs(jsx,jsfl)が多い

● autodesk系はjs、vbsどちらも対応している

Page 21: Windowsでの 自動化の 作り方入門

PS

Windows PowerShell(PS)はバッチの短所を補うために開発されたシェル及びスクリプト言語。 当然バッチよりも多くの機能がある。短い命令を組み合わせて、多くのことをシンプルに書くことが可能。 標準搭載はWindows7から。WSHは今後発展せず、PSに変わっていく。

Page 22: Windowsでの 自動化の 作り方入門

その他スクリプト言語

Windowsのファイル制御やActiveXの機能などは各スクリプト言語を使えばほぼ同じことが可能。 PerlやRuby、PythonなどでもWSHと同等程度の自動化は出来る。 得意な言語があればそれらを使う選択肢もあり。

Page 23: Windowsでの 自動化の 作り方入門

Visual Studio

Visual Studio(VS)はVBかC#でGUIアプリを作成することが出来る。 exeで提供出来るため、使い手側も楽で高速。

COMでアプリの制御も出来る。機能的には他で出来ることで出来ないことは殆どない。 GUIでの開発が可能なため、効率も良い。

Page 24: Windowsでの 自動化の 作り方入門

自動化の技術

自動化に使う技術は、その環境に最初から組み込まれいるネイティブな技術が良い。配布、メンテナンスなども含めたトータルで言うと一番楽。 個人的には、現状ではバッチとWSH。将来性も込みやWin7環境のみならバッチとPS。GUI込みで提供したいならVS。 その他興味や自分の周りの環境で選ぶのもアリ。

Page 25: Windowsでの 自動化の 作り方入門

まとめ(個人的見解)

技術 手軽さ 機能 記述量 将来性 配布 資料 下位互換

◎ × ◯ × ◎ △ ◯

◯ ◯ ◎ ◯ △ × ◯

◎ △ × × ◎ △ ◯

スクリプト言語 △ △ × ◯ × ◯ × × ◎ △ ◯ ◯ ◯ ◯

Page 26: Windowsでの 自動化の 作り方入門

まとめ(個人的見解)

技術 手軽さ 機能 記述量 将来性 配布 資料 下位互換

◎ × ◯ × ◎ △ ◯

◯ ◯ ◎ ◯ △ × ◯

◎ △ × × ◎ △ ◯

スクリプト言語 △ △ × ◯ × ◯ ×

◎ ◎ ◎ ◎ ◎ ◎ ◎

Page 27: Windowsでの 自動化の 作り方入門

自動化の実践

Practice of Automation

Page 28: Windowsでの 自動化の 作り方入門

具体的な自動化の作り方

バッチとWSHを使って、バージョン管理ツールでソースを取得して、VisualStudioでビルドして、結果をIMで投げるという自動化の作り方。

Page 29: Windowsでの 自動化の 作り方入門

自動化の作り方が分からない時

どうやって自動化すれば良いか分からない時は、実行したいアプリのマニュアルを読めばよい。恐らくそれが一番近道。

Page 30: Windowsでの 自動化の 作り方入門

自動化はプログラムのように設計する

クラスのようにSVNで1ファイル、VSのビルドで1ファイルと実行する単位で作るのが良い。 パスなどのマジックナンバーはクラス内に入れず、全部のファイルを呼び出すファイルから引数として渡す。 このように作ることで変更、修正にも強い自動化が可能。オブジェクト指向は何にでも使える。

Page 31: Windowsでの 自動化の 作り方入門

DEMO

DEMO

Page 32: Windowsでの 自動化の 作り方入門

自動化は必ずワンクリック

自動化の作り方の重要なポイントとして、ワンクリックしたら、後は待っていれば全ての作業が終わるように作る。

Page 33: Windowsでの 自動化の 作り方入門

手動で叩くでは自動化とは言えない

いつ終わるか分からない場合、終わったことを確認する作業が必要。これは非常に無駄が多い。 ● 確認にいくたびに一旦作業が中止される● 叩くファイルを間違えることもある● 戻って来た時も、思い出すのに時間が必要● 脳内に無駄なタスクが置いてある状態。● 完全に忘れると今度は終了を気づかない● 1回5分の作業でも結果かなりの時間が潰れる

Page 34: Windowsでの 自動化の 作り方入門

ワンクリックにしたことで気づいたメリット

マニュアルも引き継ぎもなくても、気軽に作業を頼むことが出来る。

Page 35: Windowsでの 自動化の 作り方入門

完全な自動化

Windowsにはタスクという機能がある。これを使えば、手軽に完全な自動化が可能。

Page 36: Windowsでの 自動化の 作り方入門

まとめ

● 方法が分からない時はマニュアルを読む

● 自動化はプログラムを組むように作る

● ワンクリックで全ての作業が終わるように作る

● タイマーで完全自動化が可能

Page 37: Windowsでの 自動化の 作り方入門

自動化の応用

Application of Automation

Page 38: Windowsでの 自動化の 作り方入門

自動化は広げていく方が効果は高い

今までの話で個人レベルでの自動化はほぼ可能。ビルドでも、コンバートでも、レンダリングでも、デプロイでも、自動化は効果が高い。 さらにチームやプロジェクト単位でデータを扱うことでもっと効果は高くなる。しかし、皆が使うような永続的な自動化は作ってイコール完成ではない。

Page 39: Windowsでの 自動化の 作り方入門

完全自動化でもメンテは必要

毎日自動で動く状態を維持し続けると、トラブルは起きる。手動でやるより遥かにコストは下がるが、それでもゼロになる事はほぼない。

Page 40: Windowsでの 自動化の 作り方入門

さまざまなトラブル(一例)

● 作成と上書きで処理が違う。● 呼び出すべきファイルを他の実行ファイルでロッ

クしている。● 長期休みや停電● サーバーへの接続が出来ない● WindowsUpdateで自動再起動される● 自動化するはずのパソコンなのに帰りに電源を

切られてしまう。● 設定がスリープ状態になっている。● ローカルの編集と衝突する● アプリのバージョンが違う● パソコンが故障● 確認ウィンドウで次の動作に行かず

Page 41: Windowsでの 自動化の 作り方入門

修正は出来る限り自動化で直せるように

トラブルの修正で一番大事なのは、次は同じことが起きないように根本的な修正をすること。 特にパソコン上のトラブルは、タイムアウトや連続実行、強制終了などの対応をして、自動で修復出来るような修正を可能な限り考える。

Page 42: Windowsでの 自動化の 作り方入門

自動化の状況を知るためにログ

トラブルの時重要なのがログ。作業経過をログに残し、何処まで作業をやったかを分かるように。

Page 43: Windowsでの 自動化の 作り方入門

ログはシンプルにして共有する

ログは誰でも見えるようにする。ただしログは詳細であっても、入り口はシンプルにして共有する。基本エラーがあるかないかだけ分かれば十分。

Page 44: Windowsでの 自動化の 作り方入門

連絡をして導線を作る

ログを見えるようにしていても、見てくれるのは最初は少数。みんなが必ず見る場所に分かりやすく連絡を入れる。そこからログへの導線を作る。

Page 45: Windowsでの 自動化の 作り方入門

エラーの見える化でチームに良い循環を

ものづくりはエラーとの戦いとも言える。チーム単位で自動化するならエラーを見える化しよう。これでチームに良い循環を作ろう! ● エラーを出したことすぐに気づける● エラーに巻き込まれることもない● エラーの修正・確認も手早く出来る● エラーを出したらすぐに直す習慣が付く● エラーのメンテ自体を罰ゲームにしてエラー自

体を減らす

Page 46: Windowsでの 自動化の 作り方入門

まとめ

● 自動化は扱うデータを増やすことで効果が増す

● 毎日自動で動く状態でもメンテコストは必須

● 自動化した場合は必ずログが見えるように

● エラーの見える化で良い循環を作る

Page 47: Windowsでの 自動化の 作り方入門

最後に

● 自動化は身近なところからはじめよう

● 自動化で時間を作ってさらに良くしよう

● 自動化に多くを巻き込んで、効果を大きくしよう

● 自動化は今日より良い明日のために

Page 48: Windowsでの 自動化の 作り方入門

告知

VSハッカソン倶楽部 大阪 第2回 イベント

MetroStyleハッカソン 2Days 開催決定!

  7/14(土) MetroStyleDeveloper

×VSハッカソン倶楽部 MetroStyleアイデアソン

7/21(土) VSハッカソン倶楽部×MetroStyleDeveloper MetroStyleハッカソン

Page 49: Windowsでの 自動化の 作り方入門

以上

ご清聴有難うございました。