#garagekidztweetz

id:garage-kid@76whizkidz のライフログ・ブログ!

#devsumiC #devsumi2015 で #Miiverse の話を聞いてきたメモ

スポンサーリンク

devsumi2015 で参加してきたセッションのメモ、最後は任天堂さんと hatena さんの Miiverse の開発四方山的な話をきいてきたメモです。

これはセッション開始前から資料が公開(devsumi-2015-Miiverse // Speaker Deck)されていて、そちらをすでに読んだ方が多いのではないかな、と思いますが、一応せっかくとったメモなので公開しておきます。

では以降がメモです。

20-C-5 世界に展開できるウェブサービスのつくり方

  • 資料は事前に公開されている
  • Miiverse の話
  • なぜ世界に展開するのか?
    • なぜ世界展開の話なのか?
    • Miiverse のアクティブユーザは
      • JP, US, EU で 1:1:1
      • 単純にサービスが日本以外の地域にもマッチしてる
      • 品質が国によらず均等
  • 世界展開に必要なこと
    • インフラ構築・運用
    • 多言語対応
    • 企画運営
  • Miiverse とは?
    • Mii を通じてゲームを話題の中心としたコミュニケーションサービス
      • 手書き
      • ゲームのスクリーンショット
      • マルチデバイス
        • WiiU, 3DS, PC, SP
    • ウェブベースの実装
      • HTML5 + CSS3 + JS
      • ネイティブアプリ + ブラウザアプリ
      • 3DS でぬるぬるうごかすための魔改造をいろいろやってる
    • 開発体制
      • はてな京都オフィスで Hatena と任天堂が一緒に開発
    • 開発体制
      • JP
      • US
      • EU
  • 世界に展開できるインフラ構築
    • AWS を使った 3 リージョン構成
    • 直近のリージョンにアクセスするようになっている
      • レスポンスへの配慮
    • リージョン間は VPN で結んでいる
      • 管理障害対応をシンプルにするために
    • Proxy + App server + DB server
      • App server は各デバイスごとに用意
        • code base はすべて同一
      • DB はリージョンで分かれているがデータはどこの国のものをみれる
        • 各リージョンに独立したマスタ DB
        • Cross-Replication
        • 同期的な処理をリージョン内で完結させている
    • リージョンとデバイスのルーティング
      • リージョンとデバイスごとに異なるエンドポイント
    • サブシステム構成
      • マイクロサービス
        • 基板となる処理を分離
        • REST API
      • 3つのサブシステム
        • タイムライン
        • 共感
        • 通知
      • すべてのリージョンに
    • Mackerel によるサーバ管理を行っている
    • AutoScale もやってる
      • 約 20% のコスト削減
      • リソースの状況によってサーバ数を自動で増減
    • マルチリージョンで障害監視
      • 24/7 の監視体制
        • 実機での定期確認 (3 リージョン)
        • アラート監視
  • 多言語対応の運用
    • 内部的にはメッセージ識別子 (messageid) が言語によって展開される
    • ユーザに見える部分
      • UTF-8
      • MySQL: UTF8MB4
        • 5.5.3 以降で利用可能
        • 絵文字に対応するため
    • 翻訳作業をどこでやるか?
      • Hatena::Translator
    • 多言語対応の注意点
      • 複数形に気をつける
      • 画像に気をつける
        • 文字を含めずに CSS と背景画像で対処
      • 文言の長さに気をつける
        • 長い文言で崩れないようなデザインに気を使う
      • 男性名詞、女性名詞に気をつける
        • 名詞の性によって文言が変わります (格変化)
      • Cache に気をつける (Miiverse はユーザごと)
        • Server 側
          • 言語やその他の違い
        • Client 側
          • 言語変更されるとズレる
      • 時差に気をつける (Miiverse はユーザごと)
        • 日時は UTC で保存
        • TZ は機械的に決定できない
      • 日付表記の違いに気をつける
      • 数値表記の違いに気をつける
      • 検索エンジンに気をつける
        • Index された言語でレスポンス
        • サービスによって適宜
      • etc, etc.......
  • 地域に合わせた企画運営
    • 現地のことは現地の人に聞く/任せる
      • サービスの使われ方
      • 法律による制約が地域によって異なる
        • 成人の定義が異なる
          • 成年指定タイトル
        • Eraser Button Law (U.S, CA)
      • 事務局方式で対応している
        • ガイドラインの統一
          • 利用ガイドライン
          • 監視ポリシー
        • 運営レポートの共有

資料

その他資料

あわせて読まれたい