分散型ミニブログの水平分業—素朴ディジタル画像インフラストラクチャーの設計と応用

2017年にマストドンが大流行すると、分散型ミニブログというアイディアにも注目が集まるようになった。分散型ミニブログは、複数の運営者がそれぞれサーバーを運用し、それらがリモートフォローによって接続されることでSNSを構成するものである。

本稿では、分散型ミニブログの機能を、ソーシャルグラフ層、テキスト層、マルチメディア層の3層に分類する。そして、従来の分散型ミニブログを垂直統合型としたうえで、水平分業型の分散型ミニブログを提案する。具体例として Yayaka19 を取り上げる。Yayaka19 の本体はソーシャルグラフ層とテキスト層を担当し、マルチメディア層は 素朴ディジタル画像インフラストラクチャー という独立したウェブサイトが担当している。

分散型ミニブログの階層モデル

本稿では、分散型ミニブログの機能を、ソーシャルグラフ層、テキスト層、マルチメディア層の3層に分類することを提案する。

ソーシャルグラフ層は、ユーザーのフォロー・被フォロー関係を保存する層である。この層は最も高度な故障耐性が求められる。ユーザーにとって、自分がフォローしているユーザーのリストや、自分の発言を聞いてくれるフォロワーを失うことは、多大な損失である。そのため、データの喪失には万全の対策が必要である。また、ソーシャルグラフ層が停止すると他の層も機能しなくなるため、一時的な停止も最小限にすべきである。

テキスト層は、あるユーザーが投稿した文字列を、フォロワーに届ける層である。分散型ミニブログにおいて、タイムラインは常に流れていくものであるため、データの喪失はそれほど問題にならない。とはいえ、データの喪失やサービスの停止は、あくまでユーザーが不便に感じない程度にとどめるべきである。また、テキスト層は、マルチメディア層のための識別子 (画像のURLなど) を配信する役割を持つ。

マルチメディア層は、画像、音声、動画などのさまざまなデータを配信する層である。マルチメディア層にとって重要なことは、テキスト層と比較して、データのサイズが大きくなることである。

また、マルチメディア層は、法的問題にさらされやすいという特徴がある。テキスト層においても、ヘイトスピーチや犯行予告など、違法もしくは邪悪な投稿が可能である。マルチメディア層では、それに加えて、著作権法違反や児童ポルノの公衆送信など、よりカジュアルに違法または邪悪な情報の共有が起こり得る。

分散型ミニブログの垂直統合モデル

GNU Socialやマストドンなど、いま主流の分散型ミニブログは、垂直統合モデルである。すなわち、1台のインスタンスが、ソーシャルグラフ層、テキスト層、マルチメディア層のすべての機能を提供している。そのうえで、複数のインスタンスが連合を形成するアーキテクチャーとなっている。

この方式にはいくつかの欠点がある。第1に、インスタンスに必要とされる計算機パワーが大きいことである。分散型ミニブログでは、個人、団体、企業など、さまざまな主体がインスタンスを運営することができる。しかしながら、計算機パワーの問題により、個人が運用するインスタンスでは、処理が遅くなったり、レンタルサーバーの高価なプランに移行する必要が生じるなどの限界があった。

第2に、データの長期的な永続化が必要になるソーシャルグラフ層と、それほど永続化が必要とされないテキスト層およびマルチメディア層が混在していることにより、データベースの管理が不便になっていることがある。もし両者が分離されていれば、ソーシャルグラフ層のデータベースのみを厳重に管理し、他のデータベースは状況に応じて破棄するという運用も可能である。

画像アップローダーの分離

そこで、Yayaka19 では、本体はソーシャルグラフ層とテキスト層のみを担当し、マルチメディア層は 素朴ディジタル画像インフラストラクチャー に委託するというアーキテクチャーを採用した。

Yayaka19での変更はクライアントサイドのみであり、サーバーサイドおよびプロトコルの変更を必要としない。Yayaka19のクライアントは、投稿された文字列に画像のURLが含まれていれば、それを画像のインライン表示 (<img src=”URL“> タグ) に置換する。

