🛣️

Ruby on Railsの世界へようこそ ~CRUD処理と7つのアクションとルーティング~

2024/02/16に公開

はじめに

 私は現在、内定直結型のAPPRENTICEというカリキュラムに参加し、勉強をしています!

https://note.com/apprentice_jp/

 前回のチーム開発では、学習のために「フレームワークを使わない」で、1つのアプリを開発することに挑戦しました。

バックエンド処理の言語にRubyを選択した私は、フレームワークを封じられ、なかなかに厳しい開発が待っていました。

↓ そんなチーム開発の記録はこちら

https://zenn.dev/iranorih/articles/5d777bdd7f3359

 そして、今回ついにRuby on Rails(フレームワーク)の学習が解禁!

Railsを使いながら学習を進めた経験を踏まえて、以下のことをお話しします。

  1. Ruby on Railsの魅力
  2. CRUD処理について
  3. Railsの7つのアクションとルーティング

1. Ruby on Railsの魅力

 Railsは、学習をはじめてまだ3週間程度の私では語り切れないほど、多くの魅力をもつフレームワークです。その中で、私自身が感じたRailsの魅力を独断と偏見でお伝えします!

(1) コードが直感的に読める・書ける(初学者におすすめ!)

 そもそもフレームワーク自体が、「開発を簡単にし、効率よく開発を行うためのもの」です。その中でもRails(Ruby言語)は、様々なコードの書き方を許容する設定になっていて、直感的にコードを書いたり読んだりできる点が魅力の1つです。

例えば

ruby
3.times do
  puts "Hello, Rails!"
end

これは、「Hello, Rails!」という文字列を3回表示する、というプログラム(メソッド)です。

英語に近い形でコードを読み書きできるので、比較的簡単にコードの内容を想像することができます。

(2) 開発者にとって使いやすい!(CoCの採用)

 Rails では CoC (Convention over Configuration) という考え方を採用しています。これは「既定のルールに従えば、設定の手間を省くことができる」という意味で、「設定より規約」と直訳できます。つまり、このルールに従えば、設定を一つ一つ細かく行う必要がなくなるということです。

 具体的には、特定の名前を付けたファイルを特定の場所に置くだけで、「それが何の役割を果たすファイルなのか」をRailsが自動で判断してくれるのです。これにより、アプリの基本設定を素早く終えることができ、今回特化させたい機能の実装に集中して取り組むことができるのです。

(3) 安心の実績(GitHubなど)

 GitHubをはじめ、クックパッド・グノシー・クラウドワークス・食べログなど、大規模なWebアプリケーションサービスがRailsで開発されていることは有名な話です。(私は最近知って感動!)これらに共通する特徴から、CRUD処理(後述)を搭載した掲示板機能を軸とするWebアプリ開発において、Railsは非常に適したフレームワークであると言えるのではないでしょうか。

2. CRUD処理について

 CRUD処理は、Create(作成)、Read(読み取り)、Update(更新)、Delete(削除)の4つの操作の総称です。

  • Create(作成)

    • データベースに新しいデータを作成する操作
    • 例えば、新しいユーザーアカウントを作成する場合や、新しい投稿を追加する場合など
  • Read(読み取り)

    • データベースからデータを取得する操作
    • 例えば、ユーザーが特定の記事を閲覧する場合や、特定の条件に一致するユーザーを検索する場合など
  • Update(更新)

    • データベース内の既存のデータを更新する操作
    • 例えば、ユーザーがプロフィール情報を更新する場合や、記事の内容を修正する場合など
  • Delete(削除)

    • データベースからデータを削除する操作
    • 例えば、ユーザーがアカウントを削除する場合や、不要な記事を削除する場合など

 以上の説明を読んだら分かるように、「CRUD処理」はアプリケーションの基本的な機能を提供しています。これらの操作が適切に実装されている場合、アプリケーションはユーザーがデータを管理し、操作するための十分な機能を有していると言えます。

