【TECH x GAME COLLEGE #7】ゲームの品質を向上させるサーバー共通基盤の作り方

D1531f9547e24397c7e85881fac03096?s=47 Takehata Naoto
November 07, 2018
430

【TECH x GAME COLLEGE #7】ゲームの品質を向上させるサーバー共通基盤の作り方

TECH x GAME COLLEGE #7の発表資料です。

発表内容(connpassページより):
スマートフォンをはじめとした、いわゆる「ソーシャルゲーム」の開発・運用ににおいて、 サーバーサイドプログラムの安定は必須となっています。 サイバーエージェントグループの一社であるアプリボットでは、 これまで約8年間、様々なソーシャルゲームの開発を行ってきました。

その間に様々な技術を使う中で、 認証やユーザー管理をはじめとする全てのゲームで使う共通機能や、 開発開始時から必要になる機構をまとめた「サーバーサイド共通基盤」を作り、 現在のプロダクトはそれをベースに開発をすることで 大幅な開発工数の削減、品質の安定化を実現しています。

今回は実際に共通基盤の開発をしている中で得た、

共通基盤として作っておくべき機能
技術選定の考え方
精度の高い共通基盤を開発するための進め方
作った共通基盤を組織で浸透させていく方法
作った共通基盤をメンテナンスし発展させていく方法
といったノウハウについてご紹介します。

https://techxgamecollege.connpass.com/event/103223/

D1531f9547e24397c7e85881fac03096?s=128

Takehata Naoto

November 07, 2018
Tweet

