単純作業をプログラムで自動化! 注目の「RPA」とは
ここ数年、「RPA」という言葉が話題を呼んでいます。
RPAとは、ホワイトカラーの業務の自動化のことです。もう少しわかりやすく言うと、特に経理や人事、営業事務などに従事する人が普段行っている、ExcelやWordに文字や数字を入力したり、それらをさらに別の資料にまとめ直したりといった事務作業をプログラムによって自動化するのが、RPAです。
一度プログラムさえできてしまえば、あとは必要な文字や数字のデータを揃えれば、クリック1つで作業が完了します。
仕事といっても、単純な事務作業からクリエイティブな企画を考えることや他人と交渉することまでさまざまです。実は、単純な事務作業の中には、プログラムによって置き換えができる業務が決して少なくないのです。
たとえば入力作業以外にも、データのコピペ、計算、集計などの仕事を、毎週や毎月など、ルーチンで行っている人は多いでしょう。
これらはすべて、RPAによってクリック1つで完了できます。タイマーをセットすれば、クリックしなくても、「夜中に自動でやっておく」など設定して勝手にやってもらうことすら可能なのです。
「でも、ツールを使うのってお金がかかるんじゃないの? ただの事務担当の自分には予算を使うことなんてできない……」と、思われる人もいるかもしれません。しかし、心配はご無用。お金をかけてソフトウェアメーカーにサポートしてもらうようなRPAツールもなかにはありますが、無料でプログラムを作れるツールも存在します。
もっとも有名なのが、Excelの初期状態から使うことのできる「マクロ」でしょう。Excelのあるシートからあるシートに数字を書き写す、計算する、罫線を引くといった、毎回同じ操作の手順をパソコンに覚えさせて自動的に実行させることをマクロといいます。
しかし、マクロには次のような欠点があります。
・複雑なプログラムだと動作が遅くなる(1回で数十分かかることも)
・Excelがバージョンアップするとプログラムが使えなくなることがある
・WindowsとMacの間の互換性がない
これらの欠点は、場合によっては致命傷になります。
「せっかく長い時間をかけて勉強して作ったマクロが使えなくなった」「担当者が異動になったときに後任がうまく活用できない」という悲しい事態が多くの会社で起こっているのです。
コードが短くて簡単、しかも動作が早い
そこで、VBAに代わるExcel業務のRPAツールとして非常に注目されているのが、本書で徹底解説するプログラミング言語、「Python」です。
Pythonは他のプログラミング言語と比較してさまざまな強みを持っています。ここではExcelで行う仕事を全自動化するツールとしてのメリットに絞って述べていきましょう。
Pythonの大まかな強みは、次のようなものです。
・プログラムコードが短い!
知識が少なくても記述しやすく、ミスが少ない。他の人がコードを見たときに理解しやすく、修正も簡単。
・動作が早い!
プログラムを実行する間、パソコンの前で長時間待たなくていい。プログラムを書いたらすぐ実験できるので、実証や挑戦も手軽。
・ライブラリが豊富!
さらにコードをシンプルにする役に立つうえ、コードがわからなくてもさまざまな用途に拡張してプログラムを進化させられる。
・Excelのアップグレードに振り回されないで使える!
・WindowsでもMacでも共通して使える!
なおライブラリとは、ファイルの入出力、ネットワーク処理など、よく使う機能をいちいちプログラミングしなくてもいいようパッケージにしたものです。Pythonの標準ライブラリと外部ライブラリの2種類があります。
コードが短くて簡単で、動作が早い。加えて汎用性も拡張性も高くてさまざまな状況で使える。これが、Pythonのすごさです。
今までメジャーだったVBAが抱えていた欠点をすべて克服しているだけでなく、Pythonは今後仕事で長く使っていくツールとして可能性に満ちています。メガバンクなどの大企業がホワイトカラーの大量リストラを表明して仕事の自動化を急ピッチで進めているなか、ビジネスパーソン、特に事務作業を多く抱える人が生き残るために覚えておかない手はないブログラミング言語なのです。
さて、Excel業務をPythonで自動化するということは、Excelで行っている作業をプログラムによって再現するということです。したがって、私たち人間が行っている作業をコードで書き表すためのルールを押さえておく必要があります。
知っておくべきルールは、大きく3つあります。順番に解説しましょう。
「順次」「判断」「反復」が基本
① 順次
多くの人の仕事において、1つのアクションだけで作業が終了するものはほとんどないはずです。上から順番にデータを入力して合計を計算する、グラフを作成して資料に貼り付け、メールで送るなど、細かい仕事でもいくつかの作業手順を経て完結しています。
この「手順」をプログラムに理解してもらうためのルールが、「順次」です。
具体的には、例えば以下のようなコードです。
#順次処理 上から1つずつ処理されていきます
print("1つめの処理")
print("2つめの処理")
print("プログラム終了")
(コードここまで)
このプログラムを実行してみると、自動で“1つめの処理”、“2つめの処理”、“プログラム終了”という3つの言葉が出力されます。
このように、「コードに書かれた作業が上から1つずつ処理される」というのが順次の仕組みです。
② 判断
たとえば、顧客データから20歳以上の人と20歳未満の人を分けてまとめ直す、という作業があったとしましょう。そんなとき、皆さんは自分の手でデータを振り分けたりExcelのフィルタリング機能を活用したりして、「20歳以上か、20歳未満か」を必ず判断しています。
この動きを再現するのが、「判断」のルールです。
具体的には、以下のようになります。
#判断
#ポイント 4行目と6行目はTabキーを押してずらします(インデント)
age = input("年齢を入力して下さい") #キーボードから入力を受け付けます
age = int(age) #文字として扱われているデータを数値に変換します
if age >= 20: #入力されたageの値が20以上ならすぐ下の命令が実行されます
print("お酒を飲めます")
else: #20未満の場合は下の処理が実行されます。
print("お酒を飲んではいけません")
print("プログラム終了")
(コードここまで)
プログラムを実行すると、Visual Studio Code下部のターミナルに「年齢を入力して下さい」と表示され、キーボード入力を受け付ける状態になります。年齢にあたる部分を半角数字で入力してください。
コメントで説明のあるとおり、20以上であれば"お酒を飲めます"、20未満なら“お酒を飲んではいけません”と出力されるはずです。このルールを応用して、さまざまな作業に生かしていくことになります。
③ 反復
最後の3つめのルールは、「反復」です。これは、コードで指定するところまで同じ作業を繰り返すというルールで、作業で取り扱うデータが多ければ多いほど効果的になります。
コードを見てみましょう。
#反復
#1から10までを足し算します。
goukei = 0
for i in range(1,11): #iの値を1から1づつ増やして11になったらループから抜ける
goukei = goukei + i #goukeiの値にiを加算する
print("合計は" + str(goukei) + "です") #goukeiを文字列に変換して表示
count = 1
while count <= 10: #countの値が10以下の間11行目を繰り返します
print(count)
count = count + 1
(コードここまで)
実行すると、以下のような結果が出力されます。
1から10までの間で数字の記入を1ずつ増やす作業を繰り返したうえで、"合計は" + str(goukei) + "です"というコードに対し、str(goukei)の部分がプログラムで計算された「55」として出力されていることがわかります。
判断や反復の条件を書くときには、「比較演算子」というものを使います。
a == b aとbが等しい
a != b aとbが等しくない
a > b aはbより大きい
a>=b aはb以上
aa<=b aはb以下
a in b aがbに含まれている
a not in b aがbに含まれていない
この他にも a is bというオブジェクトの比較がありますが、割愛します。
また、複数の条件を効率的に組み合わせるための「論理演算子」もあります。
a or b aまたはb
not a aでない
パソコンで行う作業はほぼ全て自動化できる
プログラミング言語のルールは、数学で習うような発想が多く使われます。だから、大学でもプログラミングは理系の分野として扱われることが多いんですね。演算子をすべて覚えるのは大変なので、こういったものがあるということだけ頭に入れておいて、実際にコードを使うときには必要に応じて調べ直せばいいでしょう。
この「順次」「判断」「反復」というルールを組み合わせ、人間がやる作業をプログラムで再現する、というのが業務自動化の考え方です。今までは人間の手で何百回とコピペして作っていたような資料作成も、プログラムによってものの数秒でやってもらうことができます。
Pythonによる業務自動化とは、一言でいえば「行う作業の工程を細かく分け、コードという言葉によって書き出す」ことを意味します。
プログラミング言語によって、どんな仕事をすればいいのかをパソコンに説明してあげるイメージです。
逆にいうと、コードによる書き出しさえしてしまえば、パソコンで作業が完結する仕事についてはほとんどがPythonで自動化できるのです。
ざっと説明しましたが、Excel×Pythonには大きな可能性が秘められています。
テレワークになったことで、上司から大量の事務作業を振られて後はほったらかしと言う人も多いと思います。そんな人にとって、Pythonが業務効率化の救世主になるかもしれません。
コメントをお書きください