もし中小企業の業務にPythonを使ったら
Pythonの素晴らしいところは、豊富なライブラリ群を無料で使え、その利用のためのTipsがWEBにたくさんあることだと思います。
特に、ファイル入出力、HTTPリクエスト、XMLやJSON等のパース、Excelの読み書き、更にはマウス・キーボードのエミュレーションあたりは、中小企業の業務効率化に直結すると思います。
パーツを組み合わせて動かすのがPython
Nゲージやレゴブロック、ミニ四駆でもそうですが、パーツそのものは既製品であっても、それらを組み合わせて自分の実現したいものを作る。自作パソコンもそうでしょう。そのような作業は熱中すると楽しいし、「可能性は無限大」という言葉は人の心を踊らせます。
そんな「あり物の仕組みを使って何か組み上げたい人」にとっては、Pythonは格好のおもちゃ。一つのツールで様々なことがシームレスにできてしまうのが素晴らしい。
それまでHTTPリクエストなら curl、XMLのパースにはPHP(Perl)、Windowsファイル操作はShell、ExcelならVBAなど使い分けることが多かったものの、それらが連続的につながったツールの作成を考えたとき、「つなぎ役」をどうするかが悩みどころでした。
Javaなら一通りできますが、開発環境が複雑だし、大掛かりなイメージ。ぱっと作りたくて、速度はさほど気にしないならスクリプト言語のほうが手軽に感じます。
しかもPythonは子どもの教育でも使われるくらいコードの可読性に優れます。別にプログラムを職にするわけでもない我が身にとっては、「2年前に半日で作ったコード」などをパパっと思い出して流用してできることが大事なのです。
そして何より、中小企業には「Pythonでちゃちゃっと作って、業務ですぐ使う」という機会・環境にあふれているわけです。
大企業のタブーが中小にはない
大企業なら、使うアプリも適用する業務も統制されていて、なにか新しいものを使えるようにするにも、IT戦略部で検討して周到に準備した上でやっと使えるようになります。
自分だけ、またはせめて同じチーム内で使うものをちょっと作るにしても、PCに管理者権限がなく開発環境が作れなかったり、ソフト資産管理ツールでフリーソフトのインストールも許可されない、なんてこともザラです。
筆者が前にいた会社では、インフラ運用担当部署にもかかわらず、社内セキュリティ基準でWiresharkすら入れられず、通信トラブルの調査さえままならないこともありました。
しかし中小企業しかも非ITとなると、そんな制限はありません。
それだけセキュリティも脆弱ということになるのですが、従業員が少ないので社員がへんなことをしてないか目が届きやすいということもありますし、そもそも業務システムとメール以外ではPCを使わない人がほとんどなので、へんなことをやろうとする人がいないのです。ちょっとエラーのダイヤログが出るだけで私に電話してくるような人たちです。
しがたい、Pythonだろうが何だろうがすぐ試せるし、業務に役立ちそうならばすぐ周りを巻き込んで運用開始できるのです。このあたりは別記事に詳しく書きました。
Pythonでやったこと1:RPAっぽいこと
そして本題です。筆者は総務経理部でプログラマーではないですが、Pythonに光明を見出し、2ヶ月ほど本を読むなりして独学してみました。
一番役立った書籍は次のもので、多少のプログラム基礎知識があれば、基礎から実践までこの一冊で問題なし。あとはネットで補足調査すればOKです。
まず、Pythonで一番やりたかったことが、「RPA」チックなことです。
RPAが中小企業にとって救いの神になりうることについても、別記事で書いています。
そもそも、RPAの「使いどころ」を考えると、「本来であればシステム連携できるはずだができておらず、仕方なく人力で処理している部分」に他なりません。
そのため、RPA業界1位のUiPathの営業さんからZOOMで商品説明を受け、書籍も読んでみました。
説明では「中小企業レベルの予算でもスモールスタートで使える」という言われましたが、やっぱり月々のコストがかかるし、なかなか会社にすぐにその価値を理解してもらうのは難しいと感じました。
シナリオ(ワークフロー)を作成できる社員が複数いて、自律的にどんどんRPAを活用してくれるような会社なら良いでしょう。
しかし筆者の会社は今の所そのような社員が育っていません。
ということで、UiPathの「考え方」だけ取り入れ、Pythonで業務システムに自動入力するツールを作ることにしました。
ターゲットは、GUI入力しか持たない、伝票発行システムです。
ここでは紹介にとどめますが、技術的な細かい話は別ブログに書きました。
これにより、使い所と目的によっては、有償のRPAを導入しなくてもPythonのキー・マウスエミュレーションで業務が自動化できることが確かめられました。
Pythonでやったこと2:QRコードで出退勤打刻
次は、出退勤システムです。
筆者の会社では、なんと、出退勤システムどころかタイムカードもありませんでした。出勤簿に判を押すだけという、前時代的極まりない手法で管理されていたのです。ああ恐ろしい。
働き方改革等で出退勤管理が厳格化されている今、それはもはや管理とはいえないということで、私が強引に主導してようやく出退勤システムの打刻で勤務時間管理をすることに決めました。
勤怠システムは、今まで使用していたグループウェアと連携してシングルサインオンで打刻できる、AKASHIを使用することに決定。
しかし、パソコンで打刻操作をすることすらめんどくさがる人たち。
人間の慣れというものは恐ろしいもので、きちんと労働時間管理をすることは自分の身を守ることにほかならないのに、「なんかパソコンでやんなきゃいけないってよ」くらいの感覚の人が多い。これでは大企業との差はいつまでも埋まりようがありません。
もちろんICカードリーダにIDカードをかざす方法が一番簡単なのですが、ICカードどころか社員証すらありません。
そもそも、PCが割り当てられてない人もいます。いずれアルバイトの時間管理もWEB勤怠システムで実施したいことを考えると、誰でも簡単に出退勤打刻ができるようにしたい。
ということで作ったのが、Webカメラを使ってQRコードで出退勤するシステムです。
細かいチューニングは苦労しましたが、カメラ映像からQRコードを読み取り、Web勤怠APIを使ってHTTP POSTをする、という複数の技術がPythonのライブラリを使ってシームレスに実現でき、作ってても楽しいものでした。
まだまだあるぞPythonシーン
今回ご紹介したのは2例ですが、他にもやりたいアイディアがいくつも浮かんできます。
・取引先のWebEDI上にある注文データ、請求データなどをWebスクレイピングしてダウンロードし、内容を解析して伝票発行
・出店しているECモールサイトの外部公開APIを叩いて受注情報から送付先住所を抽出し、ヤマト運輸や佐川急便の配送票発行システムに自動入力
・業務システムから特定商品の在庫残数を抽出し、閾値以下になったら自動的に仕入先への注文書を発行
多分こういったものは、大きな企業であるのなら、すでに業務アプリに組み込まれているような程度の低い話かもしれません。しかし、立派なシステムを持たない中小企業は人海戦術で面倒をこなしていることが多く、特に「システム間のつなぎ」作業に労を割いているのです。これがますます労働効率の差を生み出します。
そして、たとえカチッと作り込まれたシステムや、RPAのような便利な有償ツールが導入できなくても、「ちょっと作ってみた」程度のPythonプログラムによって多くの不便がカバーできることを確信しています。