2026.08.24 約 17 分 日野 政人 (Chapter Tech 代表)

スプレッドシート自動化に16時間コードを書いたのは4時間だけだった顧客の理解は実物を見てから進む

16時間で終わった案件です。うち、コードを書いていたのは4時間ほどでした。

Googleスプレッドシートの顧客台帳と、毎月の報告書づくりをGoogle Apps Scriptで自動化した記録です。作る対象がはっきりした、規模の小さい案件でした。ヒアリングは1時間で足りています。

ところが実物を提出業務に使ってもらった瞬間、ヒアリングでは一つも挙がらなかった要件が7件出ます。登録番号がセルの中で日付に化ける。提出日は和暦で書く。設備の欄に書くのは型式ではなく処理区分。どれも見れば1分で分かり、聞いても出てこない種類のものでした。

残りの12時間が、どこに消えたのかを書きます。

この記事のポイント

  • 1. 作る対象が明確な小規模案件でも、要件はヒアリングでは出揃わない。この案件でヒアリング1時間から得られたのは「何を自動化するか」までで、様式のどの欄に何をどの書式で書くかは、動く実物を実際の提出業務に通した瞬間に7件まとめて表面化した。依頼者が隠していたわけではなく、毎月手で書いていた項目は当人にとって入力項目として認識されておらず、言語化の対象にならないためである。
  • 2. だから工数は、実物を置くまでの1周目と、実物が引き出した要件を実装する2周目に分けて見積もる。この案件の配分は1周目が5時間、2周目が10時間で、2周目のほうが大きい。一括見積りでこれをやると、2周目に相当する工数が「追加」か「サービス」のどちらかに落ちる。規模が小さい案件ほど1周目が安く済むため、聞き取りを重ねるより実物を出したほうが速く、かつ安い。
  • 3. 実装が速くなること自体には、単独ではほとんど価値がない。16時間の内訳のうちコードを書いていたのは4時間ほどで、残りは業務の理解、正しさの確認、一日に何十件も入力する人にとっての使い勝手の確認、指摘を受けてからの原因特定に使われている。自動化できるのは正しさの条件が決まっている作業だけで、この案件で最も難しかったのはその条件を決めることだった。AI駆動開発が効いたのは、捨てる前提の実物を作れる価格帯まで1周目を落としたことであって、「AIを入れれば自動化できる」という要約は、作業のうちコードを書く部分だけを見て、その前後に残る工程を落としている。

1. 作るものが決まっている、はずの案件だった

設備の法定点検を行っている事業者からの依頼です。顧客台帳と点検記録をGoogleスプレッドシートで管理し、毎月、複数の行政窓口へ点検実績の報告書を提出しています。

手作業だったのは次の四つでした。

  • 点検記録を入力するたびに、顧客番号から氏名を台帳で目視で探して転記する
  • 顧客番号・氏名・電話番号での顧客の検索が、手動のフィルタ操作に頼っている
  • 提出先ごとに様式の異なる月次報告書を、毎月、記録から転記して整形しExcelにする
  • 提出先ごとに対象の切り分けルールがあり(一方の窓口に出した分は、もう一方の一覧から除く)、転記の抜けや重複が起きやすい

依頼内容としては、これ以上ないほど明確な部類です。作る対象は目の前のスプレッドシートにあり、出力すべき様式も現物があり、業務のサイクルも毎月同じです。実際、ヒアリングは1時間で済みました。

本稿の事例は実際の案件をもとにしていますが、依頼者が特定されないよう、業種・提出先・件数・工数はいずれも実際から少しずらしています。設計上の判断と、出てきた要件の性質は、実際のものです。

にもかかわらず、この案件の工数の三分の二は、ヒアリングの時点では存在しなかった要件に使われました。本稿はその記録です。

2. ヒアリングで決まったのは、作る対象までだった

1時間の打ち合わせで確定したことと、確定しなかったことを並べると、境目がはっきりします。

