46
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【35歳未経験でも理解できた】Ruby on Rails 前編

46
Posted at

こんにちは。
35歳未経験からWebエンジニアを目指し、日々ステートレスな自分の脳みそと毎日戦っている者です。

この記事では、Railsの基礎からユーザー登録機能までを分かりやすく解説します!

結論(先にシンプルに)

Railsの仕組みを一言でいうと、「超優秀なレストランのオペレーション」です!
データベースは「冷蔵庫」、ビュー(画面表示)は「盛り付け」、そしてそれらを取り仕切るのが「コントローラ-(店長)」です 。

これだけ頭の片隅に置いて、サクサク見ていきましょう!

本編

1. Rubyの正体:「すべてがオブジェクト」って何?

Railsの土台であるRubyは、「すべてがオブジェクト」という思想で作られています 。
オブジェクトとは、ズバリ「データ(属性)」と「処理(メソッド)」をひとまとめにした便利な部品のことです 。

例えるなら: 「スマホ」です。

データ(属性) = 画面サイズ、バッテリー残量、本体の色

処理(メソッド) = 電話をかける、写真を撮る、アプリを開く

Rubyの世界では、文字や数字もすべてこの「スマホ」のように便利な機能(メソッド)を持った部品として扱われます 。だから直感的に操作しやすいんですね。

2. MVCアーキテクチャ:レストランの最強チーム

Webアプリの基本構成である「MVC(Model-View-Controller)」。これがRailsの心臓部です 。
役割を3つに分けることで、効率よく開発する設計手法(アーキテクチャ)のことです 。

【図解】MVC = レストランの業務フロー

お客さん(ブラウザからのアクセス)
   │
   ▼
[ ルーティング (routes.rb) ] = 案内係
「ご案内します!担当の者を呼びますね!」 
   │
   ▼
[ Controller (C) ] = 店長(全体の司令塔)
「シェフ、〇〇の食材を出して!ウェイター、綺麗に盛り付けて!」 
   │
   ├──▶ [ Model (M) ] = シェフと冷蔵庫(DBとのやり取り)
   │    「データベース(冷蔵庫)からデータを取り出します!」 
   │
   └──▶ [ View (V) ] = ウェイター(画面表示)
        「HTMLにデータを埋め込んで(ERB)、綺麗に表示します!」

Railsでは、標準で「開発(development)」「テスト(test)」「本番(production)」の3つの環境(店舗)が用意されており、状況に応じて自動で切り替わってくれます 。至れり尽くせりですね!

3. データベースとActive Record:敏腕通訳と関所

データベースを直接操作するには「SQL」という別の言語が必要ですが、Active Record という機能を使えば、Rubyのコードだけで直感的にデータベースを操作できます 。いわば「SQL通訳の秘書」です。

また、データベース周りには重要な機能がいくつかあります。

1.マイグレーション
   データベースの設計図(建物の増改築履歴)を管理します 。


2.バリデーション
 「パスワードは⚪︎文字以上!」「メアドは正しい形式で!」というように
   変なデータが入らないように弾く「関所の門番」です 。


3.has_secure_password
  パスワードをそのまま保存せず、暗号化(ハッシュ化)して
  安全に守ってくれる凄腕の金庫番メソッドです 。

4. フロントエンドとDRY原則:ハンコで手間を省く

画面表示(View)では、HTMLの中にRubyを埋め込める「ERB」を使います 。
ここで大事なのが「DRY原則(Don't Repeat Yourself:同じことを繰り返すな)」です 。

例えるなら: 毎回手書きで会社の住所を書くのではなく、「ゴム印(スタンプ)」を作ってポンポン押すイメージ。

Railsでは、共通のヘッダーなどを「レイアウト」や「パーシャル(部分テンプレート)」として切り出すことで、このゴム印を作ります 。

5. TDD(テスト駆動開発)とデバッグ:試験ロボットを雇う

Railsでは自動化テストが強力です。「red(失敗) → green(成功) → REFACTOR(コード整理)」のサイクルを回すことで、直したはずのバグが復活する「回帰バグ」を防ぎます 。
これは、お客様に料理を出す前に「自動で注文を確認してくれるロボット」を雇うようなものです 。

エラーが出たら、コンソールや debug メソッドを使って、一時停止しながら原因を探りましょう 。

6. ユーザー登録機能:Webの受付窓口

ここまでの知識を総動員して作るのがユーザー登録機能です。

form_with を使って、Active Record(DB)と連携した入力フォーム(受付票)を作ります 。

登録成功時は、リダイレクトと共に flash で「登録完了しました!」という1回限りの一時メッセージを表示します 。

失敗した時は、エラーメッセージと共にもう一度入力フォームを表示(再描画)して、お客さんに直してもらいます 。

おまけとして、「Gravatar」という外部サービスと連携すれば、メールアドレスをもとにサクッとプロフィールアイコンを表示させることも可能です 。

まとめ

ここまでのポイントを3行でまとめます。

・オブジェクト は「データと処理をまとめた便利な部品」である 。

・MVC は「店長(C)・シェフ(M)・ウェイター(V)」の最強レストラン体制 。

・Active Record はRuby語をDB語に翻訳してくれる敏腕秘書。

たくさんの用語が出てきて最初は混乱するかもしれません。
ですが、まずは役割をイメージできればRailsはとっても親切なフレームワークだと感じます!

皆様の学習のお力になれたら幸いです。
次回はRails後編をお届けします!


PRUMのエンジニアの95%以上は未経験からの採用です。
よければコーポレートサイトにも遊びに来てください。
:arrow_forward: コーポレートサイト

エンジニアの方に役立つ記事をまとめたサイトも運営しています。もしご興味あれば覗いてみてくださいね。
:arrow_forward: エンジニアに役立つ記事サイト

46
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?