プログラミング

【Rails初心者必見】ディレクトリ・ファイル構造について分かりやすく解説

どうも!テントです

Railsの勉強を始めたばかりの皆さんが一度は必ず思ったこと

Railsってディレクトリ・ファイルが多すぎて役割がよくわからないと、、、、

多過ぎて各ディレクトリの役割があまりわからないのは当たり前です

今回の記事では、

  • Railsのディレクトリ・ファイル構造を詳しく知りたい

という人のために

  • 各ディレクトリ・ファイルの役割

についてわかりやすく解説します

それでは早速紹介していきます

Railsの主なディレクトリについて

RailsでWebアプリケーションの生成は簡単にできます

コマンドで、

rails new アプリケーション名(何でもいいよ)

たったこれだけを打ち込むだけでRailsの雛形が生成されます

簡単ですよね?

このコマンドで生成された、RailsのWebアプリケーションのディレクトリ・ファイルを紹介します

早速紹介していきます

app

appにはcontroller・model・viewファイルなど、Railsの中で特によく使うファイルが入っているディレクトリです

Railsを操作するにあたっての基本的なファイルであり、RailsのWebアプリケーションの動きであるMVCアーキテクチャがこちらのディレクトリに該当します

【Rails初心者必見】MVCアーキテクチャの仕組みについてわかりやすく解説 どうも!テントです 今回の記事では、RailsのMVCアーキテクチャの仕組みについて説明をします Railsを勉強していて...

bin

サーバーやアプリケーション起動時、テストなどを管理するスクリプトファイルが置かれています

スクリプトファイルとは、コードを書けばすぐに動かすことができるプログラムファイルのことです

当たり前と思うかもしれませんが、実はこれってスクリプトファイルのおかげなんです

通常コードを書いたら、そのコードをコンピューターがわかる言葉に翻訳する必要があります

この作業をコンパイルと言います

これは、必ず必要な作業です

ですが、皆さんの中にはコンパイルを行っているどころか、コンパイル自体を知らなかった人も多いのではないでしょうか?

特に気にする必要がなかったのは、このスクリプトファイルのおかげだったわけです

そう思ったら重要でしょ?

例えば、

rails server rails s

と短縮してコマンドを打ち込むことができます

このように簡易化できるのも、実はbinファイルのおかげです

config

Railsアプリケーションの設定に関するファイルが入っているディレクトリです

ルーティングについてのroutes.rbや、Railsの共通の環境設定を行うapplication.rbやデータベース設定ファイルなどが含まれるディレクトリです

Railsの設定を変えたい場合などは、configファイルの設定を変えたら解決するはずです

db

データベースのスキーマファイル(現状のデータベースの状態を保存するファイル)マイグレーションファイル(データベースの設計図)が入っているディレクトリです

このディレクトリ内のファイルは、ほとんど編集することはありません

補足

スキーマファイル(schema.rb)はマイグレーションファイルで設計したデータが保存されるイメージです

例えば、データベースにtitleカラムtextカラムがあるとします

この時スキーマファイルにはもちろんtitleカラムtextカラムが存在しています

しかし、imageカラムが追加したくなったので、マイグレーションファイルでimageカラムの追加を行いました

そうすると自然にスキーマファイルが更新されて、中身のカラムがtitleカラムtextカラムimageカラムの三つになります

スキーマファイルマイグレーションファイルの関係性はこのような感じです

lib

全体で使用されるライブラリを管理するためのディレクトリです

ライブラリとはさまざまな機能を持った部品の集合体です

Railsを勉強しているとモジュールという単語が出てくると思います

モジュールは、使いたい機能をひとまとまりにした部品です

このモジュールのまとまりがライブラリです

log

アプリケーション実行時の、logファイルが入っているディレクトリです

logファイルとは、行なったことの記録を記しているファイルです

つまりここでのlogファイルとは、webアプリケーションを実行した際の記録が記されたものです

このようなlogファイルが入っているディレクトリだと認識しておいて下さい

public

エラーページや画像などの静的なファイル、静的なページなどが置かれているディレクトリです

