「Pythonを勉強したけれど、仕事で何かを作れる気がしない」。この連載は、そこから抜け出すための記事です。
目指すのは、必要なデータを読み、条件に従って処理し、結果を出す小さな道具を自分で作れること。そして、動かなかったときに原因を調べ、修正できることです。文法を最初から最後まで覚える必要はありません。作業に必要になったものから使っていきます。
この連載で作るもの
中心となる題材は「フォルダに届いた売上CSVを、部門別に集計するツール」です。
手作業なら、ファイルを開き、確定済みの行だけを選び、金額を合計し、別のファイルに保存します。これを、最後には次の一行で実行できるようにします。
python sales_report.py --input data --output output/report.csv
このコマンドは第10章で作る完成形です。今は実行できなくて構いません。「入力フォルダと出力先を渡せば、集計が終わる」という完成後の姿を先に確認してください。
集計だけなら表計算ソフトでもできます。Pythonを使う価値が出るのは、同じ処理を何度も行う、ファイル数が増える、入力の不備を毎回確認する、といった場面です。既存の道具で十分なら、無理に作り直す必要はありません。
「できる」の範囲を決める
本連載では、次の作業ができれば、基本的な開発を一巡できたと考えます。
- 自分のPCに作業環境を用意する。
- ファイルや外部サービスからデータを取得する。
- 条件に従って選別・変換・集計する。
- 入力の不備や処理の失敗を検出する。
- 元データを壊さず、結果を保存する。
- 動作を確かめ、使い方と変更履歴を残す。
Webアプリ、機械学習、大人数でのシステム開発には、それぞれ別の知識が必要です。この連載では、まず自分や同僚が使う小さな業務ツールを完成させます。
作る前に、五つだけ決める
いきなりコードを書かず、次の五つを短い文章にします。
- 入力:どこに、どんなデータがあるか。
- 処理:何を選び、何を計算するか。
- 出力:何を、どの形式で、どこに保存するか。
- 失敗時:不正なデータを見つけたら止めるか、除外するか。
- 完成条件:どんな入力に対して、どんな結果なら正しいか。
売上集計なら、最初の仕様は次のようになります。
入力:dataフォルダ直下のCSVファイル
列:department(部門)、amount(金額)、status(状態)
処理:statusがconfirmedの行だけを部門別に合計
出力:部門名と合計金額をCSVに保存
不備:対象行の金額が空欄・不正なら、出力せず停止
保護:元のCSVと既存の出力ファイルを上書きしない
ここまで書くと、「キャンセル行の金額も確認するのか」「同じファイルを二重に入れたらどうするのか」といった未決定事項が見えてきます。実務では、その判断をコードを書く前に済ませることが大切です。
本連載ではキャンセル行を集計から除外し、その金額も検証しません。ファイルや取引の重複検知は実装しないため、入力フォルダには今回の対象だけを入れます。こうした制約も、使う人に伝える仕様の一部です。
小さな正解を用意する
最初の確認用データは、手計算できる量にします。
department,amount,status
営業一部,1200,confirmed
営業二部,2500,confirmed
営業一部,300,confirmed
営業一部,900,cancelled
期待する結果は、営業一部が1,500円、営業二部が2,500円です。900円のキャンセル行は含みません。
「エラーが出なかった」だけでは正しいか分かりません。この二つの数字と一致することを確認して、初めて集計が動いたと言えます。その後に空欄、不正な金額、入力ファイルがない場合を試します。
連載の読み方
初めてなら第1章から順番に進めてください。途中から読む場合も、各記事に開始時点で必要なコードやデータを載せています。記事ごとに別の作業フォルダを使うと、同名ファイルの混同を防げます。
- 第1章 開発環境を整えてコードを動かす
- 第2章 最初の実用ツールを作る(公開準備中)
- 第3章 作業に必要な文法を使いこなす(公開準備中)
- 第4章 ファイルとフォルダの操作を自動化する(公開準備中)
- 第5章 CSVとJSONを加工・集計する(公開準備中)
- 第6章 ライブラリとAPIでできることを増やす(公開準備中)
- 第7章 エラーを読んで自分で直す(公開準備中)
- 第8章 繰り返し使えるコマンドに仕上げる(公開準備中)
- 第9章 テストとGitで安心して変更する(公開準備中)
- 第10章 実務で使えるツールを完成させる(公開準備中)
各章は順次公開します。「公開準備中」の章は、公開後にこの目次から読めるようになります。
公開済みの章のコードとサンプルデータは、連載サンプル(ZIP)からも取得できます。展開後は章ごとのフォルダに移動して使ってください。
今日やること
自分の作業から「同じ手順を繰り返しているもの」を一つ選び、入力・処理・出力・失敗時・完成条件を書き出してください。大きな仕組みにする必要はありません。最初の一つは、数件のデータで正解を確認できる作業が適しています。
次は、その作業を書くための環境を用意します。