確定したこと。どのシートを使うか。検索を三種類つけること。提出先が三つあること。月次のサイクルがどう回っているか。つまり、何を作るかです。

確定しなかったこと。それぞれの様式の、どの欄に、何を、どういう書式で書くか。つまり、作ったものが正しいかどうかを判定する条件です。

この境目は、依頼者の説明が不十分だったから生まれたのではありません。三つの理由が重なっています。

一つ目は、当人にとって当たり前すぎる項目は、言語化の対象にならないことです。この案件では、事業者の登録番号が該当しました。毎月、報告書の決まった欄に手で書き込んでいる番号です。手が覚えている作業は「入力すべき項目」として意識に上らないため、「何を自動化したいか」を聞かれたときに出てきません。

二つ目は、依頼者自身も正確には覚えていないことです。提出日を和暦で書くか西暦で書くかは、現物を前にすれば即答できますが、記憶から取り出すとなると自信を持って答えられません。曖昧な記憶で答えるくらいなら言わない、という判断は合理的です。

三つ目は、様式の現物を見ても分からないことです。記入例のない空欄には、そこに何を書くのが正解かが書かれていません。設備の記載欄に型式を書くのか処理区分を書くのかは、様式を眺めても決まらず、その窓口に実際に提出して受理された経験の中にしかありません。

要件定義という工程に「曖昧さをゼロにする」ことを求める限り、この三つは埋まりません。この構造については「プロジェクト失敗の原因は要件定義」を100回見聞きしたに書いた通りで、規模が小さくなっても性質は変わりませんでした。

顧客の理解は、実物を見た分だけ進む

要件を「何を作るか」「どの欄に何をどう書くか」「どう運用し続けるか」の三層に分け、各時点でどこまで確定しているかを並べている。

ヒアリング直後1時間
打ち合わせで確定するのは、作る対象までである。対象のシート、機能の種類、提出先の数、月次のサイクルは1時間で出揃うが、各欄の記入内容と書式は確定しない。当人にとって当たり前の項目は言語化の対象にならず、記憶が曖昧な項目は答えられず、様式の現物を見ても記入例のない欄は決まらないためである。この時点で得られる同意は「だいたいそういう感じです」までにとどまる。
実物を見た直後1周目のあと
実データが通り、実際に提出できる形式まで出る実物を業務に通すと、様式の判定条件が一度に表面化する。各欄の記入内容と書式、提出先ごとの列構成、除外のルールがここで確定する。この案件で出た指摘は7件で、ヒアリングで挙がっていたものは一つもなかった。同じ人が、聞かれても答えられなかったことを、見れば即座に、正確に指摘できる。
一か月運用したあと2周目の途中
月次のサイクルを一巡させると、機能ではなくデータの持ち方の問題が出る。記録をどこに置き続けるか、締めた月をどう分けるかは、使い始める前には存在せず、記録が蓄積した状態でしか現れない要件である。実物を一度動かしただけでは出ないため、運用に乗せる位置にいなければ拾えない。

確定する範囲は、聞いた回数ではなく、顧客が何を見たかで決まる。

3. 1周目 ― 5時間で、確認できる実物を置く

聞き取りを重ねても上の三つは埋まらないので、聞くのをやめて作りました。1周目に使ったのは5時間です。

作ったものは次の通りです。

  • 顧客番号・氏名・電話番号の三つの検索シート。検索欄に入力した瞬間に処理が走り、顧客情報と、その顧客の点検履歴が整形されて並びます。氏名はスペースの有無を無視して照合し、同姓同名が複数いる場合は全員分の履歴を出します
  • 点検記録入力時の氏名の自動補完。点検記録に顧客番号を入力すると、台帳を引いて氏名が自動で書き込まれます。台帳にない番号なら、その旨が表示されます。複数行をまとめて貼り付けたときも動きます
  • 提出先ごとの月次報告書の生成。対象年月を指定すると、点検記録から該当月を抽出し、提出先ごとの様式に転記します
  • Excelでの一括ダウンロード。スプレッドシートのメニューからモーダルを開き、年月と提出先を選ぶと、シートの更新からxlsxのダウンロードまで終わります

