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

クロードコードはスロットマシンです

2025年7月28日原文(rgoldfinger.com)

概要

  • AIコーディングツール による開発体験の変化
  • 創造性効率性 のジレンマ
  • ConjurerScribe という2つの開発スタイル
  • AIの利便性本質的理解 の必要性
  • 断続的報酬集中力の分断 の現象

AI時代のソフトウェアエンジニア体験

  • Claude Code などのAIツールによる待機時間の増加
  • Returnキー を押し続ける作業の繰り返し
  • コードが自動生成 される様子を、退屈かつ期待しながら見守る開発者心理
  • 自分のアイデア が現実になる瞬間への期待感
  • ソフトウェアエンジニア になった動機は、創造のプロセスそのものへの愛着
  • 試行錯誤思考の流れ に没頭する楽しさ
  • AIの導入 による「フロー状態」の断絶と 断続的な報酬 への変化
  • 会議や他の業務で 細切れの時間 が増える現実

ConjurerとScribe:2つの開発スタイル

  • Conjurer :魔法使いのように、全体像を描き出し、詳細には深入りしないスタイル
  • Scribe :一行一行を精読し、全てを深く理解してから行動する慎重なスタイル
  • 個人ごとの傾向 はあるが、両方のスタイルが重要
  • 状況に応じて 使い分ける能力こそが本当のスキル
  • 理解が必要な場面早く進めるべき場面 の見極め

AIツールによる開発プロセスの変容

  • AIコーディングツール で複雑な仕組みを素早く構築可能
    • 理解を後回し にできる利便性
    • 本当に動かすためには 最終的な詳細理解が不可欠
  • 断続的な報酬 (slot machine effect)がAIツール普及の一因
    • 待機時間報酬 の組み合わせによる中毒性
    • 集中力が分断 される現象
    • 新しいプロンプト への依存傾向
  • 創造の力 への興奮、そして 少しの努力で夢を実現できる という期待感

Hackerたちの意見

ソフトウェア開発者になったのは、同じSQLクエリや配管コード、プログラムのボイラープレート、同じ繰り返しのエラーハンドリング、同じ文字列フォーマット、同じレポート生成、同じHTMLテンプレート、同じスレッドキャンセルロジックを書くためじゃないんだよね。それに、プログラマーになったのも、SQLクエリや配管、ボイラープレート、エラーハンドラー、フォーマット、レポート、テンプレート、キャンセルのためのエレガントなヘルパーを作って自己満足するためじゃない。ブロガーたちは、プログラミングがどれだけ刺激的で、知的に要求されるか、IQがどれだけ高いかを何十年も自分たちに言い聞かせているけど、実際にはプログラマーのやってる仕事の多く、いや、ほとんどが単純作業なんだよね。自動化すべきだと思う。手作業で全部やるから、ソフトウェアが不安定になるんだよ。毎日面白い仕事をするための脳の電気的なエネルギーは限られてる。単純作業にそれを使っちゃうと、実際に面白いアルゴリズムの仕事をするための余裕がなくなっちゃうよ。

それで、今はAIの出力を確認・レビューするのに同じ時間を使ってるの?

20年前にマイクロソフトでVisual Studioに関わってたんだけど、ある時、会社を代表して展示会に行く機会があった。ブースを担当しているときに、あるソフトウェア開発者がやってきて、VSがデータアクセスの自動化に関してコード生成が良すぎて、もうやめるべきだって言ったんだ。彼が冗談だと思ったけど、全然真剣だった。彼に、そのツールが退屈で繰り返しの作業から彼を救って、もっと価値のある面白い開発に集中できるようにしてるんだよって言ったけど、彼は全く受け入れなかった。最近よく彼のことを考える。今もプログラミングしてるのかな、LLMについてどう思ってるんだろう。

部分的には同意だな。最初の段落はまさに俺の気持ちそのもの。定型文やつまらないことは自動化すべきだよね。確かに、プログラミングが暗いアートみたいに語られることもあるけど、Methodology XとかTheory Yを使うべきだって言うのはちょっと大げさだよ。おい、落ち着けよ、ウェブサイト作ってるだけなんだから。一方で、ソフトウェア開発っていうのは、実際の人々が抱える問題に対する解決策を生み出すって意味では、確かに知的に要求されるし、スキルレベルの幅も広いよね。みんながクソみたいな仕事をしてるって言うのが流行ってるけど、それは全然フェアな表現じゃないと思う。

