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

9,451
-1

Published on

Published in: Technology
0 Comments
11 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
9,451
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
42
Comments
0
Likes
11
Embeds 0
No embeds

No notes for slide

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

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

    Clipping is a handy way to collect important slides you want to go back to later.

×