SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
mixiアプリ
                       x
                 ZendFramework


             バズー株式会社 開発チームリーダー
                    清水樹

id:Bayside   *    bayside@twitter             *    http://tec.buzoo.jp/




              Copyright (C) 2010 Buzoo Inc. All Rights Reserved.
アジェンダ
■     ソーシャルアプリとは?
■     mixiアプリとは?
■     mixiアプリとmixiアプリモバイルの違い
■     携帯版(mixiアプリモバイル)の注意点
■     PC版(mixiアプリ)のはじめかた
■     携帯版(mixiアプリモバイル)のはじめかた
■     mixiアプリ事例紹介
■     ZendFrameworkの使いどころ




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/   2
ソーシャルアプリとは?(1/2)
■ SNSのソーシャルグラフを利用したウェブアプリケーション
■ 共通API(オープンソーシャルAPI)を使用
 ■ Person & Friends API
 ■ Community API
 ■ Activities API
 ■ Persistence API
■ Facebookが2004年にリリース
■ その後5年で3億のアクティブユーザーを獲得
■ サードパーティにプラットフォームを解放
■ 一つ作れば他のプラットフォームへの移植も割と容易
■ めちゃくちゃ儲かる人が出現
■ 怒涛のようにFacebookアプリが溢れ、勝ち組と負け組に2極分化




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/   3
ソーシャルアプリとは?(2/2)
■ 日本では2009年から導入開始
■ 2009年8月mixiアプリリリース
■ 2009年10月mixiアプリモバイルリリース
■ 2010年1月モバゲーアプリリリース
■ 2010年多くの国内ゲームメーカーが参入予定
 ■ スクウェア・エニックス
 ■ ハドソン
 ■ コーエーなど
■ 2010年6月GREEアプリリリース予定
■ 2010年は日本でのオープンソーシャル元年
■ いますぐ参入すれば半年程度はブルーオーシャン




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/   4
mixiアプリとは?
■     mixi版ソーシャルアプリ
■     PC版(mixiアプリ)と携帯版(mixiアプリモバイル)がある
■     PC版と携帯版があるのは世界初
      ■ 後続のモバゲーは携帯版のみ
      ■ GREEはPC/携帯両方になる?
■     JavascriptAPI / RESTfulAPI が使用可能
■     マネタイズは広告かアプリ内課金(300円/回まで)
■     キャリア課金が可能




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/   5
mixiアプリとmixiアプリモバイルの違い


                                   PC版(mixiアプリ)                                       携帯版(mixiアプリモバイル)
