現役エンジニアが業務を自動化してきた手法7つ+αを紹介【Windows編】

目次

  1. 背景
  2. 自動化手法一覧
  3. Excel
  4. バッチ、もしくはPowerShell
    1. バッチ
    2. PowerShell
  5. Shell Script
  6. マクロ
  7. VBS
  8. 普通にプログラム書く
  9. RPA
  10. その他もろもろ
    1. Google App Script
    2. Google Chrome拡張
    3. Javascript api for office
  11. 最後に
  12. 関連記事

背景

こんにちは。 karintomania(@karintozuki)です。

面倒な入力や計算が発生する業務はデスクワーカーなら誰でも経験すると思う。
そんな時にこいつら自動化できないかなと思ったことがあるんではないだろうか。
特にエンジニアであれば、そういった業務を自動化したみたいな経験はあるのではないだろうか。

今回はそんなちょろっと自動化プロジェクトに使える手法を紹介する。

私はこんな業務は人がやるべきではない、と思ったものは自動化することを心がけていて、
今、ある程度ノウハウが溜まってきたと自負している。

こんな手法があるんだなっていうのは人に聞いたりしないと気づけないことが多いので、
これを読んで使えそうなのを習得したりしてもらえればと思う。

自動化手法一覧

とりあえず私が使ってきた手法はこんな感じ。
一応、1から難易度順にしたつもり。

  1. Excel
  2. バッチ or PowerShell
  3. Shell Script
  4. マクロ
  5. VBS
  6. 普通にプログラム書く
  7. RPA

最後におまけとして、私は未経験だけどこれは良さそう、というのも紹介する。
それでは一個ずつ見てみる。

Excel

Excelで何を自動化できるのか、と思うかもしれないが、
これがなかなか侮れない。

例をあげると、
test_01
みたいなフォルダを01から99まで作りたい時、どうするか。

こんな時は、test_01とエクセルに入力して、
オートフィルでtest_01〜test_99を文字で生成する。

そしたら、
その列の左側にmkdirコマンドを入れた列、
その列の右側にconcat関数を使って、
mkdir test_01のようにコマンドを1〜99に対して作る。

あとはこれをコマンドプロンプトに貼り付けるだけで完成。

この例ではフォルダを作る処理だったけど、
リネームだったり、データファイルの生成だったり、
コマンドでできることならなんでも応用が効く。

この方法は、何回も繰り返しやる処理に対して使うよりは、
一回しかやらないけど、それなりにボリュームがある、みたいな業務に有効かと思う。
繰り返し行う処理なら以降で紹介するような自動化処理を検討した方が良い。

バッチ、もしくはPowerShell

バッチ

バッチは、Windowsコマンドを.bat拡張子のファイルに記述していくやつ。

これの良いところはポータビリティというか、
基本的にWindowsなら動くという大きなメリットがある。

マクロとかならまだしも、
Pythonで自動化スクリプト組んだので使ってください!とか
非ITの人に言える気がしない。。。。

ただ、個人的には、文法が独特すぎて、
すぐ黒魔術になるイメージがある。
なので、それなりに簡単な処理にだけ使うようにしている。

PowerShell

PowerShellについては、正直詳しくないんだけど、
バッチの上位互換ってことになってる。
もうちょっと普通の言語っぽい書き方が可能になっている様子。

ただ、バッチと違い、Windowsのデフォルトでダブルクリックですぐ実行はできない。
人に共有するときは設定の変更が必要。
まあ設定変えるだけなので、インストールが必要なやつと比べると、まだマシかも。

PowerShellとバッチ、どちらを勉強した方が良いかは、
正直分からない。
PowerShellの方が出来ることは多いとはいえ、
まだまだ普及していない感が否めないので、
汎用性重視のバッチ、新しいの好きならPowerShellといったところか。

Shell Script

バッチの学習コストを払う気になれないという問題に対する一つの答えがコレだと思う。

エンジニアならGit bashとか入ってる人も多いはず。
その際に一緒にLinuxコマンド群がついてくる。

これらを使うことで、
個人で使うPCはMac(or Linux)だけど、
支給されるPCはWindowsという人が
Windows/Linuxの両方でコマンド覚えるのめんどくさい問題が解決する。

まあ、個人でLinux使う機会ない人でも、
基本的にバッチよりできること多かったりするし、
特にエンジニアだったら覚えておいても損はないと思う。

デメリットは他の人の端末で動かないことか。


ここから後半戦。

ここから紹介する手法は、いわゆるプログラミングになるので、
学習コストという意味ではそれなりになると思うが、
できることの幅は増えていく。

マクロ

