皆さん、はじめまして。イノベーションLAB(R&D)のM.Mです。
落ち着かない天気が続いておりますが、いかがお過ごしでしょうか?
今回はMeetingRoomQの開発で使用しているRuby on Railsについてご紹介したいと思います。
1.Ruby on Railsとは
Ruby on Railsとは、プログラミング言語の一種であるRubyのwebアプリケーションを構築するフレームワークの一つです。
フレームワークとは、アプリケーションを簡単に開発できるように、汎用的な処理があらかじめ用意された枠組みのことです。
フレームワークを利用することで、開発者の負担を減らし、開発工程を短縮させることができます。また、フレームワークのルールに従うことで、コードの書き方を統一し、バグの発生を抑えることもできます。しかし、枠組みが決まっているため、プログラミングの自由度が制限されるというデメリットもあります。また、フレームワークを使用するための知識を身に着ける必要があります。
1-1.基本理念
Ruby on Railsには「同じことを繰り返さない」(Don’t Repeat Yourself::DRY)と「設定より規約」(Convention Over Configuration:CVC)という基本理念があります。
「同じことを繰り返さない」というのは、同じ意味や機能を持つ情報が複数の場所に置かれていると、変更時に整合性がとれなくなる危険性が高まるため、なるべく避けるべきとする考え方です。
「設定より規約」というのは、規約にのっとってアプリケーションを開発することで、記述量を減らし、わかりやすいコードにすることができます。
1-2.特徴
Ruby on Railsは「MVCアーキテクチャ」に基づいて開発を行います。MVCとは、Model(モデル)、View(ビュー)、Controller(コントローラー)の頭文字をとったものです。
(1) Model
システムの中でデータアクセスやビジネスロジック(アプリケーション特有の処理)を担う部分のことです。データベースへの保存や読み込み、データの関連付け、検証などを行っています。
(2) View
HTML形式でブラウザにどのようなページを表示するかの定義づけを担う部分のことです。レイアウトやメニュー、ボタンの操作性などを決める際に欠かせない機能です。必要に応じてControllerからModelのオブジェクトなどを受け取り、画面表示に利用します。
(3) Controller
ユーザが入力した情報に基づいて適切な出力を作成するための制御を行う部分のことです。必要に応じてModelからデータの受け渡しや、Viewに表示する画面の処理を促す等のModelとViewのコントロールを行います。
MVCでは以上のように役割や機能別でコードを分けるので、わかりやすくコードを管理することができます。そのため作業効率や保守性の向上に繋がります。
2.アプリケーションの作成について
Ruby on Railsではscaffold機能があり、以下のコマンドを実行すると、アプリの雛形を自動で作成することができます。
「generate scaffold モデル名 カラム名:データ型 カラム名:データ型…」
この機能を使用すると、自動でマイグレーションやモデル、コントローラー、ビューのファイルを作成したり、ルーティングを設定してくれたりします。
今回は、マイグレーションとルーティングについて取り上げたいと思います。
3-1.マイグレーション
Ruby on Railsでは、データベースの作成やカラムの変更をマイグレーションを通して行います。
基本的な操作は以下の2点です。
(1)マイグレーションファイルを作成し、データベースの構造をrubyで記述する。
(2)「rails db:migrate」を実行して、マイグレーションファイルをデータベースに適用する。
上記のようにマイグレーションは適用して初めてデータベースが変更されるので、一度適用したマイグレーションファイルを修正・削除したい場合も、ただファイルを変更するのではなく、バージョンを一つ戻す必要があります。このように、railsではマイグレーションのバージョンがどこまで適用されているかが重要となります。
バージョンを戻す操作や、確認等はコマンドを実行して行います。
以下のコマンドは、私が実際の作業で使用するコマンドです。
Ruby on Railsでは、マイグレーションを適用したり外したりすると、schema.rbというファイルにデータベースの構造を自動出力するので、こちらからテーブルやカラムの構造を確認することもできます。
3-2.ルーティング
Ruby on Railsでは、リクエストに対してどのコントローラーのどのアクションを呼び出すのかをroutes.rbというファイルに定義します。
記述方法は複数あるので、基本的なものをご紹介したいと思います。
(1) rootを設定する場合
rootとつけることで、アクセスしたときの最初のアクションを設定できます。こちらは、トップページなどを設定するときに使用します。
(2) 1つのルートを設定する場合
「HTTPメソッド URLパターン => “コントローラー#アクション”」
という記述方法で、1つ1つのアクションに対してルーティングを設定することができます。
(3) CRUDの7つのアクションを設定する場合
CRUDとはシステムに必要な主要機能である「作成(Create)」「読み出し(Read)」「更新(Update)」「削除(Delete)」の頭文字をとったものです。
画像にある記述方法で、次の7つのアクションを1度に設定することができます。
scaffold機能を使用した場合は、こちらのCRUDのルートが自動で設定されます。
画像の(3)2行目のように「only」を使用すると、7つのアクションのうち特定のアクションのみ設定することができます(indexアクションのルートのみ設定)。また、(3)3行目のように「except」を使用すると、特定のアクションを外して設定することができます(editとupdate以外のアクションのルートを設定)。
4.MeetingRoomQでのRuby on Railsを利用した開発について
弊社はグループ会社の株式会社Qにて展開しているサービス「MeetingRoomQ」の開発を行っています。
MeetingRoomQの開発には、プログラミング経験の浅いメンバーも携わっています。しかし、Ruby on Railsを使用することで、フレームワークのルールに従うため、統一のとれたコードを実装することができています。
また、機能別にコードが分かれているため、そのようなメンバーでも機能追加や修正等の管理を行いやすくなっています。
MeetingRoomQでは今後もRuby on Railsを利用し、企業間で交流できるプラットフォームを目指して開発を進めていきます。
5.最後に
私はプログラミング未経験だったこともあり、どこに何を書くのか覚えるまでは苦労しました。しかし教えていただきながら少しずつ覚えることで、徐々にできることが増え、楽しみながら実装できるようになりました。慣れると未経験でも使いやすいフレームワークだと思います。
今後はMeetingRoomQで使用している具体的な技術について、事例をご紹介していきたいと思います。
最後までご覧いただきありがとうございました。
株式会社シー・エス・エスは随時、業務に関するお悩みを受け付けています。
▼【お問い合わせ・ご相談はこちらから】