ちょっとした業務をプログラミングで自動化するときの目的別オススメプログラミング言語紹介!

RPA

WBC、日本優勝しましたね!!!
サイコ~~~!!!

私も負けずに記事書いていきます。

今回は、業務効率化・業務自動化関連の記事を書いていきます。
エンジニアなら、仕事でちょっとした業務を自動化・効率化したいな~って思うこと、よくありますよね。
そういうときにプログラミング言語の選定が必要になりますが、ちょっと難しいですよね・・・。
様々なケースにおいてどのプログラミング言語・ツールを使用することがベストなのか、私の経験に基づいて記載してみようと思います。

はじめに

業務をプログラミングで自動化する、または効率化になるツールを作成する場合、以下のような観点が大切になります。

業務頻度開発期間環境導入・構築難易度再利用性汎用性保守性
1回限り極短超簡単超簡単不要不要不要
今後も稀に短め簡単できれば簡単まあまあ必要ほとんど不要まあまあ必要
今後も頻繁に短め普通以下できれば簡単必要まあまあ必要まあまあ必要

上の表は100%個人的感覚でプログラミング言語の選定基準をまとめたものです。
おおまかに言いたいことは伝わると思います。

例えば開発期間のところは、「1回限り」のタスクであれば手動で終えることができるはずだった時間よりも長くかかってしまっては意味がありませんが、頻繁に発生する業務であれば、手動1回分よりも時間かかってしまっても、トータルで効率化となる見込みなので別に問題ないわけです。

一言でいうならば、その業務の繰り返し頻度が少なければ少ないほど「とにかく早く」を意識すること、繰り返し頻度が多くなるほど再利用性や保守性といった基本の開発で必要となる部分にもウェイトが置かれるようになる、といったところでしょうか。

ケース別オススメプログラミング言語・ツール

お手軽にプログラミングして結果が得たいとき

まず、初めに。
ちょっと業務自動化とは違うかもしれませんが、ちょこっと手軽にプログラミングしたいな~って思ったときに、オススメなのが以下のサイトです。

ブラウザでプログラミング・実行ができる「オンライン実行環境」| paiza.IO
paiza.IOはオンラインですぐにプログラミングが始められる、オンライン実行環境です。Java,Ruby,Python,PHP,Perlなど主要24言語に対応。プログラミング学習にも。

Web上でコードを記載でき、実行までしてくれます。
更にメジャーな言語のほとんどをサポートしています。
ちょっとしたことなら、もしかしたらこのサイト上で完結できるかもしれませんね。

Excel操作を自動化したいとき

Excel操作を自動化したいな~って思うとき、業務で結構ありますよね。
Excel上の任意のセルを参照したり書き込んだりするなど、Excel業務を自動化するのにオススメのプログラミングは以下になります。

言語・ツールオススメ度難易度特徴
VBA★★☆☆☆難しいExcelさえあれば開発、実行できる
Excelにおける超複雑な処理までプログラムできる
・Microsoftのアプリ専用のプログラミング言語
×古くからある言語で、書き方がレガシーで難しい(癖もある)
PowerShell★★★★★超簡単Windows端末では標準搭載されており、インストール作業等が必要ない
シェル上で、1行1行実行できる
簡単に他ファイルと連携できる
そもそもExcelを起動することからできる
Python★★★☆☆超簡単環境のインストールが比較的簡単
データ整形が超簡単
そもそもExcelを起動することからできる

Excelで超複雑な処理を自動化したいのであれば、VBA一択だと思います。
ですが業務でそのようなケースは稀であり、ほとんどの業務においてPowerShell、Pythonで十分なのではないかと思います。

PowerShell, Pythonは、Excel自動化以外でもよく使われている言語(特にPythonは通常の開発でも頻繁に使われている言語)であり、学習効率の点でVBAよりオススメです。
更にPowerShell、インストール作業等が必要ないのと、他ファイルからのデータ連携などが非常に簡単にできるため、ダントツでオススメです。

Windows端末上でサポートする様々な操作を自動化したいとき

毎日XX時になったらメールを送信する、とか特定のタイミングであるアプリを起動したい、とかWindows端末の使用において、意外と面倒くさい業務を自動化したいケース、そこそこあると思います。
以下がオススメです。

言語・ツールオススメ度難易度特徴
PowerShell★★★★★超簡単Windows端末では標準搭載されており、インストール作業等が必要ない
シェル上で、1行1行実行できる
Windows上で可能な手動操作については、ほとんど全てプログラムできる

上記のように、PowerShell、一強です。

Windowsデスクトップアプリを作りたいとき

Windowsで簡単なデスクトップアプリ(ツール)をサクッと作成したいとき、あると思います。
そういうときには以下がオススメです。
(※あくまで簡単にサクッとできるデスクトップアプリを想定しています。納品するようなちゃんとしたアプリケーションではないです。)