プログラミングって、マックス・フォン・シドーの世界征服計画を汚染されたビールとホッケー場のオルガンで出し抜く二人の間抜けな兄弟みたいなもんだと思ってた。

俺もめっちゃ同意する。大量のコーディングって、特別な新発明じゃないし、時間を見積もる時に多くの人が言うような、未知の作業でもない。正直、概念的に難しいわけでもないし、コンピュータは速くて正確だけど、バカだから、イライラするほど正確さが求められる。人間がマニュアルを読むのを拒否するようなもんだよ、カンマがセミコロンであるべきなのに。やれるだけの頭はあるけど、知識がなかったり、面倒くさがってやらない人が多い。こういう作業はほとんどなくなるべきだし、残りの部分はドメインの専門家が少ないコストでできるはず。

プログラミングは、こういうことをしないことなんだ。強力なマシンがそういうことを得意にやってくれる。パターンに気づいて、そういう作業をするツールを作ればいい。最もシンプルなのはスニペットジェネレーターやエディタのマクロだね。それからプロジェクトジェネレーターや、プログラミング言語からのコード再利用の仕組みもある。

そうそう、これって新しい現象じゃないんだよね。俺の意見としては、AIコーディングは実際には何十年も続いてきたトレンドの最新のものに過ぎないと思う。技術自体は新しいかもしれないけど、やってることはすごく古い!昔はバックエンドのエンドポイントを立ち上げるのに、たくさんの本物のコードを書かなきゃいけなかった。今じゃ、こういうのはほとんど宣言的な設定ファイルになってる。フロントエンドも同じ。昔は色んなめんどくさいことを管理しなきゃいけなかったけど、ここ10年で徐々に... 宣言的で反応的なパターンに移行して、基盤となるフレームワークが雑務を処理してくれるようになった。さらに、毎回一貫したデプロイを確保するための宣言的な設定ファイルも作ったんだよね。要するに、プロダクションマシンにSSHで入って何かをインストールする代わりに。ヌルポインタも扱ってたし、チェックを一つ忘れるだけでプロセス全体が消えちゃうから、ほんとに頭が痛かった。今じゃ... 言語に組み込まれてて、ヌルポインタのデリファレンスを実行するのは物理的に不可能になってる。すごいよね!俺たちは何十年も前から「自分たちを仕事から追い出してる」わけで、ボイラープレートや繰り返しの多いエラーを引き起こすロジックを減らしてきた。プログラミング言語やライブラリ、フレームワークを使ってね。実際に大事な部分に集中するために、これが最新の流れなんだ。やり方は新しいけど、目的は変わらない。前にあったものと同じように、これが本当に俺たちを仕事から追い出すとは思えないけどね。

俺もそうだよ、だから高レベルの抽象化を作ったり、他の人が書いたライブラリや言語を使ったりしてる。LLMが出る前に、どうしてそんな退屈なことを手動でたくさん書いてたのか理解できない。君は何をしてるの?

この意見には賛成だな。「どうでもいいことをたくさんやってる」って解釈する限りね。RailsとDjangoの論争とか、さらにひどいのはRailsとSinatraの対立を覚えてる?俺は覚えてるし、若くて無邪気だったっていうのが唯一の言い訳かな。「あんなことに時間を使ったなんて信じられない」っていうリストは本当に長いよ。何回ノードを再実装するつもりなんだよ、マジで。

ソーシャルメディアの使い方や管理方法をまだ模索しているのと同じように、AIについても同じことをしなきゃいけないと思う。特定のことに関してはすごくパワフルだけど、他のことに関してはすごくイライラする。AIにプロジェクトを一発でやらせようとするのは間違った使い方だと思う。むしろメスのように使うべきだね。学習ツールとして使ったり、もっと進んだラバーダッキーとして使ったり。

AIにコードを書かせることは絶対にしないし、無監視ではね。自分でコードを書いて、クロードにチェックしてもらうのが好きなんだ。バグだけじゃなくて、アーキテクチャやスタイルも見てもらう。

Hacker Newsで議論の続きを見る