Your SlideShare is downloading. ×
KLab Social Game Platform ~Symfony1.4活用事例~
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

KLab Social Game Platform ~Symfony1.4活用事例~

16,238
views

Published on

2010年4月16日の開催された「KAYAC×KLab合同勉強会」のKLabセッションです。

2010年4月16日の開催された「KAYAC×KLab合同勉強会」のKLabセッションです。

Published in: Technology

1 Comment
4 Likes
Statistics
Notes
No Downloads
Views
Total Views
16,238
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
43
Comments
1
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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. ご傾聴ありがとうございました