情報発信に便利で軽量なActivityPubサーバー「Takahē」[前編] ~特徴(マルチドメインサポート)紹介と⁠クライアントアプリElkからの利用

Takahēとは?

短文を投稿できるTwitterに似たマイクロブログサービス、MastodonやMisskeyなどを使ったことはあるでしょうか? 今回取り上げるTakahē(タカヘー)は、同様のマイクロブログサービスを提供する、小規模から中規模向けのActivityPub/Fediverseサーバーです。

Takahēは2022年11月に初めて公開された比較的新しいActivityPub/Fediverseサーバーで、オープンソースライセンスでGitHub上で公開されています。最新のバージョンは2023年6月末に公開されたバージョン0.9で、現在は、安定性や他のFediverseサーバーとの互換性の改善やマイグレーション機能の実装などを目標に、バージョン1.0に向けて開発が進められています。なお、TakahēのライセンスはBSD-3-Clauseライセンスです。分散SNSのソフトウェアはAGPLライセンスが多い印象があり、この点でも興味深いかもしれません。

図1 Takahēの公式サイト「jointakahe.org
図1

マイクロブログサービスに関するActivityPubの基本的な機能はすでに一通り実装されているため、MastodonやMisskeyなど他のマイクロブログサービスのアカウントからも、フォローしたり、メッセージのやり取りができます。また、Mastodonと互換性のあるREST APIも提供しているため、さまざまなMastodon互換のクライアントアプリケーションから利用できる作りになっています。

Takahēの開発者は、Andrew Godwin(アンドリュー・ゴッドウィン)です。AndrewはPythonで最も人気のあるウェブフレームワークの1つであるDjangoのコアデベロッパーも務めており、TakahēサーバーもDjangoを使用して実装されています[1]

Takahēは、サーバーとクライアントが一体で提供されているMastodonやMisskeyとは異なり、基本的にはアカウントをホストするサーバー機能だけを提供します。次のスクリーンショットのような簡易的に投稿を表示する読み取り専用のフロントエンドのUIはありますが、各ユーザーはTakahēのウェブサイト上ではアカウントの作成やプロファイルの設定だけを行います[2]

図2 Takahēサーバー上のプロジェクト公式アカウント
図2

その後は、Takahēサーバーに自分の好きなクライアントアプリケーションから接続して、他のアカウントのフォローや投稿を行います。本記事の後半では、実際にElk(エルク)と呼ばれるクライアントアプリケーションからTakahēのアカウントを利用する方法を紹介します。

図3 Fediverseのネットワークに参加するTakahēを表した図。Takahēのユーザーは、Takahēサーバー上に1つ以上のアカウントを作り、Elkなどのクライアントアプリを使って各アカウントにサインインしてマイクロブログサービスを利用する。TakahēサーバーはActivityPubプロトコルを使用して、Fediverseを形成する他のサーバーとデータのやり取りを行うことで互いに交流ができる
図3

なお、Takahēという名前は、ニュージーランドの絶滅危惧種Takahēに由来して名付けられました。紺と緑の美しい色の羽根と特徴的な赤いくちばしを持つ飛べない鳥です。以前は絶滅してしまったと考えられていましたが、1948年に再発見されてから保全活動が続けられており、2021年時点で440羽にまで回復しています[3]。Takahēは小規模の群れで暮らし、仲間内での絆が特に強い鳥だと言われているため、Takahēサーバーの特徴や目指す方向性にもぴったりの名前だと言えるかもしれません。

ノート:Fediverseエコシステムの広がり

Takahēは、MastodonやMisskeyなどと同様のマイクロブログサービスを提供します。しかし、ActivityPubを使用したFediverseサーバーにはいろいろな実装があり、マイクロブログサービス以外にも、写真共有サービスのPixelfed、ソーシャルニュースサービスのLemmy、読書記録や書評の共有サービスBookWyrmなど、多数のサービスが存在します。

これらのサーバーはActivityPubプロトコルをベースに共通のデータをやり取りできるため、異なる種類のサービスを提供するサーバー間であっても、フォローやコメントのやり取りにより交流できるようになっています[4]。こうしたウェブの基本思想に近い分散型のオープンな性質は、異なるサービスのユーザーとは直接やり取りができない多くのSNSサービスとは対照的です。

MastodonやFediverseエコシステムについては、過去記事はじめる Fediverse/Mastodon 2022にとても詳しくまとまっています。

