Post on 24-May-2015
description
!"#$%&'()*&+,
!-./01
! ! "#$%&'()*+,-./ !
!"#$%&'()*+,-.
/01 健太郎
!"#$%&'
! !"健太郎
! #$%&'#$()
! *+,-.
! ke-tai.org 管理⼈
! /0-12345067,89:
! ;<=>37?@ABCD0*EF
!"#$%('
! ;<=>37?@ABCD0*
! 北海道札幌市のソフトウェア開発会社
! GHIJKLMN02N3OPQRS
TU-VWXYZ(2009)T[\4]^C(2010) TLord of Knights(2012)T4307_U`3O THE CONQUEST (2012)
※プログラム開発のみを担当しており、企画・運営は⾏っておりません
)*+,-
!"#⼒がぐんぐんと上昇して$"#%&も⻑くなる
'()*+,-./0123!"#45678
!"#$%&'()*+,$-./012345$6789:;<=14>1=?@.A
./.,-
9:;<<<=>4?@?)%4AB,CD
?@?⼒がぐんぐんと上昇して+(+E"F"も⻑くなるGHI
JJJE+(+EF)KL#MFNM*LOMLP,Q./0123?@?45678
"?(RF)STFU%R"UVWX
!"#$%&'
01234567894
YZ[\]^_`ab4cde^_fghija
klmn/AopqrstuAv
:;<=>
! !"#$%&'()%*+,-./012
! 3456/012
! 7895:%*;%</012
! =>?@/012ABCDEF
! =>?@/012AGHEF
! =>IJK/012
! LM/N21O.P/012
! QRS
!"#$%&'()%*+,
!!!!
!"#$%&"'()
!"#$%&"'()*+,-./012,3145678!"#$%9:;<=">?@9A
"BC(-D-6EFGHIJ8KLM"N"OPQRST"#U?VOWXYZ[
\]^_`?a]?&"'9bacN&"'Fd_e
fgF7@h"Yijk!"#$%&"'LGHVlmn8oLpqr"9st9
s"Yuv^_wxyz{|A"BC8}~&"�c?YGHVlmn�����
=]�%�Y��Lm�WOX��e����年��k7-D-��i��LQ�#rY
�40�0�[h�LA"BCVlm8��&"'��YGH^_&"'Y��IJ8
�5�..YGH^_�A?#$]?� �Y¡¢£Y���¤¥V¦^X§8¨©ª«
^_¬kX��e
®0�0¯5°01¬W±²
!"##$%&&'()*+,+$-.+()/01&*+,+&234567389
!!!!
?@<ABCDEFBGHI%&'
!"#$%&#'('()*+'&,-.
! $%&'()%*TUV%JWXY/ZO[RT\]^
³ ´ha?´µ¶·¬¸oJk¹º^_�»¼½¾
³ P?[¿À$ÁÂ
³ XÃÄÅÆÇLÈÉ�WYÊËX��
³ pÌÍ�ÎÏLVÐ�ÑÎ_ÒÏW7XÎ
³ s?ÓS�OnÑ7ÔÕkÖ×n�Î
! _`#abcdeQfg1
³ ØkÙÚLÛWkÜnÑ7d�WÝÞYßάÄ
³ �ÄnÛWLàá!"#$%&"'kâãYXÅ��¥�FY8
ä��åæç�OèÎÑË_OÎÝÞY
?@<ABCDEFBGHI%('
開発者から⾒た最近のソーシャルゲーム開発
! JhiTjkl/Zm2n21O
³ :]érb�[h7ÏêÌÃ8».ë1ì593�ííÏ
³ ガラケー界隈は少し落ち着いて来た印象
³ îï{|L&"'ðñkò21óôVõö÷7øªn�ùú
! 9mofpqrcsf21Z1
³ �a]�?<9A"~9]?ûaX§àÑYüWXÎ
³ ýþÿ(ý1!1þ1ó5,ÿ°40"0ó!#1!.#6Y$%IJ_
³ &¼»'()*-s?ÓS�LS"+Yµ,o
³ O7Î,-./Ym�W8XÃê0�ÑL1£2s?ÓS�7
ä oÌoÌ34IJ75Í_ÅÏ
?@<ABCDEFBGHI%J'
()*+,-./0123456738$9
! tu#vw
³ l�67L8�k9Îs?ÓS�:ÍZJ_ÏLÏ;<�Ñ=�
³ >?Ú!L"#/(s?ÓS�$%&8'7'(k8)*7+W,^6
! 求められる能⼒
³ 継戦能⼒(続く運営・アップデート、終わりがない)
³ 情報の横への共有化、他者/他社への展開能⼒
³ 安定したリソース提供、⻑期を⾒越した教育スキームの確⽴
³ 海外展開能⼒
! $%&'()%*xyz#{|}
³ -./®5ëA"BC0L128&"QûrT"#U?0L3ö
³ 45LP?#R"6"&"'L:;</OoL~;�s?´l�
!"#$%&'(
!!!!
KLMNOP1Q(1)
ソーシャルゲームとクラウドは相性が良い
インフラ視点から⾒たソーシャルゲームの特徴
~��%J�#��K����T�N1
wxyaz{|}~���um
wx�^_uA������ad��m
~�%<v�T�n1
wx�4����������
wx�����
wxfgZ�aZY�Z_3�
KLMNOP1Q(2)
Q. /012,3+'&4.A. 最近では国内のクラウドサービスを利⽤しています�,:�ih{zq������m ¡�l�¢AWS£�mt¡¤¥¦§4¨a©d4��¢�ª«AWS ¡
!"#$%&'()*+,-../
こんなポイントを⾒て選んでいます
³コストや安定度(障害履歴)は当然⾒る³78LBがあり、それが強⼒であること³インスタンスの追加が容易で速いこと(電話やメールとかは論外6
³qrC�0LI/OY9ËøªnÑÎ_:O8SSD;ÏdWY�γ⾼価でも強⼒なスペックのインスタンスが⽤意されている、
äまたは物理マシンとの併⽤が可能(最後の⼿段的な使い⽅6
KLMNOP1Q(3)01234+5678!"#$%&'()*+,#-.)/01234
!!!"
#$%&'()*)+
,-,.*/+0#,1
23"
45678.*.+ 094-#
:;6"
<(<&%&'(=>9:5?@?A5&??B
CDE"
FG5GH?I>9&%&@J>9452K6
)*+#,-./-0
%&'(
!!!!
RSTMUBGVBWOP1Q
56789PHP1:3+';<=>?@-''#A';<BCDEFGEH7IJ@<
! +,78
x ?@?¬P?)%*¬PN®¯lAsq°±²±
x ³´3µ¶ °m�·���CD¸¹ad4º»¼�
w 新⼈教育が容易な⾔語が向いている
! [½a¾¿ai
x Àr[½a¾¿aiq�ÁÂm/
x 以前はあえてのベタ書きだったが、開発効率や再利⽤性など
w の⾯からフレームワークを作成し利⽤するように
x ï#ÄRF¯3�4ÅÆ[½a¾¿aiqÇÈuÂ�ÁÂm/
w 3�4Éu£²±��ÊË2,¢ÌÇÈÍÎÂm/°�Ï
12345%&'(
!!!!
XYZ[\OP1Q(1)まずはテストプレイなどから数値目標を⽴てる
9<=IJ_>?@AB
9CM"NYC[\]FDÐ^_?Ç
9CM"NYC分間に⾏うリクエストの数
【例】
256789:;<<<<=+25678>?;5@)67ABCDEFGHEGI8>*J4
;EGIAKL*J5@9:;<分操作し続けて離脱と想定
;EGIA;分間に⾏う平均リクエスト数9:MN
O ;<P@#2567EGI89:;<<<<:Q:R:S:;RRTEGI
UO ;P@VWHXYZ[\JN89:;RRT:]:M:S:^__MN
UUO ;`@VWHXYZ[\JN89:^__M:Q:R<:S:;_aN
ÐwÑÒk;ÓÔ¸iÕd_LÖpq×AØÎÙ°m
XYZ[\OP1Q(2)9:;<;=>?@ABCDE
9X_EËFGLDÐkHÎ#Ih`k^_
9ÐJL�ÇYÅÅW^KXάk^_
9全部をシナリオに⼊れるのは無理なので重い処理ランキングを元に、
利⽤頻度と処理の重さを考慮して配分する
ih{zÚ,ÛÜ)K)%クライアントを複数台⽤意して⼀⻫実⾏
ÝÞuAßàáâqi¸} ã/äqåäB/
æç3èéêa]ZëìíÞqîsï¡
FGHIJ+("#$%KLMNOPQRSTU
このあたりを⼀緒に協⼒してくれる
"#$%V#WXYNZ[\]E
6789:12;<
%&'(
!!!!
]^_`<XYabOP1Q(1)
KLMN9-OPQ&4@R9STU;<
�n��0/��2?@
wx ð�ñòó[½a¾¿aiô4õö÷
wx øù�aú¼T?û4õö÷
共通部分はあらゆる処理で呼ばれることになる
üts;#Ã�±3ÎÙ�;<<<¸iÕd_3è;<<<ýþ�
ÿ!W"#�õmð�ñòq$%uÂW&u�
'4(,øù4b)ëh¾qW&uÂm±
]^_`<XYabOP1Q(2)^_+`a]76EFGbcdefgAIJ
【共通処理編V
G;IP共通処理内で何をしているかを全て把握しているか
O どういう処理が⾏われるか、bcdは何回流れているか、などを完全に把握すること
O 共通部分に処理を⾜すときは、かならずチーム内で許諾を取ること
G*IPそもそも、その処理は本当に必要なのか
O 最も効果的な負荷対策は、処理の速度を速めるより処理⾃体を無くすことである
O eVHfghiZ j サーバ型のアプリの場合は、相当処理が削れる
O クライアント側でキャッシュや処理できるような処理がないか⾒直す
GÓIPfg^+ê¢ ã3mä
O klmnopqr s:tutvwvxu sssss:yzbcd:#{)|}
+klm?~u��G���)#nopqr)BJ�>V��4
O 共通処理内では、bcd実⾏回数がゼロが望ましい
]^_`<XYabOP1Q(3)
G,IP無駄なものの発⾒
O ��&�u����u��*V?�GZ�G�#��A�
O ��l���#vw����w�x)��pH
O �u� ��¡¢£LYHW¤Z)¥
U ��&¦8¢§¨\©}&}ª«p�&,�¬
G-IP'4./´0
O �®G¢XfG¯i�f&,¥°¨±>�²A³pHV&J�>/BJ#)¥
U ´µ\JN8A¶}/#?¥·¸��pH¹�rGFiº*J�>
O »¼b½bb¾¿Àの利⽤は最低限に留めること
]^_`<XYabOP1Q(4)^_+`a]76EFGbcdefgAIJ
【個別処理編V
G;IP1m?@?hZfZëqr/ó2ëh3ã4ô
O 実⾏速度を記録する仕掛けを作り、最も遅くて呼ばれる回数の多い順に対処
O k�wvxu�ºÁÂw�w���&,)ÃÄ*JÅÆ/
G*IP567の⾒直し
O Ç}ÈÉ#Ê>Ë,?bcdAÌÍ)Ç}+h¤W�ÎpH)#ÏÐÑÒ?ÓÔ}4
O ÕÖ#×Ø>ÙGÚ8AÛ%>ÜÝV&Â&}¥ÙGÚ?ÞV¶ßV�\©àá�>
O giÙpHYâ§ã#HXW¢Y�GHXW�ºVäC©áJHXW��*
O t j��u�zjå��u¡æで早くても実⾏回数の多いクエリを発⾒しチューニング
O vwvæ�などのグラフから問題を発⾒する
GÓIP仕様で⾒直す
O çè�ÊéêDÔëë/¥ìí&áîGïVL\J>�²A&}Á�ÞVðñ
O どうしてもダメなら仕様の⾒直しを相談
]^_`<XYabOP1Q(5)hijIk1lFGbc
./LMLNg7!"#$%&'()*+,-./012Fd_e
�Än®5ëA"~OýþC\]b78PBVµO^:OFL3F=_Y8
ýþ6C�"7QRk7µO^:OYF=XÎ�Í8::Y:;�OX_e
¬�Ñ8./VX_EËKLA"~kÚS^_TúYUÑË_
!8!5G#)#&M&()U3�IP,¦§/
O 情報が古い可能性があることに注意、トランザクション処理にはあまり使えない
!9:d½Y;,¦§/
O òÞ?YógôV67Ô¥ZfiIHqõiö÷øù½ú¾Àû)üYÚGV67*J
U+ýóGþÿGHó!î)Õ"4
O üYÚG�iWG)ö#�$ߥ%&&HXWÁÂ{V'(b¢YóGôV
U )C©}á¢*Å/
O giýf#'+Å,V/-Ë)áJ
]^_`<XYabOP1Q(6)hijIk1mn
<ß¿a`z,ò§èÎ3mjYb4=a¾¼�>�?!>ß4
�m=a¾4���cdjaò"¢#§Â�/��� ã3mv
!$%ò"
³ 切り離しやすいテーブルを他のýþに持って⾏く(例+VWXÄ|Yýþ6
!&Ñò"
³ M"NZýQ[FÚ?^_
³ @�"~%ýþV\ê8o:kM"NZýO]^ýþV_`n�é"b%V\Ò
³ a6b`?k7iÏ��érbM"NBLcXÎýþkb`
de7�[hfFgBLýþVhk<a?N�#U?lmiPQ;<nÑÎ_
³ Ú?ýþが多くなるほど性能が劣化する
³ バックアップ時の整合性や、エラー時の処理が⼤変
³ M"NÇLÜ<WYÊάX�[h7ÐWjZÎ
³ »k-l' ï2mó!5#knon�Î
]^_`<XYabOP1Q(7)ofgpqbc
./7ÅÅ�ÑÎXÎYpûq"6?CYUXÎ8
'./�,r10!,!045.m!Ys�^_8X§L t7�;�utVv
6C�"Ú?IJÑÎ_ t78
デッドロック検出がされないので更に厄介
'W()
_hZ*i++Z��¢,-3.s/±
³ �[hfkwULxy|VÎJÑÎ_
³ »k-2.r¼#1"ï1¯!m#5X§Lz"%V{ö
)^i��±ää/0a;`¢1ä±ò§/
³ ⾏ロックをかけるので8�つのポイントを同時に更新できない
³ |]?<}Lé"b%X§F~WYêX�
user_point_tbl!user_id!energy_point!battle_point
user_energy_point_tbl!user_id!energy_point
user_battle_point_tbl!user_id!battle_point
! !
=>%?('@AB
!!!!
cdO9Q13Ie
WXY1Z[\U;<
23)®ÕZú]}4AB44aj�ad56789:;<
ww=>?@AB
äO ./¥eV;01?«Gqoî2Gþö#3?·4
2ÕfdCa_4AB4ܯ5677D!E管理:
w_h;`+êa0\ZëFYzäGHIJAB
äOUò567×8¥ロックを理解するのにオススメ
2ÜR®MK)qLn/56 〜ソーシャルゲームの舞台裏〜
ww9)MTB
äOU9DµÁ*¥Õ:;&<=
56NO¥Ï�
>?!>Ô©~½ù"#ù:l$½bb¥b��æ%w�u#u¡���
>>*B&¸¥?©'#6(i)rGÚ>¾*8カテゴリは全部⾒てます
8fg(1)! $%&'()%*+,}��v�f00eO
! �S��O}##vw/��/?{N21n^1
! クラウドとソーシャルゲームは相性が良い
! 3456��c��/��
! �4��9APIc _N21OR9mof¡N1! ¢£J<I/O¤�¥! ¦§¨�©¦Jª�<c«¬RN2efT^1
8fg(2)! 5:%*;%<c®¯T°JJ±
! =>?@cIJKR²³�<�JK¤¯m2´�R?
@
! DBhJµ%#=>¶·T¸RZO
! =>/c3456~¹º�T»¼RZm2?{
! 基本に忠実に鉄板構成で、ただし⾏けるところはガン
½4R
! �vZ[R}¾1�©¿N1WÀd¿NÁ[RT��
! 10}ÂÃ#ĤÅ�Æ/
hijk
PQRSYZ[\]^_`ab ¢ÕZú]}qTUuÂmt¡
! 社⻑も含めほぼ全てがプログラマで技術者に優しい環境
! �VW'北海道札幌市
! XmumYZ[mÁ\m�À]mÁ\m�^_`3m�aum
! 短い通勤時間、徒歩や⾃転⾞で通勤;<ò�ä£*h
! bjaZ�ûjaZcde
! ?@?CDÕZú]}
! dcfCDÕZú]}
! ܯ567ÕZú]}
! YZ[hÕZú]}
l
!"#$%&'(!)*+,-