Ekasiliconのゴミ捨て場

ゴミがあります。そこに。

大学デビュー(たぶん)のみなさん! Fediverseに本拠を置きませんか

初めましての方は初めまして。Ekasiliconと申します。さて私は去る2026年4月19日に開催されたUNTIL.LT #0x0Aに参加させていただきました。

そこにおいて「大学デビュー(たぶん)のみなさん! Fediverseに本拠を置きませんか」というタイトルで5分間のLTをしました。この記事ではどのような話をしたのかをブログの記事という形にして記録していこうかと思います。

タイトル

じおるというところに所属しているEkasiliconと申します。今回は、1年生の方も多いでしょうから「大学デビュー(たぶん)のみなさん! Fediverseに本拠を置きませんか」というタイトルでLTをさせていただきます。

大学デビューにあたって、Fediverseに本拠を置かないかという話で、簡単に言えば勧誘です。

話す内容・そうじゃない内容

さて最初にこのLTで話すことを簡単に説明しておきます。このLTでは

  • 大学デビュー
  • とあるサービスの欠点
  • Fediverse
  • ActivityPub

について簡単に話します。反対にインターネットそのものやTwitter/X、Misskey/Mastodonそのもの…などについては適当にえーあいにでも聞いておいてください。あと私の黒歴史に関して勝手に調べてもらっても構わないですが、言及したら呪うので覚悟の準備をしておいてください。

大学デビュー

この4月になって大学に入った方は多数いらっしゃるかと思います。そうした方の中に「大学デビュー」をすることを考えているかもしれません。

リリースされたばかりのOpus 4.7に対して聞いてみると、急に変な髪にしたり服がカジュアルになったり、発言や振る舞いが社交的になったりすることを指すとのことです。明るく華やかにふるまおうとすることを指しているらしいので、実のところ大して明るく華やかになってはいないのですが、世の若者はその程度のことということにしておきましょう。

このために簡単にできることとして、SNSで新しいアカウントを建立することだと思います。しかしそのSNSは†X†で本当にいいのでしょうか?

本当に†𝕏†でいいんですか?

確かにXは多くの利点を備えてはいますが、以下のような欠点が考えられます。

  • ドメインが短い、以外何も嬉しくないドメイン「x.com」
    • 「X」とだけ書いていた頃の方がよっぽどセンスがあった
  • 公式が用意したクライアントしか使えない
  • 自分のデータを自分で持つことが出来ない
  • 意味分からん理由でBANされる / †イーロン春のBANまつり†
  • 自己証明がめっちゃ大変
    • 課金を行って身分証明書をアップロードする必要がある
  • 「ビットコインの技術を使用」のXChatはどこがE2EEなんだ???

このような問題があるXに自分の新しいペルソナを預けることは不安に思うのではないでしょうか。私はそう思います。

そんなあなたにおすすめなのがFediverseです。Fediverseは基本的にはActivityPubというプロトコルで相互に通信するサービス群です。

大学のメールだろうがGmailだろうが自分のサーバーだろうがメールのやり取りができるのに似たイメージを持っていただければ嬉しいです。Fediverseは1つのサーバーで1人の管理者が動かしているものではなく、多様なソフトウェアを用いて複数の管理者が多数のサーバーで動作しているものが共通のプロトコルに従って動いている、というものになります。

独裁者がいっぱいいる世界

独裁者がいっぱいいる世界

ここで重要なのは、独裁者たるサーバー管理者「鯖缶」は、自分のサーバーの内部に関しては絶対専制を敷くことが可能で独自のルールを制定することも可能ですが、ActivityPubでつながっている他のサーバーにおいてはその権力を及ぼすことは叶いません。

また、ユーザーはその独裁者を、サーバーを選ぶという形でクーデターを起こすことなく選ぶことが出来ます。独裁者を選ぶことが出来るなんてトロピコみたいですね。

さらに言えば、自分でサーバーを運営すればあなたがその「独裁者」になることが可能です。こっちの方がもっとトロピコっぽいですね*1

リモートフォロー

SNSと言えば「フォロー」という概念があります。しかしながら、Fediverseにおいては「リモートフォロー」という形で、他のサーバーにいる人もフォローすることが可能となっています。

技術的にはフォローされた人がいるサーバーに「フォローしたいと言ってきたユーザーがいるサーバーのリスト」が存在しており、投稿等が行われる度に当該のサーバーへ投稿を送信しているというものになります。

Fediverseには特務機関NERVのようにリモートフォローしか受け付けていないサーバーもあります。ちょっと複雑ではありますが、Fediverseの面白いところですので積極的にやってみることをおすすめします。

