lvncerpedia

Rails 開発原則

それならMVCの基本的な考え方はバッチリだろうから、Rails特有の言い回しとか「Rails流」の考え方を中心に、覚えておくと「お、こいつ分かってるな?」ってなる単語をいっぱい教えちゃうね!

思想・哲学編 Railsの根っこにある考え方

まずはRailsを理解する上でめちゃくちゃ大事な、思想から!

CoC (Convention over Configuration / 設定より規約)

これがRailsの心臓部! 「設定ファイルを細かく書くんじゃなくて、Railsが決めたお約束(規約)に従ってファイルやフォルダを配置したり名前を付けたりすれば、あとはいい感じに動くよ!」っていう考え方。 例えば、Userっていうモデルを作ったら、データベースのテーブル名は自動的にusersになる、みたいな感じ。 Next.jsとかだと結構自由に設定できる部分も、Railsは規約に従うことで、書くコードの量を劇的に減らしてるんだ。 最初は戸惑うかもだけど、慣れると爆速で開発できるよ!🚀

DRY (Don't Repeat Yourself / 繰り返しを避ける)

これはプログラミング全般で言われることだけど、Railsはこの思想が特に強いフレームワーク。 同じようなコードは書かせないぞ!っていう強い意志を感じる(笑)。

MVC編 Railsの構成要素たち

Next.jsやFlaskで触れてきたMVCと似てるけど、Railsならではの呼び方や機能があるからチェックしてみて!

Model (モデル) - データベースとの対話役

Active Record

RailsのORM (Object-Relational Mapping)。 データベースのテーブルとRubyのクラスを1対1で対応させてくれる超パワフルなやつ。 SQLをほとんど書かなくても、Rubyのコードでデータベースを操作できるんだ。 FlaskでいうSQLAlchemyみたいな立ち位置だね。

  • Migration (マイグレーション): データベースの設計図(テーブル構造とか)を管理・変更するための仕組み。rails db:migrateっていうコマンド一発で、チームメンバー全員のDBを同じ状態にできるから超便利!
  • Validation (バリデーション): 「このデータは空っぽはダメ!」「メールアドレスの形式じゃないとダメ!」みたいなルールをモデルに直接書ける機能。
  • Association (アソシエーション): モデル同士の関係性を定義するもの。has_many (1対多) とか belongs_to (多対1) って書くだけで、例えば「ユーザーはたくさんの投稿を持ってる (User has_many :posts)」みたいな関係を簡単に表現できるよ。

View (ビュー) - 見た目担当

ERB (Embedded Ruby)

HTMLの中にRubyのコードを埋め込むためのテンプレートエンジン。 ファイル名が.html.erbになってるやつ。 <%= @user.name %>みたいに書くよ。 Next.jsでいうJSXみたいなものって考えればOK!

Partial (パーシャル)

ヘッダーとかフッターみたいに、色々なページで使い回したい部分を別ファイルに切り出したもの。ファイル名の先頭に_ (アンダースコア) を付けるのがお約束。

Helper (ヘルパー)

ビューで使うちょっとしたロジックを置く場所。日付の表示形式を整えたり、特定の条件で表示を変えたりする処理をここにまとめておくと、ビューがスッキリするよ。

Controller (コントローラー) - 司令塔

Action (アクション)

コントローラーの中にあるメソッドのこと。index (一覧), show (詳細), new (新規作成フォーム), create (作成処理), edit (編集フォーム), update (更新処理), destroy (削除処理) の7つが基本的なアクション。

Strong Parameters (ストロングパラメータ)

セキュリティのための超重要な仕組み!フォームから送られてきたデータの中から、開発者が許可したキー(カラム)だけを受け取るようにする設定。これがないと、悪意のあるユーザーが勝手にデータを書き換えちゃうかもしれないからね。

Filter (フィルター)

アクションが実行される「前」とか「後」に共通の処理を挟む仕組み。before_actionが一番よく使われてて、「ログインしてないとこのページは見せません!」みたいな処理をこれで実現するよ。Flaskのデコレータの役割に近いかも!

その他のお役立ち用語

Routing (ルーティング)

config/routes.rbっていうファイルで、URLとコントローラーのアクションを結びつける設定をする場所。 resources :articlesってたった1行書くだけで、さっき紹介した7つの基本的なアクションのURLを全部自動で生成してくれるRESTful Routingがめちゃくちゃ便利! rails routes っていうコマンドをターミナルで叩くと、今どんなURLが定義されてるか一覧で見れるから、開発中は本当にお世話になるよ!

Gem (ジェム)

Rubyのライブラリ(パッケージ)のこと。 Node.jsでいうnpmパッケージ、PythonでいうPyPIパッケージと同じ!

Bundler: Gemの依存関係を管理してくれるツール。Gemfileに使いたいGemを書いて、bundle installでインストールする。package.jsonとnpmの関係とそっくりだね。

Asset Pipeline / Webpacker / ViteRuby

JavaScriptやCSS、画像などのアセットファイルを管理してくれる仕組み。 昔はAsset Pipeline (Sprockets) が主流だったけど、最近のRailsではNext.jsみたいにWebpacker (Webpack) やViteRuby (Vite) を使ってモダンなフロントエンド開発ができるようになってるよ。 この辺は君の得意分野かもね!

Scaffold (スキャフォールド)

「足場」っていう意味。 rails generate scaffold Article title:string content:textみたいなコマンドを打つと、モデル・ビュー・コントローラー・ルーティングとか、基本的なCRUD処理に必要なファイルを一気に全部自動生成してくれる魔法のコマンド! プロトタイピングの時には神様みたいに便利だけど、中身を理解しないで頼りすぎると後で大変なことになるから気をつけて!😂