Takahēがサポートする機能

現在Takahēでは、マイクロブログサービスとして、以下のような機能をサポートしています[5]

  • 投稿の編集
  • 画像のアップロードと説明文
  • 返信、ブースト、お気に入り
  • フォロー、ブロック、ミュート、特定ユーザーからのブーストの非表示
  • リプライ、お気に入り、フォローの通知
  • フォローとフォロー解除
  • 画像、メタデータ、リンク付きのプロフィールページ
  • ユーザーの公開投稿のRSSフィード
  • カスタム絵文字のサポート
  • URLによるユーザー、ハッシュタグ、投稿の検索
  • マルチドメインのサポート
  • ユーザーごとのマルチアカウントのサポート
  • 簡易的なテキスト検索
  • モデレーションのための報告とキューのシステム
  • サーバー上のアナウンス
  • サーバーのブロック
  • サインアップのユーザー数制限
  • メールでのパスワードリセット

今後の開発により、他のサーバーからのマイグレーション機能や小規模のサーバーでも多くの投稿を見つけやすくするリレー機能も実装される見込みです。バージョン1.0以降では、Takahēのアカウントを起点に、マイクロブログにとどまらないサービスを提供する構想もあります。たとえば、拡張されたプロフィール機能、長文のブログを執筆したりニュースレターをメール配信する機能、投稿のコレクションを作成する機能、学んだ知識の共有サービスなど、これらを組み合わせて自分だけの「ホームページ」を作れるようにする幅広い機能です。それ以外にも、プラグインシステムの導入により、マイクロブログサービス以外の動画や書評などの大きく異なるFediverseサービスのサポートを追加したり、AT Protocolの対応によりBlueskyと接続するアイデアなどもあります。詳しくは、Andrewが4月に書いたブログ記事A Takahē refactor, as a treatをご覧ください。

Takahē最大の特徴: マルチドメイン⁠マルチアカウントのサポート

Takahēがサポートする機能の中で最大の特徴は、1つのサーバーで複数のドメインをサポートできる「マルチドメイン機能」です。マルチドメインサポートは、現時点では類似のサーバーでは対応していません[6]

MastodonやMisskeyなどの既存のサーバーでは、基本的には1つのサーバーでは1つのドメインだけしか設定できない設計になっているため、各ドメインごとに1つのサーバーを実行する必要があります。そのため、たとえ1つのドメインの利用者が数人しかいなかったとしても、それぞれのドメインごとにサーバーアプリケーションを実行する必要があります。

また、さまざまなFediverseサーバーでは、一部の著名なサーバーに多数のユーザーが集中してしまうという問題が指摘されてきました。ユーザーの集中は、サーバーの速度低下や必要なサーバーリソースの増加、それに伴う管理者の金銭的な負担の増大をもたらします。

Takahēのマルチドメインのサポートは、こうした負担を部分的に軽減するオプションの1つとなる可能性があります。マルチドメインの機能により、Takahēでは、複数のドメインを1つのTakahēサーバーに登録して共同で利用できるようになります。これにより、複数のドメインごとにそれぞれ個別にサーバー管理するのではなく、サーバーを共有してリソースを効率的に利用することで、少数の管理者で多くのドメインとアカウントをホストできるようになります。

また、TakahēはMastodonなどに比べてソフトウェアの構成もシンプルなので、サーバーのセットアップや管理もより簡単になっており、管理者の負担も比較的軽くなります。

図4 マルチドメイン非対応の場合、各ドメインごとにサーバーが必要になる(図ではドメインが異なる3つのアカウントに対して、3つのMastodonサーバーが並んでいる)。マルチドメイン対応の場合、1サーバーだけで様々なドメインが利用できる(図では同じ3つのアカウントに対して、1つのTakahēサーバーが置かれている)
図4

ノート:仮想サーバーの機能を提供するTakahē

もしNginxやApacheなどのウェブサーバーを利用したことがあれば、仮想サーバーの機能を利用したことがあるかもしれません。実際には1台のサーバー上で1つのサーバーアプリケーションを実行しながら、設定により複数の仮想的なウェブサーバーを実行する機能です。これにより、1つのウェブサーバーだけで複数のドメインを使用して複数のウェブサイトが配信できるようになり、リソースが効率的に利用できます。同様に、Takahēのマルチドメインサポートは、複数の「仮想ActivityPub/Fediverseサーバー」を提供する機能として理解できます。