開発                                 個人でも可                                              法人のみ
広告                                 比較的自由に貼れる                                          mixi公式のみ
外部リンク                              比較的自由に貼れる                                          一切禁止
キャリア課金                                                   ○                                                   ○
個人情報取得                             外部リンク先で取得可能                                        一切禁止
PV数                                少ない                                                圧倒的に多い
OpenSocialAPI                      Javascript / RESTful                               RESTful
アプリ実行                              ユーザーのブラウザ内                                         サードパーティのサーバー内




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/       6
携帯版(mixiアプリモバイル)の注意点
■     mixiプラットフォームがユーザー/SAP間に入っている
■     ユーザーからはmixi内にいるように見える
■     実際のアプリはサードパーティー内(SAP)にある
■     負荷対策を自前でする必要がある
■     初速がものすごいため、最初から高負荷に対応する必要がある
■     コストパフォーマンスを考えるとクラウドも視野に入れる
■     絵文字変換、画像変換等は自前でやる必要がある




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/   7
PC版(mixiアプリ)のはじめかた
■     ディベロッパー登録(個人)
■     管理画面よりアプリ登録開始
■     GadgetXMLファイル(UTF-8)にガリガリコードを書く
■     テスト(テスト時に他人が使うときは承認が必要)
■     カテゴリ申請(2週間から1ヶ月程度待つ)
■     規約に反していて申請が通らなかった場合は修正して再度申請
■     申請が通ると誰でも利用可能になる(新着アプリ掲載)
■     広告申請(mixiアドプログラム)
■     広告開始
■     継続的な改善と更新




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/   8
携帯版(mixiアプリモバイル)のはじめかた
■ パートナーアカウント登録(登記簿謄本が必要)
■ パートナーアカウント申請が通るとメインアカウントとテスト用ア
カウント(20個まで)がもらえる
■ 管理画面より登録開始
■ GadgetXMLファイル(UTF-8)にアプリのURLを書く
■ テスト(テスト時は他人は一切使用不能)
■ カテゴリ申請(2週間から1ヶ月程度待つ)
■ 規約に反していて申請が通らなかった場合は修正して再度申請
■ 申請が通ると誰でも利用可能になる(新着アプリ掲載)
■ 広告申請(mixiアドプログラム)
■ 広告開始
■ 継続的な改善と更新




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/   9
mixiアプリ事例紹介(1/5)
■     自社開発アプリを4本リリース済み
■     4本中3本がPC/携帯両対応
■     すべてZendFramework製
■     mixiアプリ新規1本作成中
■     モバゲーアプリ準備中
■     GREEアプリ準備中




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/   10
mixiアプリ事例紹介(2/5)


                                            青空文庫

                                       利用者数:約32万人
                                       著作権の切れた文学作品を収集・編集し
                                       インターネット上で公開している電子図
                                       書館がミクシィに初登場!
                                       秋の夜長、あいている時間を読書にあて
                                       て、あなたも知識人!

                                        http://mixi.jp/view_appli.pl?id=11421(PC用)

                                        http://m.mixi.jp/view_appli.pl?id=11421(携帯用)




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/   11
mixiアプリ事例紹介(3/5)


                                            みんなでチャット

                                       利用者数:約8万人
                                       眠れない夜にみんなでおしゃべり!シン
                                       プルで使いやすいチャットです!
                                       二人っきり話せるプライベートモードも
                                       現在開発中です!
                                       遊び方を守ってお楽しみください。

                                       http://mixi.jp/view_appli.pl?id=12886(PC用)

                                       http://m.mixi.jp/view_appli.pl?id=12886(携帯用)




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/   12
mixiアプリ事例紹介(4/5)


                                           女子力UP☆マナークイズ

                                       利用者数:約4万人
                                       マナークイズで女子力UP!
                                       セレブ度を上げてともだちと競おう!
                                       セレブスタイル浜松町主宰 マナー研究家 
                                       住友淑恵先生監修!
                                       ランキング上位者には素敵なプレゼントが!!

                                       http://mixi.jp/view_appli.pl?id=13904(PC用)

                                       http://m.mixi.jp/view_appli.pl?id=13904(携帯用)




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/   13
mixiアプリ事例紹介(5/5)


                                             こころの花束

                                       利用者数:約1万人
                                       相手への感謝の気持ちを言葉の花束にし
                                       て届けましょう!
                                       みんなにたくさん感謝された方には素敵
                                       なプレゼントが!

                                       http://mixi.jp/view_appli.pl?id=14082(PC用)

                                       http://m.mixi.jp/view_appli.pl?id=14082(携帯用)




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/   14
ZendFrameworkの使いどころ
■ 携帯版(mixiアプリモバイル)での使いどころを中心に
■ PC版は携帯版のロジックをほぼそのまま流用
 ■ PC版でも RESTfulAPI を使用
