世界を動かす技術を、日本語で。

まだ誰もAIを使った構築方法を知らない

概要

  • Protocollieを4日間で開発した体験談
  • 専門知識や計画なしで進めた開発手法の共有
  • AIとの協働による新しい働き方の発見
  • ドキュメント作成の意味や価値の再考
  • 技術進化の速さによる「永遠の初心者」感覚

Protocollie開発体験とAI時代の働き方

  • Protocollie を4日間でリリース、未知の言語で開発
  • コードに直接触れず、AIとのやり取り中心の開発
  • 「どうやったの?」とよく聞かれるが、再現性は不明
  • 新技術の過渡期における 専門家のふり の無意味さ
  • ルールや常識が 頻繁に変化 するAI開発の現状
  • Malcolm Gladwell の「1万時間理論」はAI開発には当てはまらない
  • AIペアプログラミングの経験値が浅く、全員が 永遠の初心者
  • システムというよりも 積み重ね でできた開発プロセス
  • ドキュメントが増えたのは 必要に応じて 追加した結果
  • 4つのドキュメントは最適解ではなく、単なる 偶然の産物

ドキュメントと開発プロセスの再定義

  • Architecture Overview :READMEから始まった、曖昧な全体像の記録
  • Technical Considerations :AIのつまずきをドキュメント化した備忘録
  • Workflow Process :繰り返し作業を手順化し、AIに書かせた
  • Story Breakdown :15~30分単位で分割、AIの短期記憶対策
  • ドキュメント数は4つだが、最適化ではなく 偶然の着地
  • 「プログラマごっこ」をしている感覚、 LARP 的開発
  • ソフトウェア自体は 現実に動作 し、ユーザーも存在
  • 手法やドキュメントは 一時的なフィクション かもしれない

AIと人間の新しい協働スタイル

  • 日曜の開発は AIに指示→生活→確認 の繰り返し
  • 朝食や育児、休憩中も Claude が黙々とコーディング
  • 集中作業は1日90分程度、 意思決定とテスト 中心
  • 5分テスト・1分フィードバックで 大量のコード生成
  • 労力と成果の 比率の異常さ に戸惑いと罪悪感
  • 「努力=成果」という 従来の働き方の崩壊
  • 「壁にスパゲッティを投げる」段階のAI開発
    • 成果よりも 試行錯誤自体 が重要
    • 失敗や偶然の成功も 全てが実験データ

技術進化と「永遠の初心者」

  • 過去のWeb開発の変遷を 抽象化の歴史 として回顧
  • 今のAI開発は 新しい抽象化 ではなく、全く別物
  • プログラミングでもなく、非プログラミングでもない
  • 必要なスキルは「 明確な意図」「 精密なイメージ」「 構造化された願望
  • ドキュメントの本質は 記憶と忘却の管理
    • Architecture Overview=将来の自分へのメモ
    • Technical Considerations=繰り返したくない失敗の記録
    • Workflow Process=偶然生まれたパターンの保存
    • Story Breakdown=リセット前提の進捗管理
  • ドキュメントは 未来の自分への伝言
  • 技術進化が早すぎて、 全員が常時ジュニア
  • 「波の物理法則が変わる海でサーフィン」する感覚
  • 制御不能な状況を 恐怖と解放感 の両面で受容

今後の開発とドキュメントの価値

  • 来週何を作るか、どんなプロセスになるか 全く予測不能
  • 不確実性を 受け入れるマインドセット の重要性
  • 各自が自分だけの「 変なプロセス」の専門家であり、同時に初心者
  • 4日で作れるものが 劇的に増加 した現代の開発環境
  • 「4ドキュメント方式」は 推奨ではなく一例
  • GitHub公開のドキュメントは 化石や道標 のような存在
    • 他人のやり方を 参考にはできても鵜呑みは危険
  • ソフトウェア=砂の城、進歩=潮の満ち引き
  • 明日は3ドキュメント方式や無ドキュメント方式も 成立し得る
  • 「Works on My Machine!」として、 自分の証拠 を残す姿勢
  • 他人の道標は 存在証明 であり、必ずしも最適解ではない

Works on My Machine! への感謝と、 自由なシェア の呼びかけ

Hackerたちの意見

「時間の膨張」は本当にあるよね。最近はなんとかやってるけど、楽しいプロジェクトは今まで以上に進んでる。会議の合間の2分でプロンプトを出せるから、戻った時にはかなり進展してるんだ。

そう、AIを見ながら開発するのは早くないよね。AIを使って並行処理すると早くなる。タイピングはボトルネックじゃなかったけど、今はパイプラインの中で並行処理できる部分になった。