こうした特徴により、多くのユーザーが少数の大規模なサーバーに集中するのではなく、多数の小規模なコミュニティに場を提供することが可能になります。これはActivityPubで非中央集権的な分散ネットワークを作るというFediverseの思想にもよく当てはまります。小規模に分散することで、コミュニティ全体への目がより行き届くようになるため、サーバーのリソースの負担だけでなく、現時点ではソフトウェアだけで完全に解決するのが難しいコンテンツモデレーションの負担も、個別のコミュニティに分散する助けになるかもしれません。

マルチドメインのサポートに加えて、Takahēではマルチアカウントもサポートしています。Takahēのユーザーは、サーバー上にログイン後、そのサーバーが対応しているドメインとユーザー名を選ぶことで、2つ以上のアカウントを作成して使い分けられます。

マルチドメイン⁠マルチアカウントでできること

では、マルチドメインやマルチアカウントをサポートすることで、どのようなことが可能になるでしょうか? アイデア次第でさまざまな自由な使い方ができると思います。

個人ユーザーの場合には、Takahēサーバーに自分の個人ドメインを登録して、仕事や異なる趣味など用途ごとに複数のアカウントを作成し、フォロワーを別々に管理したり、投稿内容の種類ごとに別のアカウントを使い分けられます。

家族や友人のために、グループ用のドメインを作ってアカウントを代わりに作ってあげられるかもしれません。学校や企業の場合には、組織が所有するサブドメインを活用して、大小さまざまなグループごとにコミュニティが提供できるでしょう。たとえば、大学の学部や学科ごとに既存のサブドメインを利用して学生・教員間の交流に利用したり、大きな企業が子会社ごとにサブドメインを提供する用途が考えられます。複数のサイトを運営するウェブメディアであれば、各サイトごとに独立したドメインを登録し、それぞれのドメインの元で記事のカテゴリ別にアカウントを作成するという使い方も考えられます[7]

ここまで、関連するエコシステムに触れながらTakahēの機能を紹介してきましたが、Takahēの誕生自体が去年から続くソーシャルネットワークサービスの大きな変化から切り離せるものではありません。この記事末尾にはFediverseの課題と将来のソーシャルネットワークの可能性と題するコラムを掲載しました。のちほど、こちらもご覧いただき、Fediverseの将来について考えてみてください。

Takahē の使い方

さて、ここからはTakahēのアカウントの実際の使い方を紹介します。はじめに、Takahēサーバー上でユーザー登録をしてアカウントを作成し、基本的な設定をします。その後、Mastodon互換のクライアントアプリElk(エルク)からTakahēに接続して、MastodonやMisskeyなど、他のActivityPub/Fediverseサーバーのアカウントとやり取りしてみます。

サーバー上でのユーザー登録と設定方法

この記事の読者のために、お試し用のサーバーを作成しました。https://takahe-gihyo-trial.shuuji3.xyz からアクセスできるので、是非試してみてください。このサーバーは継続的な利用は想定していないため、定期的にデータがリセットされます。ご了承ください。

注意: Takahē 公式のフラグシップサーバーはhttps://takahe.social/で公開されていて、こちらでは永続的な新規アカウントの登録を受け付けています。ただし、フラグシップサーバーには新規アカウント登録者数に上限があるため、タイミングによってはアカウントが作成できない可能性があります。

図5 Takahēサーバーのフロントページ
図5

Takahēのウェブサイトを開いたら、ページ上部のユーザー登録ボタン(人の形のアイコンのボタン)をクリックしてください。

図6 ユーザー登録ページ
図6

ユーザー登録にはメールアドレスの入力が必要です。⁠Create」⁠作成)ボタンをクリックすると、メールアドレスに次のようなユーザー登録確認メールが送信されます。

図7 ユーザー登録確認メール
図7

「Confirm New Account」⁠新規アカウントの確認)ボタンをクリックすると、パスワードの入力画面に移動するので、安全なパスワードを入力します。

図8 アカウント一覧/作成ページ。画面下にはTakahēでおすすめされているMastodon互換クライアントアプリケーションの一覧がある。この後紹介するElk(エルク)の他にも、Android向けのTusky(無料)、iOS向けのIvory(有料)、デスクトップ・ウェブ対応のSengi(無料)、Android用のFedilab(有料)、iOS用Toot!(有料)などがある。これ以外にも、Mastodon互換のAPIをサポートするさまざまなクライアントアプリケーションが利用できる
図8

