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

スロップは必ずしも未来ではない

2026年3月31日原文(greptile.com)

概要

  • AI生成コンテンツ の氾濫と「slop」問題の台頭
  • 経済的インセンティブ による「良いコード」生成の必然性
  • AIコーディングツール 普及による開発現場の変化
  • 複雑化・品質低下 への懸念と現状分析
  • 将来的な市場原理 による「良いコード」への回帰予測

AI時代の「slop」と良いコードの経済的価値

  • 数年前から 「slop」 という言葉が、AIによる無価値なコンテンツ(画像・テキスト・スパム等)を指す用語として普及

  • Simon Willison がこの用語を広め、エンジニアリングコミュニティでは以前から流通

  • Greptileでは、 「slop」は未来の標準となるのか?プログラミングのベストプラクティスは消滅するのか?AIは今後も「良いコード」を書く必要があるのか? といった問いを検討

    • 結論:AIは経済的な理由で良いコードを書くようになる
    • 良いコードは 生成・保守コストが低い
    • AIモデル間の 競争が激化 しており、勝ち残るモデルは シンプルかつ保守性の高いコード で開発者の生産性を向上させる必要
    • 市場原理 が「slop」を長期的には排除

ソフトウェア開発現場の変革と課題

  • Node.jsの Ryan Dahl が「人間によるコーディングの時代は終わった」と発言
  • ソフトウェアの 平均的な複雑度が急上昇
  • Greptileの 2025 State of AI Codingレポート で、開発者1人当たりのコード行数が4,450行から7,839行に増加
    • PR(プルリクエスト)サイズも33%増
    • ファイルごとの変更量も20%増加
  • AIコーディングエージェント により、開発者はより多くのコードを短期間で出荷
  • しかし、 AI slop の本番環境投入が加速し、 品質低下・障害増加 が懸念
    • 2022年以降、システム障害が増加 (ベンダーステータスページ分析より)
  • Andrej Karpathy も「エージェントは抽象化を膨らませ、コード美学が損なわれ、コピペが多発」と指摘

良いコードと悪いコードの本質

  • John Ousterhout 著『A Philosophy of Software Design』によると、 複雑性が最大の敵
    • 良いコード: シンプルで理解しやすい・修正しやすい
    • 悪いコード: 文脈依存が強く、理解・修正が困難
  • この原則は AIエージェントにも当てはまる
    • 良いコードは 文脈把握が容易・修正も少ない行数で済む
    • トークン効率 の観点でも有利
    • 複雑なコードは トークン消費・計算コストが増大 し、スケールしない

今後の展望と経済的力学

  • AIコーディングの普及はまだ初期段階
  • 技術・競争の成熟とともに、 経済合理性がAIモデルを「良いコード」生成へと導く
  • 現在は「まずAIを動かす」フェーズであり、 最適化はこれから
  • AIコード生成が一般化すれば、市場競争により「良いコード」が必須となる
  • 開発者・企業の競争力維持のため、AIも高品質なコード生成を余儀なくされる

Hackerたちの意見

なんで新しい飛行機をロールス・ロイスのように丁寧に作る必要があるの?1970年代初頭、ケリー・ジョンソンと私はロサンゼルスで、ソ連の偉大な空力学者アレクサンドル・ツポレフと夕食を共にしたんだ。彼は言った。「君たちアメリカ人はロレックスの時計みたいに飛行機を作る。ナイトテーブルから落とすと、止まっちゃう。でも私たちは安い目覚まし時計みたいに作る。テーブルから落としても、ちゃんと起こしてくれる。」…彼が説明したのは、ソ連はひたすら耐久性を重視した機械を作っていて、ひどい天候や原始的な着陸場にも耐えられるようにしていたってこと。コスト削減のために、パイロットの安全さえも容赦なく犠牲にしていたんだ。私たちはコストを削減するために無慈悲である必要はないけど、シボレーで十分なのに高級モデルを作る必要はあるの?最初からちゃんと作ればいいけど、永遠に持つものを作る必要はないよ。 - ベン・リッチ(スカンクワークスより)

面白い話だけど、ソフトウェアの比喩としてはあまり良くないね。もし、誰でもすぐに安く飛行機を作れる技術があったら、航空工学の経験がない人でも飛ぶのは今よりずっと怖いことになるよ。航空業界の厳しい安全基準やメンテナンス基準には、ちゃんとした理由があるんだ。それを守らなかった場合に何が起こるか、私たちは見てきた。ソフトウェア業界に同じようなガードレールがないのは祝うべきことじゃない。良い開発プラクティスや規範を理解せず、あるいは気にせずに誰でもソフトウェアを作れる技術を解き放つのは、根本的に悪いアイデアだよ。

それから、ソフトウェアにおける「贅沢」が何かについて、みんなが意見が違うんだよね。