Fediverseに本拠を置きませんか

というわけで独裁者を選んだり自分が独裁者になったりすることもできるFediverseの簡単な紹介でした。

ちなみにFediverse上のサーバーのAPI等の利用可否は独裁者が決めているので、何か面白いbotなどを作りたいと思った場合でもFediverseはおすすめです。例えばしゅうまい君はMisskey.ioでバカンスを楽しんでいます。

そして最後になりますが、リモートフォローをされれば自分の投稿はFediverse上の様々なサーバーにばらまかれることとなります。どうせ大学デビューを考えているような人はその中身まで変わることは出来ませんので、黒歴史を生産し続けるでしょう。皆さんもFediverseに本拠を置いて、黒歴史をインターネッツの海にばらまき続けませんか

*1:現地でこれをやった時、びっくりするほどウケなかったので本当にびっくりしました。びっくりしたので。トロピコ7がそのうち出るのでみんなやってほしい

Misskeyでbotを暴走させてしまったときの後始末

私はMisskey(≠ Misskey.io )で半分身内のサーバーを運営しており、そこでbotを実行させています。botといってもそこまで大きなものではなく(私がオリジナルを作ったわけではないのですが)、特定のRSSを定期的に取得し、新着情報を配信するようなものです。

しかしながら、2月3日から4日にかけてこの botを暴走させてしまい、少なくとも2時間で700以上の公開投稿を行ってしまいました 。ここではその顛末と後始末に関して簡単に書いていこうかと思います。

暴走を止める

3日午後、botが突如大量の投稿を行い始めました。その数はわずか10秒余りの間に400弱。当然ながらフォロワーの方のタイムラインを一瞬で埋め尽くしてしまいました。恥ずかしながら実行している最中にその挙動に関して気づくことが出来ず、暴走が始まってから30分程度経ってから気づきました。

原因として思い当たるのはその数時間前、RSSの作成を行う際の処理に小さな変更を加えたことでした。それぞれのentryの時刻に関して、これまでは日付までの取得を行い、日本時間の9時にそろえていました。しかしながら、若干不便であるため、時刻を新しいentryの存在を認知した際の時刻にすることにしました。これ単体に関しては大きな問題はありませんでした(若干の問題はありましたが、そこまで大きくない)。しかし先述の問題が発生してしまったのです。このbot

  • 情報を取得し、RSSに加工する部分
  • 加工したRSSを用いてMisskeyに投稿する部分

が(歴史的な理由もあり)分離されています。それぞれが(意図的にずらされた)特定のタイミングに動作し、新着情報を適切に提供していました。反対に言えばRSSに加工する部分の変更が「下流」たるMisskeyに投稿する部分に影響を及ぼしてしまったのです。

詳細な理由は調査していないのであまり分かっていないのですが、Misskeyに投稿する部分においてフィードの解釈に誤りが生じ(タイムゾーンの設定を深く考えていなかったこともあって)、フィード中全ての投稿が新着の情報であると判断してしまったものだと思います。元となるRSSフィードは最新10件などではなく、取得可能な全データをフィード中に含めていましたので、それは膨大な数となってしまいました。

追記: 既にフィードとして配信済みのものに関しても認知した際の時刻にしたことで、既存のものであるとの認識に失敗したかも…という話もあります。

また、この調査を行っている最中にMisskeyに投稿する部分が再度動作してしまい、 意図せず問題を再来させ、被害を2倍にしてしまいました 。これは意思疎通の過程に問題があり、問題の発生を食い止めるためリバートを行った際、双方に誤認識が発生していた(リバートPRを立てた方はもう1人が実行するのだと思い、もう1人の方は立てた本人が自ら実行するものだと思っていた)ものだと思います。ある種の「障害対応」でしたので、適切に状況を認識することの大切さというのを認識する(?)必要を改めて感じました。

被害を2倍にしてからこれに気づき、即リバートが行われ、一旦は暴走が止まりました。暴走を止めるためにはアカウントを一旦ストップするなどの方法がありましたが、あまり本質的ではないと考えて行いませんでした。後から振り返ってみると、確かに本質的な問題解決手法ではないものの、問題を再来させることを防ぐためには有効な対策ではあるので、出来ることはやったほうがよかったのかなと思っています。

バッチファイルを用いて削除

暴走を止めたところで、既存のノートは残ってしまいます。Misskeyにおいて管理者権限を持っていたとしても既存のノートを削除するというのは普通のユーザーと大して変わらない労力が求められます。「いつからいつまでの、このユーザーの投稿をまとめて削除!」というような便利な機能はありません。アカウントごと削除することは出来ますが、このような事態においては不適切です。

