ITスキル
Pythonを仕事で使えるレベルまで学ぶには何が必要か
入門書を終えた後に業務で止まるのは文法ではなく、実行環境・データの取得・エラー処理・引き継ぎの4点です。最初に自動化する業務の選び方と、そこから逆算した4段階の進め方をまとめています。
この記事でやること
- こんな人に向けています
- Pythonの入門は終えたが、業務で使えるところまで届いていない社会人
- 読み終えたときの状態
- 文法学習の次にやるべきことが分かり、業務に持ち込む最初の題材を決められる状態
入門書を1冊終えて、繰り返しも条件分岐も関数も書けるようになった。それなのに、月初にやっている集計は今月も手作業のままです。複数の部署から届いた表計算ファイルを開いて、コピーして、貼り付けて、合計を確認する。この作業をPythonに置き換えようとすると、最初の1行を書く前に手が止まります。
止まる場所は文法ではありません。会社のPCにPythonを入れてよいのか、元のファイルはどこから取ってくるのか、途中でエラーが出たら誰が気づくのか、自分が異動したら誰が動かすのか。入門書が扱っていない領域が、業務化の入り口に全部並んでいます。
文法の次に必要になるのは、書いたものを業務の中で回し続けるための条件です。
文法を覚えても動かないのは、環境・データ・保守で止まるからです
業務適用でつまずく箇所は、だいたい3つに分かれます。
環境は、コードを実行する場所の問題です。学習中は自分の端末かブラウザ上の学習環境で動かしていました。業務になると、その端末が会社の管理下にあるか、ソフトを追加してよいか、実行する時刻に端末が起動しているかが条件に加わります。文法と関係のない部分で計画が崩れます。
データは、処理する対象をどうやって手元に持ってくるかの問題です。入門書の題材はきれいな形で用意されています。実務のファイルは、見出しが2行になっていたり、セルが結合されていたり、同じ項目が部署ごとに違う名前で入っていたりします。処理を書く時間より、この差を吸収する時間のほうが長くなります。
保守は、書いた後の問題です。動くものができた時点では成功に見えますが、3か月後には自分でも読めなくなり、担当が替われば手作業に戻ります。業務効率化が一時的な改善で終わるのは、ここが理由です。
3つは順番に来ます。環境が決まらないと題材が決まらず、題材が決まらないとデータの形も保守の設計も決まりません。
最初の題材は「毎月起きる・手順が決まっている・戻せる」で選びます
学習が業務に届くかどうかは、1本目に何を選ぶかでほぼ決まります。難しさで選ばず、次の3条件で選びます。
- 毎月発生すること。同じ処理が毎月走れば、作るのにかけた時間が短い期間で戻り、改善する機会も毎月来ます
- 手順が決まっていること。いまの手作業をそのまま置き換えるだけなら、仕様を自分で考える必要がありません。仕様を決める作業が入った瞬間、コードを書く前に止まります
- 失敗しても戻せること。手作業の手順が残っているうちは元に戻せます。戻せない業務から手をつけると、慎重になりすぎて完成しません
条件に照らすと、候補は次のように分かれます。
| 毎月の定型集計 | 一度きりの大量処理 | 他部署も使う共有の仕組み | 社外へ出す提出物の作成 | |
|---|---|---|---|---|
| 作った時間が戻るか | 毎月効くので回収が早い | その1回で終わる | 効くが要件を揃える工数が先に来る | 効くが失敗の代償が大きい |
| 手順が決まっているか | 決まっている。手作業の再現でよい | 決まっていないことが多い | 部署ごとに例外が出て決まらない | 決まっているが例外運用が多い |
| 間違えたときに戻せるか | 手作業に戻せる | やり直せるが時間を失う | 他部署の作業が止まる | 相手に届いた後は戻せない |
| 1本目の題材として | 向く | 練習になるが定着しない | 2本目以降にする | 手作業と並走できるまで待つ |
もう1つ、自分がいまも手を動かしている業務を選んでください。他人の作業を自動化しようとすると、最初にやることが要件の聞き取りになります。そこで相手の都合に依存し、学習の勢いが切れます。
実行する場所を先に決めないと、コードは自分の端末から出られません
どこで動かすかを後回しにすると、完成したコードは自分の端末の中に閉じたままになります。選択肢ごとに準備と壊れ方が違います。
| 自分の端末で手動実行 | 自分の端末で時刻起動 | 部門の共有端末・サーバー | クラウド上の実行環境 | |
|---|---|---|---|---|
| 準備の手間 | ほぼない。今日から始められる | 起動設定を覚える分だけ増える | 設置場所と権限の申請が要る | 申請に加え、データを社外に置いてよいかの判断が要る |
| 動かせる人 | 自分だけ | 設定した端末に依存する | 部門内で共有できる | 権限を渡した人 |
| 止まる原因 | 実行するのを忘れる | 電源・スリープ・更新による再起動 | 端末の入れ替えやOS更新 | 認証情報の期限切れ |
| 引き継ぎやすさ | 手順書があれば渡せる | 設定が端末に埋もれて見えない | 置き場所が共有され渡しやすい | 手順は残るが権限管理が要る |
1本目は「自分の端末で手動実行」で構いません。時刻起動に進むのは、手動で3回以上まわして結果が安定してからです。自動で走るものが壊れると、気づくのが遅れます。
会社の端末に何を入れてよいかは、情報システム部門の規程で決まります。始める前に、インストール自体の可否、外部からライブラリを取得してよいか、業務データをどこに保存してよいかの3点を確認してください。後から消すことになると、業務適用だけでなく学習も止まります。
データの取得が、全体の作業量の大半を占めます
処理を書く前に、対象のデータをどう手に入れるかを決めます。取得元はおおまかに、手元にある表計算ファイルやCSV、業務システムの画面から出力する帳票、システムのデータベースやAPIへ直接つなぐ経路の3つです。
3つ目は権限の申請が必要になることが多く、1本目には向きません。最初は「手でダウンロードしたファイルを決まったフォルダに置く」までを人がやり、その先だけを自動化します。手動の工程を残すのは妥協ではなく、動くものを先に持つための順番です。
読み込んだ直後には、列名の一覧と行数を画面に出して目で確認する処理を入れてください。実務のファイルは、翌月に列が1つ増えます。項目名が「部署」から「部門」に変わります。数値のはずの列に文字列が混ざります。こうした変化に気づかないまま処理が最後まで走ると、それらしい数字が出るのに中身が間違っている、という一番やっかいな失敗になります。冒頭で必要な列の有無を確認し、なければその場で止める。それだけで誤った結果が下流に流れることは防げます。
集計した先で、その数字をどう読み、どこまで統計や可視化に踏み込むかは別の話です。分析側の学ぶ順番はデータ分析は何から学ぶべきかで扱っています。
エラーで止まったときに何が起きるかを、先に決めます
入門書では例外処理が終盤の章にあり、読み流したまま終わりがちです。業務で使う場合、ここは付け足しではなく本体に近い部分になります。困るのは止まることではなく、止まらずに間違った結果を出すことだからです。
想定される事態を、3つに分けて扱います。
- 想定内で、続けてよいもの。1行だけ空欄がある、対象外のデータが混じっている、といった場合です。記録を残して次へ進みます
- 想定内だが、続けてはいけないもの。元ファイルが存在しない、列名が変わっている、件数が前月と桁違いに違う。この場合は途中で止めて、人が確認します
- 想定していないもの。握りつぶさず、そのまま止まって構いません。原因が分からないまま処理が完了するほうが危険です
例外をまとめて捕まえて何もしない書き方は避けてください。目の前ではエラーが消えたように見えますが、後から原因を追えなくなります。
実行のたびに「いつ、どのファイルを、何件処理したか」を1行残してください。テキストファイルへの追記で十分です。数字が合わないと指摘されたとき、この1行の有無で確認の時間が変わります。
自動化した最初の3回は、手作業の結果と突き合わせます。合わない原因の多くはコードの誤りではなく、手作業のほうに文書化されていない例外運用が入っていたことです。
引き継げる状態の最低条件は、実行手順が文書になっていることです
自分だけが動かせるスクリプトは、資産ではなく負債になりやすいものです。作った人が異動した時点で誰も触れなくなり、手作業に戻ります。途中まで自動化された状態で引き継がれると、前より分かりにくい業務ができ上がります。
最低限そろえるのは次の4つです。
- 実行手順。どのファイルをどこに置き、何を実行し、結果がどこに出るか。コードを読まずに分かる書き方にします
- 前提条件。必要なソフト、ライブラリ、アクセス権限。ここが抜けると引き継ぎ先で最初から詰まります
- 結果が正しいことの確認方法。何と突き合わせれば正しいと言えるのかを書きます
- 動かなくなったときに手作業でやる手順。これが一番効きます。復旧の見込みがなくても業務は止まりません
文書はコードと同じ場所に置きます。別の場所に置いたものは更新されません。対象月やファイルの場所といった設定値も、コードの中に散らさず先頭にまとめてください。引き継いだ人が最初に触るのはそこです。読める状態とは、整った設計ではなく、変えたい箇所がすぐ見つかる状態を指します。
社内で使ってもらう段階に進むなら、誰にどう許可を取り、どこまでの範囲で始めるかという別の判断が要ります。その進め方は学んだことを仕事に持ち込むにはどうすればよいかにまとめています。
学習は4つの段階で進みます
順番を間違えると、文法の復習だけが延々と続きます。段階ごとに到達点を決め、期間ではなくそこで次へ進んでください。
段階1:調べれば書ける状態にする。 リスト、辞書、繰り返し、条件分岐、関数、ファイルの読み書き。この範囲を暗記する必要はありません。手が止まったときに何を調べればよいか分かるなら、次へ進んで構いません。
段階2:1本を最後まで通す。 手元のファイルを読み込み、加工し、別のファイルとして書き出すまでを途切れずにつなげます。題材は自分の手作業です。ここで初めて、表計算ファイルを読み書きするライブラリや、表形式のデータを扱うライブラリに触ります。動くところまで行けば、文法の理解は後から追いつきます。
段階3:壊れ方を設計する。 列名の確認、実行記録、手作業との突き合わせを組み込みます。ここでようやく「仕事で使える」の下限に届きます。段階2で止めると、動くけれど誰も結果を信用しない状態が残ります。
段階4:他人が動かせるようにする。 手順書、設定値の集約、実行場所の移動。ここを飛ばすと、2本目、3本目のころに自分が保守で埋まり、新しいことに手が出せなくなります。
段階2で止まる人が多いのは、内容の難しさより、まとまった時間が取れないことが原因です。1回あたりの単位が大きすぎて再開できていないなら、社会人の学習が途中で止まる理由で扱う計画の作り直し方が使えます。それでも越えられず、質問できる相手が要ると判断した場合は、社会人向けITスクールの選び方で目的別の判断基準を整理しています。
よくある詰まりどころ
会社の端末にPythonを入れられない
規程で何が禁止されているかを具体的に確認してください。インストール全般が禁止なのか、外部からのライブラリ取得が制限されているのか、業務データの保存先が決まっているだけなのかで、取れる手が変わります。全面的に難しい場合は、学習は個人の端末で続け、業務適用の可否だけ切り離して判断します。
どこまで自動化すべきか判断できない
手作業1回あたりの所要時間と、月あたりの発生回数を数えてください。数えないまま効率化を考えると、手間のわりに効果の薄い作業から手をつけることになります。ただし1本目は回収を計算に入れないでください。目的は時間短縮ではなく、環境とデータの通り道を確保することです。
エラーが出ると全体を書き直してしまう
エラーメッセージの最終行に、何が起きたかとどの行で起きたかが出ています。ここを読まずに書き直すのが、最も時間を失う進み方です。意味が分からない場合は、その一文をそのまま検索する。この習慣の有無で独学の速度が変わります。
1本目は動いたが、2本目が進まない
1本目を使い回せる形にしていないことが原因です。ただし早い段階で共通化すると、かえって読みにくくなります。2本目まではコードを複製して直す方式で構いません。3本目のときに、3回とも同じだった部分だけを切り出します。
今週やることを1つに絞るなら、いま自分が毎月手作業でやっている業務を3つ書き出し、そのうち「失敗しても手作業に戻せるもの」に印を付けてください。印が付いたものが、1本目の題材です。コードを書き始めるのは、その次で構いません。