実行したい業務がExcel上で完結するならマクロが良い。
他の人の端末でも、Excelさえ入っていれば問題なく動く。

Windows使いならとりあえず覚えておいて損はない。
↑今から勉強するのであれば後述のJavascript api for officeも検討したようが良さげ!

マクロではないんだけど、最近のExcelはWebスクレイピング的な機能も持っていて、
Webサイトのテーブルをそのまま表として持ってくるみたいなこともできたりする。

Excelの処理は後述するプログラムやRPAでできないことはないが、
書式やら細かい指定は大変だったり、そもそもできないこともある。

デメリットは、ちょっと書き方が古めかしいとかか。

VBS

VBSはこの中だとかなりマイナーだと思う。
Windowsが作ったJavaScriptみたいなイメージだろうか。
動的型付けなVBAみたいな感じ。

私も先輩に教えてもらうまで自動化みたいな使い方ができるのを知らなかったけど、
何気にRPAツールであるWinActorで採用されてたりする。

この方法の一番のメリットはGUI操作ができることだと思う。
このSendKeysコマンドを使うと、
WshShell.SendKeys
アクティブなウィンドウを掴んでキー入力送るみたいな感じ。

デメリットとしては、
言語としての将来性はほぼないこと。

MicrosoftがIEでVBSを動かす機能をデフォルトではなくしたというのもあり、数年後には消えてしまっているかもしれない。
https://www.howtogeek.com/437372/what-is-vbscript-and-why-did-microsoft-just-kill-it/

あとは、やっぱり古めかしい感じの文法。
これはマクロとかと同じかと思う。

普通にプログラム書く

バッチでは物足りないけどVBSなんて言語は使いたくない
という人はもうプログラムを書いてしまおう。

今、業務自動化でアツい言語はPythonとかだろうか。
Pythonに限らず、テキスト処理、Excel、メール、Webの参照なんかはそれなりの言語であれば問題ない。

デメリットはGUI操作はどうしても苦手なことと、
他の人の環境で動作させるために工夫が必要なことだろうか。

Web操作であればseleniumというテストツールを使って自動化するのが定石っぽいけど、
やったことないので、今後やることがあれば追記する。

RPA

今、流行りの技術で、Robotic Process Automationの略語。

他の技術では手に負えないようなGUI操作もやってのける。
そのため、基本的に人がやっているPC操作なら大抵自動化できる。

私は1年以上このRPA開発をしていた経験があるが、
特にUiPathは完成度が非常に高いためおすすめ。
他にも二つくらいツールを触ったことがあるが、UiPathの完成度は異常。

デメリットとしては、
現状、オープンソースのRPAツールというのも選択肢が少ないため、
予算が必要になることが大半かと思う。
会社、あるいは部署で取り組むことになるだろう。

その他もろもろ

この記事を書きながら発見したものや、これから勉強していきたいものを書いてみる。

Google App Script

GASと呼ばれたりする。G Suiteにおけるマクロみたいなイメージだが、
JavaScriptで書けるのがよろしい。
Office使わない職場ならこっちのが良い。

Google Chrome拡張

これは全く触っていないんだけど、ちょっと勉強したい。
これもHTMLとJavascriptで作る感じ。
Web操作のみの自動化だったら、これが割といい仕事するんじゃないかと思っている。
今後、勉強したら追記する。

Javascript api for office

この記事を書く調査の段階で知ったけど、結構気になっている。
JavascriptとHTMLでさくっとOfficeの拡張機能が作れるようになるらしい。

普通にHTMLとJavascriptなので、
Web版のExcelで使えたりするので、Macから実行とかも普通に出来るらしい。
今からマクロやVBS覚えるくらいならこっちやった方がいいのでは?と思うくらい。

最後に

少し、自動化スキルセットみたいなのを考えてみた。

とにかくどんな環境でも動かしたい、ということを重視する人はこんな感じ。
SIerとかだとインストールできるソフトも制限があったりするので、
それらに引っかからずにやるならこれらかと思う。

自動化対象 技術
Excel マクロ
Web VBSで頑張る
ファイル操作 バッチ

技術で尖りたいならこんな感じだろうか。

自動化対象 技術
Excel Javascript api for office + プログラミング
Web Chrome 拡張 + プログラミング
ファイル操作系 PowerShell + プログラミング

これ、プログラミング言語にJavascriptを選べば、
全部Javascriptでやることも可能だったりする。コスパ高い。

改めてまとめて見ると、
SIerで育ったせいか、レガシーな感じの技術が多くてちょっと残念。
もっとイケイケなのを知っている人は教えてください。

それでは今日はこの辺で。

関連記事

こちらの記事もおすすめ。

UiPathでCookie Clickerに挑戦する