というわけでえーあいに書かせたバッチファイルを用いて削除させます。先に当該botアカウントにログインし、 「アカウントの情報を見る」及び「ノートを作成・削除する」の権限を持ったアクセストークンを生成 しておきます。これを変数の形でバッチファイルに渡します。

ただえーあいはMisskeyのAPIに関して詳しいわけではないため、人によっては自分で書いた方がよっぽど早いと思います。特に v12以前とv13以降ではAPIの構造が大きく変わっている ことを認識出来ていない可能性が極めて高いですので、明示的に指示をしてあげる必要があるかと思います。ただ私は眠かったためえーあいに書いてもらいました。具体的には

  1. 初めに最新の投稿1つを取得し、それを削除させることを行わせ、
  2. 次に新着順で投稿を取得し、一覧表示させ、
  3. 特定の時間以降の投稿を取得できることも確認し、
  4. 特定の時間から特定の時間までの投稿を、順繰りに削除させる

といった、ステップを踏んだ形でえーあいにバッチファイルを書かせました。1~3の条件が満たせていないとどう考えても事故が発生してしまうので、丁寧に(?)確認を行いました。またMisskeyサイドでのリクエスト上限に関してもこれを把握し、実行させる必要があります。これは人間が調べた方が速いと思います。

また、 「レートリミット」を緩和したロールを設定し当該アカウントに付与 します。レートリミットは(なぜかよく分からないのですが)値を小さくすると緩和されます。このようにすると429エラーを発生させずに効率よく削除することが出来ます。

連合先に影響を及ぼす操作ではあるので、時間帯などを考慮しつつ慎重に行いました。無事削除が終わりましたので、トークンなどは無効化を行い、取り敢えずの後始末は終わりました。

まとめ

というわけでMisskeyでbotを誤って暴走させてしまったときの後始末に関する記事でした。きちんと動作を確認していないものを実戦投入するのが悪い…と言えばそれはそうなのですが、万が一暴走させてしまったときの後始末に関して大まかにまとめました。万が一暴走させてしまったときの後始末に困るかもしれない方の参考になればと思います。

イーロン・マスクに嫌われた(?)

タイトルの通りです。

私は2019年の7月からTwitterアカウント(@ekasilicon)を使っていたのですが、本日の13時ごろに凍結されてしまいました。そもそも基本的にFediverse(@eka@mi.tsukuba.dev)で活動している身なのであまり関係ないといえば関係は無いのですが、全く身に覚えのない「偽装行為」で凍結されるというのは気持ちのいいものではないです。

一応異議申し立て(とやたら難しいbot除け)をしたのですが、いつ復活するかどうか・そもそも復活するかどうかは分かりません。Twitter/Xでしか繋がりのない人もいるので念のためここに書いておきます。

追記: 7日午後辺りに凍結が解除されていました。解除された時って通知来ないんですね。知見

「すじ青のり天ぷらうどん」を食べた

個人的にセブンが好きなので、よく近所にある…といっても自転車に乗っていくくらいの近所にあるセブンイレブンに行きます。セブンのあの健康ぶった感じが嫌いでもなく、プライベートブランドであるセブンプレミアムはまず外さない、というのが主な理由です。

最近言われている通りセブンイレブンの諸々の価格が非常に上がっており、コンビニで何かを買うことが本当に贅沢になりつつある現代ですが、セブンプレミアムカップ麺はそこまで値上がりをしていないので、セブンイレブンのある種良心と言えるでしょう。というわけでセブンイレブンカップ麺を買うためによくカップ麺の棚へ赴くのですが、そこで新作の「すじ青のりの豊かな香り すじ青のり天ぷらうどん」なるものを見つけました。

プライベートブランドの常として製造元のブランド表示を小さくすることによって、安売りしても自社ブランドへのダメージを小さくし、プライベートブランド側としてはその分強気の商売ができるといった関係があるとされています。しかしながら、そういったものがあるはずにもかかわらず、マルちゃんのロゴがデカデカと書いてあったことに驚き、税込み298円という割引券をもらった時のカップヌードルBIGとそう変わらない値段であるのを尻目に買ってしまいました。

食べる

お湯を入れる前の「すじ青のり天ぷらうどん」。相対的に濡れていない。

せっかく買ってしまったので食べたいと思います。

作り方は一般的なカップ麺と同様で、440mLのお湯を入れ5分待つだけ。特徴のあるカップ麺にありがちな謎の小袋などは無く、大変調理しやすかったのはかなり良かったです。