■ トピックス
 ■ RESTfulAPI
 ■ URIの処理
 ■ セッション
 ■ 絵文字
 ■ リダイレクト
 ■ 高負荷対策




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/   15
ZendFrameworkの使いどころ(RESTfulAPI)
■ 開発ガイドのサンプル通りで問題なし
■ OAuth.phpだけダウンロードする必要あり
■ ZendFramework 1.7系の Zend_JSON はマルチバイト対応が×
■ Zend_JSON だけは 1.8系のものを利用
■ 主な機能
 ■ Person & Friends API
 ■ Community API
 ■ Activities API
 ■ Persistence API
 ■ Album API




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/   16
ZendFrameworkの使いどころ(URIの処理)
■     mixi内のURLはホスト名つきでそのまま記述
■     ドコモの場合は guid=ON 必須
■     urlパラメータをmixiが自動的に解釈してリクエストを返す
■     ブラウザがキャッシュが効き過ぎるので毎回ユニークなURIにする

                                                                                                             index.php とか
  function fp($path) {
     if ( preg_match('/?/', $path) ) {
         $path .= '&randomid='.uniqid();
     } else {
         $path .= '?randomid='.uniqid();
     }
     return '?guid=ON&url='.urlencode('http://somewhere/'.$path);
  }

                                                                                                             index.phtml とか
  &#63731;<a href="invite:friends?callback=<?= urlencode('http://somewhere/') ?>">友達にすすめる</a>
  &#63859;<a href="http://m.mixi.jp/view_community.pl?id=4712506">お問い合わせ</a>
  &#63873; <a href="<?= fp('/help/index') ?>">ヘルプ</a>
  &#63684; <a href="<?= fp('/') ?>" accesskey="1">[1]Topへ戻る</a>




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/                    17
ZendFrameworkの使いどころ(リダイレクト)
■ ユーザーからはmixi内にいるように見えるので、必ずホスト名付き
のフルパスで指定する必要がある
■ mixiプラットフォームが自動的に解釈してリクエストを返す
■ この辺りの処理はベースコントローラに書くと楽ちん
■ セッションID、guid=ONはつけない

                                                                                                             ベースコントローラとか
  /**
    * @override
    */
  protected function _redirect($url, array $options = array()) {
     return parent::_redirect('http://someware/' . $url, $options);
  }




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/                 18
ZendFrameworkの使いどころ(セッション)
■ リクエストごとに opensocial_owner_id(mixiユーザーID)が必ず
渡ってくる
■ セッションIDの代わりに opensocial_owner_id を使う
                                                                                                             index.php
  ini_set('session.save_handler','user');
  require_once('Util/Session.php');

                                                                                         Util/Session.php
  <?php
  function _open($save_path, $session_name) { global $sess_save_path; $sess_save_path =
  APPLICATION_PATH . '/../session'; return(true); }
  function _close() { return(true); }
  function _read($id) { global $sess_save_path; $sess_file = "$sess_save_path/sess_".
  $_REQUEST['opensocial_owner_id']; if (file_exists($sess_file)) { return (string)
  @file_get_contents($sess_file); } else { return (string) null; } }
  function _write($id, $sess_data) { global $sess_save_path; $sess_file = "$sess_save_path/sess_".
  $_REQUEST['opensocial_owner_id']; if ($fp = @fopen($sess_file, "w")) { $return = fwrite($fp, $sess_data);
  fclose($fp); return $return; } else { return(false); } }
  function _destroy($id) { global $sess_save_path; $sess_file = "$sess_save_path/sess_".
  $_REQUEST['opensocial_owner_id']; return(@unlink($sess_file)); }
  function _gc($maxlifetime) { global $sess_save_path; foreach (glob("$sess_save_path/sess_*") as
  $filename) { if (filemtime($filename) + $maxlifetime < time()) { @unlink($filename); } } return true; }
  session_set_save_handler("_open", "_close", "_read", "_write", "_destroy", "_gc");


Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/               19
ZendFrameworkの使いどころ(絵文字)
■ MobilePictogramConverterを使うと楽ちん
■ Softbankでは MPC_TO_OPTION_WEB にすると化けるので
MPC_TO_OPTION_RAW を指定してます
■ 本家サイトがなくなっているので(汗)ググって取得してください
                                                                                 layout.phtml
  <?= '<?xml version="1.0" encoding="Shift_JIS"?>'; ?>
  <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.0) 1.0//EN"
  "i-xhtml_4ja_10.dtd">
  <html xml:lang="ja" xmlns="http://www.w3.org/1999/xhtml">
  <head>
  <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" />
  <title>xxxxx</title>
  </head>
  <body>
  <?php
  require_once 'MobilePictogramConverter.php';
  $mpc = MobilePictogramConverter::factory($this->layout()->content, MPC_FROM_FOMA,
  MPC_FROM_CHARSET_SJIS, MPC_FROM_OPTION_WEB);
  echo $mpc->autoConvert();
  ?>
  </body>
  </html>



Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/   20
ZendFrameworkの使いどころ(高負荷対策)
■ 何も考えないとすぐロードアベレージ数十でサーバーダウン
 ■ 特に初速(新着アプリ掲載時)がヤバい
■ オープンソーシャルAPIを呼び過ぎない
 ■ ユーザー情報は一度取得したら24時間は再取得しない
 ■ マイミク一覧は一度取得したら一定期間保存する
 ■ コミュニティ一覧は一度取得したら一定期間保存する
■ Zend_Db_Tableで頑張りすぎない
 ■ パフォーマンスが必要なところは生SQLも辞さない
 ■ 正規化をあえて崩す
 ■ Zend_Db 最高(笑)
 ■ そもそもそれはDBにいれなければいけない情報か?
■ バッチ処理にできないか
 ■ ランキング
 ■ リコメンド




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/   21
まとめ
■     オープンソーシャルアプリが流行っている
■     mixiアプリをやるならPC/携帯両方に対応したい
■     ZendFrameworkでmixiアプリを作ることはもちろん可能
■     でも、高負荷対策をちゃんとやる必要はあり




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/   22
最後に
■ バズー株式会社ではソーシャルアプリの受託開発を行います
■ お問い合わせお待ちしています!

担当:石渡(イシワタリ)
Email: info@buzoo.jp
お問合せURL: http://buzoo.jp/contact/
Tel: 03-5408-7805




Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/   23

Más contenido relacionado

Destacado

G hram 2012_jedilniki_12_december
G hram 2012_jedilniki_12_decemberG hram 2012_jedilniki_12_december
G hram 2012_jedilniki_12_decemberGurmanski Hram
 
Sound Out the Alphabet for Mrs Wallnau
Sound Out the Alphabet for Mrs WallnauSound Out the Alphabet for Mrs Wallnau
Sound Out the Alphabet for Mrs WallnauJeannemarie Wallnau
 
G hram jedilniki_2012_2_februar
G hram jedilniki_2012_2_februarG hram jedilniki_2012_2_februar
G hram jedilniki_2012_2_februarGurmanski Hram
 
