みなさん、今日もLaravelしていますか?今回の記事では Laravel-erにぜひ試してほしい省力化ツール5選 を紹介します。ご興味のあるLaravel-erの方は、ぜひご覧ください。開発するのに役に立つと思います。
MySQL Workbench
「そんなの知ってるよ!」という声が聞こえてきそうです。待って、まだタブを閉じないで!
みんな大好きMySQL Workbenchには、あまり使われていない便利機能がたくさんあります。
まず、このツールのすごいところは、テーブル間・カラム間の関係をEER図(拡張実体関連モデル)でエクスポートできるということです。
EER図があれば、データベースの構造は一目瞭然です。このエクスポート機能は、チームメンバーや顧客に、アイデアや設計を明確に伝えるのに役立ちます。
例として、簡単なデータベースを設計してみます。
usersテーブルとproductsテーブルを、1:Nのリレーションで結びつけます。
方法1:ちまちま作る
テーブルを2つ作って…
画面をusersテーブルに切り替えて、カラムを入力…
もう一つのproductsテーブルに画面を移動して、またカラムを作成。
方法2:さくっと作る
全部1画面のEER図上で完結。
リレーションもドラッグ&ドロップで一発設定!
いかがでしょうか?
EERモデルでデータベースを設計するほうが、手数も少なく、直感的なのではないでしょうか。
EER図のいいところは、ドラッグ&ドロップでだいたいのことが完結するということです。パネルからテーブルをドラッグしてきて、テーブル名、列を入力し、リレーションをドラッグで作成する。たったこれだけです。
さらに、EERには、既存のDBから自動生成できる、つまり、方法1でテーブルを作ったあとも、方法2に移行できるという強みがあります。
EER図は、画像でエクスポートすることもできますし、.mwb形式でチームリーダーに送って、直接修正してもらうようなことも可能です。
MySQL Workbenchの機能はこれだけではありません。
Laravelのマイグレーションを、MySQL Workbenchから直接作成
開発を続けていくと、テーブルにカラムを追加することもありますし、初期に決めたDB設計を変更する(カラム名・最大文字数の変更など)必要も出てきます。このような場合には、Laravelにマイグレーションを追加して対応しますね。
マイグレーションとは、データベースのバージョンコントロールのような機能です。マイグレーションを共有するだけで、データベースのスキーマの更新を、チーム内で簡単に共有できます。
しかし、このマイグレーションファイル作成のなんて面倒なこと! DBが複雑になればなるほど、たった一つの変更についての整合性の確認に、時間と手間がかかってしまいますし、プロジェクトの開始時に至っては、30近いマイグレーションを一度に作成しなければならないときもざらにあります。
実は、このマイグレーションも、MySQL Workbenchから作成可能なのです。
そのプラグインはMySQL Workbench Export Laravel 5 Migrations Plugin( https://github.com/beckenrode/mysql-workbench-export-laravel-5-migrations )です。ガイドに従ってダウンロードし、MySQL Workbenchに適用します。あとは、MySQL Workbenchで以下のようにクリックしていくだけです。
ここからLaravel用のマイグレーションファイルが生成できます。
マイグレーションファイルが生成されました!
最後に、php artisan migrate コマンドを実行すればマイグレーション完了です。
InfyOmでモデル生成
さて、これでDB設計を修正し、マイグレーションも作成できました。もう一つ、やらなければならないことが残っていますよね。そう、モデルの作成です。
みなさん、InfyOm( http://labs.infyom.com/laravelgenerator/docs/5.8/installation )はもう使っていますか?
InfyOmとは、モデル、リポジトリ、リクエストなど、ほとんどのデータベース操作を生成できるライブラリです。しかし、自分のチームのディレクトリ構造やコーディング規約によって、生成すべきファイルの形式が異なるでしょうから、とりあえずここではモデル生成ためだけにInfyOmを使うことにしましょう。
(Laravelのバージョンに対応したInfyOmのバージョンをインストールしてくださいね)
LaravelのモデルはORM形式ですから、モデル生成の事前段階としてデータベースに接続する必要があります。ローカル環境でHomesteadを実行しているなら、vagrant sshしておいてくださいね。
では、Userテーブルについてモデルを作成してみましょう。
- まずはマイグレーションが適用されているかチェック。
- php artisan infyom:scaffold User –fromTable –tableName=users
- モデルが生成されました!
なんということでしょう。これまで、データベース設計の修正~モデル更新まで、4時間ぐらいで見積もっていたところが、ツールを活用すればものの5分ですべて完了してしまいました。
詳しいステップはInfyOmも参照してください。
Laravel API Documentation GeneratorでAPI Docsの生成
他のエンジニアと共有しなければならないのは、データベースの仕様だけではありませんね。APIの仕様も同様に、作成・修正したらドキュメントを更新しなくてはなりません。これを怠ると、のちのち他の人が直接APIの仕様について質問してきて、長い時間をかけて昔の記憶をひねり出しながら、その対応をしなければならなくなります。
そこで、Laravelで作ったAPIのドキュメントを超簡単に生成するツールに、API Docs Generatorがあります。
Laravel API Documentation GeneratorはなんとLaravelアプリのルーティング情報から自動でドキュメントを生成してくれます。Laravel API Documentation Generatorはインストールも超簡単で、数ステップでドキュメントを作成できます。
そして
php artisan apidoc:generate
これだけで以下のようにエクスポートされます。
Ngrok
Paypal関係の開発をしていたときのことです。Paypalは、クライアントサイドで決済を呼ぶので、サーバのやるべきことはデータベースへの保存だけです。
PaypalのようなモダンなサイトはWebhookを使うようになってきていて、私がローカルに立てたサーバもPaypalからのWebhookを受信する必要がありました。
ところが、Webhookの送信先はパブリックサーバしか指定できませんし、TLS/SSL (HTTPS)をサポートする必要があります。テストのためだけにこれらをセットアップするのは極めて面倒です。なんとかならないものでしょうか?
こんなときは、Ngrok( https://ngrok.com/ )が助けてくれます。
Ngrokとは、localhostで動いているサーバーを、LANの外からアクセスできるようにできるツールです。vagrantなどのローカル環境を一時的に外部に公開できるため、webhookなどの受信が必要なシステムでも、ローカルで動かすことが可能となります。
Ngrokの設定は一瞬です。
./ngrok http -host-header=rewrite test-site.local:80
※test-site.local:80はローカルホストで設定したドメイン名
このコマンドで、Ngrokはというドメインを作成して、そのドメインを公開してくれました。これでwebhookのイベントを受信できます。
この方法は、Webhookだけではなく、Googleアカウント認証など、パブリックアドレスを要求するサードパーティツール全般のテストに利用できます。
まとめ
以上 Laravel-erにぜひ試してほしい省力化ツール5選 を紹介しました。上記のツールと同じような機能を持っているほかのツールがたくさんありますが、自分のプロジェクトに合わせて、最適なツールを選んでみてください。