言語・ツールオススメ度難易度特徴
PowerShell★★★★★超簡単Windows端末では標準搭載されており、インストール作業等が必要ない
シェル上で、1行1行実行できる
シンプルで簡単なデスクトップアプリなら、驚くほど簡単に実装できる
複雑なGUIになってくると、大変になってくる
C#★★★☆☆普通Visual Studioのインストール等、環境構築が少しある(Windowsはなくてもできるが、一般的にはしたほうがいい)
コンパイルが必要(インタプリタとしても使えるが、環境構築が必要)
GUIデザインが超簡単
・がっつりオブジェクト指向言語
汎用性・保守性に強い

簡単なGUIアプリだと、Powershellでサクッと作っちゃう方がメリットが大きいと思います。
フォームをいっぱい配置したかったり、動きを出したかったり等、複雑なGUIアプリを作る場合はC#がオススメです。

Webブラウザの操作を自動化したいとき

決まったブラウザ操作を何回も何回も繰り返しやるの、面倒くさいですよね。
例えばWebアプリのフロントエンドのテストで、項目ごとに同じ操作を繰り返したりとか。
会員情報の入力が必要なWebアプリとかであれば、ファイルにテストに使う入力情報をまとめておいて、自動でテストしてくれたりしてほしいですよね。
そういうときには、以下がオススメです。

言語・ツールオススメ度難易度特徴
Selenium IDE★★★☆☆超簡単ChromeやFirefoxの拡張機能として用意されており、導入が簡単
ブラウザ上の操作を記録する形で自動化するため、プログラミング知識不要
×入力値の網羅性を確かめるテストなどは苦手
Python
(Selenium)
★★★★★簡単Selenium以外にWebDriverの導入がいるなど、ほんの少しだけ環境構築が面倒くさい
プログラムの中でWebブラウザ操作を自動化できるため、ほとんどなんでもできる
スクレイピングと併用できる
PowerShell★★★★★簡単↑と同じ

プログラミングをしたくなく、定型的なブラウザ操作を自動化したいときは、Selenium IDEがオススメです。
しかしWeb画面のテスト自動化という観点だと、スクリプトと併用したいケースの方が多いと思います。
したがって、その中でも導入コストの低いPythonまたはPowerShellを選定するのがオススメです。

Webスクレイピングしたいとき

Web上に情報が豊富に溢れている昨今、Webでスクレイピングするニーズが非常に高まっていますよね。
Webスクレイピングにオススメなのは以下となります。

言語・ツールオススメ度難易度特徴
Python★★★★★簡単スクレイピングのライブラリが複数あり、ニーズによって使い分けられる(Seleniumも含まれる)
リスト等の整形・操作が柔軟にできる
ライブラリによっては導入が、ちょっとだけ面倒くさかったりもする
PowerShell★★★★★簡単Windows端末では標準搭載されており、インストール作業等が必要ないうえ、スクレイピングだけなら、ライブラリ等何も要らず非常に簡単にできる

上の2つについては、目的によって使い分けていただければ良いと思います。
スクレイピングする目的が、Pythonのプログラム上で必要だから、というのであれば勿論Python。
とにかくスクレイピングデータだけ取れればよい、ファイル等に出力できればよい、というのであればPowerShellで良いと思います。

外部の機器とのやり取りを自動化したいとき

外部機器にシリアルコンソールで接続したり、ネットワーク上の機器にSSHで乗り込んだり等、外部の機器に接続してあれこれしたいケースがあると思います。
こういときにオススメなのが以下となります。

言語・ツールオススメ度難易度特徴
Tera Termマクロ★★☆☆☆簡単インストールが比較的簡単
「ssh」や「telnet」、シリアルコンソール接続など、幅広い接続方法に標準対応している
「scp」や「XMODEMプロトコル」など、幅広いデータ転送に標準対応している
文法上、書き方が冗長になりやすい
×プログラムとしての機能が乏しく、できることが限定されている
PowerShell★★★★★簡単Windows端末では標準搭載されており、インストール作業等が必要ないうえ、「ssh」や「scp」などの有名どころの便利なコマンドが標準で使える
接続機器の出力値を用いてプログラミングする等、ほとんど何でもできる

ダントツでPowerShellがオススメです。
以前からTera Termを使っておられる方は、Tera Termマクロでも悪くはないです。
ただプログラミングとしての強さはPowerShellにあります。

最後に

こうしてみると、Windows端末使っている場合はPowerShell最強ですね。
あと、Pythonも頻繁に出てきてます。
これらは導入が簡単かつ難易度が低いので、開発期間があまりかからないうえ、強力なプログラミング言語なのでやりたいことは大体できる、というのが強い点だと思います。
ですのでPowerShellとPythonについて、開発できる環境があって、ある程度の知識があれば大体の業務自動化は十分そうです。

コメント

タイトルとURLをコピーしました