ここで重要なのは、モックにしないことです。1周目の目的は「顧客に理解を進めてもらうこと」なので、画面の絵だけでは何も進みません。実際の台帳の実データが通り、実際に窓口へ持っていける形式のExcelが出るところまで作ります。そこまで作って初めて、依頼者は「これは違う」と言える状態になります。

開発はローカルで行いました。Google Apps Scriptのエディタで直接書くのではなく、claspでローカルに落としてGitで管理し、Claude Codeで実装しています。この選択には後で効いてくる意味があるので、後半で改めて書きます。

4. 実物が引き出した要件 ― 7件

1周目を実際の提出業務で使ってもらいました。出てきた指摘は次の7件です。

  1. 登録番号が日付に化ける。「6-0021」のような形式の番号をセルに書き込むと、スプレッドシートが日付と解釈して「6月21日」に変わります。書き込む前にセルの表示形式を文字列に設定しておく必要がありました
  2. 提出日は和暦で書く。「令和◯年◯月◯日」の形式です。西暦で出していました
  3. 設備の記載欄に書くのは、型式ではなく処理区分。窓口によって、同じ位置の欄に求められる情報が違いました
  4. 一方の窓口に提出した分は、もう一方の一覧から除く。切り分けのルール自体は聞いていましたが、どちらを基準に除外するかが逆でした
  5. 備考列は、片方の様式には存在しない。列構成が提出先ごとに違います
  6. セル内改行が入ると様式が崩れる。記録に改行を含む文字列があると、報告書の行が2行分に伸びて、1行1件の様式から外れます。改行を除去し、行の高さをリセットする処理を入れました
  7. Excelにすると参照エラーが出る。シート上では正しく見えているのに、xlsxに書き出すと #REF! が並びます。数式が外部のシートを参照したまま書き出されるためでした。一時的なスプレッドシートに対象シートだけをコピーし、数式を値に確定させてからxlsxとして書き出し、最後に一時ファイルを消す、という手順に変えています

7件のうち、ヒアリングで挙がっていたものは一つもありません。そして7件とも、実物を前にした依頼者は即座に、正確に指摘できました。迷いも、検討の時間もありません。

この非対称が、本稿で一番言いたいことです。同じ人間が、同じ業務について、聞かれても答えられず、見せられれば1分で答えられる。要件を引き出す手段として、質問と実物では、引き出せるものの種類がそもそも違います。

なお7件の内訳を見ると、1・6・7は依頼者からは「なんだかおかしい」としか出てこない類のもので、原因の特定はこちら側の仕事です。2・3・4・5は業務知識の側にあり、依頼者にしか判定できません。1周目の実物は、この両方を同時に表に出します。

質問で出るものと、実物で出るもの

この案件で実際に挙がった要件を、出てきた経路で分けている。実物で出た7件は、ヒアリングでは一つも挙がらなかった。

ヒアリングで出たこと1時間・4件
何を自動化するかは1時間で出揃った。顧客番号から氏名を探す手間をなくすこと、顧客の検索を三種類つけること、提出先ごとの月次報告書を生成すること、提出先ごとに対象を切り分けるルールがあること。ここまでは質問で引き出せる。作る対象がはっきりしている案件ほど、この段階で要件が揃ったように見える。
実物が引き出した — 依頼者にしか判定できないもの4件
提出日は和暦で書く、設備の欄に書くのは型式ではなく処理区分、一方の窓口に出した分はもう一方の一覧から除く、備考列は片方の様式には存在しない。いずれも業務知識の側にある要件であり、その窓口に実際に提出して受理された経験の中にしかない。様式の現物を眺めても決まらないが、実物を見た依頼者は迷わず指摘できる。
実物が引き出した — 原因の特定が作り手側にあるもの3件
登録番号がセルの中で日付に化ける、セル内改行で行が伸びて様式が崩れる、xlsxに書き出すと参照エラーが並ぶ。依頼者からは「なんだかおかしい」としか出てこない類のもので、指摘を受け取ってから原因を特定するのは作り手の仕事である。聞き取りの段階では話題にすら上がらない。