Zend Frameworkで始める携帯サイト
Zend Frameworkで始める携帯サイトZend Frameworkで始める携帯サイト
Zend Frameworkで始める携帯サイト清水樹
 
G hram jedilniki_2012_5_maj
G hram jedilniki_2012_5_majG hram jedilniki_2012_5_maj
G hram jedilniki_2012_5_majGurmanski Hram
 
Imagination curriculum memetales
Imagination curriculum memetalesImagination curriculum memetales
Imagination curriculum memetalesmemetales
 
Jedilniki 2011 februar
Jedilniki 2011 februarJedilniki 2011 februar
Jedilniki 2011 februarGurmanski Hram
 
ბაგრატ3
ბაგრატ3ბაგრატ3
ბაგრატ3guesta921608
 
Shua Saukuneebis Xelovneba
Shua Saukuneebis XelovnebaShua Saukuneebis Xelovneba
Shua Saukuneebis Xelovnebaekakviciani
 

Destacado (19)

G hram 2012_jedilniki_12_december
G hram 2012_jedilniki_12_decemberG hram 2012_jedilniki_12_december
G hram 2012_jedilniki_12_december
 
Jedilniki 2011 april
Jedilniki 2011 aprilJedilniki 2011 april
Jedilniki 2011 april
 
Jedilniki 2011 junij
Jedilniki 2011 junijJedilniki 2011 junij
Jedilniki 2011 junij
 
G hram 2013_junij
G hram 2013_junijG hram 2013_junij
G hram 2013_junij
 
Jedilniki 2013, marec
Jedilniki 2013, marecJedilniki 2013, marec
Jedilniki 2013, marec
 
G hram 2013_maj
G hram 2013_majG hram 2013_maj
G hram 2013_maj
 
Sound Out the Alphabet for Mrs Wallnau
Sound Out the Alphabet for Mrs WallnauSound Out the Alphabet for Mrs Wallnau
Sound Out the Alphabet for Mrs Wallnau
 
Article 2006 16
Article 2006 16Article 2006 16
Article 2006 16
 
Szd 2016 04_april
Szd 2016 04_aprilSzd 2016 04_april
Szd 2016 04_april
 
G hram jedilniki_2012_2_februar
G hram jedilniki_2012_2_februarG hram jedilniki_2012_2_februar
G hram jedilniki_2012_2_februar
 
Zend Frameworkで始める携帯サイト
Zend Frameworkで始める携帯サイトZend Frameworkで始める携帯サイト
Zend Frameworkで始める携帯サイト
 
Jedilniki 2011 marec
Jedilniki 2011 marecJedilniki 2011 marec
Jedilniki 2011 marec
 
G hram jedilniki_2012_5_maj
G hram jedilniki_2012_5_majG hram jedilniki_2012_5_maj
G hram jedilniki_2012_5_maj
 
Imagination curriculum memetales
Imagination curriculum memetalesImagination curriculum memetales
Imagination curriculum memetales
 
Jedilniki 2011 februar
Jedilniki 2011 februarJedilniki 2011 februar
Jedilniki 2011 februar
 
Jedilniki 2011 maj
Jedilniki 2011 majJedilniki 2011 maj
Jedilniki 2011 maj
 
Jedilniki januar 2013
Jedilniki januar 2013Jedilniki januar 2013
Jedilniki januar 2013
 
ბაგრატ3
ბაგრატ3ბაგრატ3
ბაგრატ3
 
Shua Saukuneebis Xelovneba
Shua Saukuneebis XelovnebaShua Saukuneebis Xelovneba
Shua Saukuneebis Xelovneba
 

Similar a mixiアプリxZendFramework

はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版Tomoki Hasegawa
 
C#ユーザー会 //build/ まとめ(サーバー編)
C#ユーザー会 //build/ まとめ(サーバー編)C#ユーザー会 //build/ まとめ(サーバー編)
C#ユーザー会 //build/ まとめ(サーバー編)Keiji Kamebuchi
 
iOSアプリ制作ツールアプリビルダーを支える技術
iOSアプリ制作ツールアプリビルダーを支える技術iOSアプリ制作ツールアプリビルダーを支える技術
iOSアプリ制作ツールアプリビルダーを支える技術Tomoki Hasegawa
 
さくらのIoT Platformを使ってみよう ~OSC浜名湖編~
さくらのIoT Platformを使ってみよう ~OSC浜名湖編~さくらのIoT Platformを使ってみよう ~OSC浜名湖編~
さくらのIoT Platformを使ってみよう ~OSC浜名湖編~法林浩之
 
Discussion for Social WEB Bisiness
Discussion for Social WEB BisinessDiscussion for Social WEB Bisiness
Discussion for Social WEB BisinessDaisuke Masubuchi
 
