見出し画像

AIがオープンソースの「鍵」を壊す日――chardet騒動の本質


月間1億3,000万ダウンロードを超えるPythonライブラリが、AIで丸ごと書き換えられた。ライセンスごと。オープンソースの根幹を揺るがす問いが、いま目の前にある。

5日間で書き換えられた12年

Pythonの文字エンコーディング検出ライブラリchardetに、激震が走っている。

メンテナーのダン・ブランチャードが3月4日(現地時間)、バージョン7.0をリリースした。これだけなら日常的なアップデートだ。だが中身は、日常とはほど遠かった。AnthropicのClaude Codeを使い、コードベースを一から書き直したうえで、ライセンスをLGPL(準コピーレフト)からMIT(寛容型)に変更したのだ。

chardetはPythonエコシステムの「インフラ」と呼べる存在だ。requestsをはじめとする無数のプロジェクトが依存し、PyPIでの月間ダウンロード数は約1億3,800万回に達する。その根幹が、たった5日で塗り替えられた。

しかもブランチャードは、書き換えの成果を数字で示している。検出速度は旧版の48倍、精度は98.2%に向上。Python標準ライブラリへの採用を阻んでいたライセンスの壁も、同時に取り除いた。正直に言えば、技術的な成果としては見事だ。

だが、問題はそこではない。


原作者の異議

リリースの翌日、GitHubのIssue #327に、ある人物が現れた。

chardetの原作者を名乗るマーク・ピルグリムだ。「Dive Into Python」の著者として知られる彼は、このライセンス変更はLGPL違反だと主張した。LGPLの下では、改変したコードも同じライセンスで公開しなければならない。AIで書き直したからといって、その義務は消えない――というのが彼の論理だ。

「完全な書き直し」という主張は無意味だ。メンテナーは元のコードに十分に触れている。つまりこれは「クリーンルーム実装」ではない。

これに対しブランチャードは、盗用検出ツールJPlagの分析結果を提示した。バージョン7.0と過去の全バージョンとの類似度は最大でも1.3%未満。構造的に一致するファイルはゼロ。一致したトークンはargparseのテンプレートやimport文など、どのPythonプロジェクトにも現れる汎用パターンだけだという。

数字だけ見れば、確かに「別物」だ。だがここに厄介な問いが潜んでいる。Claudeの学習データにchardetのコードが含まれていた可能性は、誰にも否定できない。

・ ・ ・

「テセウスの船」が問いかけるもの

Flaskの開発者として知られるアルミン・ロナッハーは、自身のブログでこの事件を「テセウスの船」に例えた。

すべての板を入れ替えた船は、同じ船と言えるのか。ロナッハーの答えは明快だ。「コードをすべて捨てて一から書き直したなら、最終的な動作が同じでも、それは新しい船だ」。彼自身、以前からchardetのMITライセンス化を望んでいた立場であり、偏りのある見方だと自ら認めている。

だがロナッハーが本当に注目しているのは、もっと先の話だ。彼はこの現象を「スロップフォーク」と呼ぶ。AIが生成した書き換えによって、法的義務を脱ぎ捨てたフォークのことだ。

コピーレフトの力は、常にひとつの前提に依存していた。「コードを一から書き直すのは高くつく」という摩擦だ。AIがその摩擦を溶かしたとき、鍵は壊れたのではない。ドア自体が消えたのだ。

サイモン・ウィリソンも自身のブログで両陣営の主張に一定の妥当性を認めつつ、こう指摘している。この問題はオープンソースの世界で最初に表面化したが、やがて企業の知的財産にも波及する。そのとき、潤沢な資金を持つ訴訟が始まるだろう、と。


著作権の「空白地帯」

タイミングが象徴的だった。chardet 7.0がリリースされるわずか2日前の3月2日(日本時間)、米最高裁がThaler対Perlmutter事件の上告を棄却した。

この事件は、AIが自律的に生成した画像に著作権を認めるかを問うものだった。結論は明確だ。人間の創作的関与がなければ、著作権は発生しない。米著作権局の「人間による著作」要件が、事実上確定した。