お湯を入れた後の「すじ青のり天ぷらうどん」。相対的に濡れている。

上の写真はだいたい5分くらい経った後の「すじ青のり天ぷらうどん」です。個人的には食べている間にどうせ伸びるだろうという視点から、3分だったら2分20秒くらい、5分だったら4分くらいしたら食べ始めてしまうので、多分5分経っていません。5分経ったくらいで見た目はあんまり変わりませんね。

商品名においては海藻界の香りの王様らしいすじ青のりを前面に押し出しているのですが、「すじ青のり」が係っているのは「天ぷら」の部分だけのようで、残念ながらてんぷらの部分以外は良くも悪くも普通の関西風うどん、といった感じでした。

天ぷらをけち臭く分解して食べている姿

普通の青のりと比較して食べたわけではないのでよく分かりませんが、天ぷらは青のりの風味がいい感じに広まり(私が青のり、というか海苔が好きなこともあるのですが)、かなり良いものでした。そのため上の写真のようにちょびちょび天ぷらを分解しながらゆっくり食べ進めました。

まとめ

というわけである種の衝動買いをしてしまったので、その懺悔のために書き散らした記事でした。以上のように7プレミアムとしてはうーんという感じですが、それを差し引いてメーカー製のきちんとしたカップ麺、という気持ちで食べればまあコスパは悪くないのではないかと思いました。東洋水産が好きな方、もしくは青のりがお好きな方は試してみると良いかもしれません。

インターネットって、何? ~法律に聞いてみよう~

初めましての方は初めまして。Ekasiliconと申します。さて私は去る2025年2月1日に開催されたUNTIL.LT #0x06に参加させていただきました。

そこにおいて「インターネットって、何? ~法律に聞いてみよう~」というタイトルで5分間のLTをしました。この記事ではどのような話をしたのかをブログの記事という形にして記録していこうかと思います。

タイトル

インターネットって、何? ~法律に聞いてみよう~

あーすというところに所属しております、Ekasiliconと申します。さて今回私は「インターネットって、何? ~法律に聞いてみよう~」というタイトルでお話をさせていただこうかと思います。

今回は私たちが使っている「インターネット」とは何かについて、国権の最高機関たる国会*1を通過した法律から学んでいきたいと思います。

インターネットって、何?

私たちが普段使用しているインターネットとは何でしょうか。一言で説明しようとすると意外と詰まってしまう方も多いかと思います。これの原因としてWWWがインターネットと同義では全く無い、例えば電子メールはWWWの出現以前から存在していますが、明らかにインターネットの一部である、といったことが挙げられます。

インターネットとは何かについて比較的まともな事典であるニッポニカに聞いてみても、

一般には複数のコンピュータ・ネットワークをつなぐネットワークをいうが、実際にはTCP/IPという固有のプロトコル(通信規約)体系が通用するネットワークをさす。

コトバンクインターネット」より。

といった感じでめちゃくちゃお茶を濁されています。これだけじゃどういったネットワークなのか全然分かりません。

RFC 1122

これを解消するために、インターネットとは何であるかを示したRFC*2である「RFC 1122」を読んでみましょう。一般的に日本人は英語よりも日本語の方が読めるとされているので、ちょうどいいところにあったJPRSによる日本語訳を読んでみましょう。

1.1.2節「アーキテクチャーの設定」において、インターネットが想定している通信システム(≒インターネットとは何か)が示されています。箇条書きにすると、

  • インターネットはネットワークのネットワークである
  • ゲートウェイは接続の状態情報を維持しない
  • ルーティングの複雑さはゲートウェイに留めるべきである
  • システムは幅広いネットワークの変動に寛容でなければならない

というようなものだそうです。簡単に日本語にするとこんな感じでしょうか。

  • 複数のネットワークの集合体
  • 通信のエンドポイントと同一の場所で接続を管理
  • ルーティング部分とその上のコンテンツ部分を分離
  • 様々な意味でのネットワークの変化に対して寛容

これらを満たすネットワークが「The Internet」らしいです。よく分かりませんね。

法令におけるインターネット

ところでこのように実態がよく分からない「インターネット」の語は、意外にも法治国家らしい日本の法令に頻出します。

例えば現行の公職選挙法第百四十二条の七は以下のようなものとなっています。

選挙に関しインターネット等を利用する者は、公職の候補者に対して悪質な誹謗中傷をする等表現の自由を濫用して選挙の公正を害することがないよう、インターネット等の適正な利用に努めなければならない。