ソ連のエンジニアリングは雑じゃなかったよ。頑丈さ、ゆるい公差、シンプルさを考えて設計されてた。よく考えられたデザインだったんだ。同じように、安い目覚まし時計にもロレックスの時計と同じくらいの思考が入ってるか、むしろそれ以上かもしれない。エンジニアたちはただ異なる要求があっただけ。安くて精度の低い部品を信頼性を持って組み合わせるのは大変なんだ。ロレックスは楽だよ、すべての部品が高精度で作られていて、完璧にフィットするから。安い目覚まし時計は、何が出てくるかわからないから、あらゆる可能性の欠陥を考慮しなきゃいけない。予算内でそれ以上のものは得られないし、時計は時間を教えてくれなきゃいけないからね。ソフトウェアにおける平行線は、防御的プログラミングやフォールトトレランスなどだね。皮肉なことに、これはクリティカルなソフトウェアでは一般的な手法で、開発するのが最も高価なソフトウェアなんだ。雑とは真逆だよ。

人々は、特定の抽象レイヤーは自動化できるなら、そんなに手間をかけなくてもいいってことを受け入れる準備ができていないんだよね。今は、1つのクラスが汚れていても、そのクラスのAPIはクリーンであるべきっていう段階に来てる。もうクラスの内部をレビューする意味はないと思う。ほぼ確実に意図した通りに動くはずだから。次のステップはマイクロサービス自体だね。そのマイクロサービスのAPIはクリーンであるべきだけど、内部はどうでもいいかも。ここはまだ10%くらいだね。

パフォーマンスは重要じゃないの?もしあなたのAIがO(n)のアルゴリズムを使っているときに、O(log n)の実装があるとしたら?出力は「正しい」ままだよ。

「私に反対する人は、感情的に欠陥があるからだ。」

大体の開発者は2つのタイプに分かれると思う。1つは、ユーザーのために製品を作る手段としてコードを扱うタイプ。もう1つは、コード自体を自分の技術として扱い、製品はその技術を表現する手段に過ぎないタイプ。AIについて最も否定的なことを言う人たちは、だいたい後者のタイプで、AIが彼らのアートの大部分を自動化してしまうことで、前者の人たちが製品をより早く改善できるようになっている。個人的には、私は前者のタイプだね。誰もあなたのコードの良さで購入を決めることはない。一般の人々は、あなたの製品の能力と限界以外には興味がないから。もちろん、もし大きなバグをコードに入れちゃったら、それがユーザーに悪影響を与える結果になるけどね。それを踏まえて、後者のタイプの人たちにはリスペクトがあるよ。でも、彼らは実際にそのレベルの技術が役立つプロジェクトに向いていると思う(例えば、ミッションクリティカルなソフトウェアや、他の開発者が依存するライブラリなど)。この話をするのは、どのタイプのプロジェクトについて話しているのかがはっきりしていないと難しい気がする。

あなたの意見、特にその正直さには敬意を表するよ。そして同時に、いつかその考え方を持った誰かが書いたプロジェクトを維持しなければならない状況に追い込まれることを願っている。残酷だけど、残念ながら「他人の不幸は蜜の味」って本当にあるから、私も正直でいたい。もう「船を出してから質問する」プロジェクトには年を取りすぎたよ。

だいたい同意だな。AIに関する議論で混乱が生じるのは、「ソフトウェアエンジニアリング」がいろんなことを指すからだと思う。Next.jsのアプリとKubernetesのオペレーター、コンパイラなんかは全然違うしね。僕は、LLMコーディングが存在する前に複雑さの崖を越えたプロジェクトに関わったことがある。すでに長期的なユースケースを持つ顧客がいて、それを壊すわけにはいかないときは、かなり厄介になる。ユースケースは、実質的に改善できない技術的負債のゴルディアスの結び目に支えられているからね。一つのバグの問題じゃなくて、速度や信頼性の完全な崩壊が問題なんだけど、製品は成熟していて、まだ利益を上げているから、放棄して最初からやり直すのは現実的じゃない。技術的負債を急いで取り入れたことで、製品の人気が上がったけど、結局は行き止まりになっちゃった。バランスを取るのは難しいよね。多くのLLM生成プラットフォームも最終的にはこの罠にハマると思うけど、それには何年もかかるだろうね。

雑な技術設計は、バグや体験の不具合、そして不安定さとして現れることが多い。特にウェブサイトみたいなソフトウェアでは、少しの不具合は許容されることがある。セッションは比較的短いし、ユーザーはページをリロードすればいいからね。こういうコードベースの技術的厳密さはあまり高くないけど、まあ大丈夫だよね。でも、マルチプレイヤーゲームのサーバーやドライバーのように、問題に非常に敏感なソフトウェアもある。ここでは技術的厳密さが非常に重要で、一つのミスが壊滅的な結果を招くこともある。こういうソフトウェアには、自分のコードに誇りを持ちたい人が集まるんだ。なぜなら、品質が本当に大事だから。彼らはLLMに脅威を感じていると思う。LLMが彼らを上回るからではなく、LLMが(今のところ)悪い技術設計の決定を下すことで、高い厳密さのソフトウェアが最終的に壊れてしまうから。

これは、人々が「内向的」か「外向的」かで全てを決めるようになった時の話に似てるね。みんながこの極端に単純化された二分法に基づいて人生をどう生きるか決め始めた。コードが良ければ製品も良くなるものがある。ほとんどの製品は信頼性が求められるから、信頼性のあるコードがより良い製品を作るのは理にかなってると思う。それはコード職人であることではなく、良いプロダクトデザイナーであり、業界によっては良いビジネスマンであることでもある。あるいは、業界によっては、悪いコードが人々の生活を壊すことに無頓着でないことでもある。

Hacker Newsで議論の続きを見る