この記事はまさにその通りだね。Kidlinの法則に出くわしたことがあるんだけど、「問題を明確に書き出せれば、解決の半分は終わった」っていうのがすごく力強い原則だと思う。今のAI主導の世界では特に重要だよね。自然言語が技術との主なインターフェースになる中で、課題を明確に表現することはコミュニケーションを向上させるだけじゃなく、AIの可能性も最大限に引き出すんだ。非同期のコーディングアプローチもすごく面白いよ。最近はRepl.itをめちゃくちゃ使ってるんだけど、これがまた次のレベルに引き上げてくれる。問題解決に集中できて、ホスティングのことで悩む必要がなくなるのは本当にゲームチェンジャーだね。楽しいし。個人的にはマリオカートのキノコやスターのアナロジーを使ってるんだけど、これがツールを使うときの気分だよ。面白いのは、うまくいかないときは本当にうまくいかないってこと(笑)。時にはAIが出す決定を介入する必要もあるし、ベビーシッティングは結構疲れる(実行速度のせいで)。1つのスタックを扱うのも大変だったけど、今は無限のスタックの可能性に対処してる。

Repl.itは僕にとってすごく当たり外れがあって、それが本当にイライラする。数分で終わらせられることが、午後いっぱいかかることもあるからね。それはすごい。でも、他の時には、プロンプトボックスの下にある提案から何かを作ろうとすると、うまくできないこともある。

課題は、物事を明確に述べることが常に難しいということだ。明確な自然言語の指示をコードに変換できるツールがあるのは素晴らしいけど、AGIを手に入れてもそれは変わらない。コードと戦う必要が少なくなって、プロセスで少し時間を節約できるかもしれないけど、本当に明確な仕様を作る必要がある。それがまた難しい部分なんだよね。

これについてよく考えるんだ。初めの頃、自分で学んだエンジニアとして、ソフトウェアエンジニアリングの世界の用語を学ぶのにたくさんの時間を費やした。自分がやりたいことを説明できるようにするためにね。

入力と出力の比率は面白いね。通常は出力の量を最適化してるけど、今は逆転してる。実際、最大の出力は求めてなくて、具体的で検証可能なステップに分けてほしいんだけど、それを一貫して達成するのは難しい。カーソルと一緒に要件を含む計画を共著してるんだけど、最初はすごくうまくいくんだ。でも、間違いを犯して、それを使ってドキュメントを洗練させるうちに、いざ「行こう」となった時には、計画の何かと直接矛盾する大量のコードが生成されることがある。マークダウンの見出しの後に空行を追加できないとか、小さなイライラがあって、それを明示的に再追加しないといけない。もっとコントロールできたらいいのに、特に品質や一貫性に関して。テストを書いて、それに対してAIが動いてくれるときがAIの最高の瞬間だと思う。これは閉じた問題だね。オープンな問題を解決しようとしている時に、それを一連の離散的な閉じた問題に変えるために、ツールが助けてくれる必要がある。

新しいプログラミングが大好きだよ。どこに行くのかはわからないけど、今は好きだな。今まさにコードを生産してるところで、普通ならリラックスして他のことをしてる時間なんだ。代わりに、リラックスしながらコーディングしてる。長いこと業界にいるシニアには最高だね。最近の編集はほとんどが面倒くさい。コードを見て、最初に使ったパターンが間違ってたと判断したら、新しいアイデアをテストするためにいろいろ変えなきゃいけない。コードをざっと見て、通常なら時間がかかるようなことがたくさん見える。いじるのがイライラするんだ。最終的な結果がどうあるべきかはわかってるのに、ちょっとしたことで時間がかかる。以前はStack Overflowで検索して考えるのに時間がかかってたけど、最近はコパイロットのヒントになって、今は…Claudeがそのままやってくれる。例えば、モックの株式取引所を作ったんだけど、いつも持っていたいものなんだ。でも、実際の取引所に接続するプレッシャーがあるから、誰もやらない残りのタスクになってしまうことが多い。今は、HNを読んでる間にClaudeがそれをやってくれた。これができたおかげで、戦略を実装できるようになった。これがすごく面倒くさい。どう動くかはわかってるけど、実装するのには時間がかかって、あまり満足感がない。タイプミスをしたり、依存関係を追加するのを忘れたりするのも、そんなに頭を使うことじゃないけど、時間がかかる。みんなが思ってることはわかるよ。どうやってスパゲッティにならないのかって?実際、変更を批評してるし、Claudeと何をするかについて話し合ってる。ここでの利点は、彼が関連するコードの場所を知ってる開発者だってこと。悪い場所にロックがあるかどうか聞くと、すごく早く見つけてくれる。経験が必要だと思うけど、彼が道を外れたときはわかるんだ。だから、キャリア的にはちょうどいいタイミングで来たと思う。小さなことが面倒になってきたレベルに達した数年後、すべてのアーキテクチャ要素が集まって手動で調査された時期に。ジュニアの開発者がどうするかはわからないけど、彼らはどうにかして山の頂上にジャンプしなきゃいけないけど、階段がなくなってる。