ここで法的なパラドックスが生まれる。もしAIが生成したコードに著作権が成立しないなら、chardet 7.0にMITライセンスを適用する法的根拠自体が揺らぐ。著作権のないコードにライセンスは設定できない。一方で、AI出力が元コードの派生物と見なされれば、LGPL違反になる。どちらに転んでも、メンテナーにとって居心地は悪い。

ただし、この判決の射程は限定的だ。あくまで「AIが唯一の著者」と申告されたケースへの判断であり、人間がAIをツールとして使った場合の著作権は否定していない。

フリーソフトウェア財団のゾーイ・クーイマンは、The Registerの取材に対しこう述べている。「LLMが書き換え対象のコードを学習データとして取り込んでいる以上、そこに『クリーン』な要素は何もない」。そのうえで、コピーレフトを弱体化させる行為は、自分が受けた権利を他者に渡すことを拒む行為だと批判した。

「ソフトウェア開発の経済は死んだ」

オープンソースの定義を書いた人物、ブルース・ペレンスの言葉はさらに踏み込んでいる。

「非常ベルを鳴らす!ソフトウェア開発の経済は全部、終わった」

ペレンスは今週、既存のSRE(サイト信頼性エンジニアリング)プラットフォームの機能を、別の言語・別のライセンスでAIに再現させたという。AIの出力を検証する仕組みを整えたうえで、既存製品のドキュメントを読ませただけで、プラットフォームが丸ごと出来上がった。「『アブラカダブラ』と唱えたら本当に魔法が起きた」と彼は語る。

この言葉を額面通りに受け取るかどうかは、読者次第だ。だがペレンスが指摘する構造的な変化は、chardetの事例が裏付けている。かつて「書き直すコスト」が守っていたものが、その防壁を失いつつある。プロプライエタリソフトウェアも、オープンソースも。

ペレンスはこう続ける。「これまで採算が合わなかったニッチなソフトウェアが大量に生まれるだろう。だが、その社会的変化は、すでに見えている以上に恐ろしい」。


摩擦が守っていたもの

この騒動を「AIの勝利」や「コピーレフトの敗北」として単純化するのは早い。

思い出すべきは、ブランチャードが12年間、無償でchardetを保守してきたという事実だ。フルタイムの仕事を持ちながら、Pythonエコシステムの基盤を支え続けた。

「chardetの作業で報酬を受けたことは一度もない。フルタイムの仕事をしながら、手元にあるツールと時間でやれることをやっただけだ」とブランチャードは語っている。

その彼が「時間がなかった」と語る改善を、AIが5日で実現した。これは個人のメンテナーにとっての解放でもある。

だが同時に、この「解放」は誰にでも等しく開かれているわけではない。エンジニアリングチームと計算資源を持つ企業は、コピーレフトのコードを即座にスロップフォークできる。個人の開発者や小規模なOSSプロジェクトは、同じ速度で防御できない。消えた摩擦は、コードだけでなく、ある種の力の均衡をも守っていた

Vercelがbashのオープンソース実装をAIで書き換えたことを祝いながら、自社のNext.jsが同じ手法で書き換えられたときには不快感を示した――ロナッハーが指摘したこの矛盾は、問題の本質を映し出している。

法廷での決着はまだ先だ。だが、ひとつだけ確かなことがある。40年以上にわたってオープンソースを支えてきた「書き直すのが面倒だから、ルールを守る」という暗黙の前提は、もう機能しない。

次の前提を、私たちはまだ持っていない。


▼YouTube

▼ニコニコ動画

ここから先は

195字
この記事のみ ¥ 500
PayPayなら抽選で全額還元 3/30まで
Amazon Payなら抽選で全額還元 4/30まで

情報の灯台の活動を応援していただくためのメンバーシップです。 【メンバー特典】 ・全記事読み放題 …

70名が参加中
PayPayなら抽選で全額還元 3/30まで

灯し手

¥200 / 月

灯台員

¥500 / 月

灯台助手

¥1,000 / 月

灯台守

¥5,000 / 月

灯台神

¥100,000 / 月

記事が役に立ったと感じていただけたら、チップで応援いただけると嬉しいです。いただいた支援は、より深い調査と分析のための時間に充てさせていただきます。灯台を灯し続けるための燃料になります。

購入者のコメント

コメントするには、 ログイン または 会員登録 をお願いします。
AIがオープンソースの「鍵」を壊す日――chardet騒動の本質|情報の灯台
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1