riq0h.jp/content/post/オープンソース小説.md
2023-08-21 10:07:01 +09:00

14 KiB
Raw Permalink Blame History

title date draft tags
オープンソース小説 2020-11-28T12:05:26+09:00 true
novel

 ある平行世界での話。そこではあらゆる二次創作に関する権利が最大限に拡張され、すべてのコンテンツに対して無制限の改変および介入が認められるようになっていた。

 著者はこの法律に基づいて作品を特定のrepositoryに公開し、pull requestを受け付ける義務を負う。mergeの可否は当該コンテンツのオープンソースコミュニティによる投票で決定される。repositoryが作品の共有場所かつ共同の作業所、pull requestが作品に対する改変の申請、mergeがその受け入れを意味している。

 このため、著者――authorが自身の作品に対して唯一の決定権を持つなどという権威主義的な悪しき文化は滅び、すべての創作物はオープンソース化されるに至った。

 ある人気作家に巻き起こった珍事件を紹介しよう。

 朝、キッチンで淹れたコーヒーを片手にその作家はコンピュータの電源を投入した。瞬時にオープンソースBIOSであるcorebootが走り、Linuxカーネルがロードされ、作家が好むディストリビューションであるArch Linuxが起動した。オープンソースデスクトップ環境のKDE Plasmaによる美しいデスクトップ画面は作家の創作意欲を増進させた。

 さっそく作家はコンピュータを操作し、いつも使っている手慣れたオープンソースソフトウェア群を起動しはじめた。彼はautostartよりも手動でアプリケーションを開くことを好むたちなのだ。そのうちの一つにストーリー実装用のオープンソースエディタがある。この世界のエディタにはたとえプログラミング用でなくてもgitの連携機能がごく当たり前に搭載されており、小説ももっぱらGitHubなどのホスティングサービス上にあるrepositoryにて公開される。すべての作品は共有されていなければならないのでprivate repositoryなどという機能は廃止されて久しい。

 さて、作家は昨日の夜までデバッグを続けていた設定資料集の最終確認に取りかかった。彼がコーディングした作品は彼の中では既に完結していたが、コミュニティの投票により続行が決定されたので今後もpull requestを受け付けなければならない。そのため、参加するコミッターのより良いストーリー実装を支援すべく、こうして設定資料集を開発しているというわけだ。

 作家にとってこれはなんら苦痛なことではなかった。彼は自分の作品が彼自身の潜在的な強権性から解放されうる可能性を信じていたからだった。というのも、この作品も他作品からforkして生み出したものだからだ。

 forkとは元の作品の設定等を引き継いだ上で完全に派生させることを意味する。mergeされるまでの一時的な分岐とは異なり二度と交わらない。言うまでもなくオープンソース小説における中核的な権利として見なされている。

 fork元の作品はかなり古く、長らくメンテナンスされておらずコミュニティもほとんど機能していなかったが、彼はその作品の豊かな実装に心を打たれ、それ以上にまだ拡張の余地があると確信した。しかしコミュニティはmergeを決して認めなかった。これ以上の新規開発は行わない方針で固く一致していたのである。

 作家は最後までコミュニティと協調する形でのストーリー実装を望んだが結局叶わず、幾多ものpull requestが拒絶された後でやむなくforkに踏み込んだ。これはfork元のauthorやコミュニティの反感をかなり買ってしまったものの結果として作家の読みは当たり、今では一大コミュニティを形成するまでに至っている。

 そのような経緯を持って生まれた作品なので作家としてもコミュニティの意志に敬意を払うことは至極当然だった。間もなく彼は設定資料集の実装を終えた。エディタのサイドバーからgitの連携機能を呼び出し、簡便なGUIインターフェイスを用いてrepositoryにpushした。これで変更履歴とファイルが全体に公開された。気がつくと頭上の壁掛け時計は正午前を指していた。

 昼食としてオープンソーススパゲッティをこしらえた作家はそれを食べつつ、Chromiumベースのオープンソースブラウザで先ほどpushした設定資料集に対するコメントを読もうとした。そこで彼は思わぬものを目にする。不穏な内容のissueが大量に建てられていたのだ。