同じ人が、聞かれても答えられず、見れば1分で答えられる。質問と実物では、引き出せる要件の種類が違う。

5. 2周目 ― 10時間で、運用に耐える構造にする

2周目に使ったのは10時間です。前半は上の7件の反映で、後半はデータ構造の作り直しに使いました。

運用に乗せてから見えたのは、点検記録を1枚のシートに積み続ける構造が、月次の提出サイクルと噛み合っていないことでした。提出が終わった月の記録と、今まさに入力している月の記録が、同じシートの中に混ざったまま増え続けます。件数が増えれば当然、片付けたくなります。そして片付けようとした瞬間に、消してはいけない行を消せてしまう構造でした。

これを運用ルールで解こうとすれば、5分で終わります。「このシートの行は消さないでください」と伝えればよい。ただしそれは、システムの安全性を依頼者の注意力に預けることと同じです。仕組みで解けるものを、注意喚起で済ませないという判断で、構造を分けました。

  • 入力用のシートと、蓄積用のシートを分離する。日々の入力は従来通り同じシートに行い、提出の済んだ月の記録は蓄積用へ移します
  • 検索と報告書は、両方のシートを結合して参照する。分離したことで過去の記録が検索から漏れる、ということが起きません。依頼者から見た操作は、分離の前後で変わっていません
  • 月締めの処理を用意する。専用のモーダルから、年月ごとの件数と移動済みの件数を事前に確認したうえで実行します。重複の防止と、連番だけが残った空行の整理を含みます
  • 行の削除ではなく、値のクリアと詰め直しで移動する。行ごと削除すると、書式・罫線・入力規則が巻き添えで消えます。値だけを移し、残った行を詰めることで、シートの体裁が壊れません
  • 移動先の行に、罫線と入力規則を引き継ぐ。蓄積用シートの行数が足りなければ自動で追加します
  • 直前の一回を戻せるようにする。操作を誤ったときに、その場で復旧できます

運用のサイクルは「月の途中は従来通り入力する、翌月の頭に報告書を作る、提出が済んだら月締めで蓄積用に移す」という形に落ち着きました。依頼者の入力操作そのものは、案件の開始時から最後まで一度も変えていません。

運用で出た問題を、注意喚起ではなく構造で受ける

記録の置き方を作り替えた前後である。依頼者から見た入力の操作は、前後で変わっていない。

1枚に積み続ける1周目の構造
入力中の月と提出の済んだ月が、同じシートに混ざったまま増え続ける。提出済みと入力中の区別がシートの上に現れないため、件数が増えて片付けようとした瞬間に、消してはいけない行を消せてしまう。この状態では、システムの安全性が操作する人の注意力に依存している。
分離して、締めで移す2周目の構造
入力用と蓄積用を分け、提出の済んだ月を月締めで移す。検索と月次報告書は両方のシートを結合して参照するため、分離しても過去の記録が見えなくなることはない。日々の入力は従来と同じシートに行うので操作は変わらない。移動は行削除ではなく値のクリアと詰め直しで行い、書式・罫線・入力規則を壊さない。年月別の件数を事前に確認してから実行し、直前の一回は戻せる。

「行を消さないでください」と伝えれば5分で終わるが、それは安全性を依頼者の注意力に預けることと同じである。

6. 工数見積りを「2周」で組む

この案件の工数は、ヒアリング1時間、1周目5時間、2周目と運用対応で10時間、合計16時間です。金額は10万円台の後半に収まりました。

注目してほしいのは配分です。2周目が1周目の2倍あります。

ここで、もし一般的な組み方をしていたらどうなるかを考えます。ヒアリングを終えた時点で全体を見積もり、契約し、作って納品する。この形で見積書を書いたとして、そこに前章の7件は一行も載りません。載りようがありません。まだ誰も知らないからです。データ構造の作り直しも同じです。

