BLOG ブログ

エンジニアブログ

2016.09.26

【Yii2.0】10秒でモデルが書ける技を手に入れた話。

こんにちは。新規事業部の倉澤です。
わたしは現在、来年2月にリリース予定の新規サービスの開発を担当しており、四苦八苦な毎日を過ごしております。
(なにを作っているかはまだお話しできませんが、リリース予定が近づいたらお知らせするのでプレスリリースのチェックをお願いします!)

新規サービスを開発するにあたり、言語は一番慣れ親しんでいるPHPで作成することにしたのですが、 フレームワークを今まで使ったことがないYii2.0にチャレンジしてみることにしました。
今回はそのYii2.0でmodelを10秒で作成できる技をご紹介しようと思います。
Yii 2.0 http://www.yiiframework.com/doc-2.0/guide-intro-yii.html

われらが手に入れた新武器 Gii

その技とはGiiのことです。
Gii http://www.yiiframework.com/doc-2.0/guide-start-gii.html

GiiはYiiのコード生成機能でGUIから必要なコードをモダンに生成してくれます。
詳しくは公式ドキュメントにも載っていますが、やってみたいと思います。

Gii 使い方

Giiのページの設定はconfig/web.phpで行います。
初期設定で以下のようなコードが含まれていると思うので、そちらを確認してください。

動作させる環境でYII_ENVdevに設定したら、以下のようなURLでGiiのページにアクセスできます。
http://hostname/index.php?r=gii
welcome_to_gii

実際に10秒で作ってみる

今回は表題でもあるようにmodelの作成を行おうと思います。

前準備

まず、作成したいmodelのテーブルを用意します。
テーブルの用意もマイグレーションのコマンドがあるのでそれを使えば簡単に行えます。
詳しくはこちらを。
Yii2.0DatabaseMigration http://www.yiiframework.com/doc-2.0/guide-db-migrations.html#creating-migrations

例としてユーザー情報を扱うテーブルを用意しました。
まあ例なんで適当にid age gender の3つのカラムを以下のような条件で設定します。

ここまで用意できればあとは10秒です!

ステップ1~テーブル名を入力(所要時間1秒)~

データベースに定義されているテーブル情報を元に補完してくれます。
input_tablename

ステップ2~テーブル名を入力(所要時間1秒)~

model名入力欄にカーソルを充てると自動的にテーブル名と同じものを入力してくれます。
変更したければ好きな名前を付けてください。
input_modelname

ステップ3~必要に応じてオプションにチェック(所要時間2秒)~

必要に応じてそのほかの項目を追加してください。 わたしたちはActiveQueryを利用したかったのでそちらにチェックをつけ、追加でclassの作成を行いました。
model_generator

ステップ4~プレビュー(所要時間4秒)~

Previewボタンを押します。 ページ下部に生成されるファイルとコードが確認できる欄ができます。
preview_model

CodeFileのファイル名をクリックすると生成されるコードの中身も確認できます。
preview_file

ステップ5~ジェネレート(所要時間1秒)~

自動生成されるものなのでclass名やほしかったメソッドがあるかぐらいの確認をして問題がなければ、 いよいよです!
ファイル作っちゃいます!
先ほどプレビュー時に見えていたPreviewボタンの横のGenerateボタンを押してください!
すると指定の場所に新しいファイルが生成されていますね。

いやあ…。見事です。本当に10秒かからずにmodelができちゃいましました。

まとめ

実際にやってみて10秒足らずでmodelが生成できました! (ぜひ実際試してみてください)
GiiにはModel Generatorの他にもCRUD GeneratorやController Generator、Form Generator等様々なコード生成のサポートがあり、使い方によってはデータの出し入れの管理ツール等なんか簡単に生成できちゃうなんてこともありそうです。

新しいフレームワークを採用する際は学習コストが気になるということは往々にしてあると思います。
でもGiiでこんなに簡単にコード生成をサポートしてくれるなら、本当に集中して書くべきロジック部分の作成に集中できるし、Yii2.0を採用してよかったのではないかなあと思っています。

まだ試したことがない方は、ぜひ試してみていただければと思います!

  • Happi+ 「ハピタス」とは?