こんにちは、TECH DRIVEのTedです。
今回は新しく加わったRuby on Railsプロジェクトを素早く把握するための便利なツールをご紹介します。 本記事はこれから開発現場に入っていく方や、新しく別の現場に入られる方のお役に立てる記事になっていると思います。
本題
新しく入ったプロジェクトを手元のマシンにとってきた後に環境構築を始めると思います。
そして、例えばgithubを使っている現場であれば「さて、振られたissueを対応していきますか!」と開発を始めることになると思いますが、自分が加わったプロジェクトについての情報がないとスムーズに開発の流れに乗れないと思います。
逆に、情報が多いと効率よく開発作業を進めることができるはずです。
ここで情報が手元にない時に情報を集める方法がいくつかあるかと思いますが、 私の場合は下記の情報があると開発を始めやすいのではないかと思います。
- データベースの詳細、テーブル数やその相関関係
- ルーティングの規模感
- ディレクトリ構造
2~3についてはプロジェクトのコードを読むことで解決できます。例えば
2. ルーティングの規模感
が調べたければroutes.rb
を読んでみたり、bin/rails routes
を実行してみると良いでしょう。
3. ディレクトリ構造
はrails new
で自動生成されるディレクトリ以外についてで、よく使われているディレクトリではapp/decorators
やapp/services
(このあたりはプロジェクトによって多少の違いはあります)のようなディレクトリです。見慣れないディレクトリ名を見つけた時は気をつけましょう。
今回は下記に焦点をあてたいと思います。
データベースの詳細を知りたい
先ほど、挙げた3項目の中で最も大事だと思います。
この1. データベースの詳細、テーブル数やその相関関係
についてはER図があると把握しやすくなります。
ER図とは下記のようなテーブル同士の関係を示す図のこと
schema.rb
を参照することで同様にテーブル数や相関を読むこともできますが、ER図ではこのあたりを図で見ることができるので理解しやすく、schema.rb
を見るよりもよりテーブル構造を把握することができるでしょう。
ER図をプロジェクトのチームが持っているならば共有してもらえば良いのですが、持っていない場合もあります。
そんな時に自動でER図をPDF形式で生成してくれるrails-erd
というgemが存在します。
rails-erdの導入
Gemfile
に以下のような記述をします。本番環境で使うことはないのでdevelopment
環境で使えるようになっていればOKです。
*Gitを使用して開発をしている場合、既存のコードを汚さないために新しく作成したブランチで作業することをお勧めします。
group :development do gem 'rails-erd' end
続いてgemをインストールします
bundle install
これで準備完了です!あとはER図を出力するだけです
bundle exec erd
下記のような図が出力されます。
ER図をコマンド1発で手に入れることができるのは非常に強力だと思います。
ER図があると何が良いのか
ここで、ER図があると何が良いのかおさらいしておきましょう。
ER図があると親子関係や中間テーブルのようなテーブル同士の相関を一目で見ることができ、各テーブルがどのようなカラム、つまりどのような情報を持っているのかも把握することができますし、開発する時にもテーブル同士の関係性を確かめながら進めることができます。
さらに、図で見ることでサービスにおいて重要なテーブルや機能を推察するためのヒントが得られます。
ER図から得た情報は、プロジェクトの中で目を通しておくべきコードの把握や、その意味を理解するための助けになります。
終わりに
ER図が手元にある状態でコードリーディングや開発作業をすると凄く心強い気持ちになれます。
余計な脳のリソースを使うことなくテーブル構造をインプットできるER図はとても強力です。
私もよく自分で作ったサービスだったり関係するプロジェクトのER図を今回ご紹介したrails-erd
で描画しようとします。開発中も常にER図の画面を開きながら開発しています。
本記事を通して少しでも新規プロジェクトへの加入が楽になるのであれば幸いです。
PR
TECH DRIVE協賛企業のサークルアラウンド株式会社では、プログラマーの成長を加速させるためのトレーニングを行なっています。フロントエンド/バックエンド問わず各種バリエーションがございますので、ご興味がある方は是非以下のリンクより詳細をご覧ください。
Ruby Climbing
週1からはじめられる「Ruby」でWEB開発の基礎が習得できる塾です。現役のプログラミング講師&Rubyエンジニアがプログラミング入門からフレームワーク(Sinatra/Ruby on Rails)を使用した本格的なWEB開発の学習までをしっかりとサポートします。
個別トレーニング
短期間でぐっと成長したい方は弊社主催の個別トレーニングがおすすめです。 トレーニング内容は、受講者の方の課題/要望をお伺いした上で、フルオーダメイドで作成させていただきます。 詳細は以下のリンクよりご確認ください。(応募者多数の場合には時間を別途ご用意する予定です)。