そうすると、実際に発生した10時間分は、追加見積りとして請求するか、こちら側の持ち出しにするかの二択になります。前者は依頼者から見れば「言った通りに作られなかったのに追加を請求された」という話になり、後者は事業として続きません。どちらも、見積りの精度が低かったせいではありません。着手前に確定できない要件を、着手前に見積もる形式を採ったこと自体が原因です。

そこで、次のように分けて置きます。

内容何のための工数か
1周目実データが通り、実際に提出できる実物を作る顧客が理解を進めるための工数
2周目実物が引き出した要件と、運用で見えた構造を実装する確定した要件を実装する工数

言い方を変えると、1周目は「作る工数」ではなく「要件を引き出す工数」です。ヒアリングの延長線上にあります。この案件で1周目に5時間かけたのは、5時間分の機能が欲しかったからではなく、7件を表に出すために5時間が必要だったからです。ここを削れば、削った分がそのまま2周目に乗ります。

そして2周目は「直しの工数」ではありません。要件が確定したあとに、その要件を実装する工程です。手戻りと呼ぶと、防げたはずのものを防げなかった、という含意が入りますが、実物を見るまで確定しない要件に対して、これは正確ではありません。

規模が小さい案件ほど、この組み方が効きます。1周目のコストが低いからです。5時間で捨てられる実物が用意できるなら、打ち合わせを3回重ねて様式の解釈を詰めるより速く、そして安く終わります。「小さい案件だから2周する余裕がない」というのは、順序が逆になっています。

この考え方自体は、本サイトでキャリブレーション開発モデルとして書いてきたものです。1周目で誤差を測り、2周目で収束させる。エンタープライズ規模の開発プロセスとして提示した仮説ですが、16時間の案件でも同じ形になりました。むしろ、規模が小さいほうが、周回の境目がきれいに出ます。

7. 16時間のうち、コードを書いていたのは4時間ほどだった

工数の話をもう少し細かくします。合計16時間の内訳は、おおよそ次のようになりました。

内容時間
業務の理解と、言語化を促すやりとり3時間
コードを書く4時間
正しさの確認 ― 実データを通し、出力が様式と合うか3時間
使い勝手の確認と調整2時間
指摘を受け取り、原因を特定する3時間
判断の記録を残す1時間

コードを書いていたのは、全体の4分の1です。残りの12時間は、何を作るべきかを引き出すことと、出てきたものが正しいか・使えるかを確かめることに使われています。

そして、この4時間の中身も一様ではありません。実際に手を動かしている感覚で言えば、書くこと自体は一瞬で終わります。2,000行のうち大半は、指示を出せばすぐに出てきます。4時間の大部分は、出てきたものを読み、既存のシートの入力規則や表示形式と噛み合っているかを確かめ、噛み合っていない箇所を直す時間です。

ここが、「AIを入れれば自動化できる」という要約が取りこぼしているところです。

自動化できるのは、正しさの条件が決まっている作業だけです。この案件で一番難しかったのは、正しさの条件を決めることでした。「登録番号を報告書に書き込む」までは自動化の対象です。しかし「その番号はハイフンを挟んだ数字の並びで、セルに入れると日付として解釈される」ことは、実際に出力して現物と見比べるまで、誰も知りません。「顧客番号から氏名を補完する」も自動化の対象ですが、「顧客番号は既存の入力規則との整合のために数値のまま保持し、表示だけを4桁のゼロ埋めにする」という判断は、既存シートの入力規則を読んで初めて決まります。条件が決まっていない作業に自動化という言葉を当てても、決まっていないという事実は動きません。

もう一つ、正しさの確認と使い勝手の確認は別の作業です。

  • 正しさの確認は、出力が様式と合っているかどうかです。基準が外にあるので、機械的に判定できます。テストを書いて自動化できるのもこちら側です
  • 使い勝手の確認は、一日に何十件も入力する人にとって、その挙動が邪魔にならないかどうかです。判定できるのは実際に入力している人だけで、外から見て正しく動いているシステムが、使い勝手の点では失格ということが普通に起こります

