
マイケル
みなさんこんにちは!
マイケルです!
マイケルです!

エレキベア
こんにちクマ〜〜

マイケル
いきなりだけど今日は
Ruby on Rails の環境構築と使い方について見ていくぜ!
Ruby on Rails の環境構築と使い方について見ていくぜ!

エレキベア
Railsクマか〜〜〜
前も少し触ったりしてたクマね
前も少し触ったりしてたクマね

マイケル
Unityと絡めて少し触ったことがあったね。
今後仕事でも触る機会が出てきそうだから、これを機に使い方をまとめて
思い出しておこうと思ったんだ!
今後仕事でも触る機会が出てきそうだから、これを機に使い方をまとめて
思い出しておこうと思ったんだ!

【Unity】UnityWebRequestを使ってCRUD機能を実装する【Ruby on Rails】
マイケルみなさんこんにちは!マイケルです!エレキベアこんにちクマ〜〜〜マイケル今日は UnityWebRequest の使い方について見ていくよ!エレキベアUnityWebRequest...
↑UnityとRailsで簡単なCRUD処理を作成した

エレキベア
なるほどクマ
確かにこういうのはまとめておかないとすぐ忘れちゃうクマからね〜〜
確かにこういうのはまとめておかないとすぐ忘れちゃうクマからね〜〜

マイケル
今回の記事では環境構築からScaffold機能を用いたアプリ作成までやっていこうと思うよ!
早速見ていこう!!
早速見ていこう!!
Ruby on Railsとは

マイケル
Ruby on Railsとは、Rubyで構築されたWebフレームワークで
下記のような特徴があります!
下記のような特徴があります!
Ruby on Railsとは
- MVCモデルを採用している
- CoC(設定より規約)、DRY(同じことを繰り返さない)といった設計哲学に基づいている
- 自動テストを行う文化を尊重している

マイケル
かなりカッチリしたMVCフレームワークで、触っていく内に命名等の規約の厳格さも分かってくると思います。
その分、設計に悩むことが少なくなり開発の効率や可読性も向上する、といったメリットが挙げられます。
その分、設計に悩むことが少なくなり開発の効率や可読性も向上する、といったメリットが挙げられます。

マイケル
Webアプリはもちろん、モバイルアプリのRESTfulなAPIサーバとしてもよく使用されています。
最近はGoやKotlinの人気が出てきたり、Laravelといったフレームワークも出てきていますが、今でも人気を誇るフレームワークです。
最近はGoやKotlinの人気が出てきたり、Laravelといったフレームワークも出てきていますが、今でも人気を誇るフレームワークです。

エレキベア
Railsはみんな大好きなイメージクマ〜〜〜〜

