Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Qiitadonのソースコードを読む

[Qiita広報のつぶやき]
Qiitadonについていい感じにブログに書いていただけたら、QiitaのレアなTシャツ差し上げます!
(先着5名)

https://qiitadon.com/@gocci/21939

ということなので, 書きます. Gistで良いのかわからないけど, いつもGistに投稿してるしブログみたいなものなのでどうかよろしくお願いします. この記事ではソースコードを読みながらQiitadonの特徴について探っていきます.

ソースコードを入手する

QiitadonはMastodonというSNSを元にしています. これは, マイクロブログと呼ばれる種類のもので, Twitterなどが分類されます.

MastodonはGNU Affero General Public License version 3 の下で利用が許諾されています. このライセンスには, プログラムがネットワーク上で接続出来るようにした場合に 接続しているユーザーによるソースコードの請求に応えなければならないという規約があります.

これに則り, Qiitadonはそのソースコードを公開しています. まずはこれを入手しましょう. Qiitadonのソースコードは以下で公開されています.

increments/mastodon: A GNU Social-compatible microblogging server

この記事では上流のソースコードとの差分を見ながらMastodonの特徴を探ります. ローカルで上流のv1.4.1との差分を見るには次のコマンドを使用します.

git clone https://github.com/increments/mastodon.git
git -C mastodon diff 8963f8c3c2630bfcc377a5ca0513eef5a6b2a4bc qiitadon

また, GitHubはフォーク元のリポジトリの各ブランチとの比較を提供しています. こちらは手っ取り早くて良いかもしれません.

Comparing tootsuite:master...increments:qiitadon · tootsuite/mastodon

# Gitの更新履歴もそのまま残ってるのはありがたいなあ. 組み込み機器等でベンダから提供されるソースコードは
# バージョン管理が消されていることが多くて辛いです. GitとQiitaに感謝🙏

差分

Add registration page with qiita account · increments/mastodon@bdbcc38

OmniAuthOAuth 2.0 に対応することにより, Qiitaアカウントでの登録を可能にしています.

QiitaはQiita API v2 用のOAuth strategyをRubyGemとして公開しており, それを利用しています.

omniauth_qiita | RubyGems.org | your community gem host

もし自分のWebサービスでQiitaサインインを実装したいということがあれば, このGemとQiitadonの実装が参考になるでしょう.

Let theme switchable with query parameter · increments/mastodon@729902a

コードは簡単ですが, ユーザーには嬉しい機能です. 色の変更は上流でもぜひ実装したいところですが, CSSのカスタマイズ機能 との兼ね合いもあり難しそうです.

Change character images · increments/mastodon@5c687fa

Qiitanの画像がAGPLv3で入手できます. やばい.

Add CodeBlockFormatter for formatting code blocks · increments/mastodon@9bf6d5c

Qiitaといえばこれ. Qiitadonが公開されるとみんな真っ先にこれを試していましたね.

Add ReservedUsernameValidator to reserve usernames · increments/mastodon@db9a38e

上流でもかなり前からpull requestがあるのですが, まだマージされていません. ただ10時間ほど前にGargron氏がCIでのテストに問題がないことを確認した旨をコメントしていたので, ひょっとするとマージされるかもしれません.

Added support for configurable reserved usernames by ngerakines · Pull Request #1382 · tootsuite/mastodon

最後に

QiitadonにはQiitaとして必要な機能, ユーザーに求められるであろう機能が的確に実装されています. Qiitaユーザーの方でまだMastodonを初めていないという方は, Qiitadonで初めてみるのも良いかもしれません.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment