Ruby on RailsエンジニアがLaravelを使ってみた

こんにちは、GMOアドマーケティングのR.Yです。

今回はLaravelでWebアプリケーションを作っていきたいと思います。普段はRuby on Railsを使って開発しているのですが、今回は自分の見識を広げるためにRuby on Rails以外でWebアプリを作ってみる、という趣旨でいきたいと思います。

Laravelとは

Laravelとは2011年6月にリリースされたPHPのフレームワークです。

Google Trend(他PHPフレームワークとの比較)
PHPフレームワークの中では比較的後発ながら、今や世界一のシェア率を誇ります。MVCモデルを使っており、豊富なコマンドやプログラムの拡張性の高さが特徴としてあげられます。

同じWebフレームワークであるRailsと比較しても、

Google Trend(Ruby on Railsとの比較)
2019年を境に常にRailsを上回る人気度で推移しています。

環境

PHP 7.1.33
Laravel Framework 5.8.38

準備

RubyのBundlerのように、PHPではComposerでパッケージを管理しているので事前にインストールしておきます。

インストーラーをインストールします。

laravelコマンドを使用するためにパスを通します。

PHPをインストール。

Laravelアプリケーション作成。

サーバ起動。

http://127.0.0.1:8000にアクセス


※本記事の以降の画像はすべて当社が作成したものです
この画面が確認できたら準備OK。固有のコマンドに違いはあるものの、各種インストールからアプリケーション作成、サーバ起動などここまでの流れはRailsとほぼ同じで非常に快適!

ログイン機能

Laravelには認証機能やそれに必要な諸々を一瞬で作ってくれるコマンドがあるので実行します。

認証機能作成と同時にUserモデルとUserテーブルのマイグレーションファイルができました。

マイグレーションファイルができたので↓を実行しマイグレート

見事成功!

http://127.0.0.1:8000/loginから実際にログインできます。


Railsで同様のことをやろうとすると、Gemにdeviseを追加するなどしてから画面とルーティングの設定を行って初めてログインできるので、認証機能やそれに必要な画面をコマンド一つで作ってくれるのはとても便利!!!!!

一覧画面作成

次にCRUDを試してみたいので、アカウント一覧画面を作っていきます。ここは何の一覧でも良いのですが何となく今回はアカウントでいきます。

まずマイグレーションファイルを作成

↑のコマンドを実行し、それによって作成される database/migrations/2021_07_08_092258_create_accounts_table.phpを↓のように変更します。
※ファイル名は人により異なります。

修正後↓を実行しマイグレート

Migration table created successfully. が表示されればOK。
ここまでのマイグレーションファイルの作成、コマンドでマイグレートの流れはRailsとほぼ同じ。

続いて↓でアカウントコントローラを作成します。

コントローラができたらroutes/web.phpを↓のように変更します。

これで/admin/accountsのリクエストに対してアカウントコントローラのメソッドを呼ぶことを決めておきます。ルーティングに関しては、書き方はRailsと似ているのですがRailsよりも少しごちゃごちゃしているなと思いました。

そしてAdmin/AccountController.phpを↓のように変更。

これでhttp://127.0.0.1:8000/admin/accountsにアクセスした時にアカウント一覧の情報とアカウント一覧画面を組み合わせてブラウザに渡す処理が完成しました。LaravelもRailsもMVCモデルを使用しているのでここらへんはそっくりな印象です。

一覧画面は別で用意する必要があるので、resources/views/admin/accounts.blade.phpを作成し中身を↓のようにします。

変更後サーバーを起動しhttp://127.0.0.1:8000/admin/accountsを確認してみます。

これでOK!アカウントが表示されてないですが、そもそもアカウントが1人も登録されていないのでこれで大丈夫。

登録画面

続いて一覧画面に登録画面へのリンクを作ります。まずaccounts.blade.phpに↓を加えます。

続いてAccountsControllerで

をindexメソッドの下に追加します。これで「アカウント登録へ」を押した時にアカウント登録画面へ遷移する機能を追加しました。

最後に登録画面を作ります。先ほどと同じような手順でresources/views/admin/account_create.blade.phpを作成し↓のようにしました。

これで登録画面完成です。確認してみましょう。



完成!!!

登録機能

登録画面を作成できましたが、いじってみるとわかりますが登録はできません。この段階では登録画面を作っただけで登録できるわけではありません。なので「登録ボタン」を押した時にDBに登録する機能を実装していきます。まずアカウントコントローラで以下のstoreメソッドをcreateメソッドの下に追加します。

これによって「Createボタン」が押された時に入力されている名前と年齢を受け取ってアカウントを作成するメソッドが完成しました。これで登録処理もできるようになったので試しに登録してみましょう。


追加できました!!

本当はCRUD全て試したかったのですが、結構長くなってしまいそうなのでここまで。

まとめ

今回はLaravelを使って簡単なWebアプリケーションを作ってみました。使ってみた感想としては、マイグレーションを使ったDBの変更や基本的なCRUDのやり方などRailsと似ている部分が多く直感的に扱うことができたのでとても使いやすかったです。普段Railsを使うことが多く、LaravelやPHPならではの書き方には少し違和感を覚えるところがありましたが、Railsがある程度できれば問題なく開発できそうだなと感じました。また、Railsと比べて便利なところも多く、特に認証機能とログイン関連の画面を一瞬で作ってくれるコマンドはRailsにはないので非常に便利だなと感じました。

一点気になった点として、Laravelは開発の規則が緩く色々な書き方ができるというところがありました。Railsではコントローラーやモデルの命名規則であったりディレクトリ構成が最初から決まっていますが、対してLaravelはそれらがRailsほどしっかり決まっていません。なので、Railsとは違って比較的自由な規則で開発できるのでそこは利点だと思うのですが、開発の規模が大きくなるにつれてこれらの規則が曖昧になり、自由度の高さが裏目に出てしまう場合もありそうだなと感じました。ここら辺の仕様については一長一短なので、RailsとLaravelで迷ったら自分の開発スタイルに合わせて決めれば良いのではないでしょうか。また、今回のような簡単な開発ではそこまで気にならなかったので、規模の小さい開発の場合はLaravelの方が適しているのではないかと感じました。

Laravelはリリースされたのが2011年ということで、2004年にリリースされたRailsと比べるとどうしても記事や書籍の数で劣ってしまうようです。しかし、シェア率は年々上昇していてRailsを追い抜く勢いなので、いつかLaravelの方が主流になる時代が来るかもしれませんね。個人的にはRailsの方が好きですが、Laravelも触ってみて面白いなと感じたので機会があればまた使ってみたいです!

以上ここまで読んでいただきありがとうございました🙇‍♂️