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

バイブコーディングがオープンソースを殺す

概要

  • Generative AI によるソフトウェア開発手法「vibe coding」の登場
  • OSSエコシステムへの 均衡効果 の分析
  • OSS利用のコスト削減と 生産性向上 の一方で、ユーザー関与の低下
  • OSSの 維持・発展 に必要な報酬体系の再設計
  • 現状のOSSモデルでは 福祉減少 のリスク

Generative AIによるvibe codingとOSSエコシステムへの影響

  • Generative AI がOSSの選択・組み合わせによるソフトウェア自動構築を実現
  • ユーザーが ドキュメント読解・バグ報告・メンテナとの交流 を省略
  • OSSが スケーラブルな入力資源 として活用される構造
  • OSSプロジェクトへの 新規参入や品質 の異質性を考慮したモデル構築
  • OSSの利用方法として 直接利用vibe coding経由 の2択

vibe codingの経済的インパクト

  • vibe codingで 既存コードの利用コストが低下 し、 生産性が向上
  • 一方、ユーザー関与が 減少 し、 メンテナ報酬 の機会が減少
  • OSSが 直接的なユーザー関与 のみで収益化される場合
    • vibe coding普及で 新規参入減少・共有減少
    • OSSの 可用性・品質低下
    • 生産性上昇にも関わらず 社会的福祉が減少

OSS持続のための課題と提言

  • vibe coding普及 下でOSSを現状規模で維持するには
    • 報酬体系の抜本的見直し が不可欠
  • OSSメンテナへの 新たな収益モデル の必要性
  • OSSエコシステムの 持続可能性確保 への課題提示

Hackerたちの意見

オープンソースのJava NLPロケーションライブラリを改善するためにClaudeのコードを使おうとしてるんだけど、コードの最適化や小さな問題の修正以外はうまくいかない。抽象的な高レベルの問題には苦戦してる。例えば、今は曖昧さの衝突に関する問題があって、入力が「California」の場合、出力が「California, Missouri」になる。Californiaは州だけど、Missouriの中にも同じ名前の市があるんだよね。https://github.com/tomaytotomato/location4j/issues/44 何度もClaudeにこの曖昧さを解決してくれって頼んだけど、いろんな優先順位付けの戦略を提案された。でも、その結果、ライブラリの他の機能が壊れちゃった。結局、AIの手助けを最小限にしてライブラリをゼロから再設計してる。なんでかっていうと、数年前にAIの助けなしでプロジェクトを始めたから。問題を解決するために設計したけど、その問題や微妙なプログラミングの決定がLLMには尊重されてないみたい。LLMはストーリーなんて気にしないし、コードの現在の状態だけを気にしてるんだよね。

プロジェクトは頭の中で始まったし、たくさんの欠陥やニュアンスがあって、LLMがそれを尊重するのに苦労してると思う。プロジェクト、それともあなたの頭の中?これが多くのLLMコーダーが直面することだと思う。彼らは言葉にするのが難しい、または時間と労力がかかる多くの内在的な知識を持っている。「説明できないけど、このコードはおかしい」みたいな感じ。

デザインドキュメントを書かせて、それをレビューするのがいい結果を得られると思うよ。レビューは君とボットの両方ができるしね。

LLMはストーリーには興味がなく、コードの現在の状態だけを気にしている。バックストーリーについて教えなきゃいけない。どこかに書いて入力しない限り、LLMはそれを知らないんだ。

それは苦労している それは苦労していない、あなたが苦労しているんだ。これはあなたが使っているツールで、あなたが言った通りに動いているだけ。ツールを使うには時間がかかるけど、それは全然問題ない。ツールを責めるのは逆効果だよ。コードがよくドキュメント化されていて、高レベルでインラインコメントもあれば、指示が明確なら、きちんと理解するはず。もし間違いを犯したら、どこでコミュニケーションが崩れたのかを見つけて、もっと明確かつ一貫して伝える方法を考えるのはあなたの責任だよ。