e-gov法令検索で、2136件!

e-govで検索を行ってみると、検索時点(2025年1月1日)で2136件も「インターネット」の語が使われていました。もちろん省令などで件数が多くなってしまっていることは否定できませんが、このようによく分からない「インターネット」で動いている日本という国は…と嘆く憂国の士の皆様方が3人くらいはいてもおかしくはないくらい多いと思います。

国立国会図書館法第二十五条の三

もちろん法令において「インターネット」が完全に野放しになっているわけではありません。真理は我らを自由にすることでお馴染み*3国立国会図書館ではインターネット上のコンテンツを収集しているのですが、これの根拠法として国立国会図書館法第二十五条の三では以下のような規定が設けられています。

第十一章の二 国、地方公共団体独立行政法人等のインターネット資料の記録

第二十五条の三 館長は、公用に供するため、第二十四条及び第二十四条の二に規定する者*4が公衆に利用可能とし、又は当該者がインターネットを通じて提供する役務により公衆に利用可能とされたインターネット資料(電子的方法、磁気的方法その他の人の知覚によつては認識することができない方法により記録された文字、映像、音又はプログラムであつて、インターネットを通じて公衆に利用可能とされたものをいう。以下同じ。)を国立国会図書館の使用に係る記録媒体に記録することにより収集することができる。

② 第二十四条及び第二十四条の二に規定する者は、自らが公衆に利用可能とし、又は自らがインターネットを通じて提供する役務により公衆に利用可能とされているインターネット資料(その性質及び公衆に利用可能とされた目的にかんがみ、前項の目的の達成に支障がないと認められるものとして館長の定めるものを除く。次項において同じ。)について、館長の定めるところにより、館長が前項の記録を適切に行うために必要な手段を講じなければならない。

③ 館長は、第二十四条及び第二十四条の二に規定する者に対し、当該者が公衆に利用可能とし、又は当該者がインターネットを通じて提供する役務により公衆に利用可能とされたインターネット資料のうち、第一項の目的を達成するため特に必要があるものとして館長が定めるものに該当するものについて、国立国会図書館に提供するよう求めることができる。この場合において、当該者は、正当な理由がある場合を除き、その求めに応じなければならない。

長くてよく分からないかもしれませんが、「インターネット資料 == 電子的方法、磁気的方法その他の人の知覚によつては認識することができない方法により記録された文字、映像、音又はプログラムであつて、インターネットを通じて公衆に利用可能とされたもの」という形で、「インターネット資料」とは何かということについて*5定義が行われています。しかしながら肝心の「インターネット」が何かという問いに対して一切の答えを提供していません。悲しいですね。

高度情報通信ネットワーク社会形成基本法

先ほどRFC 1122を参照してみたのは、古いRFCを探ることでインターネットの根源的な思想に近づこうとしたからでした。というわけで法令から教えてもらおうとする際は「インターネット」の語が出てくる最も古い法律を読んでみましょう。どうやら法令中に「インターネット」の語が出てくる最古の法は2000年に定められた高度情報通信ネットワーク社会形成基本法のようです。これはデジタル社会形成基本法の制定によって廃止された(デジタル社会形成基本法の前身と言っても遠くはない)法律で、日本のIT政策の基盤となっていた法律と言えます。

高度情報通信ネットワーク社会形成基本法

どうやらインターネットは高度通信ネットワークらしいです。いい話ですね。そのためブロックチェーンでも糸電話でもTelnetでも、インターネットと認められる余地はあるっぽい感じです。

というわけで我々はこれからも高度な通信ネットワークを突っついていきましょう。ありがとうございました。

参考資料

*1:日本国憲法第41条: 国会は、国権の最高機関であって、国の唯一の立法機関である。

*2:RFCへのリンクを張る際にどういった形で貼ればよいかは、こちらのブログで言及されており、そちらを参考にしました。と言いつつdoiで貼っているけど。

*3:国立国会図書館法前文: 国立国会図書館は、真理がわれらを自由にするという確信に立つて、憲法の誓約する日本の民主化と世界平和とに寄与することを使命として、ここに設立される。本当に好き。

*4:国、地方公共団体独立行政法人

*5:LT内では触れなかったのですが、この後ろに続く第二十五条の四において、第二十四条及び第二十四条の二に規定する者以外の者(要するに公共機関の類じゃない人々)が「オンライン資料」を作成した際には国立国会図書館に提供しなければならないと定められています。ここにおける「オンライン資料」とは、「電子的方法、磁気的方法その他の人の知覚によつては認識することができない方法により記録された文字、映像、音又はプログラムであつて、インターネットその他の送信手段により公衆に利用可能とされ、又は送信されるもののうち、図書又は逐次刊行物(機密扱いのもの及び書式、ひな形その他簡易なものを除く。)に相当するものとして館長が定めるもの」を指しており、「インターネット資料」より若干広い定義がなされています。ここの差が何を示しているのかについてもう少し深掘りしたかったかも。