Transcript

  1. # # # # 7 A    

      
  2.  )70 1 2 1 1 647 1 1 U

    @ 74 K C ## # ##( # # # # S . . E J C J CEDEC2018
  3.  2201 00. /2 / 0 7 a b H

    : c gh P 2201 ./ 00. /2 / 0
  4.      !    

    
  5.     Kotlin Java   Unity Cocos-2dx

      AWS GCP
  6.  2 1 3 . 4

  7.  2 1 3 . 4

  8.    

  9.  • K • a • e a • F

    F S
  10. 

  11.   • F • •

  12. 

  13.    • Kotlin • SpringBoot • MyBatis •

    KotlinTest • Gradle • gRPC Kotlin  SpringBoot     
  14. ( ) - - B:L - P - - -

    C D C A P - - R - - E R - - I E
  15.  

  16.       

  17.   

  18.  •    •    •

        • 
  19.  • ) () D • D ) • D

    B D • D • M D • D ) D
  20.   

  21.  • (' •   • %" • "

    & •  !#$ • )
  22.  • • • I • C

  23.  

  24.    - 3 DG 1 . 1- S

    3 - K G 1- 4 2. 33 2F
  25.   

  26.  • ( • P I ) A •

  27. @Controller @RequestMapping("/user/*") class UserController() : BaseController() { @PostMapping("/update/name") fun updateName(@RequestBody

    request: UpdateNameRequest): UpodateNameResponse { val response = UpdateNameResponse() //  return response } } • I • BC
  28.   

  29.  • ,505,)/!StarterKit 32-.3 '& • 14-*+.!fork  &(#%'& •

     $% "
  30. &

  31.  2 1 3 . 4

  32.   

  33.    • ( )(3/" '% • "$ 

    & ' % •  *+2,3."!  #& -012)&#& $  
  34.    • Kotlin • SpringBoot • MyBatis •

    KotlinTest • Gradle • gRPC
  35.    • Kotlin • SpringBoot • MyBatis •

    KotlinTest • Gradle • gRPC
  36.  • SpringBootJava#%$%  (Kotlin   ) • MyBatisJavaORM

    DOMA2  !% • "%" Gradle 
  37.    • Kotlin • SpringBoot • MyBatis •

    KotlinTest • Gradle • gRPC
  38.    • !+&+!% Kotlin • #"$')+(*+ JUnit KotlinTest

    • RESTgRPC
  39. 

  40.  • B • B A • B

  41.      •  !#"  

    •   • 
  42.   

  43.      •  !#"  

    •   •  
  44. ' 5:8/41( -   • 2=70<&,(*%  ! •

     )&"#.9;(* 3>6> !) +$#
  45.      •  !#"  

    •   • 
  46.  *!& • #(. (+*  ' / • 

    (0/ " $', $&1$-% • 3968(749) 2:5
  47.      •  !#"  

    •   • 
  48. * •  • /7571, #$ *  • 062-4'"+.37!

     *  )(%& +
  49. 

  50.   var message: String = null   

    var message: String? = null   null 
  51. var user: User? = User() user.name &#$  "% !

      if (user != null) { user.name }    
  52. • Null.*/, ' #&NullPointerException!  • 05+71Null & # %Null!(

    $& • -93)7Null!( '& "-:2846:! ( &
  53. 

  54.     

  55.  • ## B8ELSI24**&(%<! K PSNQSD • !"#<< <69271A7.@ •

    24 -JKCSMRG0!"#>? ; /54 • $)'+,8<= :.0-HOPRF3@= .9 24
  56. )! #& (ms) *#'+# (ms) gRPC 2.92 3.6 REST 7.16

    12.78 20183    • ")($%")($ • )! #& *#'+# 
  57.    

  58. / / : K - ) PU J f e

    cgab ( 0 / 0 1 2C 3 1 8 : .: C R - ) K ( 0 / 0 1 1 : : C
  59.   •   -02/12) •  Spring! &(*.+2,#

     • Kotlin #&JUnit$&% '"$
  60. K 2 2 /: B 2 892 0 1 8:

    - 0 88 2- . 8 2 /: 2 0 2 2 :892 0- 2 1 2 /:
  61.     

  62.  • 45-=8<0( 6;1.3 "! ,$ • *%  *

    , • +#29:</* '& +)++#703
  63.  2 1 3 . 4

  64.    

  65.  2 A

  66. 

  67. S  • A E ) ) • ( (

    - ( ( 3 G3 J •
  68. •   • " ! • "  !

       
  69.  • - - 3 •

  70. 

  71. S  • • - A- 3 • 3 3

    GE 2
  72. • 2 •

  73.  • - 3

  74. None
  75.       

  76. • 0 - 3 • -

  77. None
  78. •  & " $  !  • 

     % # 
  79. Example  A   !   A 

    !! A    A     
  80. a ) ( E F E F EK EK )

    ( E F S e EK E F E ( E F E F
  81.  • 3 • 3 - • 3

  82. 

  83. 

  84. 

  85. a  • 4.8 88 0/3 8 8240 • T

    R • A 3 . 82 - 4.8 /8 5 4 48 18: -:
  86.    • • 3- 2 • • 2

    3 • 2 3 • 2 3
  87.   • • L • - 3

  88. # • !      • "

    
  89.   

  90.    

  91.     • - 5 5 3 A

    0 • - 5 .    
  92.   

  93.  • 3 • • -

  94.   •   –  – String Template

    –  –   – etc… •  – Null – valvar 
  95.     • G • - 3 G

  96.     • 0 5 K B J

    • • . - 3
  97. • - (3 • ) (3 • J ) 3

    ) (
  98.   

  99.    

  100.    • 3 32 J • 2 32

    • - 2
  101.   

  102.   

  103.  • . P 2Ag • . R U C

    • -3i .HT .
  104.     

  105. • ( C • )

  106.   

  107. U a cC 2 b R 1::7 0 77 2

    : - 7 # ## 28 2 ./ 8.
  108.     • 3 3 J ) •

    ) 3 R J I - • 3 C MP ( ) B G
  109.     

  110.   • DM • • 3 - G •

    B B   
  111. 

  112.  • - 3 3- • -

  113.  • )5=7942 3% "$0."$ !&  • (* 2/"/#!&,

     •  8>:1+-/8;<=7= 6'!&,%0
  114.  2 1 3 . 4

  115.  

  116. 

  117.  • iOSAndroid&'($  • API(#(SDK • %'!"SDK  

     
  118.  • /)*,1*,1* #  #" '  • .0+(-!$

    '% '  &
  119.   

  120.    

  121.     

  122. 

  123. • 0#,3% % -($ • !"/1)  • & 

    +2 . *'   
  124.