ここで、画像のインライン表示を、信頼できる発信源に限定することが必要である。そうでないURLは、インライン表示ではなく、ハイパーリンクにする。なぜなら、インライン表示された画像の提供元は、ユーザーの行動を追跡することができるからである。画像の提供元は、ユーザーのIPアドレスと時刻を記録することができる。これは、単に画像を読み出したことを意味しているだけでなく、その画像が埋め込まれた投稿を読んだことを意味する。もしこれを画像の提供元が悪用すれば、深刻なプライバシーの侵害となり得る。

素朴ディジタル画像インフラストラクチャーの設計

素朴ディジタル画像インフラストラクチャー は、水平分業されたウェブアプリケーションのマルチメディア層として使われることに特化した画像アップローダーである。水平分業に特化するため、以下のような仕様を採用した。

  • 画像のURLを得ることが容易である。
  • 画像一覧の画面を持たない。
  • UIの視覚的な魅力に乏しい。

素朴ディジタル画像インフラストラクチャーは画像のランディングページを持たない。画像を投稿すると、その画像をブラウザで直接表示している状態に遷移する。このときブラウザが開いているURLは、画像そのもののURLであるので、テキスト層にそのままコピーすることができる。

素朴ディジタル画像インフラストラクチャーは画像一覧の画面を持たない。これは、画像を紹介する機能を、他のウェブアプリケーションのテキスト層に依存しているためである。素朴ディジタル画像インフラストラクチャーで画像を表示するには、画像のURLに直接アクセスする必要がある。

また、素朴ディジタル画像インフラストラクチャーは、ソーシャルグラフ層およびテキスト層を持つウェブアプリケーションからの紹介で利用されるため、UIの視覚的な魅力を追求していない。「素朴ディジタル画像インフラストラクチャー」という名前も、意図的に冗長かつ時代遅れに聞こえるように選定されている。

素朴ディジタル画像インフラストラクチャーのソースコードは非常に単純で、以下の3個のファイルで構成されている。

  • index.html (8行)
  • mdii.js (43行)
  • mdii-post.cgi (15行)

これだけ単純なので、動作環境にあわせて改変することも容易である。これまでに SiteMixの無料プランさくらのレンタルサーバーのライトプラン でデプロイされた。

素朴ディジタル画像インフラストラクチャーは、もともとは、2017年にもなって画像アップローダーなどというコモディティを自分で開発したくない、という動機から開発された。そのため、仕様はよく言えば軽量、悪く言えば粗雑である。セキュリティもあまり上等とは言えない。例えば、DoS攻撃に対する耐性がまったく考慮されていないことは特筆に値する。

水平分業型ミニブログにおいては、マルチメディア層に技術的または法的な問題が発生した場合には、マルチメディア層を夜逃げさせて、ソーシャルグラフ層とテキスト層のみを防衛するという運用を想定している。ソーシャルグラフ層とテキスト層は、マルチメディア層が夜逃げする場合にそなえて、あらかじめ複数のウェブサイトをマルチメディア層として利用できるようにしておくなどのリスク管理が必要である。

また、素朴ディジタル画像インフラストラクチャーは、分業型ミニブログであるYayaka19の他に、不買運動ウェブ という情報共有サイトからも利用されている。画像アップローダーというコモディティを自分で開発したくないという動機からすれば、このように複数の異質なウェブアプリケーションから利用されることは、自然な使用法である。

議論

分散型ミニブログの水平分業は、さまざまな信念や政治的主張を持つ個人または団体にとって、計算機資源および人的資源を提供する動機になり得る。例えば、言論の自由を重視する団体はソーシャルグラフ層とテキスト層を、ポルノや二次創作を擁護する団体はマルチメディア層を運営する、といった応用が期待される。

歴史的には、2ちゃんねるが画像アップローダーをともなって運用されていた気がする。画像アップローダーはしょっちゅう夜逃げしてた。

広告

投稿者: Hakaba Hitoyo

墓場一夜

“分散型ミニブログの水平分業—素朴ディジタル画像インフラストラクチャーの設計と応用” への 1 件のフィードバック

コメントは受け付けていません。