Habzillaをテキトーにまとめる
経緯
2018/08/16現在、Hubzillaに関する日本語ドキュメントは存在せず、英語ドキュメントを読むしかないのが現状です。
自分自身の英語力と記憶力にも限りがあるため、備忘録的に記録し、そして同時に広く公開して役立てて頂こうと考えました。
ちなみにこのwrite.asというブログはFederationに対応していてMastodonなどからフォローしたり、連合に表示させたりすることが可能なので、いわゆる分散型SNSの何かを書くのに向いているかも知れません。
この記事の注意点
Hubzillaの公式ドキュメントはギークのそれにありがちな難解かつ独自の世界観に溢れた設定集であり、おおよその一般人へ理解して貰おうという気が更々ないドキュメントです。
そのためこの記事では公式ドキュメントを翻訳する記事にはせず、当方が読んで考え理解したことを記載します。
Hubzillaへ対する主観的な解釈に間違いが生じている可能性がありますので鵜呑みにはしないで下さい。
参考ドキュメント
Hubzillaとは
公式ドキュメントを斜め読みするとZotプロトコルを用いた分散型の統合的なWebアプリケーションとサービスを提供する拡張可能なオープンソースフレームワークです。
一部のWebサイトでは「HubzillaはFacebook的なSNS」などと表現されていますが、それは誤りです。
SNSとしての機能はHubzillaに取ってみると一機能でしかなく、そのためHubzillaを端的に説明しようとするとZotプロトコルを用いた分散型の統合的なWebアプリケーションとサービスを提供する拡張可能なオープンソースフレームワークという表現の他に言いようがありません。
この難解な説明をより解り易く説明しようとする結果「HubzillaはFacebook的なSNS」という表現が生まれたのでしょう。しかしこれは誤りです。
用語
Zot
Hubzillaの分散型通信と機能サービスを提供するJSONベースのプロトコル。
発音はおそらく「ゾット」です……たぶん。
Hub(ハブ)
Zotプロトコルを用いた分散型の統合的なWebアプリケーションとサービスを提供する拡張可能なオープンソースフレームワークを運用するためのサーバです。
端的に言えばHub = Hubzillaサーバだと認識して間違いないはずです。
Grid(グリッド)
Hub同士が接続するZotプロトコルを用いた分散ネットワークのこと。
Gridでなければ利用が出来ないHubzillaの機能も存在します。
Channel(チャンネル)
多くのWebサービスのAccountと酷似しており、Channel = Accountと認識しても大幅に間違いでは無いですが、Hubzilla公式ドキュメントに従うとHubzillaには”一般的に言うAccount”という概念が存在せず、存在するのは個人を識別するIdentityということになっています。
Account(アカウント)
HubzillaのAccountとは特定の独立したHubへアクセスするための認証情報を指し、個人を識別するための情報ではありません。
個人を識別するための情報はChannelへ内包されたIdentityです。
Identity(アイデンティティ)
Hubzilla公式ドキュメントに明記された解説はありませんが、Hubzillaの言うIdentityとはDigital identity(デジタルアイデンティティ)のことだと思われます。
Hubzillaでは個人を識別するためにIdentityが利用され、それらの情報をまとめたものをIdentityIDと呼びます。
IdentityIDは一般的なWebサービスの個人を識別するためのAccountへ相当します。
Nomadic identity(ノマディックアイデンティティ)
複数のHubで確立されるGridで容易にChannelを認証し、必要があれば他のHubへChannelを移行することが出来る機能全般のこと。
Identityを内包するChannelは単一のHubへ強固に結び付けられてはおらず、Accountが特定のサーバに無ければ利用できない典型的なWebサービスとは違います。
HubzillaのChannelは遊牧民のようにGridを容易に行き来できます。
Clone(クローン)
他のHubへChannelを移行および同期すること。
つまり、Hub Aで作成されたChannelをHub Bへ完全に複製し、複製後のHub Aへの投稿はHub Bに同期され、Hub Bの投稿はHub Aへ同期されます。
更に、もし移行元Hub Aが何らかの理由によって停止しアクセス不能状態へ陥っても、移行先Hub Bは運用可能で、Hub Aの休眠停止時にHub Bで投稿された情報はキューに登録され、Hub Aが復帰すると自動的に同期されます。
CloneはSub Account作成ではない
CloneされたChannelが内包するIdentityは同一のあり、全く別の登録情報を生成するSub Accountとは違います。
Sub Accountに近い概念はChannel(と内包されたIdentity)情報を複数作ることです。
ここまでの理解
つまりHubzillaではサーバをハブ、アカウントをチャンネルと呼び、チャンネルには個人を識別するアイデンティティ情報が内包され、Zotプロトコルで作られたグリッド分散ネットワーク内にある他のハブへチャンネルのクローンを作れば自動同期のバックアップが取れるというわけです。
更にクローンはいわゆる複アカでないことに注意が必要となります。
機能
Hubzillaには多くの機能サービスが提供され、その全体像を把握するのは非常に困難です。
Hubzilla標準機能サービスに加え、Hubに寄っては独自の拡張機能サービスが存在し、独自の拡張機能サービスはたいていの場合ほかのHubと互換性を持ちません。
以下にHubzillaが提供するいくつかの機能の解説を記述します。
ソーシャルネットワーキング
Hubzillaが提供する多くの機能の中で最も解り易い機能。
Hubzillaのソーシャルネットワーキング機能はFacebookに酷似しており、表面的には容易に理解が可能です。
Channelの作成
Channelは前述の通り、一般的なWebサービスのAccountと酷似しています。
Channelの閲覧制限
Channelは多くのソーシャルネットワーキングサービスのAccountと同様に閲覧制限を設けることが可能です。
設定できる閲覧制限は以下の通り。
- 本人のみ
- 特に許可されている人物のみ
- アドレス帳に登録された人物のみ
- このWebサイトのみ(同一Hub内の人物のみ)
- Gridネットワーク上の人物のみ
- 誰でも閲覧可能(Gridネットワーク外からのアクセス可)
- インターネット上の誰でも
プロフィールの作成
Hubzillaでは一般的なソーシャルネットワーキングサービスと同様にプロフィールを公開することが可能です。
プロフィールにはプロファイルが設定可能で、デフォルトのプロファイルは一般公開プロファイルです。
プロファイルは自由にいくつも追加することが可能で、例えば友人向けのプロファイルを作成し、プロフィール内の趣味情報を一般公開プロフィールでは映画鑑賞とし、友人向けプロフィールではアニメ鑑賞とすることも可能です。
プロフィールプロファイルの存在意義はChannel(とIdentity)の濫造を防ぐことにあります。
一般的なソーシャルネットワーキングサービスでは、例えば職場用Account、友人用Account、趣味用AccountというようにAccountの濫造がされ易いですが、プロフィールプロファイルは閲覧するユーザ属性に合わせたプロフィールの変更を可能としており、Channel(とIdentity)の濫造を防ぐことが可能です。
既存のプロフィールプロファイルの一部を再利用したい場合、プロフィールプロファイルはCloneすることも出来ます。
友人・知人を追加
Hubzillaでは多くのソーシャルネットワーキングサービスと同様に特定のユーザを登録し、管理する機能が存在します。
Hubzillaで行なわれる特定のユーザの登録・管理は一般的なソーシャルネットワーキングサービスとは違いAccountを登録・管理するのではなくIdentityIDを登録・管理します。
つまり、登録・管理するIdentityIDが同一のものであれば、特定のユーザがHub Aで活動を行なっていてもHub Bで活動を行なっていても、IdentityIDへ指向したユーザの登録・管理はHub AとHub Bを区別しません。
これは例えばHub Aで許可された閲覧権限をHub BにCloneさえしていれば特別な設定なく同一の閲覧権限をHub Bで行使出来るということです。
投稿の閲覧権限
Hubzillaでは投稿毎に閲覧権限を設定することが出来ます。
設定できる閲覧制限は以下の通り。
連合 連合が組まれているネットワーク全体で閲覧可。
ほぼ公的 Gridネットワーク上で閲覧可。
制限付き 友人(もしくは設定された人物)のみが閲覧可。
Forum(フォーラム)
HubzillaではForumを設置することが可能です。
ForumはChannelとして設置され、それはForum Channelと呼ばれます。
Forumには権限を設定することが出来ます。
設定できる閲覧制限は以下の通り。
- ほぼ公的 Gridネットワーク上で閲覧可。
投稿のすべては一般に公開し、Forum作成者以外のユーザが参加申請を行なうと自動的にメンバーとなれる典型的なForumです。
- 制限付き
Gridネットワーク上で閲覧可。
投稿のすべては一般に公開し、メンバーになるにはForum作成者以外のユーザが参加申請を行いForum作成者の承認によってメンバーになれます。
- プライベート
基本的に投稿のすべては非公開であり、メンバーになるにはForum作成者による招待が必要です。
Forum作成者のみが必要に応じて一般に公開する投稿を作成でき、メンバーは一般に公開する投稿を作成できません。