メールアドレスでユーザー登録が完了すると、次のようなIdentity(アイデンティティ/アカウント)作成ページが表示されます。Takahēではマルチアカウントが作成できるため、ユーザーはここで1つ以上のアカウントを作成します。⁠Create a new identity」⁠新しいアイデンティティを作成)ボタンをクリックして、最初のアカウントを作成しましょう。

図9 新規アカウント作成ページ
図9

作成するTakahēアカウントの情報を入力します。⁠Username」⁠ユーザー名)には、英数字、_-のみが使用できます。⁠Domain」⁠ドメイン名)は、Takahēサーバーで利用できるものの中から選びます(お試し用サーバーでは1つのみ⁠⁠。⁠Name」⁠名前)はプロファイルと投稿に表示される名前です。Discoverable(発見可能)は、フロントページとサーバーのユーザー一覧などに表示されるかどうかを選択します。⁠Create」⁠作成)ボタンをクリックすればアカウントが利用できるようになります。

図10 登録したアカウントがアカウント一覧ページに表示された
図10

作成したアカウントの「Setting」⁠設定)ボタンからは、アカウントの基本情報やアイコンなどが設定できます。

図11 アカウント詳細設定ページ
図11

メニューからは、投稿の表示設定、インポートとエクスポート、連携されたアプリなどが設定・確認できます。

クライアントアプリElk

それでは、作成したTakahēのアカウントをクライアントから利用してみましょう。Takahēは他のFediverseサーバーと通信するためのActivityPubだけでなく、Mastodon互換のREST APIも提供しています。これにより、既存のさまざまなMastodon用クライアントアプリケーションから利用できるようになっています。

先に述べていたように今回は、ウェブアプリケーションのElk(エルク)から利用する方法を紹介します。

図12 Elk上で表示したElk公式アカウント(@[email protected])。デザインはとても親しみやすい
図12

Elkは、Vue.jsベースのウェブフレームワークNuxtを利用して開発されています。開発を率いているのは、Nuxtを開発しているNuxtLabsと、StackBlitzのコアデベロッパーからなるチームです。Elk内部では、Ryō Igarashi(@neet)さんが開発するMastodon APIライブラリmasto.jsや、kazponさん(@kazupon)によるNuxtの国際化モジュールnuxt-modules/i18nも活用されています。筆者も、ElkのUIの日本語翻訳や機能追加・バグ修正でコントリビューションしています。

ElkはPWA(Progressive Web Apps、プログレッシブウェブアプリ)としてもインストールできるため、ネイティブアプリケーションのように独立したアプリ/ウィンドウで利用できるのも便利です。

ノート:新しい世代のMastodonクライアントの誕生

Mastodonの公式モバイルアプリを含めて、以前からMastodon互換のクライアントアプリケーションは存在していました。しかし、昨年末から今年にかけて、新しいクライアントアプリケーションがいくつも誕生しています。ElkやIvoryもそうしたアプリケーションの1つです。

Ivoryは、Tapbotsから公開された人気のあるiOS/iPadOS/macOS用アプリです。Tapbotsは優れたUI/UXで有名なTwitter用クライアントTweetbotを公開していたので、以前Twitterで利用していた読者もいるかもしれません。Twitter社により事前通告や明確な説明なくサードパーティアプリが禁止されたことにより、10年以上継続していたアプリの開発停止を余儀なくされてしまいました

Takahēアカウントでサインイン

Elkの更新や修正をいち早く試せるカナリー版は、main.elk.zoneで公開されています(通常の安定版もelk.zoneで同様に公開されていますが、現時点のバージョン0.10.1にはTakahēなど一部のクライアントに認証の問題があるため、カナリー版をお試しください)。初めてアプリを開くとウェルカムダイアログが表示されるので、⁠Enter App」ボタンをクリックし、まずはUIを日本語に変更しましょう。

画面左側のナビゲーションバーから歯車アイコンの「Setting」⁠設定)メニューを選択し、⁠Language」⁠言語)メニューを選んだら、⁠Display Language」⁠表示言語)のセレクターから「日本語」を選択します。モバイルの場合には、右下の3点ドットボタンをタップするとナビゲーションパネルが表示できます。