「この設定は私の解釈とは大きく異なる。」
「コミュニティの感覚と乖離する権威主義的設定だ」
「pull requestするつもりだったコードが無駄になった。このような設定を認めるくらいならforkする」

 特に最後のコメントは彼をいらつかせた。forkだと ふざけやがって、これまでどれだけコミュニティを尊重してきたと思っている。ろくすっぽメンテナンスもしなかったfork元とは違って、きちんと真摯に取り組んできたじゃないか。彼はオープンソーススパゲッティが巻き付いたままのフォークを器に置き、奥に追いやっていたキーボードを手前に引っ張り出し、猛烈な勢いで反論を打ち込んだ。作家は明らかに怒りに駆られていたが、それでも実際に打ち出された文章には一定の礼節が保たれていた。

「私はコミュニティの意志を最大限に尊重しています。この設定資料集はあなたがたの実装を貶めるものではなく、むしろ積極的な支援を意図して提供したものです。……」

 彼は努めて冷静なふりをして一つ一つの設定を挙げながら、既に実装済みのストーリーコードをいくつも引用し、なんら矛盾点がないばかりかむしろ実装の正当性を裏付けるものであると主張した。しかし、反論はまたたく間に返ってきた。

「あなたの態度からはauthorにありがちな強権性がうかがえる。失望した。私の認識では当該のキャラクターのプロパティは男の娘だ。過去のストーリーコードからもこれは明らかだ。authorだからといって特定の解釈を押し付けるべきではない。」
「私の認識ではこのキャラクターは同性愛者のはずだが、設定資料集では『戦後、故郷に帰って異性の幼馴染と結婚する』などとハードコーディングされている。これは到底受け入れられないのでforkを検討している。」

 コミュニティの反発は想像を越え、同時に作家の忍耐も限界に達していた。やがて彼は冷静さを取り繕うことを放棄し、盛大にFワードを乱発しながらコメント欄で吠え散らかした。

「ふざけやがって そんなにforkしたければ勝手にforkすればいい。貴様らのクソコードは今後何があってもmergeしない。覚えておけ。このキャラクターは絶対にバリウケのホモだったりしないし、そのキャラクターにもチンポは生えていない。絶対にだ。貴様らは明らかに解釈を誤っている。どこをどう読んだらそうなるんだ 一度ストーリーコードチュートリアルを第一章から読み直した方がいい。さもなければ、forkした作品の末尾には"LGBT-improved"とでも名付けるんだな、畜生め。」

 彼はマウスを叩き壊さんばかりの指圧でコメントを投稿すると、反応も読まずにオープンソースブラウザを閉じた。傍らにはすっかり冷めて食感が失われたオープンソーススパゲッティが佇んでいた。

 数時間後、ふて寝していた作家は目が覚めたとともに徐々に真の冷静さを取り戻しはじめていた。コミュニティの反発に異議を申し立てるまではいいとしても、さすがにあの発言はかなりまずかったような気がする。ただほんの一瞬、激情にかられてしまっただけで私は決して差別主義者ではないし、もちろん性の多様性も尊重している。ソフトウェア自由主義者は他の事柄においても必ず自由主義的であるべきだ。

 なんであれ、先ほどのコメントを撤回し、謝罪しなければ。まだ話し合う余地が残されているといいが……。彼は放置していたオープンソーススパゲッティの残りを冷蔵庫にしまい、食器を片付けた後で再びオープンソースブラウザを開いた。さしあたってはアカウントのアイコンをレインボーフラッグにしておこう。

 ところが、何度ログインしようとしてもGitHubにログインできない。オープンソースパスワードマネージャであるBitwardenの入力支援によって自動挿入されているから、決して打ち間違いなど起こらないはずなのに。これはおかしい。

 そこで彼はようやく自分のスマートフォンが通知LEDを光らせていることに気がついた。当然ながらこのスマートフォンはオープンソースのブートローダとManjaro ARMを搭載しているオープンソーススマートフォンである。かつてAppleとGoogleが不当にシェアを寡占していた不自由なOSは今ではもう滅ぼされ存在しない。どうやら通知はオープンソースメールクライアントのThunderbirdからのようだ。彼はアイコンをタップし、新着メールのタイトルを読んだ。