成功するLLM支援のコーディングの大事なポイントは、コードをただ吐き出すのではなく、しっかりとした土台を作ることだよ。ドキュメント、ドキュメント、ドキュメント:アーキテクチャやベストプラクティス、好み(コードに関することや、LLMとの関わり方、期待する動作について)をしっかり記録しておくことが重要。時間はかかるけど、これが半分成功するための唯一の方法だからね。LLMの開発者にとっての最大の力は、コードを書くことよりも、理解を助けたり、機能間の関連をつなげたりすることなんだ。プロジェクトに導入して「Xをやって、Yをやって」と言うだけでは、必要な土台がないとすぐに混乱してしまうよ。確かに、時々タスクを完了することはあるけど、複雑さが増して、あなたもLLMもそこから抜け出すのが難しくなる。AIに否定的な人たちは、LLMに優しいプロジェクトを作るために必要な膨大な作業を面倒に思って、失敗してツールのせいにしちゃうんだ。土台を作った後も、特に大事なプロジェクト(アイデアを素早く検証するためのプロトタイプじゃないもの)では、逐一コードを追いかけて、同じミスを繰り返さないように土台やドキュメントを更新し続けることが大切だよ。そして、土台作りにはメインの依存関係のソースコードも含める必要がある。私は主要な依存関係のためにgitサブツリーを使った_vendorディレクトリを持ってる。LLMは依存関係のコードやテストをチェックして、何が間違っているのかをもっと早く理解できるんだ。最後に、LLMは特定のパターン、例えばTDDと相性がいいから、「Xを実装して」ではなく「Xを実装したいけど、その前にテストと進捗を追跡する方法を設定しよう」と言った方がいいよ。仮想マシン用のインスペクターを作ったり、e2eテストや他のテストを設定したり、単にログをファイルに逐一出力したりする方法はいろいろある。ケースバイケースでアプローチは変わるけど、LLMにコードを作成してもらうための実際の助けを得るには、良いコンテキストと良いセットアップ(テスト、ビジネス要件の計画を書かせたり、実装の計画を立てたり)を持って、進むにつれてこれらの側面を追いかけて改善していくことが重要だよ。

モデルのトレーニングみたいだね。AIを使ったプログラミングは、テストとトレーニングの分割をしっかり意識してやってきたよ。エージェントが見えないホールドアウトを用意して、それに対して測定することが大事だね。(そして、エージェントがズルしないように) https://softwaredoug.com/blog/2026/01/17/ai-coding-needs-tes...

Claudeが全てのコミット履歴を読んだら、プロジェクトの方向性や一般的な進め方に合った選択ができるようになるんじゃない?

新しい大きな波の役立つオープンソースソフトウェアが出てくると思う。でも、開発モデルが同じままでいるとは思わないでね。やっといくつかのプロジェクトを復活させることができたし、もっとたくさん出てくるよ。驚くべきことの一つは、フォークから価値のあるものを簡単にマージできることだった。新しいOSSは、あなたが生み出せるコードの量ではなく、ソフトウェアのアイデア、ソフトウェアがどうあるべきか、どう振る舞うべきか、役に立つために何をするべきかから推進される。今はデザインがコーディングよりも重要なんだ。

新しいgitが必要だね。(今のgitを基に作れるかも) > フォークから価値のあるものを簡単にマージできることは本当に素晴らしいと思う。無駄な努力を減らせるしね。でも、それは存在するものを知っていて、どこにあるかを把握している場合に限る。

GitHubリポジトリに .claude が含まれているソフトウェアは信用できない。

本当の問題は、新しい波のバイブコードソフトウェアがどれだけペットプロジェクトからコミュニティ維持プロジェクトに成長できるかだね。バイブコーディングは、同じことのために10個の異なるバイブコードパッケージができたり、週末に作って放置されたりすることで、オープンソースソフトウェアの断片化や放棄を悪化させるかもしれない気がする。

ソフトウェア開発にAIツールを使うことには大賛成だけど、LinuxカーネルやPostgreSQL、gcc、git、Chromiumの代わりになるようなものを見ない限り、この前提には同意できない。もしPythonがインストールされていないシステムにいるなら、Claudeが「ダウンロードしなくていいよ、Pythonインタープリタを書くから」って言うとは思えない。

