Yii Framework 2.0
いま求められるRAD標準とは
たなかひさてる
@tanakahisateru
Pinoco developer

PHPTAL contributor

Firebug translation contributor

Yii framework user

PhpStorm user
フルスタックエンジニア(笑)
RAD
Rapid Application Development
LAMP
Linux Apache MySQL P*-lang
PHP
スタートアップ インハウス・ツール
SSIのオバケ
(HTML埋込みスクリプト)
2000∼
2006∼
PHP
スタートアップ
大規模サービス
インハウス・ツール
エンタープライズ
2012∼
PHP
超・大規模サービス 超・エンタープライズ
IT資産 = 全企業的情報ソリューション
課題: いかに継続するか
と、いう話はしません
またそれは後のセッションで
このセッションの論点は
だいたいこのあたりです
PHP
スタートアップ
大規模サービス
インハウス・ツール
エンタープライズ
昨今感じるWeb開発
のマインド変化
以前のニーズ
• 外注使ってでもとにかく早くたくさん作りなさい
• 出資者はどのアイデアが かるかわからないから
• ベンチャーは からない技術に深入りしないこと
• どうせトラフィックは徐々にしか上がらないよ
現在のニーズ
• 早く作りなさい、マーケでライバルに負けないために
• ベンチャーも確実な技術を備えなさい
• ある日いきなりガチのトラフィックが来るから
• ソーシャル効果のせいで、勝負がハッキリするぞ
Yii2.0の標準構成から
現代的RADを学ぶ
その前にYii2概要
• 規約よりもオブジェクト指向設計を重視するタイプ
• DI 中心ではなく、static なサービスロケーター呼
ぶラインで妥協 (Yii::$app->get(‘request’))
• Laravel の Eloquent の影響を受け、より統合され
た QueryBuilder/ActiveRecord を開発
• アプリケーションにテストに Codeception を使う
その前にYii2概要
• 世界で最も Ruby on Rails と対比される PHP フ
レームワーク(日本のように偏見がない)
• ビュー がテンプレートエンジンに見えない。1ファ
イル1ページでありながら、PHP文法を活かす高度
なウィジェットが特徴
• IDE との親和性、phpdoc の記述を非常に重視
現代的WebにおけるRAD
4つのポイント
• 1. 素早いプロトタイピング (前からある基本)
• 2. 開発者を課題の本質に集中させる
• 3. パフォーマンスへの対応コストをいかに減らすか
• 4. サービス内容にフレームワークを最適化させる
1.素早いプロトタイピング
• スキャフォルドだけでどこまで完成イメージを共有
できるか
• プログラマーだけで、ビルトインウィジェットを使っ
て十分に UX を試作可能
• デフォルトが jQuery & Bootstrap ありの意味
トピック
• Gii - Model Generator / CRUD Generator
• Client Validation
• ActiveRecord = Form Model + Query のショー
トカットにすぎない点を確認
2.開発者を課題の本質に集中させる
• 整合性/安全性 < 簡潔さ + 書いた分だけ動く感
• 一貫性の高さ = 安定した学習曲線

(コンポーネント、コンフィグ、イベントとビヘイビアなど)
• 最初は副次的な事はフレームワークにおまかせ →
気になったものから順に崩していく
トピック
• Component / Application Config
• キーコンセプト

https://github.com/yiijan/yii2/blob/master/docs/guide-ja/README.md# となる概念
• ウィジェットと AssetBundle 依存チェーン
• composer-asset-plugin
トピック
• ValidatorとMassive Assignmentプロテクション
• フォームウィジェットとCSRF
• Cookie Validation
• Password hash
3. パフォーマンスへの対応コストを
いかに減らすか
• Webサーバのスケールアウトは当たり前
• ストレージのボトルネックがどこまで想定済みか
• NoSQLへのシームレスな移行
• まず作ってから重い部分をキャッシュする
トピック
• キャッシュ/セッションドライバのカスタマイズ
• Read replica パターンへの対応
• MongoDB を例に ActiveRecord

(Redis, ElasticSearch の ActiveRecord もね)
• Pjax + Fragment Cache
4. サービス内容にフレーム
ワークを最適化させる
• フレームワーク < アプリケーションの価値
• あえて薄く作られたコンポーネント
• ソースコードがドキュメントという現実への最適解
• 気になる箇所は自分でも書ける程度のボリューム感
トピック
• とてもわかりやすい日本語ドキュメント https://
github.com/yiijan/yii2/blob/master/docs/
guide-ja/README.md
• Yii2 Advent Calendar 2014 http://qiita.com/
advent-calendar/2014/yii2 日本人による
Cookbookって感じです
Yiiが提供するもの
現代的水準の RAD
• 素早いプロトタイピング
• 開発者を課題の本質に集中させる
• パフォーマンスへの対応コストをいかに減らすか
• サービス内容にフレームワークを最適化させる
突然ですが

フレームワークとは

何ですか?
フレームワークとは

武道である
• 個々の機能(プラクティス) = 技
• 敵を倒す方法ならいくらでもあるが、

武道で重要なのは技の組み合わせ = 型
• 「技」を通じて型を「体」でおぼえる
• 個別に機能を見ていると見えなかった
「心」がわかる
• 守 : フレームワークらしい作り方を真
似る
• 破 : 基礎の型を応用して実戦向けの技
を編み出せるようになる
• 離 : フレームワークからプロダクション
コードに比重が移ってここで一人前
というわけで…
フレームワークが武道なら
Yii は近道(RAD)という武道です
PHP
スタートアップ
大規模サービス
インハウス・ツール
エンタープライズ
使わなくても、Yii の心を学んでください。
型を守るうちに、その真意を理解できま
す。Yii の心は、いまWebに生きるすべて
のPHPerにとって価値があります。

Yii Framework 2.0 いま求められるRAD標準とは #phpkansai