AI News HubLIVE
サイト内リライト7 分で読了

AI時代におけるソフトウェアの「味」と「スロップ」

記事は、ソフトウェアの品質が正しさだけでなく「味」、つまり使用体験を素晴らしくする深い理解と優雅さに依存すると論じている。AIが大量のコードを生成する時代、技術的には正しいが魂のない「スロップ」が増えるリスクがある。仕様駆動開発(SDD)は仕様が味を捉えるならば有効だが、単なる要件ではなく「なぜ」を記述する必要がある。エンジニアの役割はコードを書くことから知恵を明確化することへと移行し、ジュニア開発者は実際の反復を通じて判断力を養う新しい道を歩む。

ソースHacker News AI著者: gherlein

AIによるコード生成が当たり前になりつつある今、ある古くて新しい問いが浮上しています。なぜ一部のソフトウェアは驚くほど優れているのに、大半はただ「使える」だけなのでしょうか?バグだらけとか遅いというわけではなく、とにかく「悪い」——触った瞬間に直感的に感じるあの悪さです。答えはツールでも予算でもチーム規模でもありません。「味」、そしてAI時代にはこの味こそが全てを決めるのかもしれません。

私たちは正しさについて延々と議論します:コンパイルが通るか、テストにパスするか、安全か、スケールするか。あらゆる「〜性」は必要ですが、どれも十分ではありません。なぜなら、それらの条件をすべて満たしながらも使用するのが絶望的に辛いソフトウェアが存在するからです。一方で、地下室で3人が書き、無料で提供されているソフトウェアが、「ああ、これが正しい使い方なんだ」と思わせることがあります。それに逆らう必要はなく、あなたを先読みし、意見を持ち、しかもその意見が正しいのです。

後者のようなソフトウェアは偶然ではありません。それは「味」が耐久性のある形で具現化されたものです。ピーク時のAppleを思い浮かべてください。ジョブズは偉大なエンジニアではありませんでした。しかし彼は、執拗に、強迫的に、「正しい」と確信できないものは決して出荷しないという味の持ち主であり、そして「正しさ」を長期間にわたって繰り返し提供できる企業を築きました。Macのケース内部が誰にも見えないのに美しく作られていたという有名な逸話は、虚栄心からではありません。「我々はどこにも、決して、スロップを出荷しない」という文化の表れです。ソフトウェアが愛されたのは、組織に味があり、製品がその組織の可視化だったからです。

コンウェイの法則はよく知られています:組織はそのコミュニケーション構造をシステムに反映する。しかし、それはコミュニケーション構造だけにとどまりません。ソフトウェアはそれを構築する組織の価値観、味、規律、そして向かい側にいる人間への尊重または軽視を映し出します。だからこそ、一部のオープンソースソフトウェアは何十年経ってもその分野で最高であり続けます。git、ffmpeg、sqlite、curl——これらは四半期ごとのEBITDA目標を最適化する匿名の委員会ではなく、問題を深く理解し、正しさを追求し、自分たちの基準とユーザーだけに責任を持つ人々によって作られました。少数の意見を持つ人々の味がすべてのコマンドとフラグに化石のように埋め込まれています。それが魔法であり、カプセル化された知恵です。

そしてそれが、多くのエンタープライズソフトウェアが忌々しい理由でもあります。名前は挙げませんが、あなたも心当たりがあるはずです。それらが悪いのはエンジニアが悪いからではありません。全ての顧客の全ての要求に応えるべく、統一された視点を持たない巨大組織によって、キーボードを叩く人間ではなくRFPのチェックリストのために最適化され、ユーザーよりも利益と成長を重視して作られたからです。カプセル化すべき味が存在せず、何もカプセル化されませんでした。その欠如を、あなたはそのソフトウェアを使うたびに感じるのです。

では、「エレガントなコード」とは何でしょうか?エンジニアはそれを聖杯のように追い求めます。しかし、10人にエレガントの意味を尋ねれば10通りの答えが返ってきて、そのほとんどは雰囲気です。私の答えはこうです:エレガントとは、理解が小さく凝縮されたものです。問題を真に理解し、問題でないものをすべて捨て去った後に残るもの。エレガントなコードは後から見ると明白に見えるため、人々はそれが簡単だったと錯覚します。しかし、それは簡単ではありませんでした。苦労して勝ち取ったものです。エレガントさは、頭の中に収まるまで圧縮された知恵です。