マイケル
また、Railsガイドやチュートリアルといった日本語のドキュメントが充実しているのも特徴です。
自分もとりあえずチュートリアルは通しでやっておきましたが、無料でこのレベルの教材はすばらしいなと思いました!
(無駄に長いですが・・・)
自分もとりあえずチュートリアルは通しでやっておきましたが、無料でこのレベルの教材はすばらしいなと思いました!
(

エレキベア
Rubyの開発者が日本人なだけあって、日本でのフォローは厚そうクマね
Rails環境構築とアプリの雛形作成

マイケル
概要について知ったところで早速環境を作ってみましょう!
今回は、2022年11月時点で最新である、Rails7系を使って構築していきます!
今回は、2022年11月時点で最新である、Rails7系を使って構築していきます!
OS | Mac |
Ruby | 3.1.2 |
Rails | 7.0.4 |

マイケル
Dockerを使用する方法もありますが、複雑さが増してしまうため
ローカルに環境を構築する方向で進めます。
Dockerを使用したい方は、下記あたりの記事をご参照ください!
ローカルに環境を構築する方向で進めます。
Dockerを使用したい方は、下記あたりの記事をご参照ください!
ComposeとRails – Docker公式ドキュメント
Rails 7 + MySQLの環境構築をDocker composeで作る

エレキベア
Docker公式の手順はRails5になってるクマね・・・
Rubyのインストール

マイケル
まずはRubyをインストールします。
公式ページから直接ダウンロードしてもよいですが、自分の場合はanuenv環境を使用しているため下記のコマンドでインストールしました。
公式ページから直接ダウンロードしてもよいですが、自分の場合はanuenv環境を使用しているため下記のコマンドでインストールしました。
Ruby ダウンロード
↑直接ダウンロードする場合はこちら

エレキベア
env系で管理するのが切り替えが楽でおすすめクマ〜〜〜
Railsのインストール

マイケル
次はgemコマンドでrailsをインストールします。
gemとはRubyのパッケージのことで、RubyGemsというパッケージ管理システムで管理されています。
通常は下記のようにインストールすることができます。
gemとはRubyのパッケージのことで、RubyGemsというパッケージ管理システムで管理されています。
通常は下記のようにインストールすることができます。

エレキベア
npmやpipと同じ類クマね

マイケル
上記のように直接railsを指定してインストールしてもよいのですが、今回はグローバルな環境を汚さないよう、bundlerというパッケージを使用してアプリ配下でのみ必要なgemを指定して使用するようにしてみます。

マイケル
bundlerについてはRuby2.5以降はデフォルトで入っているためインストールする必要はないのですが、Rails7のインストール時にはエラーが出てしまうため。下記コマンドでバージョンを最新に上げておきます。

エレキベア
デフォルトのbundlerのバージョンがちょっと古いのクマね

マイケル
アプリ配下でのみ使用したい場合には、Gemfileというファイルを用意して
使用するパッケージとバージョンを指定します。
下記のようにフォルダを作成して bundle init コマンドでGemfileを作成しましょう!
使用するパッケージとバージョンを指定します。
下記のようにフォルダを作成して bundle init コマンドでGemfileを作成しましょう!

マイケル
そして使用するrailsのバージョンを下記のように追加します。
↑インストールするRailsを追加

マイケル
Rails7.0.0はRuby3系に対応していないようなので、7.0.1以上という形で指定しています。
この状態で bundle install コマンドを実行してgemをインストールしましょう。
この時、指定したパスの中にパッケージがインストールされます。
この状態で bundle install コマンドを実行してgemをインストールしましょう。
この時、指定したパスの中にパッケージがインストールされます。

マイケル
これでグローバルな環境を汚すことなくプロジェクト配下でのみRails7を使用する準備ができました。
bundle exec ~ はbundleでインストールしたライブラリを実行するコマンドです。
Railsのバージョンが7系で表示されていれば成功です!
bundle exec ~ はbundleでインストールしたライブラリを実行するコマンドです。
Railsのバージョンが7系で表示されていれば成功です!

エレキベア
なるほどクマ
bundleコマンドはgemを使用する範囲を限定してくれる機能なのクマね
bundleコマンドはgemを使用する範囲を限定してくれる機能なのクマね

マイケル
Gemfileや生成されたGemfile.lockを見て判断しているみたいだね
このようにbundleコマンド経由でインストールすると異なるバージョンで複数のアプリを管理することも容易になるよ!
このようにbundleコマンド経由でインストールすると異なるバージョンで複数のアプリを管理することも容易になるよ!
アプリ作成と起動

マイケル
準備ができたところでアプリを作成しましょう!
rails new コマンドで雛形を作成することができます!
rails new コマンドで雛形を作成することができます!

マイケル
作成が完了したら rails server コマンドでサーバを立ち上げて、
「http://127.0.0.1:3000」を開いてみましょう!
「http://127.0.0.1:3000」を開いてみましょう!

マイケル
このようにRailsのページが表示されれば完了です!!

エレキベア
やったクマ〜〜〜〜
フォルダ構成を見てみる

マイケル
アプリを作成したところで、メインとなるフォルダ構成についても軽く見てみよう!
app

マイケル
まずはアプリケーション本体となるappフォルダです!
こちらはメインとなる MVC(models、controllers、views)のコードが格納されてる他、
メール機能(mailers)や、リアルタイム通信(channels)といった機能もデフォルトで格納されています。
こちらはメインとなる MVC(models、controllers、views)のコードが格納されてる他、
メール機能(mailers)や、リアルタイム通信(channels)といった機能もデフォルトで格納されています。

マイケル
とはいえ、最初の内は使わない機能も多いと思うので、
そのような時はアプリ作成時に –skip-XXX オプションを付けることで不要な機能の作成をスキップすることができます!
そのような時はアプリ作成時に –skip-XXX オプションを付けることで不要な機能の作成をスキップすることができます!
↑不要な機能の作成はスキップできる

エレキベア
最初はスキップしておいた方が理解しやすそうクマね
config

マイケル
configフォルダの中には、各種設定ファイルが格納されています。
特によく見るのは ルーティング情報が記載されている routes.rb と、DB情報が設定されている database.yml ですね!
特によく見るのは ルーティング情報が記載されている routes.rb と、DB情報が設定されている database.yml ですね!

マイケル
ちなみにデフォルトのDB情報は下記のようにSQLiteが指定されています。
こちらの情報を変更することで MySQL や PostgleSQL といったDBに切り替えることができます。
こちらの情報を変更することで MySQL や PostgleSQL といったDBに切り替えることができます。

エレキベア
SQLiteはお手軽クマからね〜〜
db

マイケル
dbフォルダ内には実際のデータや、テーブル定義、seedデータが格納されます。
初期状態だと特に指定されているものはない状態です。
初期状態だと特に指定されているものはない状態です。

エレキベア
この辺りは今後作っていくクマね
Scaffoldでテンプレート作成

マイケル
雛形ができたところで、今度はRailsのScaffold機能を用いて
テンプレートを作成してみます!
テンプレートを作成してみます!

エレキベア
MVCやルーティングも含めて一気に作成してくれる機能クマね

マイケル
実際のアプリ開発ではあまり使うことはないと思うけど、
ざっくりとイメージを掴むのには丁度いいと思うので触ってみましょう!
ざっくりとイメージを掴むのには丁度いいと思うので触ってみましょう!
テンプレート作成

マイケル
Scaffoldでテンプレートを作成するには、rails generate scaffoldコマンドを使用します。
今回は content 項目だけを持つ Taskテーブル を定義して作成してみます!
今回は content 項目だけを持つ Taskテーブル を定義して作成してみます!

マイケル
実行すると、MVCのコード含めて様々なファイルが作成されるのが確認できます・・・

エレキベア
何ができたか分からないクマが一気に作ってくれたのだけは分かるクマ〜〜
テーブル作成

マイケル
db/migrateフォルダを見てほしいのですが、
下記のようにテーブル定義が記述されたファイルが作成されていることが分かります。
下記のようにテーブル定義が記述されたファイルが作成されていることが分かります。

マイケル
Railsではこのフォルダ内に作成されたマイグレーションファイルを元にテーブルを作成します。
rails db:migrate コマンドを実行し、テーブルを作成しましょう!
rails db:migrate コマンドを実行し、テーブルを作成しましょう!

エレキベア
この辺はLaravelに似てるクマね〜〜
routesの確認

マイケル
そして次はルーティング情報を見てみます。
Config/routes.rb ファイルを見てみると、下記のように「resources :tasks」という形で指定されていることが分かります。
Config/routes.rb ファイルを見てみると、下記のように「resources :tasks」という形で指定されていることが分かります。

マイケル
このroutes.rbには基本的に get や post といった一般的なルーティング形式で記述されるのですが、resourcesはリソース操作を行うための複数のルーティングがまとめて指定される形となります。

エレキベア
一覧やデータ作成、更新等がまとめられているのクマね

マイケル
実際にどのようなURLになっているのか?については
rails routes コマンドで確認することができます。
rails routes コマンドで確認することができます。

マイケル
resources指定だけでこれだけのルーティングがまとめて指定されるわけですね

エレキベア
リソース操作に必要なルーティングが揃っているクマね
起動して確認

マイケル
それでは rails server コマンドで起動して
実際に作成されたテンプレートを触ってみましょう!
実際に作成されたテンプレートを触ってみましょう!

マイケル
各URLを指定して開くと、下記のようにデータ作成や表示が行えることが確認できます!

エレキベア
基本的なCRUD機能がコマンド一つで作成されるのはすごいクマね
MVCの関連性

マイケル
URLで指定のパスを開くと、
・controllerの対象のアクション(関数)が呼ばれる
・controllerのアクションに対応したviewが表示される
といった流れで画面が表示されます。
・controllerの対象のアクション(関数)が呼ばれる
・controllerのアクションに対応したviewが表示される
といった流れで画面が表示されます。
↑controller内の各アクションが呼ばれる
↑アクションに対応したviewが表示される

マイケル
viewクラスはデフォルトではerbというRubyの埋め込みができる形式が採用されています。
また、modelに関してもapp/modelsフォルダ配下に作成されていますが、データを作成しただけだと特に何も指定されていません。
また、modelに関してもapp/modelsフォルダ配下に作成されていますが、データを作成しただけだと特に何も指定されていません。
↑modelには何も指定されていない

マイケル
項目名はテーブル定義の方を参照していて、バリデーションやテーブル同士の関連、固有の処理を定義したい場合に追記する使い方になります。

エレキベア
シンプルで分かりやすいクマ〜〜〜
Railsコンソールでのデータ操作

マイケル
Railsコンソールという機能を使用することでRubyの処理を確認することができます。
こちらの機能を用いてmodelのデータを操作してみましょう!
コンソールには rails console コマンドで入ることができます。
こちらの機能を用いてmodelのデータを操作してみましょう!
コンソールには rails console コマンドで入ることができます。

マイケル
modelで定義したテーブルに関しては、SQLを使わずにTask.allというような独自の形式を用いてテーブルを操作することができます。
↑SQLを使わずに操作できる

エレキベア
わざわざSQLを書かなくてもいいのは便利クマね

マイケル
他にもid指定で検索したり、データを作成したりなど、
一般的なテーブル操作は行えるようになっています!
一般的なテーブル操作は行えるようになっています!

マイケル
その他の使い方や詳細についてはドキュメントを見てみましょう!

エレキベア
これは慣れてしまうと離れられなくなりそうクマ〜〜〜
おわりに

マイケル
というわけで今回はRailsを軽く触ってみました!
どうだったかな??
どうだったかな??

エレキベア
まだ触りクマが、いろんなものがデフォルトでサポートされていて
開発効率がよさそうな感じがしたクマ〜〜〜
開発効率がよさそうな感じがしたクマ〜〜〜

マイケル
名前の通りレールがしっかり敷かれている感じがして
触っていても気持ちがいいね!
触っていても気持ちがいいね!

マイケル
今回はScaffoldで作成したけど、次は一から簡単なアプリを作ってみよう!
次回もお楽しみに〜〜〜〜!
次回もお楽しみに〜〜〜〜!

エレキベア
クマ〜〜〜〜