Upgrade to Pro — share decks privately, control downloads, hide ads and more …

業務自動化ツールとしてのPythonの立ち位置を考える

 業務自動化ツールとしてのPythonの立ち位置を考える

このスライドでは、

「エンジニアではないけれど、今の業務が雑多で大変なので効率化・自動化したい」

「Pythonは便利と聞いたけれど、機械学習とかビッグデータとかが得意と聞いて、自分はそういうのではないので…」

というような方に向けて、業務の自動化ができる手段の全体感を押さえつつPythonの立ち位置をお伝えして、何らかの手段で一歩を踏み出す後押しできればと思います。

Takumi Nasuno

June 02, 2021
Tweet

More Decks by Takumi Nasuno

Other Decks in Business

Transcript

  1. Copyright © 2021 Takumi Nasuno. All Rights Reserved. 2 はじめに

    このスライドでは、 「エンジニアではないけれど 今の業務が雑多で大変なので効率化・自動化したい」 「Pythonは便利と聞いたけれど 機械学習とかビッグデータとかが得意と聞いて、 自分はそういうのではないので…」 というような方に向けて、業務の自動化ができる手段の 全体感を押さえつつPythonの立ち位置をお伝えして、 何らかの手段で一歩を踏み出す後押しできればと思います。
  2. Copyright © 2021 Takumi Nasuno. All Rights Reserved. 3 自己紹介

    那須野 拓実 (なすの たくみ) https://takuminasuno.com/ja/ たなぐら応援大使(福島県棚倉町)。 トリプレッソを勝手に応援する人。 元語学屋。時々写真垢とか手芸垢。 本業はナレッジマネジメントとかオントロジーとか データ分析とかの何でも屋です。 ※上記の自己紹介は、2021年6月執筆当時のものです。 コンタクトはこちらからどうぞ! ⇒ takumi_nasuno
  3. Copyright © 2021 Takumi Nasuno. All Rights Reserved. 4 目次

    ①業務の自動化のからくり ②業務の自動化ができる手段 ③プログラミング言語の中のPython ④Pythonの使いどころを考える
  4. Copyright © 2021 Takumi Nasuno. All Rights Reserved. 6 ①業務の自動化のからくり

    業務の自動化をする前には 今の業務プロセスの標準化(見直し)を必ず挟む。 標準化をせずに自動化をすると、手作業だからこそ行っていた非効率or本来不要なプロセスが『儀式』として引き継がれる。自動化によって運用の負担は減る一方で、運用変 更の負担が増えるため、自動化の際に残ってしまった『儀式』が半永久的に残るリスクが高い。そのため、『儀式』を排除するための標準化が非常に重要である。また、標準 化をしたあとに矢継ぎ早に自動化するのもリスクが高い。というのも、カッコよく『標準化』をしたつもりでもたいていの場合はリアルな練度の低い場合がほとんどで、実際 に運用を回してみることで明らかになる欠陥が多いからである。自動化の前に手作業にて試運用を回し、改善点を洗い出してからの自動化が肝要である。 標準化 自動化 試運用
  5. Copyright © 2021 Takumi Nasuno. All Rights Reserved. 7 ①業務の自動化のからくり

    標準化のエッセンスは、パラメータの抽出と、 レアケースの切り捨て、拾い上げにある。 (1) 業務の共通要素を拾い、パラメータで対応幅を増やす 業務の標準化をするには、効率的かつ効果的な業務の共通要素を見つけて拾い上げることが第一歩だが、プロセスを完全に共通化するだけで は多くの場合に実務的に耐えられない精度になりがちである。そのため、いくつかのパラメータを用意してパラメータを調整すれば多くのパ ターンに対応できるようにする、というのがポイントとなる。 (2) レアケースは思い切って切り捨てる 前項のパラメータをどれくらいの数に留めるかは非常に重要である。というのも、ほとんど100%の案件に対応しようとすると、パラメータが 非常に膨大になり、標準化ならびに自動化にかかる人的コストが現実的な範疇を超えてしまうからである。その結果として待っているのは、 プロジェクトの停滞からのフェードアウトや、完成したはいいもののメンテナンスできずに究極のレガシーツール=業務のボトルネックとし て残り続ける未来である。そのため、5%~20%、時としては30%程度は標準外のイレギュラーとして検知して個別対応するよう設計するこ とで、全体最適な運用を実現できることが多い。 (3) 標準化や自動化で無くなる要素を意識して拾い上げる 標準化や自動化は、なにも良いことばかりではない。標準ができたことで意図や目的を理解せず盲目的にマニュアルをなぞるだけの作業人間 が増えたり、ワークフローを自動化したりチャットボットを運用したことでコミュニケーションが減って組織内の人間関係が希薄化したり、 強烈に自動化したために中がブラックボックス化して開発者の退職にともなって誰も触れなくなった…というのはよく聞く話である。標準化 や自動化は短期的な労働効率の改善が評価されやすい一方で、こういった長期的なリスクは放念される傾向にあり、短期の効率化と長期のリ スク拡大はバーターにある。標準化や自動化に取り組むことは、長期のリスクを対策し続けることとセットにするべきである。
  6. Copyright © 2021 Takumi Nasuno. All Rights Reserved. 9 ②業務の自動化ができる手段

    プログラミング言語 RPA iPaaS 概要 コードを書いて自動化する。 Robotics Process Automationの略。 コードを書かず、作業を記録して自動 化する。 システムをAPIで連携しており、ボタ ンを押してタスクとして設計・自動化 する。 具体例 Python, R, VBA, Google Apps Script(GAS), Office Scriptなど。 PC全体を自動化するタイプのUiPath, Power Automateなどと、ブラウザ特 化のAutoブラウザ名人, Axiomなどが ある。 割とtoC向けなZapier, IFTTTに対して、 toB向けにInformatica, Anyflow, Mulesoft, torocco, Fivetran, Airbyte という布陣が並ぶ印象。 長所 個人的なスキルさえあれば、ほぼ無料 から業務改善に取り組める。 ボタンポチポチで自動化できる。学習 コストは非常に低い。 Power AutomateはOffice365ユー ザーであれば自由に使えるうえ、そう でなくとも無料で一部機能を使える。 ボタンポチポチで自動化できる。もの にもよるが、RPAと比較してデータ ベース的な知見が求められる傾向が強 く、ほんの少し学習コストが高い印象。 短所 プログラミングを覚える必要があり、 一般的に学習コストは高い。 PC全体で機能するマクロみたいなもの なので、各種ツールの画面レイアウト が変わるなどのイレギュラーがあると エラーで止まってしまうことが多い。 ZapierやIFTTTは無料で一部機能を使 えるが、それ以外は基本的には有料。 なおAirbyteのみオープンソース。 連携するツールが決まっており、膨大 ではあるもののそこから外れるレア ツールは連携できないことが多い。 業務の自動化ができる手段として、 プログラミング言語に対してRPA, iPaaSを挙げる。
  7. Copyright © 2021 Takumi Nasuno. All Rights Reserved. 12 ③プログラミング言語の中のPython

    Python R Excel VBA GAS Office Scripts 言語系 Python独自 R独自 VisualBasic系列 (VB) JavaScript系列 (JS) JavaScript系列 (JS) 学習コスト 〇 タブを駆使して簡潔に書 ける工夫があり、同じ処 理を書こうとすると自然 と1つの書き方に収束し やすく、可読性が高い。 ネット情報も非常に多い。 × 非常に短いコードでデー タ分析ができるが、その 弊害で他言語にはない特 殊な文法が多く、学習コ ストが高い。汎用性が低 く、学術領域で最も使わ れる。 △ 今では割とマイナーなVB 系列。マクロの記録で コードを自動生成できる 反面、見るに堪えない冗 長的なコーディングに溢 れており、ちゃんとした 書き方を学ぶのは難しい。 〇 JS系列なので、 JavaScriptを知っていれ ば見様見真似で書けるほ ど簡単。GAS自体に関し てもネット情報は非常に 多い。 △ JS系列なので、 JavaScriptを知っていれ ば見様見真似で書けるほ ど簡単。しかし、リリー スされたばかりで、Office Scripts自体に関するネッ ト情報は少ない。 着手の しやすさ ◎ フリーソフトをインス トールすればローカルで 使える。AWSやGCPのク ラウドや、Google Colab でもすぐ使える。 〇 フリーソフトをインス トールすればローカルで 使える。 ◎ Excelがあれば即座に使え る。 ◎ Googleアカウントがあれ ば即座に使える。Google ビジネスアカウント縛り のセキュリティも◎。 △ Excel on the web用の言 語だが、基本的には Office365 Businessのラ イセンスが必要。 汎用性 ◎ ローカルでもクラウドで も様々な環境で使用でき、 データ分析やアプリ開発 から始まり、クローリン グ、機械学習、深層学習 などにも対応する。 × データ分析に特化した言 語。基本的にローカルで 動かす。深層学習は実質 無理だが、機械学習はで きる。 △ ローカルのExcel上で動く 言語。PowerPointや Wordなどと連携すること もできるが、基本的には ローカルに限定される。 〇 Spreadsheetや Document、Driveなど Google Workspace内の アプリと連携したり、自 身をWebアプリ化したり などができる。 △ ウェブ版Excelのマクロと いう域を出ない印象。 Spreadsheet との相性 〇 gspreadライブラリを使っ て操作できる。 〇 {googlesheets}パッケー ジを使って操作できる。 × 基本的にできない。 ◎ ネイティブにできる。 × 基本的にできない。 Excel との相性 〇 Pandasやopenpyxlなどの ライブラリを使うことで、 ざっくり操作できる。 〇 {xlsx}パッケージを使う ことで、ざっくり操作で きる。 ◎ 非常に細かいところまで 操作できる。 × Google Workspaceなの で、SpreadsheetやSlide などの出力か、CSVの出 力に留まる。 〇 ウェブ上でもある程度操 作できるが、VBAででき ることの一部ができない。 求人(引用元) 435万円 / 4,501件 474万円 / 1,056件 369万円 / 1,193件 データなし データなし
  8. Copyright © 2021 Takumi Nasuno. All Rights Reserved. 14 ③プログラミング言語の中のPython

    Pythonは、様々な場所、目的で汎用的に活用でき、 ポータブルスキルである。 Jupyter Notebook Google Colab Databricks AWS, GCP, Azure × データ分析, ETL処理 クローリング, スクレイピング 機械学習 深層学習 Webアプリ開発 チャットボット開発 ローカルOffice業務 の効率化 クラウドWorkspace業務 の効率化 無料 個人利用無料 小規模利用は無料 AI AI ローカル クラウド クラウド クラウド Tableau, PowerBI, Alteryx, etc ローカル クラウド データパイプライン デスクトップアプリ開発
  9. Copyright © 2021 Takumi Nasuno. All Rights Reserved. 15 ③プログラミング言語の中のPython

    Pythonは、ライブラリが非常に豊富で、 勘所を押さえれば楽にコードを書ける。 Excelを操作するなら… Pandasやopenpyxl PowerPointを操作するなら… Python-pptx Spreadsheetを操作するなら… gspread Slideを操作するなら… ※ライブラリは無いのでAPI デスクトップアプリを作るなら… tkinterやKivy Webアプリを作るなら… DjangoやFlask クローリングをするなら… requests 自然言語処理をするなら… mecab-python3やginza 機械学習をするなら… scikit-​learn 深層学習をするなら… TensorFlowやPytorch
  10. Copyright © 2021 Takumi Nasuno. All Rights Reserved. 16 ③プログラミング言語の中のPython

    Pythonは、汎用的なポータブルであるがゆえに、 キャリアにも有利に働きやすい。 引用元:Hrog(https://hrog.net/report/career/82292/) 求人年棒下限平均ランキング(2020年)
  11. Copyright © 2021 Takumi Nasuno. All Rights Reserved. 17 ③プログラミング言語の中のPython

    Pythonは便利だが… 気にするべきは、クラウドセキュリティ。 (1) ローカルでも十分に自動化はできるが、実行は手作業のまま Anacondaを入れてJupyter Notebookが使えるようにさえなれば、たいていのデータ処理は自動化できるようになる。pyファイルを作ってお けば手動実行なら割と用が済んでしまうし、tkinterやKivyでデスクトップアプリにして配布すると第三者もパラメータを画面から容易に調整 できるようになる。しかし、どこまで行っても手作業で実行するという領域を出ない。 (2) Pythonが業務自動化で真価を発揮するのはクラウド 業務を劇的に改善するポイントは、ボタンを押せば1つの業務ステップが自動完了するようにすることと言うより、自動化することで業務ス テップ自体を無かったことにしたり、前後の流れを大きく変更することで、顧客体験を劇的に変更することにある。 その意味では、人が誰も介在しなくとも業務が流れで自動遂行されていく状態を実現する必要があり、そのためにはPythonをクラウドで使う というのが隠れたエッセンスだったりする。 (3) クラウドで使ううえで、新たに学ぶべきはクラウドセキュリティ 一方、クラウドでPythonを使うということは、AWSやGCP、Azureなどのパブリッククラウドの環境にPythonコードを置くということであり、 設定次第では法人外からのアクセスを許容しうるということでもある。クラウドは、オフィスに縛られないリモートワークを実現する武器で ある反面、正しく設定ができなければ外部への情報漏洩をおこしかねないツールである。昨今はSalesforceやTrelloなどクラウドサービスの設 定ミスで個人情報を漏洩する大手企業のニュースも絶えない。 クラウドを有効に活用するには、クラウドを安全に使えるようにするクラウドセキュリティの勉強が欠かせないだろう。
  12. Copyright © 2021 Takumi Nasuno. All Rights Reserved. 19 (1)

    Google Workspaceに完結するなら、GAS一択 GASは、SpreadsheetやDriveなどGoogle Workspace内の連携は最強である。基本的なエディタ機能に加えて、簡易的なデータ保持やバッチ 処理、ライブラリ、Webアプリ機能、ログ機能など、業務を自動化するうえで必要な機能もオールインワンで揃っており、それらがインフラ を意識せず活用できる。もちろん厳密に言えばリソース制限があるので、非常に大規模な実行時間やデータ容量は無理だが、一般業務で使う 分には早々超えないと思われる。ただ、キャリア的には「GASを書ける」こと自体はおまけ扱いになりがち。 (2) クラウドやアプリ開発を念頭に置くならPython AWSやGCP, Azureなどのパブリッククラウドでサーバーを立てて処理をしたいとか、サーバーレスファンクションを使いたいなどのクラウド キャリアをイメージするならば、Pythonは大きな選択肢になるだろう。また、デスクトップアプリを作りたいと思ったときにも、Pythonは有 力な選択肢でいてくれる。(ただし、クラウドの場合、Pythonより軽くて速いGoに挑戦した方が良いのでは…とか、JavaScript系列の Node.jsでやる前提でPythonを勉強せずにGASを基本としてしまってもよいのでは…とか、そういう話はある。) (3) でもセキュリティを気にせずアプリを作りたいならGAS 「コーディングで業務改善したい!アプリも作りたい!でもセキュリティの勉強なんて…」と思う方は、Webアプリを前提としてGASを勉強 するのが良いだろう。ファイルをアップロードしてパラメータを設定して、実行ボタンを押したら処理されたファイルがダウンロードできる (もしくはDriveに格納される)ようなアプリは、法人内に閉じられたセキュアな環境で容易に作れるだろう。 (4) RPAやiPaaS, R, VBAはよく考えること 冒頭で紹介したRPAやiPaaSも業務自動化の候補ではあるが、無料で使える範囲が狭く、ポータビリティ性に欠ける点はある。例えば転職した として転職先に導入されていなければ宝の持ち腐れになるため、使うとしたらなるべくメジャーなツールにするのが無難と思われる。また、R は活用できる実務現場がごく一部の機械学習キャリア周辺に限定されるため、そのキャリアを志向するかどうかは長期目線で考えるべきであ るし、VBAはレガシーな言語でカッコいい案件は相対的に少ないので自身のキャリアとしてVBAを推す覚悟があるかは一考するべきだろう。 ④Pythonの使いどころを考える
  13. Copyright © 2021 Takumi Nasuno. All Rights Reserved. 20 最後まで

    お読みいただき ありがとうございました