エレガントさはコードの属性ではなく、コードの背後にある理解の属性です。偽造することはできず、後から追加することもできません。そして——ここは本当に噛みしめてほしいのですが——使用におけるエレガントさは、コードのエレガントさと同じくらい重要であり、おそらくそれ以上です。華麗な内部アーキテクチャが、不可解で敵対的なユーザーエクスペリエンスに包まれているなら、それはエレガントではありません。単に良いスーツを着たスロップなのです。

スロップがやってくる。そしてそれはコードだけではありません。私が眠れなくなるのは、私たちがまさにAI支援ソフトウェアで世界を溢れさせようとしているからです。そして「AIスロップ」に関する議論は、もっぱらコードの正しさ、セキュリティ、存在しないAPIの幻覚に集中しています。それは小さな問題です。大きな問題は、スロップがソフトウェアの動作方法——フロー、デフォルト設定、何を簡単にするか、何を可能にするかという何千もの小さな決定——に現れるということです。エージェントは、これが1画面であるべきか3画面であるべきかについて意見を持ちません。味がないのです。エージェントは喜んで、技術的に正しく、十分にテストされ、美しくドキュメント化された、しかし使うのが苦痛な体験を生成するでしょう。しかも、私たちに苦痛を受け入れさせた顔のないエンタープライズベンダーよりも一万倍速く。だから私たちは一万倍多くのスロップを得ることになります。

なぜなら、もう一つあるからです。私たちは訓練されてきました。何十年にもわたる「十分に良い」エンタープライズソフトウェアと法外なスイッチングコストが、悪いを普通として受け入れることを教えました。肩をすくめ、チケットを発行し、次に進む。私たちはソフトウェアが良いことを期待しなくなりました。AIはその学習性無力感にガソリンを注ぐでしょう。

しかし、もし構築される前にスロップを阻止できたら?ここが仕様駆動開発(SDD)が真価を発揮する場面であり、私が本気で興奮し、同時に心配になる点です。美しい約束はこうです:エージェントが仕様通りに構築するなら、仕様こそが味の居場所になる。仕様がてこのポイントです。仕様を正しくする——「なぜ」、優雅さ、そしてソフトウェアがどのように感じられるべきかという正確なスイートスポットを捉える——ことで、一行のコードが書かれる前にスロップを阻止できます。それは私たちがかつて持ったことのない機会です。私たちは知恵を前もってエンコードできるのです。

しかし、「仕様を正しくする」という文には膨大な作業が込められています。私は新しい仕様駆動の文献を深く研究してきました。『Agentic Spec-Driven Development: A Practical Method for Using AI to Build Complete Specifications』という本は、正直、あなたのチームがまだ読んでいなければ読むべきです。その厳密さは本物で、超高層ビルの建築基準法と実際のソースコードの中間に位置し、通常は仕様に欠けているべきものが詰まっています。私はそれを大いに尊重します。

しかし、読んでいて退屈で仕方ありませんでした。私は型にはまった会計士のように感じました。構築の喜び——私がこの仕事に恋をした理由——がレシピに還元されてしまったのです。ステップ、チェックリスト、記入すべきセクション。誤解しないでください。レシピの仕組みは重要です。非常に重要です。現在、これを標準化するための素晴らしいインフラが構築されています。GoogleのOpen Knowledge Formatは、レシピの材料部分——事実、制約、共有知識——を標準化する真剣な試みです。そしてTolariaのようなツールは、その知識を簡単に記述・維持できるようにしようとしており、このムーブメント全体に必要な、地味だが重要な配管です。スキルが「どうやって」なら、知識フォーマットは「何が真実か」です。両方必要です。しかし、味のない人が完璧なレシピに従っても、平凡な料理しかできません。

そこで、Jay Acunzoの投稿「Your Move, Chief」を読み、衝撃を受けました。それは私が探していた解毒剤でした。あのシーンを知っているなら、わかるでしょう。『グッド・ウィル・ハンティング』で、ロビン・ウィリアムズ演じるショーンが公園のベンチで、生意気な天才少年に言います:「君はミケランジェロについてあらゆる美術評論家を引用できるが、システィーナ礼拝堂の匂いが何かを教えてはくれない。君はそこに立ったことがない。愛や戦争や喪失についてすべて読むことはできても、それを生きたことはない。何かを知っていることと、それを生きたことは違う。どうする、チーフ?」