さっくりわかるActivityPub

初めましての方は初めまして。Ekasiliconと申します。さて私は去る2024年5月11日に開催されたUNTIL.LT #0x04に参加させていただきました。

そこにおいて「さっくりわかるActivityPub」というタイトルで10分間のLTをしました。この記事ではどのような話をしたのかをブログの記事という形にして記録していこうかと思います。

タイトル

さっくりわかるActivityPub

あーすというところに所属しております。Ekasiliconと申します。さて今回私は「さっくりわかるActivityPub」というタイトルでお話をさせていただこうかと思います。

ちょっと前から話題になっているかもしれないMisskeyやMastodon、いわゆる分散型SNS(この呼び方はそこまで好きじゃない)と呼ばれているものに関係する話で、普通に面白いポイントがある技術だと思っているので、皆さんに"さっくりと"理解していただいた上で、興味を持っていただければ嬉しいなと思います。

話すこと・話さないこと

前回試験的に行ってみて割と好評だった、話すこと・話さないことについて簡単に説明していこうと思います。まず以下のことについて話します。

  • Fediverseの概念
  • ActivityPubとは
  • 簡単な歴史(RSS等)
  • 嬉しいところ

反対に以下のことについては説明しません。

  • HTTPそのもの
  • 込み入ったActivityPubの話
  • JSON
  • 詳しい歴史
  • つらいところ(布教したいので)

こういった内容については、よしなに憶測で補ったり調べていただいたりしていただければと思います。

Bluesky、一般公開

さて先日…といっても2月の話ですが、Blueskyが招待制ベータから誰でも登録できる公開の正式版となりました。ついでにロゴも青空から蝶になりました。蝶のように長生きしてくれれば嬉しいですね。

このBlueskyというものの売り文句の1つに「分散型」というのもあって、MisskeyやMastodonを思い浮かべた方もいるかもしれません。しかしながらこれは「AT Protocol」という新規設計されたプロトコルを使用しており、MisskeyやMastodonといったものが使用している「ActivityPub」とは異なるプロトコルです。今回はBlueskyとは関係ない、MisskeyやMastodonなどと関連するプロトコルについて話していきたいと思います。

MastodonとかMisskeyとか

先ほどから話しているMisskeyやらMastodonやらとはなんぞや、という話ですが、これはSNSのソフトウェア自身を指す言葉です。よく「Misskey始めました!」と言ってアットマーク以降の文字列を貼っている人がいますが、多くの場合それは開発者やそれに近しい人が運用しているサーバーのことを指すことが多いです。例えばMastodonであればMastodon.social、MisskeyであればMisskey.io、といった感じです。当然ながら全然別のサーバーも存在しており、つくばねすきー(mi.tsukuba.dev)においてはMisskeyというソフトウェアが動いていますが、Misskey.ioとは異なるものとなっています。

もちろんお持ちのサーバーへインストールすることも可能です。これらは自由ソフトウェアであって、勝手にソースを見た人が改善されていたりフォークされたりしています。

「連合」出来る

他にも先ほどから出ているワードとして「Fediverse」というものがありますが、これはどういうものでしょうか。前のスライドで説明させていただいたMastodonやMisskey等では、これらをインストールしているサーバー同士でコミュニケーションをとることが可能となっております。これを一般に「連合(Federation)」と呼んでいます。

情報同士が送られ合うといういわば「宇宙」のようなもののため、FederationとUniverseをくっつけて「Fediverse」と言っているわけです。さて、このFediverseはどうやって実現しているのでしょうか?

ActivityPub

それが先ほどから出ている「ActivityPub」というものです。これはW3Cから出ているHTTPの拡張、ということになっています。あんまりHTTPしているという感じはしないんですけどね。

MastodonやMisskeyの各サーバーには「INBOX」と「OUTBOX」があり、それぞれのサーバーが対応するものに応じて他のサーバーのこれらをGETやPOSTなどで叩く、という感じです。なんてナウでヤングなRESTワールドなんでしょう。

JSON-LDを使用

