ある日の我が家
ワイ「はぁ・・・」
娘(10歳)「パパ、どうしたの?ため息ついて」
ワイ「いや、ちょっと会社でショックなことがあってな・・・」
ワイ「ワイってほら、今の会社で最年長で」
ワイ「しかもちょっと、頭もおかしいやろ?」
娘「うん!」
ワイ「せやから、後輩たちから裏で 『最古パス』 って呼ばれてるみたいやねん・・・」
娘「ブフォw」
娘「うますぎて草」
ワイ「いや、笑い事ちゃうで・・・」
ワイ「もう、お仕事する気せぇへんわ」
娘「元気出してよぉ・・・そうだ!」
娘「パパも最新のAIとか使いこなしてさ」
娘「バリバリ仕事で活躍して、後輩たちを見返そうよ!」
娘「最古パスなんて呼ばせないようにさ!」
娘「パパならできると思う!」
ワイ「うぅ・・・娘ちゃんは優しいなぁ」
ワイ「おかげで、ちょっと元気が出てきたでぇ・・・!」
ワイ「ほなワイも、最新AIを使いこなして」
ワイ「お仕事で活躍したるでぇ!」
娘「頑張って、パパ!」
翌日
娘「パパ、お仕事の調子はどう?」
娘「AI駆使してバリバリ進めてる?」
ワイ「はぁ・・・」
娘「あれ、また結局ため息ついてるじゃん」
娘「どうしたの?」
ワイ「いや、昨日はな」
ワイ「AIちゃんを活用して、1日中コードを生成させまくって」
ワイ「会社内で使うタスク管理ツールを、ほぼほぼ完成させたんや」
ワイ「バックエンドのAPIをな」
娘「1日でバックエンドを完成させたの?」
娘「すごーい!」
ワイ「なのに、さっき会社から連絡が来て─」
上司「ちょっと仕様変更を頼むわ」
上司「APIに対してHTTPでリクエストする方法だけじゃなくて」
上司「コマンドラインツールとしても使えるようにしてくれ」
上司「その方が、AIからも呼びやすくてええやろ」
上司「後輩エンジニア達の熱い要望や」
ワイ「─って言われてもうたんや」
ワイ「せっかく作ったのに・・・」
娘「え、それってそんなに大変なの?」
ワイ「いやぁ、今回はDDDを意識して作ってもうたからなぁ」
ワイ「仕様追加に対する準備なんて、できてへんねん」
娘「ん?」
娘「DDDっぽい設計をしたなら、むしろ仕様変更に強いものなんじゃないの?」
娘「パパの言うDDDって、具体的に何?」
ワイ「えっと、とにかくAIに『やれ!やれ!やれ!』って叱り続けたんや」
ワイ「つまり『Do! Do! Do!』や」
娘「パパ・・・」
娘「DDDは『Do! Do! Do!』の略じゃないよ?」
娘「Domain-Driven Design・・・ドメイン駆動設計だよ?」
ワイ「Drink Drink Drink・・・?」
ワイ「あぁ、こまめに水分をとりながら開発をせよ、ってことか」
ワイ「大事よな」
娘「ち、違うよ・・・」
ワイ「よう分からんけど、そういう『なんとか設計』みたいなの、AI時代には要らんやろ」
ワイ「とにかく『Do! Do! Do!』ってAIを働かせてればソフトウェア完成や」
娘「もう話が通じなさそうだから、とにかく昨日書いたコードの構成を見せてよ」
AIちゃんが作った構成
ワイ「昨日AIちゃんが書いてくれたコードは、こんな構成や」
エンドポイント一覧
- タスク作成・・・約100行
- タスク一覧・・・約100行
- タスク更新・・・約100行
- タスク削除・・・約100行
- 以下多数
娘「どれも、そこそこ行数が多いね」
ワイ「せやねん」
ワイ「各エンドポイントの中で、データ作成したり取得したり検索したりしてるからな」
娘「そっか」
娘「でも、それだとさ」
娘「CLIっていう入口が増えたら、丸ごと複製することにならない?」
娘「つまり─」
※ほか多数
娘「こうなっちゃうよね」
ワイ「ありゃ、ホンマや」
ワイ「入口が増えただけのはずなのにな」
娘「そう、それだよパパ」
娘「入口が増えただけ」
娘「やるべきタスク管理のお仕事が増えたわけじゃない」
ワイ「確かに」
ワイ「ってことは・・・!」
ワイ「・・・どうしたらええの?」
娘ちゃんの場合
娘「実はさ、私もついこの間、似たようなプロジェクトがあったんだよ」
ワイ「なんで小学5年生にプロジェクトがあんねん」
娘「いや、学校のチーム課題のためのタスク管理システムの開発を頼まれたんだよ」
娘「で、パパの話と同じで、後からCLI化を頼まれたの」
娘「新入生たちが『AIエージェントから使いたいから、CLIも欲しい』って」
ワイ「新入生って、小学1年生やろ?」
ワイ「こないだまで幼稚園児だった子らが、なんでCLI欲しがってんねん」
娘「まぁとにかく、後からCLI対応しなきゃいけなかった案件があったんだけど」
娘「そのときは、元々こうしてあったから助かったんだ」
ワイ「へぇ、2つに分けてあったんや」
ワイ「でも、結局100行のコードを10行と90行に分けただけで、何がええの?」
娘「CLIっていう入口が増えた時に、影響が小さくなるの」
ワイ「おお」
ワイ「小さな入口が1つ増えただけや」
ワイ「さっきみたいに、お仕事自体のコードが複製されてへん」
後悔ワイ
ワイ「はぁー」
ワイ「やっぱ、AIちゃんの生成するコードはまだまだやな」
ワイ「酷いもんやわ」
娘「何言ってるの、パパ」
娘「私だって、AIに全てのコードを書いてもらったんだよ?」
ワイ「ファッ!?」
娘「つまり『酷いもん』なのは、AIじゃなくて─」
ワイ「もう分かったから、それ以上は言わんといてくれ・・・!」
じゃあ、どうAIに頼めばよかったのか
ワイ「ワイも娘ちゃんも、おんなじAIエディタを使ってるはずなのに」
ワイ「こんなにも生成されるコードの設計が違うんやなぁ」
ワイ「なぁ、娘ちゃんはどんな風に指示してAIにコードを書かせたん?」
娘「こんなプロンプトだよ」
お仕事本体のコードと
入口・出口の処理を
混ぜないで、分けて作ってほしい
ワイ「おお、それだけなんか」
娘「そう」
娘「そしたら、後からCLI対応した時もスムーズに行ったの」
娘「で、そのときに、実際にAIちゃんにこう聞いてみたの」
娘「後出しで『CLIも欲しい』なんて言われたのに、困らなかった?」
娘「そしたらAIちゃんが─」
AI「はい、ほとんど困りませんでした」
AI「むしろ最初に『入口・出口』と『お仕事本体』を分けていたので」
AI「CLI追加は、かなり自然に差し込めました」
娘「─って答えてくれた」
ワイ「おぉ、さっきのプロンプト、ホンマに効いてたんや」
娘「うん、だからAI時代でも、DDDとかそういう設計の発想は」
娘「けっこう有効だと思うんだよね」
ワイ「そっかぁ」
ワイ「なすべき仕事が変わるわけじゃないのに」
ワイ「入口・出口が変わるだけで」
ワイ「大量のコードを書くなんておかしい、やってられん」
ワイ「そういう気持ちが大事なんかもなぁ」
娘「そうそう、まさにそんな感じだよ」
娘「今回は入口の話だったけど、出口だってそうで」
娘「例えば、メール通知だけじゃなくて、Slack通知機能も追加したい、って場合だって」
娘「要するに『ユーザーさんに何かを知らせたい』っていう本質は同じでしょ?」
娘「それなのに、その手段を変えるためだけに」
娘「お仕事本体のコードを沢山いじらなきゃならないなんて」
娘「おかしいもんね」
ワイ「なるほどなぁ」
ワイ「出口を増やしたり、変えたりする場合にも」
ワイ「そういう発想が活きてくるんかぁ」
まとめ
なすべき本質的なお仕事は変わらないのに
表面的な手段が変わるだけで
本質部分のコードが沢山の影響を受けるのはつらい
ビジネスの加速を妨げる
ワイ「こういうことやな!」
娘「そうだね!」
娘「AIちゃんが何だって教えてくれるおかげで、私たちはかなり勉強しやすくなってるわけだし」
娘「パパも私もどんどん学習して」
娘「少しでも良い感じにAIちゃんに指示できたら良いよね」
〜おしまい〜