私はソフトウェア開発にAIツールを使うことに大賛成なんだけど、LinuxカーネルやPostgreSQL、gcc、git、Chromiumの代わりになるものが出てくるのを見ない限り、この前提には同意できないな。記事読んだ? LLMが主要なオープンソースソフトウェアのコンポーネントを置き換えるって言ってるわけじゃないよ。OSSの提供、維持、キュレーションに対する「報酬」が、コミュニティがないと消えちゃうって言ってるんだ。オープンソースコードを取り込んで、良いか悪いかのソリューションを出すLLMだけが存在する世界ではね。curlがプレッシャーに耐えられなくなったのを見たことがあるよ。セキュリティレポートに貢献しようとしたコミュニティの努力が、結局は崩れちゃったから。この話は、全体のエコシステムにその理論を広げることに関するものだよ。GHのイシューもPRもない、インタラクションもなし。HNでの称賛も、GitHubでのスターも、カンファレンスで素晴らしい講演をした後に「お疲れ様」と言うこともない。AIツールでLinuxカーネルが開発されるのを見ないと、記事の著者が言ってることに納得できないって、どこでそう思ったの?

小さくてカスタマイズされたその場で使えるアプリがLLMの未来だね。未来は絶対に「今の状況 + LLM」じゃない。「できるだけ多くの用途に対応できる能力を持ったツール小屋/ガレージ/納屋/倉庫を作る」っていうのが今のソフトウェアのパラダイムだけど、LLMが数分でカスタムのハンマーやノコギリを作ってくれるなら、わざわざ小屋に行く必要はないよね。

LLMを使って何かを作ると、必ず追加機能が必要になったり、何らかのメンテナンスが必要になるからね。今は月に200ドル以上のLLMサブスクリプションにお金を使って、結局は中途半端な実装で、自分の重みに耐えられなくなるものを手に入れるより、実際に動くソリューションを買った方がいいよね。

アプリが標準化されて意見が明確であることの巨大な価値を見逃してると思うよ。標準化されているってことは、ドキュメントに加えて、インターネット全体が助けてくれるってこと。意見が明確ってことは、新しい分野のアプリを使うユーザーとして、始めるためにどう動くべきかを何百万回も決める必要がないってこと。確かに、特定のワークフローをサポートするものを作ることで価値を得られる専門知識を持っている人には、よりパーソナライズされたアプリがあるだろうけど、ほとんどの人やほとんどのユースケースではそんなことは起こらないよ。週末にバイブコーディングしたもののために、何十年も積み重ねてきた経験を手放すつもりはないね。

"なぜ小屋に行くのか" いい質問だけど、いい答えがあるよ:デバッグ済みでテストされたコード。これには、デバッグとテストの全範囲が含まれる。単体テストだけじゃなく、統合テストも、実際に役立っているユーザーがいるのか? どれだけのユーザーがいるの? どれだけのユースケースがあるの? 実世界の影響をどれだけ受けてきたの? AIが他の問題をあまり重要でなくする一方で、残る問題はより重要になる。LLMに、5年間にわたって何百万もの人に使われてきたコードベースを作らせるのは完全に不可能だよ。そういうものにはまだ価値がある。近い将来、AIがパワーを持って、みんなが自分の望む通りのカスタムコードを手に入れる世界が来るって考えるのは、この問題を見落としている。たとえ(弱い)超人AIでも、実世界がコードベースに何をするかを予測するのは難しい。もしAIにカスタムの写真編集ソフトを作らせても、何百万時間も使われた他の誰かのAI写真編集ソフトには、私の新しいものよりも優位性があるだろう。もちろん、すべてのコードがこういうわけじゃないけど、影響の少ない一回限りのコードもたくさんある。セキュリティ問題がないのは、私しか実行しないからだし、バグも問題にならないのは、特定のデータセットでしか実行されないから(例えば、ファイル名のスペースで技術的に何か間違ったことをするbashスクリプトがたくさんあるけど、実際には問題なく動く)。LLMはそういうのには最適で、間違いなく良くなるだろう。ただ、トップからボトムまでテストされたソフトウェアには、問題解決の適合性を確認するための価値がまだ大きい。基本的な単体テストだけじゃなくて、何百万、何十億、何兆時間も実世界で生き残るためのもの。実際、こういうソフトウェアの価値は、突然小さなものが溢れる世界ではさらに上がるかもしれない。カスタムのハンマーは手に入るけど、広範な実世界での使用に耐えたテスト済みのカスタムハンマーは、定義上手に入らない。