つまり、君がリラックスしててAIがコーディングしてるってこと?すごい!自分の仕事を置き換える方法だね、仕事がなくなった後に泣かないといいけど。

ジュニアの開発者がどうするかはわからないけど、彼らはどうにかして山の頂上にジャンプしなきゃいけないけど、階段がなくなってる。まさに私の考えだね。もうすぐ50歳で、30年以上の経験があるから、君と同じように、エージェントを使って素晴らしいコードを生み出すための堅牢なアーキテクチャを簡単に設計・制御・調整できる。だけど、これは私の経験から来てる。モデリング(科学)やプログラミングの経験から。ジュニアの開発者が、すべてがエージェントによって調理された状態で経験を積むことができるのか、ちょっと疑問だね。時間が教えてくれるだろう。

これがまさに僕をワクワクさせる理由なんだよね。もう何千回もやってきた面倒なコーディング部分を本当に置き換えてくれる。

ホットテイク:ジュニア開発者たちが「AIを使って構築する方法」を今のシニアよりも上手く知ってると思う。彼らはより高い抽象レベルの感覚を持って就職市場に入ってきてるからね。AIを使って構築しながら高校と大学を通った初めての世代になるだろう。

普通ならリラックスして他のことをするんだけど、今はリラックスしながらコーディングしてる。だから、以前はそうじゃなかった部分に仕事が入り込むことになる。生活の質を改善しない「生産性の向上」って、何の価値があるんだろう?

僕もLLMを楽しんでるけど、ただ何度もプロンプトを出すだけでは全然楽しくない。すごく退屈で、自分のプログラムがどう動いてるのか分からない不安もある。多分そのうち慣れるけど、何かを作り上げる楽しさを実感している。単に作られるのを見ているだけじゃなくてね。結果だけが大事だと思ってたけど、それは違うって分かったから楽しい!もちろん、以前やったことがある単調な作業や全く興味がないことには、全然やらせるけどね。ボイラープレートやCRUD、シェルスクリプト、CSS。クロードにターミナルベースのスネークを作らせたんだ。最高だね。

ジュニア開発者たちがどうするかは、ちょっと分からないな。彼らはどうにかして山の頂上にジャンプしなきゃいけないけど、階段はなくなってる。「大丈夫、ジェットパックを見つけた。」

チームのサイズとスピードは直線的じゃないって言われてるよね。新しいジュニアをチームに加えると、逆に遅くなることが多いし。LLMをジュニアとして使うことで、どうやって生産性が上がるの?

「それを手に入れたから、対策を実行できるようになった。でも、これがすごく面倒なんだ。仕組みは分かってるけど、実行するのに時間がかかって、あんまり充実感がない。タイプミスしたり、依存関係を追加するのを忘れたり。大したことじゃないけど、時間がかかる。みんな一気に最初から最後まで実装してるの?私にとっては、いつも反復的なんだ。足場から始めて、一つを正しくして次に進む。絵を描くみたいなもので、最初は形をいくつか描いて、それをつなげていく。上からスケッチして、線画にして、最後に値を入れる(このステップも反復的な修正がある)。各ステップで、自分がやりたいことがより明確になりつつ、最小限の努力で済むようにしてる。だから、私にとってコーディングはリファクタリングみたいなもんだ。何かを動かすために最小限のコードをタイプするようにしてる。それは大抵、TODOコメントで注釈をつけたショートカットを意味する。そして、それを繰り返して、より柔軟にして、コードをきれいにしていく。」

チェスは、ジュニアたちが学ぶ方法の良いアナロジーかもしれない。スペースが解決されていても、学ぶために学ばなきゃいけないんだ。

AIについての私の理論は、次のGoogle検索の進化版だと思ってる。インターネット上のすべての情報に対する、より良い会話型の基盤。もちろん、検索が普及した時にいくつかの業界が職を失ったように、何人かの人は仕事を失うだろう(新聞、電話帳、百科事典、旅行代理店など)。でも、私の意見では、これは人々が考えているような存在の危機ではない。ただのツールだよ。賢くて巧妙な人々は、ツールを使ってたくさんのクールなことができる。でも、結局使わなきゃいけない。検索がチャットになっただけなんだ。以前は検索しなきゃいけなかったけど、今はチャットして、検索してくれるし、もっと色々やってくれる!

