[sapporo cedec] サービスの効果を高めるグリー内製ツールの技術と紹介
DESCRIPTION
SAPPORO CEDECでの講演資料です。 http://smileboom.com/sapporocedec/ <セッション内容> サービスの効果を高めるグリー内製ツールの技術と紹介 堀口 真司 グリー株式会社 開発統括本部 インフラストラクチャ本部 お客様に、よりよいサービスを届けるために開発されたツールの紹介をします。 またそれらの需要変化や規模、技術、今後の展開などをお見せします。TRANSCRIPT
Copyright © GREE, Inc. All Rights Reserved.
サービスの効果を高めるグリー内製ツールの技術と紹介
だいぶインフラストラクチャ寄りです
グリー株式会社堀口真司
2014/11/22
Copyright © GREE, Inc. All Rights Reserved.
インフラ女子
グリー株式会社 会社紹介
六本木に構えてます
知名度低め
偉い人がよくわからないことをやっている
グリー CTO
GREE 10th
Copyright © GREE, Inc. All Rights Reserved.
自己紹介
• 31歳ゲーム好き。仕組みを調べたり作ったりする方が好き。
• 生まれも育ちも東京です。北区→渋谷区→練馬区→大田区→港区
• インフラエンジニアには珍しいゲーム業界系 (?)
家庭用ゲームGC/PS2
家業
MMO-RPG
独自プロトコル系PC/PS2~PSP
アーケードゲームハードウェア系
PS3/Linux
ソシャゲインフラ系
?
18歳
10歳C/C++
チート・セキュリティ
t
Copyright © GREE, Inc. All Rights Reserved.
もくじ
• 用語や構成
• 問題解決しようとしたこと
• ツール一覧
• 今後の展開
• まとめ
Copyright © GREE, Inc. All Rights Reserved.
用語や構成
アプリケーションサーバ
データベース
サーバ・ハードウェア
ラック・データセンター
プロキシ・ロードバランサ
ブラウザなど
CDN
DNS
冗長性柔軟性
高更新頻度
拡張性手軽さ
Copyright © GREE, Inc. All Rights Reserved.
用語や構成
アプリケーションサーバ
データベース
サーバ・ハードウェア
ラック・データセンター
プロキシ・ロードバランサ CDN
DNS
ブラウザなど
• フィーチャーフォン• Android / iOS
• Unity3D
• Adobe AIR
• flashlite
• HTML5
• ほとんどモバイル端末
Copyright © GREE, Inc. All Rights Reserved.
ブラウザなど
用語や構成
アプリケーションサーバ
データベース
サーバ・ハードウェア
ラック・データセンター
CDN
DNS
プロキシ・ロードバランサ
• LVS (DSR)
• LVS (NAT)
• Apache
• nginx
• ハコモノ
Copyright © GREE, Inc. All Rights Reserved.
よくある LVS(DSR) – Proxy - httpd
LVS LVS
proxy proxy proxy
httpd httpd httpd httpd…..
LVSは global ip を持ちインターネットからの入り口になる。
2台一組で片方は待機系
1
Reverse proxy へはWRRによって割り振られる。DSR なのでレスポンスはLVS を通らず直接返す
2
httpdへはWR で割り振られる。サーバスペックによって重みがある。このレイヤでだいたい100台ぐらい
3LVS または proxy
のレイヤーが無いパターンもある
VIP
Copyright © GREE, Inc. All Rights Reserved.
プロキシ・ロードバランサ
ブラウザなど
用語や構成
データベース
サーバ・ハードウェア
ラック・データセンター
CDN
DNSアプリケーションサーバ
Apache 内で動くものが大半。ほとんどが PHPたまに Ruby。一部 node.jsによるフルスタック
Copyright © GREE, Inc. All Rights Reserved.
いにしえの全部いり戦略
httpd
a.game.gree.jp b.game.gree.jp
support.gree.jp dev.gree.jp
stg.gree.jp
api.gree.jp
可能な限りすべてのソースを持ってる。Virtual host によって機能使い分け。
CLI agent
スマホ時代まで
Copyright © GREE, Inc. All Rights Reserved.
プロキシ・ロードバランサ
ブラウザなど
用語や構成
アプリケーションサーバ
サーバ・ハードウェア
ラック・データセンター
CDN
DNS
データベース
• MySQL
• flare
• MongoDB
• ZooKeeper
Copyright © GREE, Inc. All Rights Reserved.
ふつうの MySQL
app
• Master
• Slave
しかし、尋常でないレベルの可用性。ほとんどの運用も無停止で行う
Copyright © GREE, Inc. All Rights Reserved.
プロキシ・ロードバランサ
ブラウザなど
用語や構成
アプリケーションサーバ
データベース
ラック・データセンター
CDN
DNS
サーバ・ハードウェア
• Debian
• ubuntu
• solaris
• Fusion IO
• ZFS
Copyright © GREE, Inc. All Rights Reserved.
基本セット
サーバ
NIC3
ipmi
RAID1
No-battery
SCSI-HDD SCSI-HDD
主系スイッチ
従系スイッチ操作系スイッチ
電源
系統A
系統B
系統C
インターネットもローカルもこれ一本
電源は一基のみ。系統がダウンすると
1/3のサーバがダウンしてしまうSCSI-HDD SCSI-HDD
バッテリ管理コストの都合でキャッシュのバッテリ無し。用途によって容量が違う
bonding
NIC1
active
NIC2
standby
コスパ重視
NIC4
?
1
2
3
Copyright © GREE, Inc. All Rights Reserved.
プロキシ・ロードバランサ
ブラウザなど
用語や構成
アプリケーションサーバ
データベース
サーバ・ハードウェア
CDN
DNS
ラック・データセンター
メインは東京ラック間転送量や電源容量、重量などを考慮し配置する
Copyright © GREE, Inc. All Rights Reserved.
プロキシ・ロードバランサ
ブラウザなど
用語や構成
アプリケーションサーバ
データベース
サーバ・ハードウェア
ラック・データセンター
DNS
CDN画像やアプリパッケージ配信。
CDN 用サブドメインにてアクセスすると CDN経由になる。
多様な使い方。
Copyright © GREE, Inc. All Rights Reserved.
プロキシ・ロードバランサ
ブラウザなど
用語や構成
アプリケーションサーバ
データベース
サーバ・ハードウェア
ラック・データセンター
CDN
DNSカオス
Copyright © 2004-2014 GREE,Inc. All Rights Reserved.Confidential
問題解決しようとしたこと
Copyright © GREE, Inc. All Rights Reserved.
当時の状況
ゲーム
プラットフォームや SNS
課金などダウンさせられない齟齬があってもダメ
若干妥協できる速度・効率重視
フィーチャーホンスマートフォン アプリデベロッパー
端末も多く、利用される技術はとても多い
Copyright © GREE, Inc. All Rights Reserved.
当時の状況
ゲーム
プラットフォームや SNS
課金など • 負荷に応じてサーバをたくさん追加
• 月末月初は慎重に• ダウンしたらすぐに電話• 気合と根性で運用
フィーチャーホンスマートフォン アプリデベロッパー
早い、安い、うまい似てるようなゲームが多いしかし特殊な表現も一部あり
Copyright © 2004-2014 GREE,Inc. All Rights Reserved.Confidential
ツール一覧
Copyright © GREE, Inc. All Rights Reserved.
ツールもくじ
• オリジナルや OSSの組み合わせ
Copyright © GREE, Inc. All Rights Reserved.
もくじ• Cascade
• ミドルウェア
• github公開済み
• SQLや KVS等のデータにアクセスできる
• PHPかつ仕組みが単純なので扱える人が多い
• Cascade
• Awacs
• (1st) Server
• Flare
• Skail
• SH bot
• LWF
• RUM
• PrimDNS
• Release M@aster
• GTP
• SDB
• Aegis
• ganglia
• Andes
Copyright © GREE, Inc. All Rights Reserved.
Cascade
• サービスを止めずにデータソースを切り替えられる
• データへのアクセス方法が統一されている
アプリケーション
KVS RDBMS
Cascadeparameter
パラメータの書き換えは頻繁かつコードを書かない人も編集できるぐらい単純
ORM でなく比較的ベタな SQL .
クエリの可視化をしやすくすることで問題解決やチューニングもしやすく。
Copyright © GREE, Inc. All Rights Reserved.
もくじ• Awacs
• アラート発行システム
• agentをインストール
• 監視ツールのクローラーが限界だった
• Cascade
• Awacs
• (1st) Server
• Flare
• Skail
• SH bot
• LWF
• RUM
• PrimDNS
• Release M@aster
• GTP
• SDB
• Aegis
• ganglia
• Andes
Copyright © GREE, Inc. All Rights Reserved.
Awacs
agent
agent
agent
各種サーバにインストールされている agentから大量のレポートが送られてくる
1
queue
filter
filtertopic
summarizer
queuemail
重要なものをまとめる
2
メールや電話を行う
3
Copyright © GREE, Inc. All Rights Reserved.
もくじ• Server (サーバ管理)
• 通称ファースト環境
• サーバ機材の一生を管理する•納品から破棄まで
• 数万台分のエントリ
• 僅かながら状態を持てる
• Cascade
• Awacs
• (1st) Server
• Flare
• Skail
• SH bot
• LWF
• RUM
• PrimDNS
• Release M@aster
• GTP
• SDB
• Aegis
• ganglia
• Andes
Copyright © GREE, Inc. All Rights Reserved.
昔のサーバ管理方法は
• PHPの配列に直接書いておく• サーバの IPアドレス
• サーバの用途
Copyright © GREE, Inc. All Rights Reserved.
Server
• 他のサービスと同じように、全部いりのうちのひとつ• 自身のサーバも当システムに登録、利用
api.server
グリーのプラットフォームやゲーム等のデータも入っている。データベースの運用品質もお客様向けサービスと全く同じ
Copyright © GREE, Inc. All Rights Reserved.
Server
• データセンター、ラック、配置場所などの納品情報
• いつ、どのように機材の役割が変わったかなどの履歴• 生まれたて→ データベースサーバとして→ ウェブとして→ 破棄
• ホスト名、タグ、用途、アドレスなど僅かな状態
web
api
Copyright © GREE, Inc. All Rights Reserved.
状態確認ツールなど
• 状態確認や MySQLの稼働状況、トポロジの確認、 Proxyの設定変更など CLIによる一つのコマンドで出来るようになっている
• 実装言語が多種。 sh > php > pl > rb . わずかに python,node.js• 野良ツールもあわせると100個をおそらく超える
Copyright © GREE, Inc. All Rights Reserved.
例えば、デプロイツール
api.server
deploy1
deploy2
deploy…
デプロイ対象のアドレスや状態を
問合せ
platform
game
sns
数十並列x数千台にソースコードや画像等を
rsync していく
proxy
更新中のサーバにアクセスできないようProxyでコントロール
1
2
3
Copyright © GREE, Inc. All Rights Reserved.
もくじ• Flare / cloud Flare
• KVS
• 単体機能は memcache
• コアは C/C++
• マネジメントツールはHaskell
• Cascade
• Awacs
• (1st) Server
• Flare
• Skail
• SH bot
• LWF
• RUM
• PrimDNS
• Release M@aster
• GTP
• SDB
• Aegis
• ganglia
• Andes
Copyright © GREE, Inc. All Rights Reserved.
制御システム
ノードサーバ管理システム
cloud flare
Message
Queue
Message
Queue
制御サーバ
制御サーバ
制御サーバ
ノード
状態管理サーバ
Operatorノード
ノード
ノード
ノード
ノード
個々のノードの構成管理を行う
ノードの監視と制御
大部分がHaskellにてできている
Copyright © GREE, Inc. All Rights Reserved.
もくじ• Skail
• Skype Bridgeが元
• Skype,IRC,CW,mail
• それぞれのチャンネルの内容を同期
• Chat-ops
• Cascade
• Awacs
• (1st) Server
• Flare
• Skail
• SH bot
• LWF
• RUM
• PrimDNS
• Release M@aster
• GTP
• SDB
• Aegis
• ganglia
• Andes
Copyright © GREE, Inc. All Rights Reserved.
Skail
SkypemailCW
skail
IRC1
IRC2
MacBook
で動いている
BOT deploy1
deploy2
deploy…
worker
BOTにコマンドを送ることができる
JIRA
jenkins
イベントの通知
Copyright © GREE, Inc. All Rights Reserved.
もくじ• SH bot (通称)
• ふるまいは常識的なもの•ログイン~対戦~終了
• HTTPではない
• やさぐれたエンジニアがHaskellを使って開発
• 軽量、高速
• Cascade
• Awacs
• (1st) Server
• Flare
• Skail
• SH bot
• LWF
• RUM
• PrimDNS
• Release M@aster
• GTP
• SDB
• Aegis
• ganglia
• Andes
Copyright © GREE, Inc. All Rights Reserved.
SH Bot
Realtime server
Api (www)
独自プロトコルのサーバをシナリオに応じて
ブラックボックステストを行う
Haskell
軽量、高速、安定
Copyright © GREE, Inc. All Rights Reserved.
もくじ• LWF
• Flashの軽量プレイヤー
• Web,Unity,Cocos等がターゲット
• Cascade
• Awacs
• (1st) Server
• Flare
• Skail
• SH bot
• LWF
• RUM
• PrimDNS
• Release M@aster
• GTP
• SDB
• Aegis
• ganglia
• Andes
Copyright © GREE, Inc. All Rights Reserved.
LWF
.swf json
Unity3D
HTML5
Cocos2d
入稿データはswfを利用できる
プレイヤーがサポートしているプラットフォーム。
他
Copyright © GREE, Inc. All Rights Reserved.
もくじ• RUM
• NewRelic参考
• ページ読み込み速度取得
• 釧路出身者が設計から実装、導入まですべて対応
• JSと Python
• Cascade
• Awacs
• (1st) Server
• Flare
• Skail
• SH bot
• LWF
• RUM
• PrimDNS
• Release M@aster
• GTP
• SDB
• Aegis
• ganglia
• Andes
Copyright © GREE, Inc. All Rights Reserved.
RUM
CDN
varnish
普通の www
Python の daemon
fluentd
HDFS
RUM のダウンロードと通知は CDN で行う
1
フィルタによって通常のアクセスか RUM クエリかを振り分ける
2
整形して分析ツールに保存
3
Copyright © GREE, Inc. All Rights Reserved.
もくじ• PrimDNS
• MySQLを参照しレコードを返す
• 内部利用のみ
• C/C++
• Cascade
• Awacs
• (1st) Server
• Flare
• Skail
• SH bot
• LWF
• RUM
• PrimDNS
• Release M@aster
• GTP
• SDB
• Aegis
• ganglia
• Andes
Copyright © GREE, Inc. All Rights Reserved.
PrimDNS
PrimDNS作業用
app
app
PrimDNS
サーバ管理システムのデータベースを参照している
一般的なprimary,secondary
による冗長化
ゾーン毎に任意のコマンドで解決できる
Copyright © GREE, Inc. All Rights Reserved.
DNS戦国時代
• Bind• gree.jpを管理。 CDNでキャッシュされている
• Unbound• 外部ドメインの中間キャッシュ
• tinydns• 殆どのサーバに入っているローカルキャッシュ
• 設定が柔軟で使いやすい
• PowerDNS• 主に MySQL アクセスコントロール用
• LVS(NAT)で負荷分散し PowerDNSの機能でアドレスをWRRできる
• dnsmasq• tinydnsと同じ用途で利用
• ubuntuでは主にこちら
• PrimDNS• 内部サーバのホスト名解決用
Copyright © GREE, Inc. All Rights Reserved.
もくじ• Release M@aster
• “Server” 環境対応
• ソースコードデプロイの排他制御を行う•以前はチャットで音頭を取り合う
• 比較的モダンな GUI•ユーザ制御デプロイ記録
• Ruby
• Cascade
• Awacs
• (1st) Server
• Flare
• Skail
• SH bot
• LWF
• RUM
• PrimDNS
• Release M@aster
• GTP
• SDB
• Aegis
• ganglia
• Andes
Copyright © GREE, Inc. All Rights Reserved.
手動時代
チャットや空気を読んで作業する。かなり多い
デプロイの依存関係マトリクス。他の人がデプロイ中に
依存しているコードをデプロイしてはいけない
Copyright © GREE, Inc. All Rights Reserved.
Release M@aster
nginx
unicorn
rails
api.server
deploy1
deploy2
deploy…worker
MySQL
Redis
worker がジョブを読んでデプロイを実行。
完了したらジョブの状態を更新して次へ。
開発者がブラウザをポチポチしてジョブを設定
1
ジョブの状態は MySQLへ。実行時に Redisにキュー
2 3
Copyright © GREE, Inc. All Rights Reserved.
もくじ• GTP
• MySQLへのアクセスをコントロール
• 障害の起こったサーバを外す
• マスターサーバの場合フェイルオーバーを行う
• node.js / MongoDB
• 東川町(旭川の隣)出身者が設計、開発
• Cascade
• Awacs
• (1st) Server
• Flare
• Skail
• SH bot
• LWF
• RUM
• PrimDNS
• Release M@aster
• GTP
• SDB
• Aegis
• ganglia
• Andes
Copyright © GREE, Inc. All Rights Reserved.
GTP大規模向け
MySQLの状態をクローリング。
100台/sec
1
Masterの DB がダウンした場合は
Slaveの昇格
2
www
www
www
www
Power DNS
問題のあったサーバのエントリ書き換え
3
どの DBサーバにアクセスするかは名前解決の結果に
よって制御される
GTPGTP
GTP
Copyright © GREE, Inc. All Rights Reserved.
GTP小規模向け
GTP
www
www
www
www
名前解決使うのは同じ
nsswitch.confを拡張したAgentのエントリを書き換え
3
Copyright © GREE, Inc. All Rights Reserved.
もくじ• Server Dashboard (SDB)
• パートナー企業さんも利用できる
• 閉じられたネットワークを使える
• Ruby
• Cascade
• Awacs
• (1st) Server
• Flare
• Skail
• SH bot
• LWF
• RUM
• PrimDNS
• Release M@aster
• GTP
• SDB
• Aegis
• ganglia
• Andes
Copyright © GREE, Inc. All Rights Reserved.
Server Dashboard (SDB)
gw proxy
www
www
www
www
stg
QA
batch
gw proxy
www
www
www
www
stg
QA
batch
gw proxy
www
www
www
www
stg
QA
batch
サービス毎に仕切りがあり他のネットワーク
にアクセスできない
SDB
Copyright © GREE, Inc. All Rights Reserved.
gateway
SDB
SDB
Web, API
Worker template
gateway
にシェルスクリプトのtemplate を送り
Workerに実行させる
nodenode
node
普通の MVC アプリ
Copyright © GREE, Inc. All Rights Reserved.
もくじ• Aegis
• SDBを PHPで疎結合に作り直したもの
• 札幌出身者が!
• chefで構築などを行う
• Cascade
• Awacs
• (1st) Server
• Flare
• Skail
• SH bot
• LWF
• RUM
• PrimDNS
• Release M@aster
• GTP
• SDB
• Aegis
• ganglia
• Andes
Copyright © GREE, Inc. All Rights Reserved.
Auth
Aegis
Web
Render
Core
API
tool
Server
構成管理
awacs Controllernode
nodenode
Chef をControllerで実行
することでCoreの負担軽減。
HTMLレンダリング情報も APIから取得してくる
ノードからのログは awacs
に送る
社員 LDAP
協力会社 LDAP
Copyright © GREE, Inc. All Rights Reserved.
もくじ• Ganglia
• サーバモニタリング
• agentをインストールするだけでお手軽運用
• 大量のメトリクス•どんどん増えた
• Cascade
• Awacs
• (1st) Server
• Flare
• Skail
• SH bot
• LWF
• RUM
• PrimDNS
• Release M@aster
• GTP
• SDB
• Aegis
• ganglia
• Andes
Copyright © 2004-2014 GREE,Inc. All Rights Reserved.Confidential
Ganglia
MySQL関連だけで100個ぐらい
追加しやすいのでとりあえず表示が多い
Copyright © GREE, Inc. All Rights Reserved.
gangliaGanglia frontend
(reverse proxy)
gmetad
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
rrd
web
gmetadrrd
web
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
agent
gmetadrrd
web
見かけ上、これ一基ですべてのサーバのメトリクス
を監視、調査できる
マルチキャストでなく、ユニキャストで二回
別々の gmetadに送ってる
/24単位でクラスタ。大量のクラスタ。
Copyright © GREE, Inc. All Rights Reserved.
もくじ• Andes
• MySQL Master向き
• DRBDによるストレージ多重化
• Cascade
• Awacs
• (1st) Server
• Flare
• Skail
• SH bot
• LWF
• RUM
• PrimDNS
• Release M@aster
• GTP
• SDB
• Aegis
• ganglia
• Andes
Copyright © GREE, Inc. All Rights Reserved.
standbyactive
Andes
MySQL MySQL
DRBD DRBD
app
vip
VIPで active 選択Pacemaker
corosync で制御
専用 NIC で直結。データ同期に問題が出る可能性はとても低い。
Standby 側の MySQL
起動に数秒の時間がかかる
Copyright © GREE, Inc. All Rights Reserved.
他にも
• 分析ツール
• レポートツール
• サポートツール
• 野良アプリ公開広場
• などなどたくさんある…
Copyright © GREE, Inc. All Rights Reserved.
gpdata
www
www
www
www
MySQL
Web
HDFSHDFS
Zoo
KeeperAzkaban
MR
Hive
Presto
Macaron
Solaris / log
HBase
オリジナルFrontend
とてもたくさんある
分析基盤はよくわからない
Copyright © GREE, Inc. All Rights Reserved.
region
PowerDNS
VIP
LVS
(NAT)
LVS
(NAT)
Power
DNS
MySQL
tinydns
Power
DNS
MySQL
Power
DNS
MySQL
region
VIP
LVS
(NAT)
LVS
(NAT)
Power
DNS
MySQL
Power
DNS
MySQL
Power
DNS
MySQL
tinydns
データセンター毎にワンセットずつある
最寄のリージョンに問い合わせる。
DBの内容は同じだが名前解決の結果を
リージョン毎に変えられる
Copyright © GREE, Inc. All Rights Reserved.
ツール系開発言語分析
32%
21%
18%
10%
7%
6%
4% 2%0%
利用言語
PHP Ruby Shell Perl JavaScript Haskell C/C++ Python Java
Copyright © GREE, Inc. All Rights Reserved.
今後の展開
Copyright © GREE, Inc. All Rights Reserved.
ウェブからネイティブゲームへ
• 昔のプラットフォーム• Mixi
• Mobage
• Gree
• さらに昔は任天堂、SCE、SEGA
• すこし前の開発環境• Webで高度な表現をするためには
• HTML5,LWF,WebGL,enchant.js 等..
• 今のゲームプラットフォーム• App Store
• Google Play
Copyright © GREE, Inc. All Rights Reserved.
ツール開発の目標
• 大規模は見据えつつも• 大ヒットしない可能性
• 運用維持費の考慮
• オリジナルか、汎用かの比較
• クライアントアプリ技術は収束気味• Unity3Dまたは Cocos2d
• ウェブ技術は停滞気味• Webの利点が生かしにくく、 HTML5/WebGLは進化せず
• ダウンロード不要→ むしろ Storeに案内しにくい
• セキュリティ→ アプリ毎に権限の可視化で軽減
• ウェブ臭がむしろ避けられる
Copyright © GREE, Inc. All Rights Reserved.
インフラの今後
• 必要なときに必要な分だけ• これは今も昔も変わらず
• ネイティブ(クライアント)寄りになってきて、サーバの演算リソースが低下
• HTMLレンダリング→ APIコール
• 他変わらず
• クラウドの展開• クラウドゲーミングが普及した場合、サーバの演算リソースが必要になるが…
• P2Pのサポートとか
• ゲームロジックを書ける SaaSとか
Copyright © GREE, Inc. All Rights Reserved.
まとめ
大量のサーバ
大量のツール
如何にして展開していくか
Copyright © GREE, Inc. All Rights Reserved.
まとめ
• 規模が大きくなったら• OSSではまかないきれない
• アレコレ考えるより作るほうがよい
• 拡大はいつか必ず止まる
• よく起こる(起こった)問題• 短期的に作られたツールが広く長く利用されてしまい、メンテコストが上がる
• 社内向けだからとセキュリティが甘いことがあり、対応が先送りになる
• CLI派と GUI派があり、両対応コストがかさむ
• ある既存ツールの置き換えツールができたとき、依存しているツールの対応コストが増える
• 進化の足かせにもなる
• 短期的にはサーバ全体の需要は下がるであろう• HTMLレンダリングは無くなり、 API利用にシフト
Copyright © 2004-2014 GREE,Inc. All Rights Reserved.ConfidentialConfidential Copyright © 2004-2010 GREE,Inc. All Rights Reserved.
ありがとうございました