ドリコム的railsアプリ開発流儀
DESCRIPTION
【エンジニアカフェEvent】エンジニアカフェ× ドリコム技術勉強会~月間50億PVのソーシャルゲームを支える技術~ http://www.facebook.com/events/216511125103989/ see alse: * http://www.slideshare.net/drecom/ss-11667563TRANSCRIPT
Copyright © DRECOM Co., Ltd All Rights Reserved.
ドリコム的 Railsアプリ 開発流儀
2012/02/16 エンジニアカフェEvent
ソーシャルゲーム事業本部 制作2部 大仲 能史 a.k.a. onk
Copyright © DRECOM Co., Ltd All Rights Reserved.
2
大仲 能史
@onk
自己紹介
ソーシャルゲーム事業本部 制作2部
Copyright © DRECOM Co., Ltd All Rights Reserved.
3
アプリケーションエンジニア
自己紹介
Copyright © DRECOM Co., Ltd All Rights Reserved.
4
自己紹介
開発環境
vim
Firefox Nightly (13.0a1)
Copyright © DRECOM Co., Ltd All Rights Reserved.
5
先月の実績
自己紹介
Copyright © DRECOM Co., Ltd All Rights Reserved.
6
Rails歴
約3年
Rails 2.2以降
自己紹介
Copyright © DRECOM Co., Ltd All Rights Reserved.
7
今日の話
今日の話
Copyright © DRECOM Co., Ltd All Rights Reserved.
8
ドリコム的 Railsアプリ 開発流儀
今日の話
Copyright © DRECOM Co., Ltd All Rights Reserved.
9
ドリコムで仕事をした気になる
のをゴール
今日の話
Copyright © DRECOM Co., Ltd All Rights Reserved.
10
よろしくお願いいたします
今日の話
Copyright © DRECOM Co., Ltd All Rights Reserved.
11
ドリコムの事業
ドリコムの事業
Copyright © DRECOM Co., Ltd All Rights Reserved.
12
ソーシャルゲーム
広告
ラーニング
ドリコムの事業
Copyright © DRECOM Co., Ltd All Rights Reserved.
13
ソーシャルゲームを運営する
ソーシャルゲーム事業
Copyright © DRECOM Co., Ltd All Rights Reserved.
14
ビジネスモデル
ソーシャルゲーム事業
Copyright © DRECOM Co., Ltd All Rights Reserved.
15
毎日ユーザが
訪れて
ソーシャルゲーム事業
Copyright © DRECOM Co., Ltd All Rights Reserved.
16
ゲームをプレイして
ソーシャルゲーム事業
Copyright © DRECOM Co., Ltd All Rights Reserved.
17
お金を落とす
ソーシャルゲーム事業
Copyright © DRECOM Co., Ltd All Rights Reserved.
18
ユーザが飽きたら
ソーシャルゲーム事業
Copyright © DRECOM Co., Ltd All Rights Reserved.
19
売上 激減
ソーシャルゲーム事業
Copyright © DRECOM Co., Ltd All Rights Reserved.
20
飽きさせない
ソーシャルゲーム事業
Copyright © DRECOM Co., Ltd All Rights Reserved.
21
至上 命題
ソーシャルゲーム事業
Copyright © DRECOM Co., Ltd All Rights Reserved.
22
そのための施策
飽きさせないために
Copyright © DRECOM Co., Ltd All Rights Reserved.
23
ユーザ間インタラクションの
強化?
飽きさせないために
Copyright © DRECOM Co., Ltd All Rights Reserved.
24
毎日の地道な 修正/更新?
飽きさせないために
Copyright © DRECOM Co., Ltd All Rights Reserved.
25
もちろん大事 だけど
飽きさせないために
Copyright © DRECOM Co., Ltd All Rights Reserved.
26
定期的なイベ ントやキャンペーンが有効
飽きさせないために
Copyright © DRECOM Co., Ltd All Rights Reserved.
27
期間限定の
アイテム
飽きさせないために
Copyright © DRECOM Co., Ltd All Rights Reserved.
28
期間限定の
ダンジョン
飽きさせないために
Copyright © DRECOM Co., Ltd All Rights Reserved.
29
期間限定の
ボス
飽きさせないために
Copyright © DRECOM Co., Ltd All Rights Reserved.
30
通常のゲームは ゴールがない
ので
飽きさせないために
Copyright © DRECOM Co., Ltd All Rights Reserved.
31
イベントで 近くのゴールを提示する
飽きさせないために
Copyright © DRECOM Co., Ltd All Rights Reserved.
32
コミュニケーションの盛り上がりを作る
飽きさせないために
Copyright © DRECOM Co., Ltd All Rights Reserved.
33
そんなイベントを月2回実施
飽きさせないために
Copyright © DRECOM Co., Ltd All Rights Reserved.
34
飽きさせないために
Copyright © DRECOM Co., Ltd All Rights Reserved.
35
月2回 中規模リリース
必須
大事なことなのでもう一度
Copyright © DRECOM Co., Ltd All Rights Reserved.
36
どのぐらいの 開発が必要な
のか
飽きさせないために
Copyright © DRECOM Co., Ltd All Rights Reserved.
37
イベント開発工程を実際に体験してみます
飽きさせないために
Copyright © DRECOM Co., Ltd All Rights Reserved.
イベント開発
企画
画面遷移図
画面詳細
ER図
38
製造
作りこみ
テスト
リリース
Copyright © DRECOM Co., Ltd All Rights Reserved.
39
画面数20弱
イベント開発
Copyright © DRECOM Co., Ltd All Rights Reserved.
40
Railsエンジニア2~4名で開
発します
イベント開発
Copyright © DRECOM Co., Ltd All Rights Reserved.
41
1アプリにつき10~20名
イベント開発
Copyright © DRECOM Co., Ltd All Rights Reserved.
42
まずは概要説明ミーティング (通称:腹落ちMTG)
イベント開発 – 企画
Copyright © DRECOM Co., Ltd All Rights Reserved.
43
このイベントを選んだ背景 社会の状況
ユーザへの想定負荷
KPIへの影響/目標
スケジュール
イベント開発 – 企画
Copyright © DRECOM Co., Ltd All Rights Reserved.
44
イベントの 根幹を一番表しているペラ1資料
イベント開発 – 企画
Copyright © DRECOM Co., Ltd All Rights Reserved.
45
どこの会社にもある壁一面の ホワイトボード
イベント開発 – 画面遷移
Copyright © DRECOM Co., Ltd All Rights Reserved.
46
さっきの画面をまず書いて、ここから 遷移を考えていきます
イベント開発 – 画面遷移
Copyright © DRECOM Co., Ltd All Rights Reserved.
47
勝ったとき、負けたときに演出が必要→swfで表現 結果画面は表示項目多そう→HTMLで表現
イベント開発 – 画面遷移
Copyright © DRECOM Co., Ltd All Rights Reserved.
48
そもそもボスの出現条件は? 出現時にインパクトを与えたい→ボス出現swfが必要
イベント開発 – 画面遷移
Copyright © DRECOM Co., Ltd All Rights Reserved.
49
そもそもイベントの存在を認識させるためのランディングページが必要
イベント開発 – 画面遷移
Copyright © DRECOM Co., Ltd All Rights Reserved.
50
イベント詳細は必要だよね
イベント開発 – 画面遷移
ランキングある?報酬とか一覧ページ要るよね
Copyright © DRECOM Co., Ltd All Rights Reserved.
51
複数人で戦うなら一覧画面要るよね
履歴あるなら「もっとみる」要るよね
イベント開発 – 画面遷移
Copyright © DRECOM Co., Ltd All Rights Reserved.
52
仲間が参戦するためにはまず呼ばなきゃいけない
イベント開発 – 画面遷移
Copyright © DRECOM Co., Ltd All Rights Reserved.
53
呼ばれた人が参加する導線が要る
イベント開発 – 画面遷移
Copyright © DRECOM Co., Ltd All Rights Reserved.
54
課金導線
イベント開発 – 画面遷移
Copyright © DRECOM Co., Ltd All Rights Reserved.
55
画面遷移図完成
イベント開発
Copyright © DRECOM Co., Ltd All Rights Reserved.
56
ここから エンジニアの
ターン
レールに乗る
Copyright © DRECOM Co., Ltd All Rights Reserved.
57
僕らの 基本原則
レールに乗る
Copyright © DRECOM Co., Ltd All Rights Reserved.
58
Ride on Rails?
レールに乗る
Copyright © DRECOM Co., Ltd All Rights Reserved.
59
レールに乗るということ
レールに乗る
Copyright © DRECOM Co., Ltd All Rights Reserved.
60
Railsは 哲学的な基盤 Opinionated Software
レールに乗る
Copyright © DRECOM Co., Ltd All Rights Reserved.
61
DRY
CoC
MVC
Generator / Scaffold
Write Less Code
RESTful
レールに乗る
Copyright © DRECOM Co., Ltd All Rights Reserved.
62
REST
REST
Copyright © DRECOM Co., Ltd All Rights Reserved.
63
必読
REST
Copyright © DRECOM Co., Ltd All Rights Reserved.
64
Webアプリケーションの機能をリソースに対するCRUD操作
とみなす考え方
REST
Copyright © DRECOM Co., Ltd All Rights Reserved.
65
すべてのリソースはURIで表現される一意なアドレスを持つ
REST
Copyright © DRECOM Co., Ltd All Rights Reserved.
66
Webページの表示
=
リソースに対するGET操作
REST
Copyright © DRECOM Co., Ltd All Rights Reserved.
67
操作はHTTPの
メソッドで表現可能
REST
Copyright © DRECOM Co., Ltd All Rights Reserved.
68
GET=副作用なし
GET以外=副作用あり
REST
Copyright © DRECOM Co., Ltd All Rights Reserved.
69
Railsでは?
REST
Copyright © DRECOM Co., Ltd All Rights Reserved.
70
$ rails g scaffold ¥
entry ¥ title body:text
REST
Copyright © DRECOM Co., Ltd All Rights Reserved.
71
config/routes.rb
REST
resources :entries
Copyright © DRECOM Co., Ltd All Rights Reserved.
72
$ rake routes
entries GET /entries(.:format) entries#index
POST /entries(.:format) entries#create
new_entry GET /entries/new(.:format) entries#new
edit_entry GET /entries/:id/edit(.:format) entries#edit
entry GET /entries/:id(.:format) entries#show
PUT /entries/:id(.:format) entries#update
DELETE /entries/:id(.:format) entries#destroy
REST
Copyright © DRECOM Co., Ltd All Rights Reserved.
73
これが基本形
REST
Copyright © DRECOM Co., Ltd All Rights Reserved.
74
RESTを意識することでURLが自
然と決まる
REST
Copyright © DRECOM Co., Ltd All Rights Reserved.
75
更に Rails特有の文化
REST
Copyright © DRECOM Co., Ltd All Rights Reserved.
76
ModelとControllerが
1:1対応 (異論は認める)
REST
Copyright © DRECOM Co., Ltd All Rights Reserved.
77
RouteとActionとDBが
協調動作
Railsでは
Copyright © DRECOM Co., Ltd All Rights Reserved.
78
URLを見ればどのテーブルにアクセスするか分かる
REST
Copyright © DRECOM Co., Ltd All Rights Reserved.
79
閑話休題
REST
Copyright © DRECOM Co., Ltd All Rights Reserved.
80
画面遷移図
イベント開発
Copyright © DRECOM Co., Ltd All Rights Reserved.
81
画面仕様から ER図を作成
イベント開発 – ER図
Copyright © DRECOM Co., Ltd All Rights Reserved.
82
ユーザがボスを呼び出す
イベント開発 – ER図
Copyright © DRECOM Co., Ltd All Rights Reserved.
83
参戦者と攻撃履歴
イベント開発 – ER図
Copyright © DRECOM Co., Ltd All Rights Reserved.
84
参戦依頼
イベント開発 – ER図
Copyright © DRECOM Co., Ltd All Rights Reserved.
85
ランキング
イベント開発 – ER図
Copyright © DRECOM Co., Ltd All Rights Reserved.
86
テーブル名は Railsの規則に従う
(habtmは複数形をアルファベット順で繋げる等)
イベント開発 – ER図
Copyright © DRECOM Co., Ltd All Rights Reserved.
87
カラムは開発中に変更/追加されるので深追いしない
イベント開発 – ER図
Copyright © DRECOM Co., Ltd All Rights Reserved.
88
関連さえ記載されていれば大体どこにあるか分かる
イベント開発 – ER図
Copyright © DRECOM Co., Ltd All Rights Reserved.
89
foreign_keyもRailsの規則に従う
ので記載不要 (belongs_to => [model]_id)
イベント開発 – ER図
Copyright © DRECOM Co., Ltd All Rights Reserved.
90
レールに乗ると ドキュメントが シンプルになる
イベント開発 – ER図
Copyright © DRECOM Co., Ltd All Rights Reserved.
91
Modelが決まり
画面表示内容が決まれば
URLが決まる
イベント開発 – URL設計
Copyright © DRECOM Co., Ltd All Rights Reserved.
92
RESTの原則に従う
イベント開発 – URL設計
Copyright © DRECOM Co., Ltd All Rights Reserved.
93
副作用を与えるActionは Post -> Redirect -> Get
イベント開発 – URL設計
Copyright © DRECOM Co., Ltd All Rights Reserved.
94
攻撃する
=> 攻撃履歴リソースを作る
イベント開発 – URL設計
Copyright © DRECOM Co., Ltd All Rights Reserved.
95
どちらのリソースを操作するかはフィーリングで決める
(URLの対象性を意識することが多い)
イベント開発 – URL設計
Copyright © DRECOM Co., Ltd All Rights Reserved.
96
全画面についてURLを考える
イベント開発 – URL設計
Copyright © DRECOM Co., Ltd All Rights Reserved.
97
開発開始
イベント開発 – 開発
Copyright © DRECOM Co., Ltd All Rights Reserved.
98
決定した
Action、Model
をGenerate
イベント開発 – 開発
Copyright © DRECOM Co., Ltd All Rights Reserved.
99
$ rails g model RaidBoss ¥
event_id:integer name
$ rails g controller raids show
イベント開発 – 開発
Copyright © DRECOM Co., Ltd All Rights Reserved.
100
Railsの思想に従いGeneratorで開発
をDrivenする
イベント開発 – 開発
Copyright © DRECOM Co., Ltd All Rights Reserved.
101
画面間を繋ぐ
イベント開発 – 開発
Copyright © DRECOM Co., Ltd All Rights Reserved.
102
あとはほぼModelを書く
だけ
イベント開発 – 開発
Copyright © DRECOM Co., Ltd All Rights Reserved.
103
Skinny Controller, Fat Model
の原則に従う
イベント開発 – 開発
Copyright © DRECOM Co., Ltd All Rights Reserved.
104
1Actionあたり30min~8h
イベント開発 – 開発
Copyright © DRECOM Co., Ltd All Rights Reserved.
105
3日ぐらいで 最低限遊べる 状態を作る
イベント開発 – 開発
Copyright © DRECOM Co., Ltd All Rights Reserved.
106
リリースまで
あと7日
イベント開発 – 開発
Copyright © DRECOM Co., Ltd All Rights Reserved.
107
残りの期間を 作りこみに当
てる
イベント開発 – 作りこみ
Copyright © DRECOM Co., Ltd All Rights Reserved.
イベント開発
企画
画面遷移図
画面詳細
ER図
108
製造
作りこみ
テスト
リリース
Copyright © DRECOM Co., Ltd All Rights Reserved.
109
ユーザの動きを想像する
イベント開発 – 作りこみ
Copyright © DRECOM Co., Ltd All Rights Reserved.
110
不要な遷移を
取り除く
イベント開発 – 作りこみ
Copyright © DRECOM Co., Ltd All Rights Reserved.
111
不要な機能を
取り除く
イベント開発 – 作りこみ
Copyright © DRECOM Co., Ltd All Rights Reserved.
112
よりイベントが盛り上がるような機能追加
イベント開発 – 作りこみ
Copyright © DRECOM Co., Ltd All Rights Reserved.
113
前日はまるまるテスト
(が理想)
イベント開発 – テスト
Copyright © DRECOM Co., Ltd All Rights Reserved.
114
社員に対して リリースして 遊んでもらう
イベント開発 – テスト
Copyright © DRECOM Co., Ltd All Rights Reserved.
115
不満を改善
イベント開発 – テスト
Copyright © DRECOM Co., Ltd All Rights Reserved.
116
リリース
イベント開発 – リリース
Copyright © DRECOM Co., Ltd All Rights Reserved.
117
ログと2chとコミュニティに
張り付き
イベント開発 – リリース
Copyright © DRECOM Co., Ltd All Rights Reserved.
118
ユーザの声やデータの声を
聴きながら
イベント開発 – リリース
Copyright © DRECOM Co., Ltd All Rights Reserved.
119
即修正
即deploy
イベント開発 – リリース
Copyright © DRECOM Co., Ltd All Rights Reserved.
120
打ち上げ!
イベント開発 – リリース
Copyright © DRECOM Co., Ltd All Rights Reserved.
121
を2週間単位で繰り返す運営スケジュール
次のイテレーションへ
Copyright © DRECOM Co., Ltd All Rights Reserved.
122
繰り返す
次のイテレーションへ
Copyright © DRECOM Co., Ltd All Rights Reserved.
123
PDCAサイクル
次のイテレーションへ
Copyright © DRECOM Co., Ltd All Rights Reserved.
124
の話はこの後のセッションで
次のイテレーションへ
Copyright © DRECOM Co., Ltd All Rights Reserved.
125
おさらい
まとめ
Copyright © DRECOM Co., Ltd All Rights Reserved.
126
レールに乗ることで共通認識が得られる
まとめ
Copyright © DRECOM Co., Ltd All Rights Reserved.
127
1枚の企画書からすぐに行動に移れる
画面遷移とER図、URLさえあれば開発可能
Railsの規約・原則を意識する
まとめ
Copyright © DRECOM Co., Ltd All Rights Reserved.
128
開発は最速で行い、データをもとに改善を回す
まとめ
Copyright © DRECOM Co., Ltd All Rights Reserved.
129
それが ドリコム的Railsアプリ開発流儀
まとめ
Copyright © DRECOM Co., Ltd All Rights Reserved.
130
ドリコムでは一緒のレールに乗れるエンジニアを募集
しています
仲間募集
Copyright © DRECOM Co., Ltd All Rights Reserved.
131
ご清聴
ありがとう
ございました
おしまい