検索以外にも役立つことがたくさんあるのは明らかだね。

最近のエントリーレベルの仕事は、Googleの使い方や指示に従うことができる人たちで埋まってる。次の世代もAIに対して似たような関係を持つんじゃないかな。若い世代には「常識」と思えることが、チャットGPTやジェミニを開いてすぐに解決策を見つけることがデフォルトじゃない年配の人たちには難しいと思う。

検索はただのチャットになったと思う。チャットのようなLLMインターフェースは、最も効率的な方法じゃないよね。もっと賢い方法があるはず。

Googleは検索を変える必要はないよ。すでに役に立たないAI生成のゴミを返してくるから。

ピークのGoogleとは違って、これだと信号対雑音が減って、引き出しているソースデータが隠れちゃうね。

みんながGoogleで調べてたことに使ってるのは同意だけど、良い代替とは思えないな。俺にとっては、主に不確実感が伴う感じ。まるでパーティーで聞いた話を誰かに伝えられるようなもの。信頼できるソースを確認するためにGoogleで調べる必要があるから、ただのヒントに過ぎない。だから、すぐにヒントが欲しいときには使うけど、記憶に残る情報が欲しいときには使わない。だから、俺にとっては代替にはならない。今のAIのゴミのせいで、逆に状況が悪化してる。

検索が答えを出すだけで、正しく物事を調べて他の人のために書き留める仕事が失われてしまう。これを失わせてしまうと、みんなが迷子になっちゃうよ。AIからの収入を、再利用される情報のクリエイター(良心的なジャーナリズムなど)に戻す方法を見つけられないと、民主社会の重要な支柱が崩壊してしまう。ニュース業界は何年も深刻な危機にあって、その結果(不信、分断、誤情報、外国の操作)を見てきた。AIがその背中に最後の一撃を与えるかもしれない。これは単に仕事が失われることではなく、今進んでいる道は暗いもので、それを「ただの仕事が失われるだけ」と軽視するのは、我々が直面している危険を無視するナイーブな考えだよ。

そうだね。「ユーザーがいないグリーンフィールドアプリケーションの要件を何時間もかけて正確に定義したのに、AIが一発でやってのけた」と「百万行のコードを持つ20人チームのエンタープライズSaaSの地獄スケールで、コードの行ごとに97人のステークホルダーがいる」の間には、まだ大きな溝がある。AIが前者を扱えるのは、正直言ってすごいけど、驚くことじゃない。ローコードツールは何年も前からそれをやってきたし、2018年の時点でRetoolは、今日見たどのLLMよりもずっと生産的だった。Retoolができることに関してはね。でも、これらのことに関する相対的なスキルが、後者を自律的に扱える道に進んでいるかどうかを決定づけるわけじゃない。英語は単にあまり形式的でないプログラミング言語だ。その非形式性は、習得するのに必要なスキルが少なくて済むことを意味するけど、望ましい結果を得るためにはより多くのボリュームが必要になることも意味する。あるレベルの粒度では、英語でのプログラミングはJavaScriptでのプログラミングに似てくる。大文字や感嘆符、AIをクビにするぞって脅しがあって、アサートや条件文の代わりにね。本当に時間を節約して、生産性が上がってるのかな?それとも、真の利点は、今までできなかった人たちが言語や領域に挑戦できるようにすることで、ソフトウェア開発を広い範囲の人々に解放することなのかな?多分その両方だろうね。ダリオ・アモデイは2026年までに初の10億ドルのソロ企業が出ると言ってるけど、俺はそれが起こるとは思ってない。100Mドルすら無理だと思うし、ドルの価値が変わるようなハイパーインフレがない限りはね。でも、こう言いたい:このレベルの収益を達成するには、人間の数が少なすぎて、AIの入力が人間の入力を圧倒しなきゃいけない。これが実際に、これらのものがただのすごいツール以上のものであることを証明する唯一の方法だと思う。グリーンフィールドアプリを作っている人たちのブログ記事なんて、俺には何の影響もないよ。

「オフィスに入って、Claudeが作ったものをチェックして、すぐにテストする。うまくいったら、最高!コミットしてプッシュ。」サイバーセキュリティコンサルタントとしてめっちゃ稼げそうだな!