GitHub Notification: Your account has been deleted.

 目を疑った。そのシンプルな一文だけでも何が起こったか容易に把握できた。本文を表示させると、そこには明らかにスクリプトが出力したと見られる無機質な文章が日本語で記されていた。

あなたのアカウントは以下の規約違反により永久に削除されました。
削除理由:複数の差別的言動およびオープンソースコミュニティに対する尊重の欠如
なお、この決定への異議は一切認められません。

 今さらになって作家は自分のしでかしたことの重大さを思い知った。いやしかし……そうしたら、つまり、私の作品はどうなる 今後、authorなしでどうやってコミュニティを運営していくというんだ

 彼はすがるような思いで未ログイン状態のままオープンソースブラウザで自身のrepositoryにアクセスした。ログインしていないのでコメントはできないが読むだけならできる。

「authorは規約違反によりGitHubからBANされたため、同時に当コミュニティからも追放されたものとして扱われます。先ほど緊急の投票を経て新体制が発足しました。下記に挙げる複数の人物がauthorとしての権限を引き継ぐ形で今後のpull requestを受け付けます」

 そこには先ほど議論していた何人かの名前が書き連ねられていた。嫌な予感がした作家はターミナルエミュレータのKonsoleを呼び出し、git pullコマンドを打ち込んだ。こうすることでrepositoryに対して行われた変更をlocalに反映させることができる。

 彼は急いで目当てのファイルを開いた。言うまでもなく設定資料集である。数行ほど読んでみて、すぐに嫌な予感が的中したことを悟った。当該のキャラクタープロパティが既に男の娘とバリウケの同性愛者に書き換えられていたのである。

 これらの変更を彼が拒絶する方法はもはや存在しない。authorとしての権限をアカウントごと失った彼は変更を削除できず、今後のpull requestを拒否することもできない。アカウントがなければGitHub上で新たなforkも生み出せない。別のアカウントを作ったところですぐに接続元をtraceされて自動BANされるだけだろう。

 かくしてかの作品は強権的な作家の手を離れ、自由に創作されうるコンテンツとして真に解放されたのだった。

 一年後、作家はまだ作家だった。だが、もう人気作家ではない。GitHubへのアクセスを永久に失った彼は他のホスティングサービスのBitbucketに新たなrepositoryを作り、そこで完全にオリジナルの作品を公開していた。やはりprivate repositoryなどという機能は存在しなかったので公開を余儀なくされているが、pull requestは実質的にすべて拒否している。コミュニティには彼の理念に賛同するごく少数の人員しかいないため、投票結果が覆ることはありえないのだ。

 それでもforkだけは避けられない。その気になれば誰でも行える。fork先では、やはりあるキャラクターは男の娘にされ、別のあるキャラクターはバリウケの同性愛者に改変されていた。作家は自身の作品タイトルの末尾に「legacy edition」と付け加えた。これは皮肉だ。ここではどんなキャラクターの性的志向もジェンダーも人種も書き換えられたりしない。

 やがて、徐々にforkもされなくなっていった。どういうわけか元の作品が注目されなくなるとforkされたコンテンツも急速に衰退する傾向にあるようだ。かつては人気作家の新作ゆえ相当数のpull requestが到来し、無理だと判るとすぐにforkされていたが、しばらく経った頃には見る影もなくなった。聞いた話では、当時forkを作っていた連中も今では別の作品のforkをコーディングしているらしいとのことだった。