図13 言語の設定ページ
図13

次に、Takahēサーバーに接続します。⁠サインイン」ボタンをクリックして、お試し用サーバーのドメイン名takahe-gihyo-trial.shuuji3.xyz(または公式フラグシップサーバーの場合はtakahe.socialを入力して「サインイン」ボタンを選択します[8]

図14 Elkのサインインダイアログ
図14

Takahēアカウントの使用許可を求めるページに移動するので、⁠Allow」⁠許可)を選択します。

図15 Takahēの認証ページ
図15

これで認証が完了し、Takahēアカウントを使ってELkが使えるようになりました。左下(モバイルの場合は右上)にサインインしたアカウントが表示されています。Elkは複数アカウントに対応しているため、複数のTakahēアカウントやMastodonアカウントを切り替えて使い分けることもできます。

図16 ログイン後の画面とアカウントリスト
図16

Elkを利用した投稿とフォロー

投稿するには、ホームページ上部のテキストエリアを使うか、またはメニューから「投稿」ボタンを選択して投稿ページに移動します。また、投稿のショートカットキーcを押すと、投稿ダイアログが表示できます。Elk独自の機能として、投稿内のMarkdownテキストのレンダリング機能があります[8]

図17 投稿ダイアログ
図17

「投稿」ボタンを押せば投稿完了です。

図18 投稿ページ
図18

TakahēサーバーはMastodonサーバーとActivityPubプロトコルでフォローや投稿の情報を相互にやり取りできるため、MastodonやMisskeyのアカウントもフォローできます。試しに、Mastodon公式アカウントをフォローしてみましょう。虫めがねアイコンの「検索」メニューを選択し、アカウント名 @Mastodon@mastodon.social を入力します。

図19 Mastodon公式アカウントの検索結果
図19

検索結果に表示されたアカウントを選択すると、プロフィールページに移動します。⁠フォロー」ボタンをクリックすれば、フォローが完了します。フォロー後にアカウントが新しい投稿をすると、アカウントのサーバーからTakahēサーバーに投稿が配信され、Elkのホームライムラインに投稿が表示されます[10]

図20 Takahēアカウントから異なるサーバーのMastodonアカウントもフォローできた
図20

アカウントのフォローはごく普通にできたように見えますが、実はここではとても興味深いことが起きています。独立したTakahēサーバー上のアカウントから、異なるドメインのMastodonサーバー上のアカウントがフォローできています。喩えるなら、Twitterのサードパーティ製アプリ上でInstagramのアカウントを検索して、そのアカウントをそのままフォローできてしまったようなものです。これが可能なのは、異なる種類のFediverseサーバー同士が、ActivityPubという共通のプロトコルを使って共通の情報をやり取りしているためです。

Mastodon以外の互換性のあるサーバーからもTakahēアカウントをフォロー・閲覧できます。次のスクリーンショットは、misskey.io上のアカウントからTakahēアカウントを表示したものです。

図21 misskey.ioのアカウントからTakahēサーバーのアカウントもフォローできる
図21

まとめ

この前編の記事では、ActivityPub/FediverseサーバTakahēの特徴と利用方法を紹介しました。

Takahēプロジェクトとフラグシップサーバーtakahe.socialの最新情報は、プロジェクトの公式アカウントtakahe@jointakahe.orgとtakahe.socialの管理者アカウントadmin@takahe.socialでフォローできます[11]。これらはTakahēサーバー上のアカウントですが、もちろん、MastodonなどのActivityPubに対応している他のFediverseアカウントからもフォローできます。

Takahēプロジェクトでは、Patreonでサポーターを募集しています。特に、⁠Featured Supporter」「Sponsor」メンバーになると、フラグシップサーバーtakahe.social上でカスタムドメインを利用できるようになる特典が得られます。また、プロジェクトでは鳥のTakahēの保全活動を支援するためにNew Zealand Nature Fund(ニュージーランド自然基金)への寄付も行っています。

後編の記事では、Takahēのより技術的な説明をする予定です。Takahēサーバーの基本的なアーキテクチャ、特徴的なコンポーネントや利用されているライブラリについて紹介し、コンテナを利用して実際にTakahēサーバー実行してローカルマシンで試す方法を説明します。

この記事が、インターネット上で安心できる場所を見つける助けになれば嬉しいです。

おすすめ記事

記事・ニュース一覧