今のソフトウェアのパラダイムは「できるだけ多くの用途のために、できるだけ多くの機能を持つツール小屋/ガレージ/納屋/倉庫を作る」だけど、LLMが数分でカスタム(!)のハンマーやノコギリを作れるなら、なぜ小屋に行くの? 1) あなたの具体的な例えは、重要な何かを欠いてるよ:私は、使うたびに道具が違う動きをするのは嫌だし、LLMを使うのも手間がかかる。ハンマーはちょっと単純すぎる例だけど、それでも続けると、ハンマーが必要なときに、私の「LLM」がプラスチックのハンマーを生成して、正しいものを得るまで30分もかかるのは嫌だ。小屋に行くのに30分もかからないからね。もっといい例はUIだね。たとえそれが完璧でも、ツールを使うたびにボタンやメニューが違うのは嫌じゃない? 毎回「小屋に行く」代わりに新しいものを生成するから。 2) それから、LLMが実際に作れるのか、それともただ吐き出すだけなのかって問題がある。ハンマーは非常によく理解された道具で、何世代にもわたって洗練されてきたから、LLMはかなり良い仕事ができると思う。たくさんの例があるけど、それはLLMが参照しているデザインが、LLMの出力よりも優れている可能性が高いことも意味する。そして、それとは違う、もっとユニークなものについては、LLMが実際にできるのか、合理的な労力でできるのか? 現代の現象として、物事を「簡単」にすることが、実際には悪い結果を招くことがあると思う。以前の状態よりも劣化した状態になることもある。必要がなくなると、個人の規律の問題になってしまうから。必要性を取り除くと、多くの人が規律だけで最善のことをするのが本当に難しくなる。LLMは、そういう劣化した結果を促進するかもしれない。みんなが「カスタム」LLM生成ツールを使っているけど、実際にはどれもひどくて、手動でツールを設計する努力をした方が良かったってことになるかも。

これは成功するモデルだとは思わない。ソフトウェアが本番環境で壊れたとき、効果的にデバッグできる必要がある。外部ライブラリが基本的な仕事をしていることを知ることは、検索範囲を減らし、パッチの影響範囲を減らすのに本当に役立つ。これはAI特有のことではないよ。一般的に、自社のコアビジネスではないソフトウェアの社内実装には、その実装を書くコストに限らないコストがかかる。

LLMが数分でカスタム(!)ハンマーやノコギリを作れるなら、なんで小屋に行くの?ソフトウェア開発者は、クライアントよりも問題解決の実装方法を理解していることが多いから。解決策を実装するための詳細が足りないと、クライアントに詳細を聞くことになる。開発者がLLMを使って解決策を実装することを決めた場合、最終的な製品を評価する能力があるんだ。問題は、ソフトウェア開発者にはコストがかかること。LLMを使う開発者は開発コストを削減できるかもしれないけど、そのコスト削減が個別のアプリケーションを正当化するには不十分だと思う。コストを正当化できるケースは、カスタムソフトウェアが一般的に使われている分野に限られるだろうね。確かに、LLMを使って自分用のカスタムソフトウェアを開発する人はいるだろうけど、そういう人は問題を明確に特定できる人で、作成したソフトウェアのバグや癖に耐える忍耐力があり、プロセスを楽しむことができる人だと思う。中小企業がLLMを使ってカスタムソフトウェアを作る開発者を雇うこともあるかもしれないけど、個別のソフトウェアが広く普及するとは思えない。これは、問題を特定する能力だけを考慮した場合の話で、相互運用性など他の要素もあるからね。結局、私たちはネットワーク化された世界に生きていて、相互運用性はすべてがネットワーク化される前から重要だったんだ。

大多数のユーザーは、アプリやデバイスのデフォルト設定を全く変更しないんだよね。普段使ってるソフトウェアでも、ちょっとした調整で体験がかなり良くなるのに。こういう人たちが、全く新しいUXを学びたいって思う世界なんて想像できないよ。