エラーページとは、例えばrailsで何かコードを付け加えたり、変更したりして更新するとエラー画面が出てきますよね?

その、エラー画面のHTMLファイルがこのpublicに置かれています

Railsではこのようなエラーページを用意してくれています

すごい便利だよね

自分でエラーページをかっこよくわかりやすくすることも可能です

ここでは割愛するので、気になる人は調べてみてください

test

アプリケーションをテストするためのファイルが入っているディレクトリです

補足ですが、Railsでのアプリケーション開発に限らず、開発したものは必ずテストを行って想定通りに動くどうかの検証を行う必要性があります

tmp

キャッシュなどの一時的なファイルのディレクトリです

キャッシュというのはリクエスト・レスポンスによって生成されたされたコンテンツを保存し、次回同じリクエストがあった際に再利用することです

例えばあなたが興味を持っているコンテンツを調べたとします するとさらに興味が高まり毎日同じコンテンツを調べるようになりました

そうなった時、あなたがもう一度調べることを予測してパソコンがコンテンツを保存してくれます

そうすることで、あなたは待つことなくコンテンツを見ることができます

この仕組みがキャッシュです

このキャッシュのような一時的なファイルが入っているのがtmpディレクトリです

ventor

第三者によって開発されたプラグインやgem、コードなどを設置する際に用いるディレクトリです

spec

これに関してはおまけです

Rails new アプリケーション名で生成されるデフォルトのディレクトリには存在していません

このディレクトリはrailsのテストの際に用いるディレクトリです。さらに詳しくいうならRSpecと言うテスト専用のプログラム言語で

このRSpecのディレクトリがspecディレクトリです

ここである疑問が生まれます。あれ?さっきtestディレクトリがあったよね??

その認識は間違いではありません。どちらもアプリケーションをテストを実施するときに用いるディレクトリです

双方の違いは、使いやすさ・人気があるかの違いだと僕は思っています(違っていたらすみません)

Railsを勉強していても、RSpecを始めて触った時は正直、なんじゃこりゃと思いました。それほど書き方が違います。違う言語みたいな感覚

しかし使っていくととても使いやすい!

現場でも使うことが多いのでrailsエンジニアを目指している人は絶対にRSpecの勉強もしておいた方がいいと思います。絶対に役に立ちます

だいぶ脱線しましたが、以上番外編でした!

Railsの主なファイル

次にWebアプリケーション直下にあるファイルを紹介します

それでは行ってみましょう!

Rakefile

Rakeコマンドの実行を管理するためのファイルです

config.ru

railsサーバー起動のためにRakeが使用する設定ファイルです

.gitignore

Gitに取り込みたくないファイルを指定するためのファイルです

Gemfile

Rubyのライブラリであるgemが記述されているファイルです

ライブラリについては、libディレクトリで説明しています

この、gemを使うことで簡単なコードだけで色々な機能を実装することができます

Gemfileの記述方法は、

gem ‘パッケージ名’, ‘バージョン’

で指定することができます

そして、ファイルに記述した後には必ずコマンドで

% bundle install

を行なって下さい

そうするとgemが使えるようになり、簡単なコードを書くだけで機能が使えるようになります

Gemfileの役割はこんな感じです!

Gemfile.lock

上記のGemfileで記述し、bundle isntallされたgemの依存関係を管理するためのファイルです

ファイルを実際に見ると枝分かれになって管理されています

README.md

サーバーなどの起動手順などの説明が記されているファイルです

まとめ

Railsのディレクトリとファイルの役割を紹介してきましたが、いきなり全てを覚えるのは大変ですよね

正直僕も紹介してきたものの全てを完璧に把握はできていません

なので、Railsを使いながら覚えていくことが大切です

ちなみに、

よく使うディレクトリ

app

config

db

test(spec)

はよく使うので、役割を把握しておくのがいいと思います

他に関してはあまり使わないので、必要なときに使いながら覚えておく程度でいいと感じます

そんな感じで!

ではでは!また🙇‍♂️