今から始めよう!WordPressで作る女子ウケ★スマホサイト
今から始めよう!WordPressで作る女子ウケ★スマホサイト今から始めよう!WordPressで作る女子ウケ★スマホサイト
今から始めよう!WordPressで作る女子ウケ★スマホサイトrie05
 
クラウド時代のビジネス戦略セミナーIn八戸:青森県商工労働部委託
クラウド時代のビジネス戦略セミナーIn八戸:青森県商工労働部委託クラウド時代のビジネス戦略セミナーIn八戸:青森県商工労働部委託
クラウド時代のビジネス戦略セミナーIn八戸:青森県商工労働部委託新潟コンサルタント横田秀珠
 
Azureお助けサービス概要
Azureお助けサービス概要Azureお助けサービス概要
Azureお助けサービス概要Keiji Kamebuchi
 
【AWS×Deployment】TechTalk #5
【AWS×Deployment】TechTalk #5【AWS×Deployment】TechTalk #5
【AWS×Deployment】TechTalk #5幸夫 茅根
 
Web API 標準の OpenSocial の現状と今後
Web API 標準の OpenSocial の現状と今後Web API 標準の OpenSocial の現状と今後
Web API 標準の OpenSocial の現状と今後FatWireKK
 
【配布用】20120411スターター資料スマホアプリご導入までの流れ
【配布用】20120411スターター資料スマホアプリご導入までの流れ【配布用】20120411スターター資料スマホアプリご導入までの流れ
【配布用】20120411スターター資料スマホアプリご導入までの流れDHRgroup
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespacesIssei Hiraoka
 
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~法林浩之
 
さくらのIoTプラットフォーム「sakura.io」を使ってみよう
さくらのIoTプラットフォーム「sakura.io」を使ってみようさくらのIoTプラットフォーム「sakura.io」を使ってみよう
さくらのIoTプラットフォーム「sakura.io」を使ってみよう法林浩之
 
【fanpac】facebookページマーケティングパッケージ
【fanpac】facebookページマーケティングパッケージ【fanpac】facebookページマーケティングパッケージ
【fanpac】facebookページマーケティングパッケージMf Takatsuka
 
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略Fumiya Sakai
 
20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublishedYoichiro Sakurai
 

Similar a mixiアプリxZendFramework (20)

はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版
 
C#ユーザー会 //build/ まとめ(サーバー編)
C#ユーザー会 //build/ まとめ(サーバー編)C#ユーザー会 //build/ まとめ(サーバー編)
C#ユーザー会 //build/ まとめ(サーバー編)
 
iOSアプリ制作ツールアプリビルダーを支える技術
iOSアプリ制作ツールアプリビルダーを支える技術iOSアプリ制作ツールアプリビルダーを支える技術
iOSアプリ制作ツールアプリビルダーを支える技術
 
Stargazer Meetup #1
Stargazer Meetup #1Stargazer Meetup #1
Stargazer Meetup #1
 
さくらのIoT Platformを使ってみよう ~OSC浜名湖編~
さくらのIoT Platformを使ってみよう ~OSC浜名湖編~さくらのIoT Platformを使ってみよう ~OSC浜名湖編~
さくらのIoT Platformを使ってみよう ~OSC浜名湖編~
 
Discussion for Social WEB Bisiness
Discussion for Social WEB BisinessDiscussion for Social WEB Bisiness
Discussion for Social WEB Bisiness
 
今から始めよう!WordPressで作る女子ウケ★スマホサイト
今から始めよう!WordPressで作る女子ウケ★スマホサイト今から始めよう!WordPressで作る女子ウケ★スマホサイト
今から始めよう!WordPressで作る女子ウケ★スマホサイト
 
クラウド時代のビジネス戦略セミナーIn八戸:青森県商工労働部委託
クラウド時代のビジネス戦略セミナーIn八戸:青森県商工労働部委託クラウド時代のビジネス戦略セミナーIn八戸:青森県商工労働部委託
クラウド時代のビジネス戦略セミナーIn八戸:青森県商工労働部委託
 
Azureお助けサービス概要
Azureお助けサービス概要Azureお助けサービス概要
Azureお助けサービス概要
 
【AWS×Deployment】TechTalk #5
【AWS×Deployment】TechTalk #5【AWS×Deployment】TechTalk #5
【AWS×Deployment】TechTalk #5
 
Web API 標準の OpenSocial の現状と今後
Web API 標準の OpenSocial の現状と今後Web API 標準の OpenSocial の現状と今後
Web API 標準の OpenSocial の現状と今後
 
WordPressのセキュリティ対策
WordPressのセキュリティ対策WordPressのセキュリティ対策
WordPressのセキュリティ対策
 
AppCenter
AppCenterAppCenter
AppCenter
 
【配布用】20120411スターター資料スマホアプリご導入までの流れ
【配布用】20120411スターター資料スマホアプリご導入までの流れ【配布用】20120411スターター資料スマホアプリご導入までの流れ
【配布用】20120411スターター資料スマホアプリご導入までの流れ
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
 
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
 
