ZPL-0481 Python開発 実測 23/25
Pythonツールの曖昧な依頼を受入テスト付き要件にするPrompt
要件定義を「考え始める」状態から「次の行動が決まる」状態へ。
利用者・実データ・異常時の扱いから、開発者と依頼者が同じ判定をできる要件表を作ります。
このPromptでできること
- 誰がいつ使うか、CLI/API/バッチの形、入出力サンプルを入力すると、正常・欠損・境界値の挙動を整理し、実装前に確認すべき問いと受入テストを作ります。
必要なもの(入力項目)
- 利用者と作業のタイミング
- CLI・HTTP API・バッチの別
- 実入力の匿名化サンプル・形式・量
- 期待出力のサンプルと保存先
- 欠損・重複・異常値時の扱い
- Python・OS/実行環境
- 外部API・ファイル・DBと権限
- 性能・秘密情報・運用制約
解決できる悩み
- 要件定義で何を決めるべきか分からない
- 一般論しか出ず、自分のケースに使えない
- 重要な前提やリスクを見落とす
- 結果を実行可能な形へ落とし込めない
こんな人向け
- Pythonプログラマーの初心者
- 実務を時短したい担当者
- AIの出力を判断材料として使いたい人
使うタイミング
要件定義に着手する直前、既存案を見直すとき、または公開・実行前に抜け漏れを確認するとき。
プロンプト本文
{{ }} の部分を自分の情報に置き換えてから使ってください。
Pythonで作るツールの依頼を、実装前に合意できる「動作と受入条件」へ整理してください。まだコードを書かないでください。
利用者と使用タイミング:{{利用者・使用場面}}
CLI / HTTP API / 定時バッチ等の実行形態:{{実行形態}}
匿名化した実入力の例、形式・件数:{{入力サンプル・量}}
期待出力の実例と保存先:{{期待出力・保存先}}
欠損・重複・不正値・途中失敗時の方針:{{異常時の方針}}
Pythonバージョン、OS、実行場所:{{Python・OS}}
外部API/DB/ファイルと権限:{{外部依存・権限}}
速度、ログ、秘密情報、保守制約:{{非機能制約}}
1. 実際に提供されたサンプルから入力項目・型/形式・必須性と出力を分ける。値が無いものは『未確定』にし、業務ルールを創作しない。
2. CLIなら引数/終了結果/エラー表示、HTTP APIならrequest/response、バッチなら起動条件/再実行/部分失敗を具体化する。用途不明なら3者を混ぜず質問する。
3. 各要件を『Given(前提)/When(操作)/Then(観測結果)』で検証可能にし、正常1件・欠損1件・境界1件を含める。書き込み処理は重複実行と途中失敗時の扱いを確認する。
出力:対象/対象外、I/O契約表、異常/機密/運用要件、受入テスト表、先に答えるべき質問(優先順)。『高速』『使いやすい』のみで完了扱いにしない。
使い方
返ってくるもの
- 対象/対象外、I/O契約、異常・運用要件、Given/When/Then受入テスト、未決質問
調整のしかた
「目的・利用者」を変更すると対象が変わり、「性能・セキュリティ制約」を具体化すると提案精度が上がります。
追加で投げると効く指示
- 初心者向けに手順を細かくしてください
- 上位3案を比較表にしてください
- 不足情報だけ質問してください
- リスクの高い順に並べてください
推奨モデル
コーディング能力・高推論モデル推奨
実測の入力と出力
下は実際にAIへ通したときの入力と、そのとき返ってきた出力です(モデル: gpt-5.1-thinking / 2026-09-16)。作例ではありません。
このとき入力した内容を見る
Pythonで作るツールの依頼を、実装前に合意できる「動作と受入条件」へ整理してください。まだコードを書かないでください。 利用者と使用タイミング:経理担当者2名。毎月1日の朝に、前月分の経費精算CSVを取り込んで、部門別の集計表を作る。 CLI / HTTP API / 定時バッチ等の実行形態:担当者の Windows PC で動かす想定。CLI にするかダブルクリックで動くバッチにするかは決まっていない。HTTP API にする予定は無い。 匿名化した実入力の例、形式・件数:経費精算システムから出力した CSV(Shift_JIS)。1か月 約800行。列:申請日,社員番号,部門コード,勘定科目,金額,摘要。匿名化した例: 2026/08/03,E0123,D10,旅費交通費,1320,電車代 2026/08/03,E0456,,会議費,5500,打合せ 2026/08/05,E0123,D10,旅費交通費,-1320,取消 期待出力の実例と保存先:部門コード×勘定科目の金額合計を Excel(xlsx)で出力し、共有フォルダ \fileserver\keiri\monthly\ に「2026-08_部門別経費.xlsx」で保存。現在は手作業で作っている表と同じ並びにしたい(手作業の表の見本は後で渡す)。 欠損・重複・不正値・途中失敗時の方針:部門コードが空の行がある(上の例の2行目)。今は手作業で「未設定」として集計している。マイナス金額(取消)は相殺してよい。同じ行が2回出力されることが稀にあるが、見分け方は決まっていない。 Pythonバージョン、OS、実行場所:Windows 11。Python は各PCに未インストール(情シスに依頼すれば 3.12 を入れられる)。 外部API/DB/ファイルと権限:共有フォルダへの書き込み権限はある。インターネット接続はあるが、社内規定で外部パッケージのインストールは情シスの承認が必要。 速度、ログ、秘密情報、保守制約:800行なので速度は気にしない。社員番号は個人情報扱いなのでログに出さない。保守するのは自分(Python 初心者)。 1. 実際に提供されたサンプルから入力項目・型/形式・必須性と出力を分ける。値が無いものは『未確定』にし、業務ルールを創作しない。 2. CLIなら引数/終了結果/エラー表示、HTTP APIならrequest/response、バッチなら起動条件/再実行/部分失敗を具体化する。用途不明なら3者を混ぜず質問する。 3. 各要件を『Given(前提)/When(操作)/Then(観測結果)』で検証可能にし、正常1件・欠損1件・境界1件を含める。書き込み処理は重複実行と途中失敗時の扱いを確認する。 出力:対象/対象外、I/O契約表、異常/機密/運用要件、受入テスト表、先に答えるべき質問(優先順)。『高速』『使いやすい』のみで完了扱いにしない。
返ってきた出力を見る
以下を、そのまま実装前の「動作仕様・受入条件」のたたき台にできます。重複判定や再実行時の上書きなど、現時点で根拠のない業務ルールは 未確定 としています。 編集 部門別経費集計ツール 動作仕様・受入条件 v0.1 1. 目的 経理担当者が毎月1日の朝に、経費精算システムから出力した前月分CSVを取り込み、部門コード × 勘定科目ごとの金額合計をExcelファイルとして作成する。 現行の手作業を置き換えることを目的とする。 現時点では、現行Excelの「列順・行順・見出し・書式」の見本が未提供のため、集計ロジックまでは定義し、最終Excelレイアウトは未確定とする。 2. 対象 項目 内容 状態 利用者 経理担当者2名 確定 利用頻度 毎月1日の朝、原則月1回 確定 OS Windows 11 確定 入力 経費精算システムから出力したCSV 確定 文字コード Shift_JIS 確定 ※Windows-31J/CP932との差異は要確認 データ量 約800行/月 参考値 集計単位 部門コード × 勘定科目 確定 集計値 金額の合計 確定 部門コード空欄 「未設定」として集計 確定 マイナス金額 そのまま加算し、正金額と相殺可能 確定 出力形式 Excel .xlsx 確定 保存先 \\fileserver\keiri\monthly\ 確定 ファイル名 YYYY-MM_部門別経費.xlsx 確定 実行方式 CLI またはダブルクリック起動 未確定 3. 対象外 現時点の初期版では、以下は対象外とする。 HTTP API化 Web画面 データベースへの登録 外部クラウドサービスへの送信 メール送信 経費精算システムへの自動ログイン・CSV自動取得 社員番号単位の集計 社員情報のマスタ照合 部門コードの自動補完 勘定科目の自動変換 重複行の自動削除 現行Excelと完全に同じ書式・並び → 見本受領後に仕様へ追加する。 4. I/O契約 4.1 入力CSV 実際に提供されたサンプルから確認できる入力項目のみを定義する。 列名 想定型 サンプル上の形式 必須性 集計への使用 備考 申請日 日付 YYYY/MM/DD 未確定 現時点では使用しない 月判定に使うか未確定 社員番号 文字列 E0123 未確定 使用しない 個人情報。ログ出力禁止 部門コード 文字列 D10 任意 使用 空欄は「未設定」 勘定科目 文字列 旅費交通費 未確定 使用 空欄時の扱い未確定 金額 数値 1320, -1320 未確定 使用 負数を許容 摘要 文字列 電車代 未確定 使用しない ログへの出力方針も要確認 列順は現在のサンプルでは、 申請日,社員番号,部門コード,勘定科目,金額,摘要 である。 ただし、列順を固定して読むか、ヘッダー名を基準に読むかは未確定。 サンプル 2026/08/03,E0123,D10,旅費交通費,1320,電車代 2026/08/03,E0456,,会議費,5500,打合せ 2026/08/05,E0123,D10,旅費交通費,-1320,取消 この3行だけを集計した場合の集計値は、 部門コード 勘定科目 合計金額 D10 旅費交通費 0 未設定 会議費 5,500 となる。 4.2 入力ファイル指定 未確定。 実行方式決定後に以下のいずれか一つを採用する。 CLIとダブルクリック方式の仕様を混在させない。 CLIを採用する場合に決める事項 CSVパスをコマンド引数で指定するか 対象年月を引数で指定するか 出力先を固定するか引数化するか 正常終了時の終了コード 入力エラー時の終了コード エラー表示先 ダブルクリック方式を採用する場合に決める事項 CSVをどこに置けばよいか CSVをファイル選択画面から選ぶか 対象年月をどのように決定するか 処理成功をどう知らせるか エラー時に画面を閉じず確認できるようにするか 再実行方法 5. 出力契約 5.1 出力ファイル 保存先: \\fileserver\keiri\monthly\ ファイル名: YYYY-MM_部門別経費.xlsx 例: 2026-08_部門別経費.xlsx 5.2 Excelの内容 最低限、次の情報を持つ。 項目 状態 部門コード 確定 勘定科目 確定 合計金額 確定 行の並び順 未確定 部門の並び順 未確定 勘定科目の並び順 未確定 シート名 未確定 見出し 未確定 小計・総合計 未確定 金額書式 未確定 列幅 未確定 色・罫線等 未確定 現行の手作業Excel見本を受領後、上記を追加確定する。 6. 集計ルール 現時点で確定できるルールは以下。 部門コード CSV上の部門コードが空欄の場合、 未設定 として一つの部門として集計する。 金額 正数・負数を符号付きのまま加算する。 例: D10,旅費交通費,1320 D10,旅費交通費,-1320 は、 D10,旅費交通費,0 となる。 重複 自動削除しない。 理由:同じ行が2回現れることはあるものの、真の重複と正当な同額経費を区別する業務ルールがまだ無いため。 重複検出・警告を行うかについても現時点では未確定。 7. 異常系 7.1 現在決められるもの 共有フォルダへ書き込めない場合、処理成功とは扱わない。 Excelファイルを正常に保存できなかった場合も、処理成功とは扱わない。 途中まで作成したファイルが存在する可能性があるため、壊れたファイルを正常な成果物として残さないことを受入条件とする。 実装方式として一時ファイルを利用するか等は実装設計で決める。 7.2 未確定の異常値 以下は業務判断が必要なため、勝手に補正・除外しない。 状態 現在の扱い 申請日空欄 未確定 不正な日付 未確定 社員番号空欄 未確定 勘定科目空欄 未確定 金額空欄 未確定 金額が文字列 未確定 金額が小数 未確定 部門コード前後の空白 未確定 勘定科目前後の空白 未確定 CSV列不足 未確定 CSVに余分な列が追加 未確定 ヘッダー名変更 未確定 CSVが0件 未確定 CSVがShift_JISとして読めない エラー候補、詳細未確定 「エラーにする」「警告して続行する」「その行だけ除外する」のいずれにするか、業務側で決める。 8. 重複実行・再実行 最重要未確定事項の一つ。 同じ対象月について、 2026-08_部門別経費.xlsx が既に存在する状態で再実行した場合の動作はまだ決まっていない。 候補は以下だが、実装前に一つを選ぶ。 上書きを禁止してエラー 確認してから上書き 無条件で上書き 別名で保存 自動でどれかを採用しない。 また、同じCSVを2回処理した場合に、既存Excelへ加算してはいけない。 本ツールを「毎回CSVからExcelを新規生成する方式」とするかについて最終確認が必要。 9. 途中失敗 必要な受入条件: Excel保存が完全に成功して初めて正常終了とする。 例えば、 CSV読込成功 集計成功 Excel生成開始 共有フォルダ書込中にエラー となった場合、利用者に「成功」と表示してはいけない。 また、 2026-08_部門別経費.xlsx という正常ファイル名で破損・未完成ファイルが残らないことを求める。 既に正常な同名ファイルが存在する場合に、そのファイルを失敗処理で破壊しないことも必要。 10. 機密情報要件 社員番号は個人情報として扱う。 以下は禁止する。 社員番号をログへ記録 社員番号をエラーメッセージへ表示 CSVの1行全体をログへ記録 デバッグ目的で入力CSV全体を別ファイルへコピー ログに必要な場合は、 42行目:金額の形式が不正です のように、社員番号等を含めず位置とエラー種別のみを記録する。 外部APIへデータを送信しない。 11. ログ要件 ログを作成するか自体は最終確認が必要だが、保守性を考えると最低限以下の情報は記録候補とする。 実行開始日時 実行終了日時 入力ファイル名 読込行数 正常処理行数 エラー件数 出力ファイル名 成功 / 失敗 エラー種別 記録しない情報: 社員番号 CSV各行の全文 ログ保存先・保持期間は未確定。 12. 実行環境・依存関係 項目 状態 Windows 11 確定 Python 現在未インストール Python 3.12 情シスへ依頼すれば導入可能 外部パッケージ 情シス承認必要 インターネット 接続可能だが自由なパッケージ導入不可 共有フォルダ書込 権限あり .xlsx出力にはPython標準ライブラリだけでは不足するため、実装方式を決める際に、 外部Pythonパッケージ利用を情シス承認してもらう Pythonを利用者PCへ入れず実行ファイルとして配布する などの選択肢を別途検討する。 これは動作仕様ではなく配布・保守方式の設計判断とする。 13. 保守要件 保守担当者はPython初心者であるため、障害発生時にソースコードを読まなくても、 入力ファイルが悪い 共有フォルダへ接続できない Excelを書き込めない 想定外のエラー 程度を区別できるエラー表示を求める。 単に、 Exception や 処理に失敗しました だけでは受入不可。 14. 受入テスト AT-01 正常:通常の集計 Given 以下の有効なCSVがある。 2026/08/03,E0123,D10,旅費交通費,1320,電車代 2026/08/04,E0456,D10,旅費交通費,680,バス代 When 2026年8月分として集計処理する。 Then Excel内で、 D10 × 旅費交通費 = 2,000円 と確認できる。 AT-02 欠損:部門コード空欄 Given 2026/08/03,E0456,,会議費,5500,打合せ が存在する。 When 集計処理する。 Then この行を削除せず、 未設定 × 会議費 = 5,500円 として集計される。 AT-03 境界:正負が完全相殺 Given 2026/08/03,E0123,D10,旅費交通費,1320,電車代 2026/08/05,E0123,D10,旅費交通費,-1320,取消 が存在する。 When 集計処理する。 Then D10 × 旅費交通費 = 0円 となる。 0円になった組合せをExcel上に残すか非表示にするかは未確定。 AT-04 部門が異なる同一勘定科目 Given D10,旅費交通費,1000 D20,旅費交通費,2000 に相当する入力がある。 When 集計する。 Then D10とD20は別集計となり、合算して3,000円の一行にはしない。 AT-05 勘定科目が異なる同一部門 Given D10に、 旅費交通費 1,000円 会議費 2,000円 がある。 When 集計する。 Then 勘定科目別に2つの集計結果となる。 AT-06 同一行が2件ある場合 Given 完全に同じCSV行が2行存在する。 When 現在の確定済み仕様で処理する。 Then 勝手に片方を削除しない。 2件とも集計対象となる。 ※重複排除ルール決定後は、このテストを変更する。 AT-07 社員番号の非露出 Given 社員番号 E0123 を含むデータがある。 When 正常処理またはエラー処理する。 Then ログおよびエラー表示に、 E0123 が記録されない。 AT-08 保存失敗 Given 共有フォルダへ一時的に書き込めない状態である。 When 集計結果を保存する。 Then 処理を正常終了扱いにせず、利用者が保存失敗を認識できる。 未完成のExcelを正常な成果物として残さない。 AT-09 途中失敗 Given 集計処理自体は成功するが、Excel保存処理の途中でエラーが発生する。 When 処理が終了する。 Then 正常終了とは表示されない。 また、既存の正常な同名Excelが存在する場合、その正常ファイルを破壊しない。 AT-10 再実行 Given 2026-08_部門別経費.xlsx が既に存在する。 When 2026年8月分を再度実行する。 Then 期待動作は未確定。 上書き方針決定後、必須受入テストとして確定する。 AT-11 800行規模 Given 実運用相当の約800行のCSVがある。 When 1回集計する。 Then 全行が処理され、行数増加だけを理由に処理失敗しない。 特定の秒数以内という性能目標は設定しない。 AT-12 Excelレイアウト Given 現行手作業Excelの見本が提供されている。 When 同じ月のCSVをツールで処理する。 Then 指定された、 部門順 勘定科目順 行・列構成 見出し 合計表示 必要な書式 が見本と一致する。 詳細条件は見本受領後に追加する。 15. 現時点で受入完了とはしない表現 以下だけでは受入基準を満たさない。 「速く動く」 「使いやすい」 「Excelが作れる」 「エラー処理済み」 「重複対応済み」 「初心者でも使える」 必ず、入力・操作・観測できる結果で判定する。 16. 実装前に答えるべき質問 優先度順。 1. 再実行時、同名Excelが既に存在したらどうするか 候補: 上書き禁止 確認後上書き 無条件上書き 別名保存 書き込み安全性に直接影響するため最優先。 2. 実行方式をCLIとダブルクリックのどちらにするか 経理担当者2名が毎月使うため、ここを確定してから起動・エラー表示・再実行方法を定義する。 HTTP APIは対象外。 3. 現行の手作業Excel見本 最低限確認するもの: シート構成 部門順 勘定科目順 見出し 小計・総合計 0円行の表示有無 書式 4. 重複行をどう扱うか 「完全一致した行だから削除」は危険。 真の重複を識別できるID等がCSVに存在するか、経費精算システム側の仕様確認が必要。 決まるまでは削除しない。 5. 対象年月を何から決めるか 候補: 利用者が指定 CSV内の申請日 CSVファイル名 実行日の前月 現時点では未確定。 特に複数月の行が混ざったCSVをどう扱うか決める必要がある。 6. 不正行の処理 特に、 金額空欄 金額が数値ではない 勘定科目空欄 不正日付 について、 「全処理中止」「該当行だけ除外」「警告して継続」のどれにするか決める。 7. CSVのヘッダー有無と列仕様 提供例にはヘッダー行が示されていないため確認する。 また、将来列が追加されても動かす必要があるか確認する。 8. 文字コード システム仕様上、本当にShift_JISか、Windows-31J / CP932かを確認する。 日本語の一部文字で差が出るため、可能なら実ファイルで確認する。 9. ログ ログを残すか 保存場所 保存期間 を決める。 社員番号はどの場合でも記録しない。 10. 配布方式 機能仕様確定後に、 Python 3.12を2台へ導入 承認済み外部パッケージを導入 Python不要の実行形式として配布 のどれが社内運用に適するか情シスと決める。 17. 実装開始Gate 以下が決まるまでは、本番実装へ進まない。 必須: 実行方式 再実行・上書き方針 現行Excel見本 対象年月の決定方法 不正金額・勘定科目欠損時の扱い CSVヘッダー仕様 後から追加でもよい: ログ保持期間 細かなExcel装飾 重複自動判定 ※判定基準が得られるまでは重複排除しない。 このGateを通過した段階で、初めて実装仕様を固定する。 特に先に決めたいのは、①同名Excelの再実行時の扱い、②CLIかダブルクリックか、③現在の手作業Excel見本の3点です。ここが決まれば、次に「実装者へそのまま渡せる確定版仕様書」までかなり機械的に固められます。
この出力になっていれば成功
- 入力/出力と失敗時動作が観測可能
- 正常・欠損・境界の判定がある
- 秘密情報を扱う場合に方針あり
使うときの注意
実行前にGit差分またはバックアップを確認し、テスト環境で検証してください。
実データや異常方針がないなら未確定と質問。型・業務ルール・権限を勝手に決めない。
参考にした一次情報: Python Docs / Stack Overflow