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

まだ誰も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を使って構築しながら高校と大学を通った初めての世代になるだろう。

Hacker Newsで議論の続きを見る