3. Railsの7つのアクションとルーティング

 最後に、Railsのアクションとルーティングについて解説をして、終わりたいと思います。Railsでは、これらのCRUD処理を次の7つのアクションとして定義することができます。

  • Create(作成): create
  • Read(読み取り): index, show
  • Update(更新): edit, update
  • Delete(削除): destroy

では、これらの処理を実装するまでの流れを具体的に見ていきましょう!

(1) ルーティング

 ルーティング(Routing)は、WebアプリケーションにおいてHTTPリクエストを受け取った際に、どのコントローラーのどのアクションを実行するかを決定するプロセスです。これにより、特定のURLに対するリクエストがどのように処理されるかが定義されます。

routes.rb
Rails.application.routes.draw do
    resources :articles
end

Railsでは、この1行を記述するだけで、CRUD処理に必要なURLと、それに対応する7つのアクションが自動的に生成されます。(localhost:3000/rails/infoで確認ができます)

 また、routes.rbに以下のように書くことで、URLを自分で指定することも可能となります。

routes.rb
Rails.application.routes.draw do
    get    "/",              to: "articles#index",    as: "articles"
    get    "/new",           to: "articles#new",      as: "new_article"
    post   "/create",        to: "articles#create",   as: "create_article"
    get    "/:id",           to: "articles#show",     as: "show_article"
    get    "/:id/edit",      to: "articles#edit",     as: "edit_article"
    patch  "/update/:id",    to: "articles#update",   as: "update_article"
    delete "delete/:id",     to: "articles#destroy",  as: "delete_article"
end

(2) ルーティング一覧

 (1)で示した画像にある表は、localhost:3000/rails/infoで確認することができます。自分が設定したルーティングを一覧で見ることができるので、非常に便利です!

この表を次のように見れば、ばっちり理解できます。

名前付きルート HTTPリクエスト URL Controller#Action
articles_path GET / articles#index
new_article_path GET /new articles#new
create_article_path POST /create articles#create
show_article_path GET /:id articles#show
edit_article_path GET /:id/edit articles#edit
update_article_path PATCH /update/:id articles#update
delete_article_path DELETE /delete/:id articles#destroy
名前付きルート Helper(Path/Url)
  • 名前付きルートは、Rails内で変数のように使うことのできるメソッドです。
    • 例えば、「新規投稿ページ」へのリンクを作るときにも、
      <%= link_to "新規投稿", new_article_path %>
      のように、URLを指定する際に使うことができます。
    • このように記述することで、もし後からURLを変更することになっても、routes.rbの中身だけを変更すればよいのです。
HTTPリクエスト HTTP Verb
  • HTTPリクエストは、、クライアントがWebサーバーに送信する要求のことです。クライアントが要求した特定のアクションに対して、サーバーは以下のような適切なレスポンスを返します。
    • GET

      • リソースの取得を要求します。主にブラウザがウェブページを取得するために使用されます。
    • POST

      • サーバーにデータを送信してリソースの作成や処理を要求します。フォームの送信やデータの登録に使用されます。
    • PATCH

      • リソースの一部を更新するために使用されます。既存のリソースを置き換える場合に使用されます。
    • DELETE

      • リソースの削除を要求します。
Controller#Action
  • Controller#Actionは、特定のHTTPリクエストがどのコントローラのどのアクションによって処理されるかを示します。
    • 例えば、UserController#createは、UserControllerという名前のコントローラのcreateアクションを指します。

(3) コントローラ

 コントローラでは、HTTPリクエストが到着すると、それを処理し、適切な処理を行うためにモデルに指示を出し、ビューを呼び出すなどの役割を果たします。コントローラは通常、特定のリクエストパスやアクション(処理)に関連付けられます。

 また、コントローラ内に書かれたメソッドを、アクションと呼びます。HTTPリクエストが特定のURLに到着すると、そのリクエストを処理するために対応するアクションが実行されます。アクションは通常、データの操作や生成、ビューの表示などを行います。

おわりに

 いかがだったでしょうか。Ruby on Railsの魅力や使いやすさが伝わっていたら嬉しいです。それでは、また次の記事でお会いしましょう!!!

https://railstutorial.jp/

Discussion