2017.04.25
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サーバ(ApacheやNginx)も必要です。
じゃあアプリケーションサーバーだけで良いのでは?と思いがちですが、画像やスタイルシート(CSS)等の静的コンテンツを表示する際には
ApacheやNginx等のWebサーバーを利用した方が良いのです。
公開するMastodon(マストドン)として利用する場合にはWebサーバーが必要となってくるわけです。
Mastodon(マストドン)のデータをメモリ上に格納する:Redis
RedisはNoSQLの代表的ソフトウェアで、複雑な用途には向いていませんが、とても高速なので、次に紹介するPostgresqlとは別々に利用されています。
Mastodon(マストドン)のデータを格納する:PostgreSQL
データベースといえばMySQLかPostgreSQLだと思いますが、
Mastodon(マストドン)ではPostgreSQLが採用されています。
前述のRedisは複雑な検索等に対応していませんが、PostgreSQLでは複雑な条件での検索等に対応しています。
Ruby on Railsで非同期処理を実現する:Sidekiq
怪しい空手キャラクターで有名?なRuby on Railsで非同期処理をするために必要なライブラリです。
非同期処理にしないと、処理が終わるまでいつまでも待ち続ける必要があるので、このようなサービスでは必須のライブラリです。
ソースコード管理ソフト:GIT
GITはソースコードの変更履歴等を管理するためのソフトウェアです。
別になくても良いのですが、Mastodon(マストドン)はgithub上で公開されていますので、gitを利用する事で最新の状態に簡単に更新する事ができます。
公式に書いてあるドキュメントでもgitを利用していますので、素直に使いましょう。
定期的にコマンドを実行するCron
Cronは様々な所で利用されているサービスです。
Mastodon(マストドン)では1日1回特定のコマンドを実行するように推奨されています。
実行をし忘れると不安定になるみたいです。
少し文字が多くなってしまいましたが、いかがでしたでしょうか。
知らない用語を知る機会になればと思います。
以上佐々木でした。
マストドン関連、他の記事等もあわせていかがでしょうか!