それがまさに、レシピと料理の差であり、仕様と良いソフトウェアの差です。モデルはすべてを読み、すべてを知っています。しかし、それは生きたことがありません。実際のユーザーを傷つける機能を出荷し、その目を見たことがありません。技術的には問題ないが精神的に壊れているワークフローに対する特有の嫌悪感を感じたことがありません。傷跡がなく、味もありません。味は知るものではなく、生きるものだからです。

人間の部分——知恵、経験、味——が、ソフトウェアが良いか単に正しいかを決めるのです。そしてその部分はダウンロードできません。獲得しなければなりません。

では、ジュニアエンジニアをどこに向ければいいのでしょうか?自分自身をどこに向ければいいのでしょうか?この部分は本当に人材育成の再考を迫ります。ジュニアエンジニアはかつて、ゆっくりと味を獲得していました。何年もコードを書き、レビューで引き裂かれ、誰かの災害を午前2時にメンテナンスし、結果を感じる。その道は徒弟制度でした。

その道はもうありません。「変わりつつある」のではなく、消えました。人々がかつて傷跡を積み重ねていた下積みの役割はもう存在しません——エージェントがその仕事をします。私たちは次の世代を私たちが歩いた道に送り出すことはできません。その道は新しい駅で舗装されてしまったからです。

しかし希望もあります。私は本当にそう信じています。彼らは今、より多くを構築できるのです。エージェントを使えば、ジュニアエンジニアはかつてシニアチームが必要だったことに挑戦できます。出荷し、観察し、結果を感じ、反復する——私たちよりも速く。彼らは味、知恵、判断力を養うことができますが、それは私たちとはまったく異なる軌道です。彼らは私たちが苦しんだように苦しむ必要はありません。実際、それは不可能であり、ありがたいことです。

では、彼らをどこに向けるのか?判断力へ、構文ではなく。なぜこれが良く、あれがスロップなのかへ。システィーナ礼拝堂の中に立つことへ——実際のものを作り、実際の人に出荷し、「良い」と「正しい」の違いを見分ける嗅覚を養うことへ。

そして私たち自身は?同じ方向です、正直なところ。私たちの仕事は、ものを書くことから、良いものが何かを知り、なぜかを明確に言えることへと移行しています——エージェントが実行できる仕様に翻訳できるほど明確に。これはまったく新しいレベルの理解と総合です。コーディングよりも難しい。そしてより人間的です。

これが仕様にとって何を意味するか。私は仕様に反対しているわけではありません。全く逆です。厳密でよく構造化された仕様は、ソフトウェアにおいて最も重要な成果物になろうとしています。本を読み、フォーマットを採用し、ツールを使いましょう。仕組みは重要であり、軽視しているわけではありません。

しかし、仕様は器です。レシピは料理ではありません。凡庸な理解を完璧にフォーマットされた仕様に注ぎ込めば、完璧にフォーマットされたスロップを得るだけです。より速く、スケールして。フォーマットは必要ですが、十分には程遠い。本当の仕事——どのツールもあなたのためにしてくれない部分——は、人間の掘り下げの仕事です。問題と、その問題を解決する相手を深く理解し、「正しい」感じが何かについて意見を持てるほどになること。要件だけでなく、味、なぜ、優雅さ、そしてそれがどのように機能すべきかの正確なスイートスポットを捉えること。

それが、私たちが書き留めることを学ばなければならない知恵です。私たちのほとんどはこれまでそれを明確にする必要がありませんでした——ただ持っていて、コードに染み出させていました。今、私たちはそれを意図的に明示し、エージェントが構築できる形にしなければなりません。それが新しいクラフトです。

結論:良いソフトウェアは常に、味と規律と深い理解を要求してきました。AIがコード作成を引き受ける今、人間の判断力と知恵を仕様にエンコードする能力がますます重要になっています。私たちは構文ではなく判断力を育成しなければなりません。私たちの組織は味を育成しなければなりません。さもなければ、味はないが技術的に正しいソフトウェアスロップに溺れることになるでしょう。