東京都府中市、九段下のWEB制作会社Maromaroのブログです

2017.04.25

Sasaki

Mastodon(マストドン)はどのようなソフトウェアやライブラリで作られているのか?

こんにちは 佐々木です。

今巷でブレイク中のMastodon(マストドン)ですが、どのようなソフトウェアやライブラリで構成されているのか。

今回の記事は非エンジニア・プログラマ向けですので、プロフェッショナルな方は読み飛ばしてください(‘ω’)

では早速、Maromaroで実際にMastodon(マストドン)サーバーを立てて見て、よく出てきた単語やソフトウェア、ライブラリをまとめてみました。

知らない用語も出てくると思いますので、是非覚えていきましょう。

  • Ruby on Rails
  • パッケージ管理システムgem
  • gemを管理するBundler
  • アプリケーションサーバーのpuma
  • Webサーバ:NginxやApache
  • Redis
  • PostgreSQL
  • Sidekiq
  • Git
  • Cron

Mastodon(マストドン)の中枢 Rubyのフレームワーク:Ruby on Rails

Ruby on RailsはRubyのフレームワークです。
Mastodon(マストドン)のプログラムはこのRuby on Railsを利用して作られています。
比較的新しいRubyのバージョンを利用して作られているため、既存環境では動かない場合もありそうです。
Rbenvというツールを使うと複数のRubyをインストールできるため、公式でもRbenvの利用を推奨しています。

https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md#rbenv

Rubyの標準パッケージ管理システム:gem

gemコマンドを利用してRuby on Railsで利用するRubyのパッケージ(ライブラリ)をインストールするために必要です。

Rubyに必要なgemパッケージを管理する:Bundler

Bundlerコマンドを利用してgemのパッケージを管理します。
gemだけで良いのでは?と思いますが、Bundlerを利用する事で、設定ファイル、コマンド一つでMastodon(マストドン)に必要なRubyライブラリをインストールする事ができるのです。

Mastodon(マストドン)を動かすためのアプリケーションサーバー:puma

pumaはRuby on Railsのアプリケーションサーバーです。
アプリケーションサーバーって何?となりそうですが。
アプリケーションサーバーはRuby on Railsの処理に特化したサーバーと考えて良いかなと思います。

実は次に説明するWebサーバーが無くてもアプリケーションサーバーだけでMastodon(マストドン)は動作します。

Mastodon(マストドン)を動かすためのWebサーバ:NginxやApache

必須ではないのですが、Mastodon(マストドン)を動かすために必要なWebサーバ(ApacheNginx)も必要です。

じゃあアプリケーションサーバーだけで良いのでは?と思いがちですが、画像やスタイルシート(CSS)等の静的コンテンツを表示する際には
ApacheやNginx等のWebサーバーを利用した方が良いのです。

公開するMastodon(マストドン)として利用する場合にはWebサーバーが必要となってくるわけです。

Mastodon(マストドン)のデータをメモリ上に格納する:Redis

RedisNoSQLの代表的ソフトウェアで、複雑な用途には向いていませんが、とても高速なので、次に紹介するPostgresqlとは別々に利用されています。

Mastodon(マストドン)のデータを格納する:PostgreSQL

データベースといえばMySQLPostgreSQLだと思いますが、
Mastodon(マストドン)ではPostgreSQLが採用されています。
前述のRedisは複雑な検索等に対応していませんが、PostgreSQLでは複雑な条件での検索等に対応しています。

Ruby on Railsで非同期処理を実現する:Sidekiq

怪しい空手キャラクターで有名?なRuby on Railsで非同期処理をするために必要なライブラリです。
非同期処理にしないと、処理が終わるまでいつまでも待ち続ける必要があるので、このようなサービスでは必須のライブラリです。

ソースコード管理ソフト:GIT

GITはソースコードの変更履歴等を管理するためのソフトウェアです。
別になくても良いのですが、Mastodon(マストドン)はgithub上で公開されていますので、gitを利用する事で最新の状態に簡単に更新する事ができます。
公式に書いてあるドキュメントでもgitを利用していますので、素直に使いましょう。

定期的にコマンドを実行するCron

Cronは様々な所で利用されているサービスです。
Mastodon(マストドン)では1日1回特定のコマンドを実行するように推奨されています。
実行をし忘れると不安定になるみたいです。

少し文字が多くなってしまいましたが、いかがでしたでしょうか。

知らない用語を知る機会になればと思います。

以上佐々木でした。

マストドン関連、他の記事等もあわせていかがでしょうか!