こんにちは!フィフス・フロア開発チームのnotozekiです。

今月のはじめ、一次創作をする人やそのファンの人のための Mastodon インスタンス ichiji.social をリリースいたしました。おかげさまでご好評をいただいているようで、リリースからわずか1週間足らずで1,000ユーザを突破しました🎉 一次創作が好き!という方はぜひ登録してみてください。私のアカウント @notozeki も、よければフォローしてくださいね☆(ゝω・)v

そんな ichiji.social ですが、先日「固定トゥート」機能が実装されました。この記事では、固定トゥート機能を実装するにあたっての裏話をご紹介したいと思います。

1.6.0の固定トゥート機能

リリース時にはバージョン 1.4.7 で運用していた ichiji.social ですが、このたびバージョン 1.6.0 へアップデートしました。新機能やバグフィックスを取り込むためになるべく最新版に追従しておきたいというねらいもありますが、今回のアップデートの一番の目的は「固定トゥート」機能を追加することでした。固定トゥートはこれまで Pawoo さんなどで独自に実装されていましたが、1.6.0 で本家 Mastodon にもその機能が追加されました。もともと ichiji.social でも固定トゥートの要望は多く、独自に実装しようかとも考えていたところだったため、まさに渡りに船でした。

1.6.0 の固定トゥート機能について簡単に説明します。固定したいトゥートの「・・・」のアイコンをクリックすると、「プロフィールに固定表示」というメニューがあります。これをクリックすると、そのトゥートを固定することができます(固定できるトゥートは、自分のトゥートのうち「公開」か「非収蔵」に設定しているもののみです)。

スクリーンショット 2017-09-25 17.30.16.png

確認するには、自分のプロフィールページ(https://ichiji.social/@notozeki のようなURL)を開きます。

スクリーンショット 2017-09-25 17.31.17.png

しっかり固定できていますね😆

Web UIでも固定トゥートしたい!

1.6.0 の固定トゥート機能も十分よく出来ていたのですが、1つだけイマイチなところがありました。それは Web UI 画面では固定トゥートが表示できないことです。

Web UI とは、以下のような、ログインしている状態で ichiji.social にアクセスすると出てくるおなじみのあの画面のことです(正式な呼び方かどうかは不明です)。

スクリーンショット 2017-09-25 17.19.27.png

Web UI で、トゥートのアイコンなどをクリックすると、ページ遷移せずに Web UI 上でそのユーザのプロフィールが表示されます。

スクリーンショット 2017-09-25 17.23.10.png

1.6.0 の固定トゥートのそのままの機能では、この Web UI 上のプロフィールには固定トゥートが表示されませんでした[1]。ユーザさんが普段見ているのは Web UI のはずなので、どちらかというとここに固定トゥートが表示されたほうが嬉しいはずです。

そこで、ichiji.social では、Web UI にも固定トゥートが表示できるように少しだけ改良を加えています。その部分のコードは、AGPL で公開されている Pawoo さんのコードを参考にして作りました🙏 ただし、そのままでは本家 Mastodon では動かないため、本家の固定トゥートの仕様にあわせて多少変更しています。

大きな違いとしては、API のエンドポイントが Pawoo と本家とでは異なっているため、そこを変更しています。本家では GET /api/v1/accounts/:id/statusespinned=true というパラメータを付けて呼び出すことで、その id のアカウントの固定トゥートだけを取得することができます。

app/javascript/mastodon/actions/timelines.js の該当部分:

export const refreshPinnedStatusTimeline = accountId => refreshTimeline(`account:${accountId}:pinned_status`, `/api/v1/accounts/${accountId}/statuses?pinned=true`);

そのほか、Pawoo には一度の API 呼び出しですべての固定トゥートを取得できない場合のコードがありましたが、その部分は削っています[2]

それ以外は、細かい違いはありますが、ほぼそのままで動きました。Pawoo しゅごい。

これで、Web UI にも固定トゥートが表示されるようになりました。めでたしめでたし。

スクリーンショット 2017-09-25 17.31.50.png

みなさんも固定トゥート機能をぜひ活用してくださいね!😘

余談

1.6.0 にアップデートすると、新規登録時に管理者ユーザが勝手にフォローされる設定になります[3]。筆者はこれに気づかず、いわば「逆フォロ爆」をかけたような状態になってしまいました。Mastodon 運営者のみなさまはお気をつけください😱


  1. 「全員の固定トゥートだけを表示するタイムライン」は実装されていたのですが、ちがうそうじゃない。 ↩︎

  2. これは 1.6.0 では厳密にはダメで、固定トゥートが一定の数より多いと一部の固定トゥートが表示できなくなってしまいます(ということにこのブログ記事を書いているときに気づきました😭 )。ただし、1.6.0 の固定トゥート一覧APIには問題があり、どちらにしろ数が多い場合は正しく一覧を取得することができません。1.6.1 では固定トゥートの上限が5つになり、問題が解消されたようです。 ↩︎

  3. 1.6.0 から、新規登録時に自動的にフォローされるアカウントを設定できるようになったのですが、そのデフォルトの設定が「管理者アカウントすべて」になっています。 ↩︎