LLMを使って小さなプロジェクトをサクッと作る実験をすればするほど、これが本当にそうだと確信するようになった。よく言われるけど、顧客の90%はソフトウェアの機能の10%しか使わないんだよね。でも、その10%はそれぞれ違う。今は、その10%だけをサクッと作れる小さなアプリが簡単にできるようになって、問題が解決されつつある。必要なものだけを手に入れられるから、DoEverythingBloatWare(何でもできる肥大化ソフト)を我慢する必要もないし、更新で壊れる心配もない。デザイナーがポートフォリオを膨らませるためにUIを勝手に変えることもないし、開発者がリファクタリングして大事な機能を削除することもない。今、使ってる大きくて重い、クラッシュするようなソフトウェアを見直して、代替品を探してるところだよ。

問題を解決することが分かっている、戦闘実績のある安全なライブラリを使わずに、メンテナンスが必要なカスタムコードでプロジェクトを重くする理由って何なの?

StanLLMが生成したハンマー: 「親愛なるお客様、私たちの自動システムがあなたのStanLLMアカウントで、当社の利用規約に違反していると思われる活動を検出しました。予防措置として、あなたのアカウントは一時停止されました。この一時停止が誤りだと思われる場合は、サポートにご連絡ください。連絡先: /dev/null^H^H^H^H^H^H^H^H^Hsupport@...」

最近気づいたのは、AIによるコード生成がコードを生成するのを簡単かつ早くする一方で、コードの正しさやメンテナンス性を保つ作業がコードレビューの段階に移ってしまうこと。これって、メンテナのレビューのキャパが限られているオープンソースプロジェクトにはかなり問題になるんだよね。PRを提出する前に、提出者がレビューして修正することで軽減できるけど、今のところ多くの提出者はこれをやってないし、私の経験では、AIが生成したPRの平均的な質は、AIを使ってないものよりも確実に低いよ。

メンテナは今や自分たちで全部の作業をこなせるようになった。AIを使って時間を節約すれば、もっと多くの仕事ができるから、他のエンジニアにコードベースを学ばせる価値がなくなってきてるかも。大規模なソフトウェアシステムは、今や1人か2人でメンテナンスできるようになったよ。追記: みんなに返信して制限かけられるのは嫌だから、別のコメントのリンクを貼るね: https://news.ycombinator.com/item?id=46765785

僕みたいなおじさんにとっては、実際のコード制作よりもコードレビューを手伝ってくれるLLMの方がいいな。これってバカかな?

タイトルを見たとき、この記事のポイントだと思ってた。人気のプロジェクトは、ほぼ間違いなくAI生成のPRに溺れているみたい。OpencodeCliは現在1200件のオープンPRがある[1]。放置気味のAiderは200件[2]。私の知る限り、両プロジェクトともほとんど一人のメンテナーが担当している。[1] https://github.com/anomalyco/opencode/pulls [2] https://github.com/Aider-AI/aider/pulls

OSSがユーザーとの直接的な関与だけで収益化される場合、バイブコーディングの普及は参入障壁や共有を下げ、OSSの利用可能性や質を減少させ、より高い生産性にもかかわらず福祉を減少させる。広範なバイブコーディングの下で現在の規模のOSSを維持するには、メンテナの報酬の仕組みに大きな変更が必要だ。直接的なユーザー関与を通じてOSSが収益化されている例は思いつかない。大半は全く収益化されていないし、収益化されているもの(たまにコーヒー代がもらえるようなチップジャー的な状況を超えて)は主に企業ユーザーやサポートライセンスの販売、助成金などによって支えられている。Kritaのようなプロジェクトは、Steamストアでバイナリを販売している。

ドキュメント(あるいは意図的に質の低いドキュメント)をコンサルティングや「プロ」バージョンのマーケティングファネルとして使うモデルがある、ウェブ開発に近いニッチがある。これらのプロジェクトは、バイブコーディングがビジネスモデルを壊すことについて声を上げている。これらのプロジェクトが本当に意味のある価値を生み出しているかどうかは、また別の問題だね。

Terraform、Ansible、他にも無数のものがある。コミュニティがないと、エンタープライズ版も認知度もないんだよね。

LLMが大部分オープンソースソフトウェアのおかげで可能になっているというのは、ちょっと皮肉だね。モデルの設計や開発に使われたツール(プログラミング言語やライブラリ)から、実行するためのオペレーティングシステム、トレーニングデータを保存するためのデータベースまで、もちろんほとんどオープンソースコードでトレーニングされているからね。OSSがなかったら、LLMが作られることはほぼなかっただろう。

