Location via proxy:
[ UP ]
[Report a bug]
[Manage cookies]
No cookies
No scripts
No ads
No referrer
Show this form
Search
Submit Search
KLab Social Game Platform ~Symfony1.4活用事例~
•
4 likes
•
11,154 views
K
KLab株式会社
2010年4月16日の開催された「KAYAC×KLab合同勉強会」のKLabセッションです。
Read less
Read more
1 of 26
Download now
Downloaded 47 times
More Related Content
KLab Social Game Platform ~Symfony1.4活用事例~
1.
KLab Social Game
Platform Symfony1.4活用事例 Kラボラトリー 研究開発部 高田敦史
2.
自己紹介 書籍依存症
3.
症候
南面 北面
4.
アジェンダ •
KLab Social Game Platform • Symfonyとの付き合い方 • Symfonyの機能拡張 • Symfonyを使った運用体制
5.
KLab Social Game
Platform • ビジョン – ナンバーワン • 目標 – 打倒、6,000pv/sec – 1ヶ月で横展開 – 24時間(3営業日)で使える
6.
構成
画像 / コンテンツ 個別Game 個別 Person アイテム ショップ ポイント 課金 掲示板 Friend ジェネレータ Avatarジェネレータ Flash Game Marketing Tools KLab Social Game Platform DBI OpenSocial API Wrapper SNS Mock CMS AN Standard(SimpleFramework) Server PHP5 / Symfony 1.4 KeyValue Message MySQL5 Strage Queue
7.
Symfonyとの付き合い方 • つくりたいのは、 –
「携帯サイト」 – 「ソーシャルアプリ」 • 必要なのは、 – シンプルで高負荷に耐えられるフレームワーク • 高機能なORマッパー? ジェネレータ? – 必要ない
8.
KLabにとってのSymfony • Symfonyの骨格だけを利用したい –
設定ファイルやオートローダー、基本の機能を0 からつくる必要はない • Symfonyは意外と柔軟 – 必要な部分だけ使う
9.
目標と手段 • 目標: 高負荷サイト
– ×「簡単につくれるけど、チューニングできない」 – ○「シンプルで、機能追加しやすい」 • 手段: Symfony + ??? – Symfonyは高機能だけど、拡張性も高い
10.
Symfonyを拡張しよう • プラグインを最大限活用 –
改造しすぎ… – でも汎用的で移植は簡単! • プライベートプラグイン – http://www.symfony- project.org/jobeet/1_4/Propel/ja/20
11.
Symfonyクラスの改造 • プラグインの中に継承クラスを追加 • +
必要な部分だけ上書き • + クラス名は設定ファイルで指定 – Symfony本体を書き換えることなく機能追加でき る
12.
3つのSymfonyプラグイン • an_standard_core /
cms_core – symfonyのMVCフレームワークを置き換える – シンプルなテンプレートエンジン 主にこれの話 – 汎用的なサイト構築 をします。 • social_game_platform – ソーシャルゲームに特化した機能 • mock_server – OpenSocialのガジェットサーバー+APIサーバー のダミー
13.
AN Standard Core •
リクエストの処理、テンプレート、フォームなど、 アクション内で使用するほとんどの機能を停 止 • シンプルなコントローラ + テンプレートエンジ ンを使用 – PHPテンプレートに変えて、CMSと連動した HTMLテンプレート – UserAgent(端末情報)、絵文字の変換など携帯 サイト特有の機能
14.
フロントコントローラー書換え • フロントコントローラーを書換え
– web/main.php • sfContext -> dispatch を呼ばない – symfonyの通常のディスパッチ遷移をほとんど通りません <?php require_once realpath(dirname(__FILE__).'/../plugins/an_standard_corePlugin/lib/com mon/Initialize.php'); $configuration = ProjectConfiguration::getApplicationConfiguration('main', ENV::get('KG_ENV'), true); Batista::dispatch($configuration);
15.
比較 • 通常のSymfony
– View: PHPテンプレート – Controller: sfRequest などを使用した Symfony独自のコントローラー • AN Standard – View: 簡易テンプレートエンジン – Controller: 独自のWebフレームワーク
16.
処理の流れ フィルター: フィルター
UserAgent の解析(キャリア情報など) リクエストパラメーターの解析 CMS: フィルター: フィルター テンプレートの編集 URLのパスから適切なアクションを調べて実行 アクション: アクション DBからHTMLテンプレートを取得してタグを置換
17.
データベース • モデルクラスは、標準のDoctrine ではなく
Propel を使用 • 「本番 / 検収」「Master / Slave」の使い分け – AN_SfPropelDatabase – 複数のDBを使いわけられるようにPropelを拡張 – databases.yml で独自クラスを設定
18.
ツール群 •
Memcache • TokyoTyrant • Session • Flash合成 • 画像(アバター)合成 • 絵文字変換 – Symfonyの設定と連携して使用できるラッパーク ラスを用意
19.
ここまでのまとめ • Symfonyは改造上等 • フロントコントローラーを書き換えれば、大部
分の機能を削除して、必要な機能だけ使うこ ともできる • プライベートプラグインの活用がおすすめ • 継承 + 機能追加
20.
運用体制 • コア機能 • +
ソーシャルゲーム汎用機能 • + 個別アプリ – 担当に合わせて開発を分担 • Symfonyタスクを利用した自動化 • ブランチ + マージ – 「汎用部分の実装」と「アプリの実装」が分かれて いるとプロジェクト管理もスムーズ
21.
オリジナルSymfonyタスク • klab:build-table
– SQLでのテーブル作成を自動化 • klab:load-sql – フィクスチャをSQLでロードできるように • klab:load-template – CMSテンプレートの読み込み • klab:build-model – Propelのモデルクラスに機能追加
22.
最新の変更を適用するには? developer@goldfish:/home/developer/socialdev$ bzr pull developer@goldfish:/home/developer/socialdev$
./symfony klab:load-all • スキーマ修正の適用 + フィクスチャのロード + キャッシュクリア…etc.すべてコマンド1つ
23.
Platformとアプリケーションの
並行開発 • リポジトリを2つのブランチに分けて開発(Bazzar) • Platform側: plugins + apps(スケルトン) • アプリケーション側: apps – 開発するディレクトリが別。追加開発はマージする App App App Platform ver.0.1 Platform ver.0.2 Platform ver.0.2
24.
デモ
25.
まとめ • Symfonyは改造上等 • 必要な部分だけを使えるフレームワーク •
工夫しだいでどんどん使いやすくなる
26.
ご傾聴ありがとうございました
Download