もちろんGETとPOSTだけで全てを賄っている、というわけではなく、送り付けあっているのはJSON-LDです。ただのJSONと何が違うかという話ですが、大まかに言えば「JSONのプロパティ名やデータ型などをきちんと定義した(ようなもの)」、という感じでしょうか。ちなみにRDFなどもこれによって表現が出来ます。

ActivityPubの世界ではActivity Streams 2.0で語彙を定義しています。一例を出すと、typeには「Note」、「Like」、「Follow」などがあります。SNS感がありますね。

アクター(各ユーザー)への変換

アクター(各ユーザー)への変換

もちろん、JSON-LDを送り付けあうだけではFediverseは成立しません。色々な面白い処理を行っています。ここでは一例としてアクター、一般的にはSNSを使っている各ユーザーへの変換を見ていきましょう。

ActivityPub上でアクターは「@ユーザー名@ドメイン」というメールアドレスのような形式で表記されます。例えばUNTIL.のアカウントであれば「@until@mi.tsukuba.dev」という感じです。ここで面白いのは、人間が見るべきものと機会が見るべきものが異なることがあり得る、異なるようにすることが出来るという点です。例としてはVivaldi SocialやInstrgramが始めたThreadsが挙げられます。このようなものを実現するために、Host MetadataというものとWebFingerというものの合わせ技で解決しています。

まず「@ユーザー名@ドメイン」という形が与えられた場合、初めに[ドメイン]/.well-known/host-metaを見に行きます。ここにはWebfingerをどこに投げればいいのかが示されています。

その次に得られたWebfingerの投げ先が示された場合、その先を見に行きます。だいたい[ドメイン]/.well-known/webfinger?resource=“ユーザー名@ドメイン”みたいな感じです。ここには通信を行うべきアドレスと、人間が見るべきプロフィールページのURLが書かれていたりします。こうして受け取ったものをよしなにユーザーへ渡せばよいわけです。

一例(@vivaldi@vivaldi.netの場合)

$ curl social.vivaldi.net/.well-known/host-meta -L
<?xml version="1.0" encoding="UTF-8"?>
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
  <Link rel="lrdd" template="https://social.vivaldi.net/.well-known/webfinger?resource={uri}"/>
</XRD>

$ curl https://social.vivaldi.net/.well-known/webfinger?resource="vivaldi@vivaldi.net"
{"subject":"acct:Vivaldi@vivaldi.net","aliases":["https://social.vivaldi.net/@Vivaldi","https://social.vivaldi.net/users/Vivaldi"],"links":[{"rel":"http://webfinger.net/rel/profile-page","type":"text/html","href":"https://social.vivaldi.net/@Vivaldi"},{"rel":"self","type":"application/activity+json","href":"https://social.vivaldi.net/users/Vivaldi"},{"rel":"http://ostatus.org/schema/1.0/subscribe","template":"https://social.vivaldi.net/authorize_interaction?uri={uri}"},{"rel":"http://webfinger.net/rel/avatar","type":"image/png","href":"https://social-cdn.vivaldi.net/system/accounts/avatars/109/338/455/962/321/184/original/882e31b8fd08cf9d.png"}]}

RSS

どうしてこのようなものが出来たのでしょうか、歴史を探るためにRSSの仕組みを眺めましょう。大まかに言えばRSSは以下の仕組みで動いています。

  1. ウェブサイト上で記事が追加・更新される
  2. 更新した旨をRSSファイルに記述する
  3. ユーザーはそのRSSファイルを定期的に取得し、前回取得した時の差分や時間を見て更新を把握する
  4. ユーザーはRSSファイルや更新されたWebサイトを見に行く

細かいところでは違うところもあるのですが、大まかに言えばこんな感じです。さて、ここにおいては大きく以下の問題があります。

  • リアルタイムに情報を得られない(ユーザーがRSSファイルを取得するまで更新された旨を知るすべがない)
  • 特定の記事に対してフィードバックや反応を送ることが出来ない(mailto:がスパムによって事実上使えなくなった)

これらをどうにかして解決しようと、先人たちは様々な発明を行ってきました。例えば、RSSからAtomにしてみたり、WebSub (PubSubHubbub)を作ってみたり、Salmon Protocolを提唱してみたり、Webfingerを作ってみたり…などなどです。このような技術をまとめて作られたのがOStatusです。これに対応したソフトウェアとしてGNU Socialが良く知られています。

ただOStatusが複雑になりすぎたということで、Pump.ioというプロジェクトがActivityPubの原型を提唱し、現在ではW3Cの勧告となっている、というのが大まかな流れです。ActivityPubはとてもシンプルということになっていますね。

対応しているソフトウェア