この案件では、氏名の自動補完がまさにそれでした。機能としては初日から正しく動いていましたが、複数行をまとめて貼り付けたときの挙動、台帳にない番号を入れたときの表示、ゼロ埋めの見え方は、実際に何十件も入力してもらうまで詰まりませんでした。

実装が速くなったこと自体には、単独ではほとんど価値がありません。短くなったのは全体の4分の1の工程で、残りの4分の3は、人と業務に向き合う時間として残っています。むしろ実装が短くなった分、確認と対話が全体に占める比重は上がりました。「AIで自動化」という言い方は、作業のうちコードを書く部分だけを見て、その前後にある工程を見ていない要約です。

16時間のうち、コードを書いていたのは4時間ほどだった

自動化できるのは、正しさの条件が決まっている作業だけである。この案件で最も難しかったのは、その条件を決めることだった。

「AIで自動化すれば終わり」が想定している内訳よくある要約
作業とはコードを書くことであり、それが速くなれば案件が終わる、という前提である。この前提に立つ限り、実装が桁違いに速くなったのに納期がさほど縮まらないことの説明がつかない。確認と対話に残る工数が、そもそも見積りに現れない。
実際の内訳合計16時間
業務の理解と言語化を促すやりとりに3時間、コードを書くのに4時間、正しさの確認に3時間、使い勝手の確認と調整に2時間、指摘を受け取って原因を特定するのに3時間、判断の記録に1時間である。しかも書くこと自体は一瞬で終わり、4時間の大部分は、出てきたものが既存シートの入力規則や表示形式と噛み合っているかを確かめ、噛み合っていない箇所を直す時間だった。
正しさの確認と使い勝手の確認は別の作業判定できる人が違う
正しさの確認は、出力が様式と合っているかどうかである。基準が外にあるため機械的に判定でき、テストを書いて自動化できるのもこちら側である。使い勝手の確認は、一日に何十件も入力する人にとってその挙動が邪魔にならないかどうかであり、判定できるのは実際に入力している人だけである。外から見て正しく動いているシステムが、使い勝手の点では失格ということが普通に起こる。

短くなったのは全体の4分の1の工程で、残りの4分の3は人と業務に向き合う時間として残る。

8. AI駆動開発が効いたのは、1周目の単価だった

では、AI駆動開発はこの案件で何に効いたのか。前章の通り、実装が速くなったこと自体ではありません。この進め方が成立するかどうかを決めているのは、1周目の単価です。

1周目に必要なのは、実データが通り、実際に提出できる形式まで出る実物です。これを人手だけで作ると、5時間では届きません。届かないなら、1周目の見積りは20時間なり30時間なりになり、依頼者から見れば「実物を見てから決める」という進め方は高すぎて選べません。結果として、聞き取りで要件を固めきる従来の形に戻るしかなくなります。つまり、速度が上がったことの本当の効果は、捨てる前提の実物を作れる価格帯に落ちたことにあります。

もう一つ、この案件で効いたのが開発環境の置き方です。GASのエディタで直接書くのではなく、claspでローカルに落とし、Gitで管理し、Claude Codeで実装しました。

小規模な自動化ほど、エディタ上で直接書いて済ませたくなります。しかしこの案件は、2周目に7件の様式差分を反映する工程が控えていました。どの記述がどの指摘に対応して入ったのかを追えないと、後から「この処理はなぜこうなっているのか」に答えられません。実際、登録番号の桁が依頼文と原本とで食い違っていた場面があり、原本を確認して原本側を採る判断をしています。こうした判断の理由をコミットに残しておくと、半年後に別の窓口の様式が変わったときに、同じ確認を繰り返さずに済みます。

Claude Codeを受託開発の中でどう回すかについては、Claude Code プロジェクトパックに、リポジトリの構成と運用の形をまとめてあります。

9. これはFDEの仕事の、最小の形だった