OSSがなかったら、LLMは作られなかっただろうね。もしSlopHub CopilotがMicrosoftのコードだけで訓練されていたら、誰が欲しがるだろう?(修辞的な質問)

関連しているけど、どれだけ注目されているかはわからない:GPLは死にかけている。なぜなら、LLMが公的な仕様から新しい言語で新しい実装をクリーンルームで作成でき、「元のソースを見たことがない」と検証できるから、ライセンスをより緩くすることができるからだ(MIT、BSDなど)。例えば、今私がLLMの助けを借りて作業しているプロジェクトの依存関係を見てみて:https://github.com/pmarreck/validate/tree/yolo/deps 「validate」は、現在100以上のファイル形式をバイトレベルで検証するプロジェクトで、できるだけ多くの形式を検証することを目指している。なぜ私はGPL(普段は好きなんだけど)を避けたのか? それはオープンソースだから? 私は、データを自動的に修復する光パリティ保護を実装する、さらに高レベルのプロジェクトに取り組んでいて、そのコードは(最初は)プライベートにしたいからだ。このプロジェクトは、すでに壊れているデータを保護する意味がない。とりあえず、これを世界に無料で提供しようと思った。私のコレクションの中で実際に壊れたファイルをいくつか見つけている(まだ偽陽性のリスクがあることに注意してね;これは昨日リリースしたばかりで、まだ積極的に作業中)。数年前の日本旅行の大切な写真も含まれていて、これは取り替えがきかない。Mac、Windows、Linuxのビルドがあるよ。GitHub Actionsのページをチェックしてみて。

何か変わったの?LLMが生成したものが著作権で保護されるようになったの?著作権は人が作った作品にしか適用されないと思ってたんだけど。

つまり、フルリードとスクラブはもう少し多くのビットに触れ、必然的にエラーレートにぶつかるってことだよね。これって全然意味あるの?ZFSのスクラブは、全ドライブを読むんじゃなくて、持ってるデータだけを読むし、可能なら修復もする。データが多ければ多いほど、使うツールに関わらず検証しなきゃいけない量も増える。BERもひどい指標で、実際のドライブの挙動を反映してないよ。

検証可能な「元のソースを見たことがない」...えっと。ここでの大きな問題を指摘すると、誰が元のソースを見たことがないと検証可能であるべきなの?あなた?それともLLM?

自分の「validate」プロジェクトの著作権を持っている限り、デュアルライセンスができるよ。だから、(A)GPLの下でリリースして、クローズドソースの商業プロジェクトでも使える。ただ、貢献者の貢献をクローズドソースで使い続けるためには、貢献者ライセンス契約(CLA)にサインしてもらう必要があると思う。

Vibecodingはオープンソースにとって素晴らしいよ。オープンソースはすでにantirezやlinusのような強力なソロプログラマーに支配されている。彼らは必要だと思うソフトウェアを作る強いモチベーションを持っているんだ。Vibecodingはオープンソースプロジェクトを作るのを簡単にしてくれる。アイデアから「みんな、これ見て!」に至るのが楽になる。ただ、オープンソースの唯一の欠点は、Vibecodingによって生まれる一時的なPRがメンテナーの時間を奪っていることだね。

どんどんPR作っていけばいいんじゃない?Linusたちがどれだけ喜ぶか想像できるよ、こんなゴミみたいな機能でね ;-)

後者の解決策は、構造や組織に関して高い基準を維持することだと思う。KISSの考え方が、ソフトウェアの他の要件よりも優先されるべきだと思ってる。ここで言う「非要件」とは、主観的なもののことね。実際に必要ない複雑さを作らないでほしいし、他の部分のコードを理解しやすくするために大きな貢献をしないものも避けるべき。時には、何十個もの一回限りのスクリプトを持っている方が、超柔軟な一つのツールを作るよりも簡単だったりするからね。

オープンソースを殺してるわけじゃないと思う。変わってるだけ。すごい機能がたくさんある大きなプロジェクトを作るんじゃなくて、特定の目的のために小さなスコープのプロジェクトが増えてる気がする。少なくとも、私の経験ではそうだね。

大体私も同じ意見だな。UXや使いやすさに関して、かなり雑で、磨きが足りないし、完成度も低いと思う。