新刊ピックアップ

身の回りにあるRuby製のオープンソースなソフトウェア

この記事を読むのに必要な時間:およそ 2 分

自分で運用するWebサービスとRuby

画像

Ruby製のツールという括りからは少し外れますが,OSSで公開されていて自分で運用するタイプのWebアプリケーションも存在します。

BTSとして,Ruby本体の開発でも活用されているRedmineはRuby on Railsで作成されていて,自分で運用・管理することで閉じられたネットワーク内でも気軽にBTSを導入できます。

また,2017年4月に入って国内でも話題となったSNSのMastodonもRuby on Rails製のWebアプリケーションです。

画像

Mastodonはインスタンスという単位で自ら運用する形で構成され,ピクシブドワンゴといった一部企業は自社のサービスと連携したSNSとしてインスタンスを立ち上げています。

これらのWebアプリケーションはきちんと構築しようとするとHTTPサーバやDBサーバなどのミドルウェアの理解も必要です。一般に公開せずとも,Webアプリケーションを構築・運用するための練習としてこれらを自分で安定して動かせるようにしてみるのも面白いかもしれません。

いざRubyと出会った時に知っておくと良いこと

このように様々な場面で利用されているRuby製のツールですが,動かすためには多くの場合でRuby自体のインストールが必要となります。

サーバにプリインストールやパッケージで提供されているバージョンは時期によっては古くなっている場合もあり,アプリケーションによっては新しいRubyでないと動かない場合もあります。そのため,自分でインストールする方法を理解しておくと何かと便利です。

Ruby本体をインストールするためには,独自にビルドするのでも良いですが,専用ツールを使ってインストールするのが手軽です。WindowsではRubyInstallerを,Mac/Linuxでは複数バージョンのRubyを切り替えることができるrbenvを使ってビルドするのがお勧めです。

画像

Rubyのインストール以外に,ライブラリの開発で用いられるエコシステムなどを把握しておくとRubyをより扱いやすくなるでしょう。

もっとも基本的なものはRubyと一緒にインストールされる,ライブラリを管理するためのRubygemsという仕組みです。gemコマンドとして提供されていて,このコマンドを通じてライブラリやアプリケーションのインストールを行います。

画像

また,gemライブラリをホスティングするためのrubygems.orgというサイトがあります。ここに自作のgemなどを登録することで,他のユーザがgemコマンドを通じてライブラリをインストールすることが可能となります。

さらに,Rubyと一緒にインストールされるコマンドとしてRakeと呼ばれるタスクランナーがあります。これはrakeコマンドとして提供されていて,一般的にはRakefileというファイルに記述されたタスクを実行します。

例えば,gemライブラリを作成する際のパッケージング処理やテストの実行などをRakefileに定義することで,よく実行するようなコマンドをrakeコマンドで実行できるようにしておくケースがよくあります。

画像

最後に,gemライブラリとして提供されているBundlerについて紹介します。これはRubyのgemでインストールされたライブラリのバージョンや依存関係を解決するためのツールで,Bundlerをインストールするとbundleというコマンドが利用できるようになります。

Bundlerを使い,Gemfileという設定ファイルにアプリケーションで必要なgemライブラリやバージョン情報を記載することでバージョンや依存関係が固定されます。こうすることで,別のPCで実行しようとしたらバージョン間の違いでプログラムが正常に動かなかった,などのトラブルを防げるようになります。

Ruby製のツールを扱おうとすると,ライブラリのインストール方法などでgemやbundlerを使ったインストール方法を案内されるケースが多いと思います。これらについて簡単に知っておくことで,ツール導入の面倒さが解消されるはずです。

もしこれを機にRuby自体を学んでみようと思った方がいましたら,本稿の筆者が共著で執筆している改定2版 パーフェクトRubyを手にとっていただけると嬉しいです。

著者プロフィール

すがわらまさのり

1982年生まれ。大学卒業後,Sierに就職。開発に関わったプロダクトを育てていきたいという思いと,BtoCでの仕事に就きたくて現職へ至る。普段は主にRubyでデーモンやアプリケーションを書いたりしている。sugamasaoというアカウントで活動中。