Help us understand the problem. What is going on with this article?

Yii2がきたぞ!ヤァヤァヤァ!

More than 5 years have passed since last update.

Yii2って?

yii2 とはPHPフレームワークYiiの最新バージョンで、Yiiの高速な動作、拡張性をそのままにモダンなPHPを取り入れた最新のウェブアプリケーションフレームワークです。

Yiiという名前は、「イー」と発音します。中国語の「シンプル」「発展」という単語を由来とし、また、「Yes! It Is」の頭文字も兼ねています。(このフレームワークはセキュアなの?ちゃんと使えるの?といった質問に対しての答えだそうです)

Yii2の特徴

  • PHP5.4以上のモダンなPHP環境で動作します
  • オーソドックスなフルスタックMVCフレームワークです。様々なフレームワークやCMSに影響を受けていますが、基本的なコードはRubyOnRailsによく似ています
  • DBやキャッシュを幅広くサポートしています。RDBとNoSQLの両方を標準 でサポートしています。
  • IDEでの開発に最適化されています

他のフレームワークから乗り換えるメリットはあるの?

昨今、モダンPHPフレームワークはYiiだけにとどまりません。Laravel4やPhalcon、CakePHP3もまもなくリリースされようとしています。
そんなPHPフレームワーク群雄割拠時代においてYii2を選ぶべき理由というのは…多分ありません。どのフレームワークも志向が異なりますし、そのフレームワークでなければ作れないシステムなんてこともそうそうあり得ません。究極的には好みなのですが、フレームワークを採用する場合、往々にしてそのフレームワークと心中する覚悟が問われます。(極論)ですので、できるならば、(将来性等あるにせよ)自分の思想と相性の良いフレームワークを選びたいとこですね。

Yii2を選ぶときに見たい所

しかしあとはお前の好きにしろよというのもあんまりなので、Yii2の機能からいくつか見所をピックアップしてみます

ミドルウェアのサポート

Yii2は標準で多くのDB・キャッシュをサポートしています。

DB

  • MSSQL
  • MySQL
  • Oracle
  • PostgreSQL
  • SQLite
  • mongodb*

Cache

  • MemCache
  • WinCache
  • XCache
  • ZendDataCache
  • Redis*

*標準で内蔵はしておらずyiisoft公式のエクステンションで提供

なんだかぜんぜん知らないのもありますね。どれだけ有用かはちょっとわからないですけど。それでもRDBを幅広くサポートしているのは環境を選ばないですし。mongodbでも同じActiveRecordが利用できるというのはポイント高いです

RESTコントローラ

Laravelにもあった気がしますが、YiiもREST専用コントローラがあります

controller
namespace app\controllers;

use yii\rest\ActiveController;

class UserController extends ActiveController
{
    public $modelClass = 'app\models\User';
}

と書くだけでRESTっぽい各種メソッドが利用できます。REST実装もしっかりしていて、PUTとPATCHはどちらでも使えますし、HEADやOPTIONSといったメソッドもサポートしています。HATEOASもサポート。

mongodbのフロントになるAPIとか秒速で実装出来ますね!

IDEフレンドリー

Yii2はIDEで補完がしやすいような作りになっています。Cake3もこのへんはとても気を遣っているようです。
IDEではなくテキストエディタで開発している人も多いと思いますが、PHPは動的言語の中でも一際IDEの恩恵が大きい言語です。PHPはrubyにくらべ非常に不自由な言語であると言われたりしますが、rubyほど自由すぎない文法は静的解析の結果がrubyのそれに比べて非常に正確になるという特徴があります。

それでもって静的解析の何が良いって、補完が効くことです。メトリクスの測定なんてどうでもいいんです!IDEでコーディングしながら適切な候補が補完されることが重要なんです!(※個人の感想です)

複数人開発でのその効能は顕著で、クラス名とメソッド名と引数名が適切で補完候補が十分に絞れればドキュメントを読まずともスイスイコーディングできます(※個人の感想であり、効果には個人差があります)

補完ができるということは定義へジャンプができるということなので(マジックメソッドとかを駆使してなければ)実装を追いかける際もとても捗ります。

IDEで開発する際はぜひ意識したい点です。

Railsっぽい感じ

yiiとcake2はコンパチRailsみたいな感じがありましたが、cake3がよりPHPらしい方向へシフトしてYii2はPHPフレームワークのなかでも非常にRailsに近しいようなフレームワークになったと思います。

PHPを書く羽目になっていまにも絶望の果てに魔女に身を落としそうなRubyistの皆様にはご一考の価値が有るのではないでしょうか

豊富っぽい拡張

海外では結構人気あるので拡張機能が続々開発されています。 無印の頃から即物的な拡張が多くて数が多けりゃ使えるかと言われるとそんなことはない

英語

現時点で日本語ソースはあんまり無いためその辺は覚悟が必要です。ただし公式ドキュメントは猛烈に翻訳されているので安心です

Yii2AdventCalendarの1日目ということでYii2の駆け足気味な紹介でした!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away