さくらのIoTプラットフォーム「sakura.io」を使ってみよう
さくらのIoTプラットフォーム「sakura.io」を使ってみようさくらのIoTプラットフォーム「sakura.io」を使ってみよう
さくらのIoTプラットフォーム「sakura.io」を使ってみよう
 
【fanpac】facebookページマーケティングパッケージ
【fanpac】facebookページマーケティングパッケージ【fanpac】facebookページマーケティングパッケージ
【fanpac】facebookページマーケティングパッケージ
 
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
 
20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublished
 

Último

20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdfAyachika Kitazaki
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfMatsushita Laboratory
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦Sadao Tokuyama
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-LoopへTetsuya Nihonmatsu
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~arts yokohama
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法ssuser370dd7
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor arts yokohama
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見Shumpei Kishi
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)ssuser539845
 

Último (12)

2024 04 minnanoito
2024 04 minnanoito2024 04 minnanoito
2024 04 minnanoito
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
 
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
 
2024 03 CTEA
2024 03 CTEA2024 03 CTEA
2024 03 CTEA
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
 

mixiアプリxZendFramework

  • 1. mixiアプリ x ZendFramework バズー株式会社 開発チームリーダー 清水樹 id:Bayside * bayside@twitter * http://tec.buzoo.jp/ Copyright (C) 2010 Buzoo Inc. All Rights Reserved.
  • 2. アジェンダ ■ ソーシャルアプリとは? ■ mixiアプリとは? ■ mixiアプリとmixiアプリモバイルの違い ■ 携帯版(mixiアプリモバイル)の注意点 ■ PC版(mixiアプリ)のはじめかた ■ 携帯版(mixiアプリモバイル)のはじめかた ■ mixiアプリ事例紹介 ■ ZendFrameworkの使いどころ Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 2
  • 3. ソーシャルアプリとは?(1/2) ■ SNSのソーシャルグラフを利用したウェブアプリケーション ■ 共通API(オープンソーシャルAPI)を使用  ■ Person & Friends API  ■ Community API  ■ Activities API  ■ Persistence API ■ Facebookが2004年にリリース ■ その後5年で3億のアクティブユーザーを獲得 ■ サードパーティにプラットフォームを解放 ■ 一つ作れば他のプラットフォームへの移植も割と容易 ■ めちゃくちゃ儲かる人が出現 ■ 怒涛のようにFacebookアプリが溢れ、勝ち組と負け組に2極分化 Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 3
  • 4. ソーシャルアプリとは?(2/2) ■ 日本では2009年から導入開始 ■ 2009年8月mixiアプリリリース ■ 2009年10月mixiアプリモバイルリリース ■ 2010年1月モバゲーアプリリリース ■ 2010年多くの国内ゲームメーカーが参入予定  ■ スクウェア・エニックス  ■ ハドソン  ■ コーエーなど ■ 2010年6月GREEアプリリリース予定 ■ 2010年は日本でのオープンソーシャル元年 ■ いますぐ参入すれば半年程度はブルーオーシャン Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 4
  • 5. mixiアプリとは? ■ mixi版ソーシャルアプリ ■ PC版(mixiアプリ)と携帯版(mixiアプリモバイル)がある ■ PC版と携帯版があるのは世界初   ■ 後続のモバゲーは携帯版のみ   ■ GREEはPC/携帯両方になる? ■ JavascriptAPI / RESTfulAPI が使用可能 ■ マネタイズは広告かアプリ内課金(300円/回まで) ■ キャリア課金が可能 Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 5
  • 6. mixiアプリとmixiアプリモバイルの違い PC版(mixiアプリ) 携帯版(mixiアプリモバイル) 開発 個人でも可 法人のみ 広告 比較的自由に貼れる mixi公式のみ 外部リンク 比較的自由に貼れる 一切禁止 キャリア課金 ○ ○ 個人情報取得 外部リンク先で取得可能 一切禁止 PV数 少ない 圧倒的に多い OpenSocialAPI Javascript / RESTful RESTful アプリ実行 ユーザーのブラウザ内 サードパーティのサーバー内 Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 6
  • 7. 携帯版(mixiアプリモバイル)の注意点 ■ mixiプラットフォームがユーザー/SAP間に入っている ■ ユーザーからはmixi内にいるように見える ■ 実際のアプリはサードパーティー内(SAP)にある ■ 負荷対策を自前でする必要がある ■ 初速がものすごいため、最初から高負荷に対応する必要がある ■ コストパフォーマンスを考えるとクラウドも視野に入れる ■ 絵文字変換、画像変換等は自前でやる必要がある Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 7
  • 8. PC版(mixiアプリ)のはじめかた ■ ディベロッパー登録(個人) ■ 管理画面よりアプリ登録開始 ■ GadgetXMLファイル(UTF-8)にガリガリコードを書く ■ テスト(テスト時に他人が使うときは承認が必要) ■ カテゴリ申請(2週間から1ヶ月程度待つ) ■ 規約に反していて申請が通らなかった場合は修正して再度申請 ■ 申請が通ると誰でも利用可能になる(新着アプリ掲載) ■ 広告申請(mixiアドプログラム) ■ 広告開始 ■ 継続的な改善と更新 Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 8
  • 9. 携帯版(mixiアプリモバイル)のはじめかた ■ パートナーアカウント登録(登記簿謄本が必要) ■ パートナーアカウント申請が通るとメインアカウントとテスト用ア カウント(20個まで)がもらえる ■ 管理画面より登録開始 ■ GadgetXMLファイル(UTF-8)にアプリのURLを書く ■ テスト(テスト時は他人は一切使用不能) ■ カテゴリ申請(2週間から1ヶ月程度待つ) ■ 規約に反していて申請が通らなかった場合は修正して再度申請 ■ 申請が通ると誰でも利用可能になる(新着アプリ掲載) ■ 広告申請(mixiアドプログラム) ■ 広告開始 ■ 継続的な改善と更新 Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 9
  • 10. mixiアプリ事例紹介(1/5) ■ 自社開発アプリを4本リリース済み ■ 4本中3本がPC/携帯両対応 ■ すべてZendFramework製 ■ mixiアプリ新規1本作成中 ■ モバゲーアプリ準備中 ■ GREEアプリ準備中 Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 10
  • 11. mixiアプリ事例紹介(2/5) 青空文庫 利用者数:約32万人 著作権の切れた文学作品を収集・編集し インターネット上で公開している電子図 書館がミクシィに初登場! 秋の夜長、あいている時間を読書にあて て、あなたも知識人! http://mixi.jp/view_appli.pl?id=11421(PC用) http://m.mixi.jp/view_appli.pl?id=11421(携帯用) Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 11
  • 12. mixiアプリ事例紹介(3/5) みんなでチャット 利用者数:約8万人 眠れない夜にみんなでおしゃべり!シン プルで使いやすいチャットです! 二人っきり話せるプライベートモードも 現在開発中です! 遊び方を守ってお楽しみください。 http://mixi.jp/view_appli.pl?id=12886(PC用) http://m.mixi.jp/view_appli.pl?id=12886(携帯用) Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 12
  • 13. mixiアプリ事例紹介(4/5) 女子力UP☆マナークイズ 利用者数:約4万人 マナークイズで女子力UP! セレブ度を上げてともだちと競おう! セレブスタイル浜松町主宰 マナー研究家  住友淑恵先生監修! ランキング上位者には素敵なプレゼントが!! http://mixi.jp/view_appli.pl?id=13904(PC用) http://m.mixi.jp/view_appli.pl?id=13904(携帯用) Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 13
  • 14. mixiアプリ事例紹介(5/5) こころの花束 利用者数:約1万人 相手への感謝の気持ちを言葉の花束にし て届けましょう! みんなにたくさん感謝された方には素敵 なプレゼントが! http://mixi.jp/view_appli.pl?id=14082(PC用) http://m.mixi.jp/view_appli.pl?id=14082(携帯用) Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 14
  • 15. ZendFrameworkの使いどころ ■ 携帯版(mixiアプリモバイル)での使いどころを中心に ■ PC版は携帯版のロジックをほぼそのまま流用  ■ PC版でも RESTfulAPI を使用 ■ トピックス  ■ RESTfulAPI  ■ URIの処理  ■ セッション  ■ 絵文字  ■ リダイレクト  ■ 高負荷対策 Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 15
  • 16. ZendFrameworkの使いどころ(RESTfulAPI) ■ 開発ガイドのサンプル通りで問題なし ■ OAuth.phpだけダウンロードする必要あり ■ ZendFramework 1.7系の Zend_JSON はマルチバイト対応が× ■ Zend_JSON だけは 1.8系のものを利用 ■ 主な機能  ■ Person & Friends API  ■ Community API  ■ Activities API  ■ Persistence API  ■ Album API Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 16
  • 17. ZendFrameworkの使いどころ(URIの処理) ■ mixi内のURLはホスト名つきでそのまま記述 ■ ドコモの場合は guid=ON 必須 ■ urlパラメータをmixiが自動的に解釈してリクエストを返す ■ ブラウザがキャッシュが効き過ぎるので毎回ユニークなURIにする index.php とか function fp($path) { if ( preg_match('/?/', $path) ) { $path .= '&randomid='.uniqid(); } else { $path .= '?randomid='.uniqid(); } return '?guid=ON&url='.urlencode('http://somewhere/'.$path); } index.phtml とか &#63731;<a href="invite:friends?callback=<?= urlencode('http://somewhere/') ?>">友達にすすめる</a> &#63859;<a href="http://m.mixi.jp/view_community.pl?id=4712506">お問い合わせ</a> &#63873; <a href="<?= fp('/help/index') ?>">ヘルプ</a> &#63684; <a href="<?= fp('/') ?>" accesskey="1">[1]Topへ戻る</a> Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 17
  • 18. ZendFrameworkの使いどころ(リダイレクト) ■ ユーザーからはmixi内にいるように見えるので、必ずホスト名付き のフルパスで指定する必要がある ■ mixiプラットフォームが自動的に解釈してリクエストを返す ■ この辺りの処理はベースコントローラに書くと楽ちん ■ セッションID、guid=ONはつけない ベースコントローラとか /** * @override */ protected function _redirect($url, array $options = array()) { return parent::_redirect('http://someware/' . $url, $options); } Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 18
  • 19. ZendFrameworkの使いどころ(セッション) ■ リクエストごとに opensocial_owner_id(mixiユーザーID)が必ず 渡ってくる ■ セッションIDの代わりに opensocial_owner_id を使う index.php ini_set('session.save_handler','user'); require_once('Util/Session.php'); Util/Session.php <?php function _open($save_path, $session_name) { global $sess_save_path; $sess_save_path = APPLICATION_PATH . '/../session'; return(true); } function _close() { return(true); } function _read($id) { global $sess_save_path; $sess_file = "$sess_save_path/sess_". $_REQUEST['opensocial_owner_id']; if (file_exists($sess_file)) { return (string) @file_get_contents($sess_file); } else { return (string) null; } } function _write($id, $sess_data) { global $sess_save_path; $sess_file = "$sess_save_path/sess_". $_REQUEST['opensocial_owner_id']; if ($fp = @fopen($sess_file, "w")) { $return = fwrite($fp, $sess_data); fclose($fp); return $return; } else { return(false); } } function _destroy($id) { global $sess_save_path; $sess_file = "$sess_save_path/sess_". $_REQUEST['opensocial_owner_id']; return(@unlink($sess_file)); } function _gc($maxlifetime) { global $sess_save_path; foreach (glob("$sess_save_path/sess_*") as $filename) { if (filemtime($filename) + $maxlifetime < time()) { @unlink($filename); } } return true; } session_set_save_handler("_open", "_close", "_read", "_write", "_destroy", "_gc"); Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 19
  • 20. ZendFrameworkの使いどころ(絵文字) ■ MobilePictogramConverterを使うと楽ちん ■ Softbankでは MPC_TO_OPTION_WEB にすると化けるので MPC_TO_OPTION_RAW を指定してます ■ 本家サイトがなくなっているので(汗)ググって取得してください layout.phtml <?= '<?xml version="1.0" encoding="Shift_JIS"?>'; ?> <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.0) 1.0//EN" "i-xhtml_4ja_10.dtd"> <html xml:lang="ja" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" /> <title>xxxxx</title> </head> <body> <?php require_once 'MobilePictogramConverter.php'; $mpc = MobilePictogramConverter::factory($this->layout()->content, MPC_FROM_FOMA, MPC_FROM_CHARSET_SJIS, MPC_FROM_OPTION_WEB); echo $mpc->autoConvert(); ?> </body> </html> Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 20
  • 21. ZendFrameworkの使いどころ(高負荷対策) ■ 何も考えないとすぐロードアベレージ数十でサーバーダウン  ■ 特に初速(新着アプリ掲載時)がヤバい ■ オープンソーシャルAPIを呼び過ぎない  ■ ユーザー情報は一度取得したら24時間は再取得しない  ■ マイミク一覧は一度取得したら一定期間保存する  ■ コミュニティ一覧は一度取得したら一定期間保存する ■ Zend_Db_Tableで頑張りすぎない  ■ パフォーマンスが必要なところは生SQLも辞さない  ■ 正規化をあえて崩す  ■ Zend_Db 最高(笑)  ■ そもそもそれはDBにいれなければいけない情報か? ■ バッチ処理にできないか  ■ ランキング  ■ リコメンド Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 21
  • 22. まとめ ■ オープンソーシャルアプリが流行っている ■ mixiアプリをやるならPC/携帯両方に対応したい ■ ZendFrameworkでmixiアプリを作ることはもちろん可能 ■ でも、高負荷対策をちゃんとやる必要はあり Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 22
  • 23. 最後に ■ バズー株式会社ではソーシャルアプリの受託開発を行います ■ お問い合わせお待ちしています! 担当:石渡(イシワタリ) Email: info@buzoo.jp お問合せURL: http://buzoo.jp/contact/ Tel: 03-5408-7805 Copyright (C) 2010 Buzoo Inc. All Rights Reserved.    id:Bayside * bayside@twitter * http://tech.buzoo.jp/ 23