可能性はあるね。でも、自動運転車について言われてることも思い出してほしい。実際のドライバーよりもミスが少なくなるって。

おめでとう、プロジェクト管理の授業に合格したね。君が説明しているのはまさにプロジェクトマネージャーの仕事そのものだよ。技術的な部分やストーリーを洗練させて、目標に向かって開発を整理する。これがプログラミングに感じないのは、実際にはプログラミングじゃないから。監督しているからプログラミングじゃないとも言えないけどね。結局、君は今やプロジェクトマネージャーだよ。

彼がセキュリティや国際化、ローカライズ、アクセシビリティ、ユーザビリティなどをうまく促した部分を見逃してしまったみたいだ。これは、ソフトウェアプロデューサーのふりをしているアマチュアたちの核心的な問題だよ。他にも色々あるけど、これは商業ソフトウェアとして受け入れられるための基本的な問題で、雰囲気でコーディングされた製品が広く受け入れられるのを絶対に妨げる。もし、これらの品質の側面が簡単にプロンプトに還元できると思っているなら、真剣にその分野での仕事をしたことがないんだろうね。

その通り。 >「俺の4つのドキュメントシステム?認識できるパターンにたまたま落ちたスパゲッティだ。明日には壁から滑り落ちるかもしれない。それでもいい。もっとスパゲッティを投げるよ。」2025年の7月に、まだこんな風に開発をスケールできると思ってる人がいるなんて驚きだね。

「これらの側面について考えているなら、あなたはその分野で真剣な仕事をしたことがないに違いない。公平に言えば、多くの商用ソフトウェアも明らかにそうではないけど。」

最近、モデルベースの開発を試していて、これにすごく共感した。「プログラミングって今は何なの?」って部分が、僕が感じていることや考えていることにすごく響いた。25年以上の経験とコンピュータサイエンスのトレーニングを活かしているけど、これは厳密にはプログラミングじゃない気がする。今はコードを手作りするんじゃなくて、一連のツールを操縦している時代に入っていると思う。手作りが好きな人たちが、良くも悪くも今後5年で業界を去るんじゃないかな。もちろん、手作りが必要なものもあるけど、新しい手法への扉が開かれている。今、その手法が発見されていて、ほとんどの人がそれに慣れていないけどね。でも、それが業界の一部にならないわけじゃないよ。

「多くの人(クラフト好き)が今後5年で業界を去ると思う、良くも悪くも。君の言う通りだね。生産性を得るためには知識を身につける必要があったけど、それが価値があった。今はLLMのおかげで、中間を飛ばして生産性の獲得に直行できる。知識の民主化って言えるけど、それ以上のものだよ。もう知識が必要じゃなくなってきてる。」

これは「バイブコーディング」じゃないよ。全く新しいものだ。俺はこれを「フレックスコーディング」って呼んでる。なんと、午後の間にフルアプリを作っちゃったし、いいパパでもあった? > 「オフィスに入って、クロードが作ったものをチェックして、サクッとテストするんだ。動けばラッキー!コミットしてプッシュ。『サーバー接続のUIを作って』って言って、また外に出る。朝ごはんを作って、クロードがコーディング。息子と遊んで、クロードがコーディング。テレビを見て、クロードがコーディング。1時間ごとにちょっと戻ってきて、5分テストして、1分フィードバック。」

気をつけて、クロードがすぐに「お前、ちゃんと働いてないじゃん!」って文句言い始めるかもよ。

これはすごく感情的で、私たちの多くが夢見ていることだと思う。でも、クロードのコードは本当に動くの?自分で依存できるレベルで動くの?顧客に請求できるレベルで?自分の評判をかけられるレベルで?俺はノーだね。だって、俺はクロードを使ってるから。クロードの使い方が変わったのは2つの出来事があったから:今はアドバイザーとして使っていて、ほとんど自分でコードを打ってる。だって、信頼できないから。まず、俺のTypeScriptインターフェースの一つをコピーして修正してるのを見つけたから。だから、今は実際のユーザーに似たUserと、そうでないUserAgainができて、クロードはそれを使って「俺の型チェックは全部通る」って自慢してる。そりゃ通るよ!次に、こういうことを見つける最良の方法はテストを書くことだと言われた。だからテストを書いたら、失敗してもそのまま進んで、最終的には失敗しないテストを書いた。テストが自分自身をモックしてた。だから、子供たちと過ごす時間を楽しんでね。大事なことにはお前のアプリを使わないでほしい。

じゃあ、なんでこんな風に働くために誰かにお金を払う必要があるの?自分でやればいいじゃん、ソフトウェアにお金を払う理由は?