このような謎のプロトコル、ActivityPubというものに対応しているソフトウェアはそんなに無いのであろう、と思ってしまうかもしれませんが、実はそんなことはありません。例えば以下のようなソフトウェアが対応しています。

全世界のウェブサイトの半分くらいを占めているWordPressも(プラグインを入れれば)対応しているということですので、ActivityPubの輪は確実に広まっているといえるのではないでしょうか。SNS向けのものですので、受け取れる情報量にはどうしても差が出来てしまいますが、そこもまた面白いポイントでしょう。

嬉しいところ

というわけで最後に嬉しいところをまとめておこうかと思います。

  • 異なるソフトウェアとさえ通信出来る! - もちろん制限されるところもある。しかし1つのアカウントでコミュニケーションが取れる。
  • 大富豪にお金を払わなくとも本人証明が出来る - 自分が所有しているドメインでサーバーを立てればよい。Blueskyのドメインをハンドルネームのようにするのとは異なります。
  • 変な技術なので面白い - HTTP(とその他もろもろ)でこれが実現できるの??という驚きがあります。基本となっているのはお馴染みのWeb技術です。

最後に

というわけでActivityPubをさっくり説明しました。何となく理解してくれれば嬉しいです。ありがとうございました。

「エンゲージのうた」と「ドリフ大爆笑のOP」と「隣組(楽曲)」

YouTubeを眺めていたらエンゲージのCMが流れてきました。


www.youtube.com

仕事探しは エンゲージ
転職・バイトも エンゲージ
新卒・パートも エンゲージ
求人サイトは エンゲージ

といった、エンゲージそのものを宣伝するCMです。見ていただければ分かる通り「ド♪ド♪ドリフの大爆笑 笑ってください今日もまた」で知られている往年の番組のオープニング曲が使われているように見えます。ところが概要欄には以下のように書いてあります。

「エンゲージ」の新キャラクターに就任した草彅剛さんが登場!転職、バイト・パート、新卒まで幅広くカバーし、すべての人の仕事選びを支える国内最大級の求人サイト「エンゲージ」の魅力を、草彅さんが40名以上のキャストと豪華なステージで表現します。30秒Ver.限定の、掛け合いなどの演出も必見!国民的メロディにのせた、クセになる歌とダンスにもご注目ください。

ドリフ大爆笑のオープニング」と書いてもおかしくはないところですが「国民的メロディ」と書いてあります。もちろんCMなので何らかの都合はあるかもしれないですが、ドリフ大爆笑とは書けなかったのかということが気になります。

調べてみるとドリフ大爆笑の歌は曲も詩も完全にオリジナルだと思っていたのですが、どうやら曲は戦時中の1940年に発表された「隣組」という曲が元らしいです。一応まだ著作権が存続しているらしいので音源を貼ることは控えますが、確かに曲はほとんど同じに見えます。なので冒頭のエンゲージのCMは替え歌の替え歌ということになり、かつ元の曲が堂々とは書きづらい曲ということで「国民的メロディ」という言葉でごまかした(?)のでしょう。

ところで4番まである「隣組」の歌詞を見てみるとそれぞれの後ろが以下の歌詞で終わっています。

(1番) 知らせられたり 知らせたり
(2番) 教えられたり 教えたり
(3番) 助けられたり 助けたり
(4番) 纏められたり 纏めたり

受動と能動がセットになっていてとてもリズミカルですが、どこかで聞いたことがあるような歌詞です。そう、CGCソングで。


www.youtube.com

1番が「助けられたり 助けられたり」、2番が「知らせられたり 知らせたり」、3番が「教えられたり 教えたり」という風に順番が入れ替わっていますが、全くといっていいほど同じです。1番は色々な人が支えあって生きている、2番は役に立つ情報が互いに交し合われている、3番は安くて豊富な商品について交換し合っている、というような状況にはなっていますが、「スーパーで能動的に情報を交し合うことないでしょ」とは思っていました。

しかしながらこういったバックボーンがあるなら納得です。恐らく戦時中に流されまくった結果、多くの人々の耳に残り、まさしく「国民的メロディ」になっていたこの曲のフレーズを使ってみたということでしょう。調べてみたら「この世界の片隅に」の映画版でも使われていたらしいので、ある意味戦時下の国民を象徴するような曲、というようなことなのではないでしょうか。

また一つ知見が得られました。いい話ですね。

ここまで書いて

…とここまで書いてから日本語版ウィキペディアの「隣組 (歌))」に(出典はあって無いような感じですですが)ほとんど同じことが書いてありました。一応このブログの方が後発であるということを記した上で終わろうと思います。