Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
KLab Social Game Platform
   Symfony1.4活用事例
        Kラボラトリー
        研究開発部
         高田敦史
自己紹介

書籍依存症
症候




     南面

北面
アジェンダ
•   KLab Social Game Platform
•   Symfonyとの付き合い方
•   Symfonyの機能拡張
•   Symfonyを使った運用体制
KLab Social Game Platform
• ビジョン
 – ナンバーワン
• 目標
 – 打倒、6,000pv/sec
 – 1ヶ月で横展開
 – 24時間(3営業日)で使える
構成
                          画像 / コンテンツ

                             個別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
Symfonyとの付き合い方
• つくりたいのは、
 – 「携帯サイト」
 – 「ソーシャルアプリ」
• 必要なのは、
 – シンプルで高負荷に耐えられるフレームワーク
• 高機能なORマッパー? ジェネレータ?
 – 必要ない
KLabにとってのSymfony
• Symfonyの骨格だけを利用したい
 – 設定ファイルやオートローダー、基本の機能を0
   からつくる必要はない
• Symfonyは意外と柔軟
 – 必要な部分だけ使う
目標と手段
• 目標: 高負荷サイト
  – ×「簡単につくれるけど、チューニングできない」
  – ○「シンプルで、機能追加しやすい」
• 手段: Symfony + ???
  – Symfonyは高機能だけど、拡張性も高い
Symfonyを拡張しよう
• プラグインを最大限活用
 – 改造しすぎ…
 – でも汎用的で移植は簡単!
• プライベートプラグイン
 – http://www.symfony-
   project.org/jobeet/1_4/Propel/ja/20
Symfonyクラスの改造
• プラグインの中に継承クラスを追加
• + 必要な部分だけ上書き
• + クラス名は設定ファイルで指定
 – Symfony本体を書き換えることなく機能追加でき
   る
3つのSymfonyプラグイン
• an_standard_core / cms_core
  – symfonyのMVCフレームワークを置き換える
  – シンプルなテンプレートエンジン
                        主にこれの話
  – 汎用的なサイト構築            をします。
• social_game_platform
  – ソーシャルゲームに特化した機能
• mock_server
  – OpenSocialのガジェットサーバー+APIサーバー
    のダミー
AN Standard Core
• リクエストの処理、テンプレート、フォームなど、
  アクション内で使用するほとんどの機能を停
  止
• シンプルなコントローラ + テンプレートエンジ
  ンを使用
 – PHPテンプレートに変えて、CMSと連動した
   HTMLテンプレート
 – UserAgent(端末情報)、絵文字の変換など携帯
   サイト特有の機能
フロントコントローラー書換え
• フロントコントローラーを書換え
  – 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);
比較
 • 通常のSymfony
     – View:
       PHPテンプレート
     – Controller:
       sfRequest などを使用した
       Symfony独自のコントローラー

 • AN Standard
     – View:
       簡易テンプレートエンジン
     – Controller:
       独自のWebフレームワーク
処理の流れ

 フィルター:
 フィルター
 UserAgent の解析(キャリア情報など)
 リクエストパラメーターの解析

                           CMS:
フィルター:
フィルター                      テンプレートの編集
URLのパスから適切なアクションを調べて実行




     アクション:
     アクション
     DBからHTMLテンプレートを取得してタグを置換
データベース
• モデルクラスは、標準のDoctrine ではなく
  Propel を使用
• 「本番 / 検収」「Master / Slave」の使い分け
 – AN_SfPropelDatabase
 – 複数のDBを使いわけられるようにPropelを拡張
 – databases.yml で独自クラスを設定
ツール群
•   Memcache
•   TokyoTyrant
•   Session
•   Flash合成
•   画像(アバター)合成
•   絵文字変換
    – Symfonyの設定と連携して使用できるラッパーク
      ラスを用意
ここまでのまとめ
• Symfonyは改造上等
• フロントコントローラーを書き換えれば、大部
  分の機能を削除して、必要な機能だけ使うこ
  ともできる
• プライベートプラグインの活用がおすすめ
• 継承 + 機能追加
運用体制
• コア機能
• + ソーシャルゲーム汎用機能
• + 個別アプリ
 – 担当に合わせて開発を分担
• Symfonyタスクを利用した自動化
• ブランチ + マージ
 – 「汎用部分の実装」と「アプリの実装」が分かれて
   いるとプロジェクト管理もスムーズ
オリジナルSymfonyタスク
• klab:build-table
  – SQLでのテーブル作成を自動化
• klab:load-sql
  – フィクスチャをSQLでロードできるように
• klab:load-template
  – CMSテンプレートの読み込み
• klab:build-model
  – Propelのモデルクラスに機能追加
最新の変更を適用するには?

developer@goldfish:/home/developer/socialdev$ bzr pull
developer@goldfish:/home/developer/socialdev$ ./symfony
klab:load-all




• スキーマ修正の適用 + フィクスチャのロード +
  キャッシュクリア…etc.すべてコマンド1つ
Platformとアプリケーションの
             並行開発
• リポジトリを2つのブランチに分けて開発(Bazzar)
• Platform側: plugins + apps(スケルトン)
• アプリケーション側: apps
  – 開発するディレクトリが別。追加開発はマージする

                 App               App              App



   Platform ver.0.1    Platform ver.0.2   Platform ver.0.2
デモ
まとめ
• Symfonyは改造上等
• 必要な部分だけを使えるフレームワーク
• 工夫しだいでどんどん使いやすくなる
ご傾聴ありがとうございました

More Related Content

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