本サイトではFDE(フォワードデプロイドエンジニア)という職能について繰り返し書いてきました。顧客の現場に入り、顧客の環境の上で、業務が回る状態まで持っていく働き方です。Palantirの事例で知られる形なので、大規模なエンタープライズの話として受け取られがちですが、この16時間の案件でやったことは、規模が違うだけで構造は同じでした。

対応させてみます。

  • 顧客の環境をそのまま使った。Googleスプレッドシートを捨てて別のシステムに載せ替えるのではなく、いま業務が動いている場所の上に機能を足しました。依頼者の入力操作は最初から最後まで変えていません。持ち込むプロダクトがあって、それに顧客の業務を合わせてもらう、という方向ではありません
  • 正しさの基準が、顧客の側の外部条件にあった。この案件の合否を決めたのは、こちらの設計品質ではなく、行政の窓口が受理するかどうかです。基準が顧客の側にあるとき、基準を読み取る作業そのものが仕事に含まれます
  • 「なんだかおかしい」を受け取るところまでを範囲にした。依頼者から原因の特定された報告が上がってくることはありません。症状だけを受け取り、原因を特定し、直す。ここを「仕様通りに動いています」で止めないことが、この職能の実質だと考えています
  • 納品ではなく、運用に乗るところまで見た。構造の問題が出たのは、機能が完成したあとです。そこに手を入れられる位置にいなければ、月締めの仕組みは生まれませんでした

使った道具は、Googleの標準機能と、Claude Codeと、Gitです。特別なプロダクトは何も持ち込んでいません。FDEの価値は、持ち込むプロダクトの側ではなく、顧客の環境に合わせて業務が回る形を組み立てられることの側にあります。その意味で、身近なツールの上での業務最適化は、FDEの仕事のうち最も小さく、最も分かりやすい形だと言えます。

規模で変わるのは、関わる人数と、失敗したときの損害の大きさです。「顧客の環境の上で、顧客の業務が回る状態にする」という点そのものは、数千万円の案件でも16時間の案件でも変わりませんでした。この職能をどう捉えているかはFDE(Forward Deployed Engineer)とは?うちのFDE - FDEという多義的な役割にまとめてあります。

10. まとめ ― 見せてから決める、を見積りに組み込む

本稿で書いたことをまとめます。

  • 作る対象が明確な小規模案件でも、判定条件のほうはヒアリングでは出揃わない。当人にとって当たり前の項目、記憶が曖昧な項目、現物を見ても決まらない項目の三種類が残る
  • 実物を見せると、同じ人が即座に、正確に指摘できる。この案件では7件が一度に出た。質問と実物では、引き出せる要件の種類が違う
  • したがって工数は、実物を置くまでと、実物が引き出した要件を実装する分に分けて見積もる。この案件の配分は1周目5時間、2周目10時間で、後者のほうが大きい
  • 運用で見つかった問題は、注意喚起ではなく構造で解く。入力用と蓄積用を分け、月締めの手順を用意し、直前の操作を戻せるようにした
  • 16時間のうち、コードを書いていたのは4時間ほど。残りは業務の理解と、正しさおよび使い勝手の確認と、症状から原因を特定する時間に消えている。自動化できるのは、正しさの条件が決まっている作業だけ
  • AI駆動開発の効果は速度そのものではなく、1周目を捨てられる価格帯に落としたことにある
  • 顧客の環境をそのまま使い、業務が回る状態まで見る。規模は小さくても、やっていることはFDEの構造そのものだった

スプレッドシートで回っている業務を自動化するとき、最初の判断は「何を作るか」ではありません。依頼者が正しさを判定できる状態に、どうやって最短で持っていくかです。この案件では、それが5時間の実物でした。

同じ構造の業務は珍しくありません。台帳と記録がスプレッドシートにあり、提出先ごとに様式が違い、毎月の転記に半日を使っている。こうした業務の自動化や、AI駆動開発を自社の開発プロセスに組み込む進め方については、AI駆動開発の導入・定着支援「AI Delivery Scope+」でご相談を承っています。