SlideShare a Scribd company logo
1 of 145
Download to read offline
サーバー未経験者が
ソーシャルゲームを通して知った
サーバーの事
2014/2/8 ゲームサーバ勉強会

株式会社gumi
古閑学/@_mamehiko_
自己紹介
古閑 学/@_mamehiko_
株式会社gumi 東京オフィス エンジニア
2013/12で3年目。
肩書きは(名ばかり)スペシャリスト
最近はcocos2d-xでクライアントエンジニア
以前はコンシューマーでプログラマを8年程
2児の娘のパパ
会社外で話すのは初めて

自己紹介
gumiって?

自己紹介
自己紹介(gumiでは)

2011

2012

自己紹介

2013

上記サーバーサイドの開発をしてました。
騎士道とドラゴンジェネシスでは元リードエンジニア
今日のお話

今日のお話

上級者
サーバー未経験からソーシャルゲームを
通して得た経験をさらけ出します。
インフラ

開発

コード失敗事例とか
当時の思い込みとか

初心者
アジェンダ

アジェンダ

前提

最後に

トライアル&エラー編

キャッシュ
Redis

2011∼
2012∼

まとめ

ギルドバトル編
マスターデータ
バトル
マッチング
アジェンダ

アジェンダ

前提

最後に

トライアル&エラー編

キャッシュ
Redis

2011∼
2012∼

まとめ

ギルドバトル編
マスターデータ
バトル
マッチング
前提
言語
python2.7

Webフレームワーク
Django1.4以上

DataBase
MySQL5.5

前提
アジェンダ

アジェンダ

前提

最後に

トライアル&エラー編

キャッシュ
Redis

2011∼
2012∼

まとめ

ギルドバトル編
マスターデータ
バトル
マッチング
初めてのソーシャルゲーム
構成

2011∼

TokyoTyrant

ロードバランサ

Appサーバー

MySQL

memcached
RDS(MySQL)
マスターデータ
プレイヤーデータ
ギルドデータ
などが一つのDBに

2011∼
RDS(MySQL)
マスターデータ
プレイヤーデータ
ギルドデータ
などが一つのDBに
つまり全部入り

2011∼
なんか、クエリってのを
減らした方がいいらしい
後、KVSってのがあるらしい
なんか、クエリってのを
減らした方がいいらしい
後、KVSってのがあるらしい

雰囲気でやってた時代!

※あくまで個人の発言です
KVS(TokyoTyrant)

2011∼

TokyoTyrant

ロードバランサ

APサーバー

MySQL

memcached
データの選定
例えばこんなゲーム
プレイヤーには体力がある
体力を消費してクエストを進める
クエストを進めると経験値が入る
経験値が入るとレベルアップする

2011∼
例えばこんなゲーム
プレイヤーには体力がある
体力を消費してクエストを進める
クエストを進めると経験値が入る
経験値が入るとレベルアップする
あるあるソーシャルゲーム

2011∼
更新の高いものをKVSへ
プレイヤーには体力がある
体力を消費してクエストを進める
クエストを進めると経験値が入る
経験値が入るとレベルアップする
SQL減らしたいしね!

2011∼
うまくいった
ようにみえたが。。。
例えばこんなコード

2011∼

#  この中はトランザクション内という仮定

try:

        #  プレイヤーの体⼒力力を消費

        player.consume_̲vitality()
        #  プレイヤーの経験値アップ

        player.add_̲experience()
except:
        #  エラー起きたらDBをロールバック

        transaction.rollback()
else:

        #  問題なければDB更更新。経験値が増える。

        transaction.commit()

体力→KVS

経験値→DB
※実際のコードとは異なります
例えばこんなコード

2011∼

#  この中はトランザクション内という仮定

try:

        #  プレイヤーの体⼒力力を消費

        player.consume_̲vitality()
        #  プレイヤーの経験値アップ

        player.add_̲experience()
except:

←ここでエラー

        #  エラー起きたらDBをロールバック

        transaction.rollback()
else:

        #  問題なければDB更更新。経験値が増える。

        transaction.commit()

体力→KVS

経験値→DB
どうなるか
どうなる?
#  この中はトランザクション内という仮定

try:

        #  プレイヤーの体⼒力力を消費

        player.consume_̲vitality()
        #  プレイヤーの経験値アップ

        player.add_̲experience()
except:
        #  エラー起きたらDBをロールバック

        transaction.rollback()
else:

        #  問題なければDB更更新。経験値が増える。

        transaction.commit()

2011∼

体力は消費される
経験値付与でエラーが起きる
どうなる?
#  この中はトランザクション内という仮定

try:

        #  プレイヤーの体⼒力力を消費

        player.consume_̲vitality()

2011∼

体力は消費される
経験値付与でエラーが起きる

        #  プレイヤーの経験値アップ

        player.add_̲experience()
except:
        #  エラー起きたらDBをロールバック

        transaction.rollback()
else:

        #  問題なければDB更更新。経験値が増える。

        transaction.commit()

体力だけが消費される
ユーザーの不利益となる
原因は様々
単純にバグッてる
アクセス過多
サーバーが息をしていないetc...

2011∼
原因は様々
単純にバグッてる
アクセス過多
サーバーが息をしていないetc...
想定外の事が起きるんです

2011∼
回避策
順番を変える

2011∼

#  この中はトランザクション内という仮定

try:

        #  プレイヤーの体⼒力力を消費

        #  player.consume_̲vitality()
        #  プレイヤーの経験値アップ

        player.add_̲experience()
except:

        #  エラー起きたらDBをロールバック

        transaction.rollback()
else:

        #  問題なければDB更更新。経験値が増える。

        transaction.commit()

#  プレイヤーの体⼒力力を最後に消費

player.consume_̲vitality()

DB更新後に移動
ユーザー視点で考える

2011∼

エラーケース
変更前

1.体力も減らないが、経験値も増えない
2.体力だけが減り、経験値は増えない
ユーザー視点で考える

2011∼

エラーケース
変更前

1.体力も減らないが、経験値も増えない
2.体力だけが減り、経験値は増えない

エラーケース

変更後

1.体力も減らないが、経験値も増えない
2.体力は減らないが、経験値は増える
ユーザーにはお得!!
根本解決ではないが、
回避のテクニック
学んだこと

DBとKVSの整合性は難しい

2011∼
さらにクエリを減らす
構成

2011∼

TokyoTyrant

ロードバランサ

APサーバー

RDS

memcached
参照の多いデータ
マスターデータ
プレイヤー
プレイヤーのカードとか

2011∼
参照の多いデータ
マスターデータ
プレイヤー
プレイヤーのカードとか

軽くする=キャッシュしかないと思ってた

2011∼
あるあるキャッシュバグ

2011∼

更新したはずが昔のデータを参照している
キャッシュ削除忘れ
回避策
更新箇所ではDBから取得
#  プレイヤーデータをDBから取得

2011∼

player  =  player.objects.get(player_̲id=”111”)
更新箇所ではDBから取得

2011∼

#  プレイヤーデータをDBから取得

player  =  player.objects.get(player_̲id=”111”)

DBで不整合を起こす率は減った
ただ、キャッシュから取得している所では
タイミング次第で表示ずれが起きる
学んだこと

キャッシュを多用すると
バグりやすいし、
バグも見つけにくい

2011∼
2011年まとめ

KVSの基本的な使い方を学ぶ

2011∼
アジェンダ

アジェンダ

前提

最後に

トライアル&エラー編

キャッシュ
Redis

2011∼
2012∼

まとめ

ギルドバトル編
マスターデータ
バトル
マッチング
ユーザーが順調に増えてきた
さらに

2012∼
○日後に広告打つんで
さらにユーザー増えますよ!

おぉ、いいっすね!
さらに

2012∼
○日後に広告打つんで
さらにユーザー増えますよ!

おぉ、いいっすね!

負荷大丈夫ですよね?
フカ!

大丈夫です(震え声)
色々きつくなるかも

2012∼

ロードバランサ

Appサーバー

memcached

Redis
RDS
負荷対策を考える

2012∼

ロードバランサ

容易
加は
追
Appサーバー

memcached

Redis
RDS
負荷対策を考える

ロードバランサ

2012∼

使用

方法
の
見直
し

Appサーバー

memcached

Redis
RDS
問題はRDS
負荷対策を考える

2012∼

スケールアップ
サーバーそのものを増強。CPUとかメモリとか。
増強する性能に限界がある

スケールアウト
サーバーの台数を増やす事で処理性能をあげる
色々きつくなるかも

2012∼

ロードバランサ

Appサーバー

memcached

Redis
RDS
どれくらいかがわからない。。
負荷対策を考える

2012∼

スケールアップ
サーバーそのものを増強。CPUとかメモリとか。
増強する性能に限界がある

スケールアウト

採用

サーバーの台数を増やす事で処理性能をあげる
規模不明だし
初期構成

2012∼

マスターデータ
ギルド
プレイヤー
イベント
スケールアウト(垂直)
マスターデータ

ギルド

プレイヤー

イベント

2012∼
スケールアウト(水平)

2012∼

マスターデータ

ギルド

プレイヤー1 プレイヤー2 プレイヤー3 プレイヤー4

イベント
スケールアウト(水平)

2012∼

マスターデータ

シャード
を分割

ギルド

プレイヤー0
〃4
〃8
〃12

イベント

プレイヤー1
〃5
〃9

プレイヤー2
〃6
〃10

〃13

〃14

プレイヤー3
〃7
〃11
〃15
シャードの決定

2012∼

#  プレイヤーIDはユニークである事が前提

player_̲id  =  “hamspamegg”

#  適当なハッシュ関数などで数値にし、シャードの分割数で余りを求める
#  16  =  playerのDBの総シャード数
#  0〜~15の値が取得出来る

player_̲db_̲number  =  _̲hash(player_̲id)  %  16

※実際のコードとは異なります
うまくいった
ようにみえたが。。。
障害

2012∼

マスターデータ

ギルド

プレイヤー0
〃4
〃8
〃12

イベント

プレイヤー1
〃5
〃9

プレイヤー2
〃6
〃10

〃13

〃14

プレイヤー3
〃7
〃11
〃15
原因

2012

ある処理だけ分割が効いていなかった
初期化に入れていた空文字が
特定のシャードを指していた
#  プレイヤーIDはユニークである事が前提

player_̲id  =  “”

if  何かの条件:
        player_̲id  =  getHoge()
else:
        #  偽の処理理....  player_̲idが””のまま
        ...
player_̲db_̲number  =  _̲hash(player_̲id)  %  16
どうなる?

2012∼

プライマリキーがAUTO INCREMENTの
IDの場合、同構成のテーブルでも、
各シャードで同じIDが存在する
player_idが空文字列で上書きされ、
元々持っていたユーザーからは
特定できなくなる
どうなる?

2012∼

プライマリキーがAUTO INCREMENTの
IDの場合、同構成のテーブルでも、
各シャードで同じIDが存在する
player_idが空文字列で上書きされ、
元々持っていたユーザーからは
特定できなくなる

つまり、データが消える!!
復活
プレイヤーの行動ログから、
想定されるデータの洗い出し
ただ、残っていないログもあり、
完全な復活は難しかった

2012∼
学んだこと

2012∼

スケールアウトは原因の特定が困難な事も
入念なデバッグと、ログを仕込もう
引き続き分割(おまけ)
ユーザー数の減少。。

2012∼
ユーザー数の減少。。

2012∼

負荷は下
がる
ユーザー数の減少。。

2012∼

負荷は下
がる

が

コストが
かかる!

!
RDSはコストかかる。。

2012∼

マスターデータ

ギルド

プレイヤー0
〃4
〃8
〃12

イベント

プレイヤー1
〃5
〃9

プレイヤー2
〃6
〃10

〃13

〃14

プレイヤー3
〃7
〃11
〃15
統合

2012∼

マスターデータ

シャード

ギルド

プレイヤー0
〃4
〃8
〃12

イベント

プレイヤー1
〃5
〃9
〃13

プレイヤー2
〃6
〃10
〃14

そのまま

プレイヤー3
〃7
〃11
〃15

コスト削減
逆を言えば
分割も楽

2012∼

マスターデータ

シャード

そのまま

ギルド

プレイヤー0
〃4
〃8
〃12

イベント

プレイヤー1
〃5
〃9

プレイヤー2
〃6
〃10

〃13

〃14

プレイヤー3
〃7
〃11

アプリのソースに
変更いらず

〃15
学んだこと

負荷が少なくとも、
スケール可能な設計にしよう

2012∼
2012年まとめ

DBの分割について学ぶ

2012∼
ここまでが主なトライアル&エラー
アジェンダ

アジェンダ

前提

最後に

トライアル&エラー編

キャッシュ
Redis

2011∼
2012∼

まとめ

ギルドバトル編
マスターデータ
バトル
マッチング
集大成
いつもの会話
25人vs25人のギルドバトル
をしたいんだけど

おぉ、いいっすね!

ギルドバトル
いつもの会話
25人vs25人のギルドバトル
をしたいんだけど

おぉ、いいっすね!

負荷大丈夫ですよね?
フカ!

大丈夫です(震え声)

ギルドバトル
例えばこんなバトル

ギルドバトル

ギルドvsギルド
プレイヤーにはHP、行動力、攻撃力等がある
行動力を消費して別のプレイヤーを攻撃する
対象プレイヤーは一人の時もあれば複数もある
与えたダメージはギルドにポイントとして入る
基本構成

マスタデータ

マスターデータ

ギルド

プレイヤー0
〃4
〃8
〃12

プレイヤー1
〃5
〃9

プレイヤー2
〃6
〃10

〃13

〃14

プレイヤー3
〃7
〃11
〃15
改善
基本構成

マスタデータ

昔からあるこれ

マスターデータ

ギルド

プレイヤー0
〃4
〃8
〃12

プレイヤー1
〃5
〃9

プレイヤー2
〃6
〃10

〃13

〃14

プレイヤー3
〃7
〃11
〃15
マスターデータ

マスタデータ

今まではjsonをマスターDBにいれて参照
キャッシュがあれば、キャッシュから取得
参照度は一番高い
Appサーバーでのメモ化とかも
マスターデータ

マスタデータ

Appサーバー

マスターデータ
③

ロードバランサ

①
②
memcached

① Appサーバーのメモリにアクセス
② キャッシュにアクセス
③ DBにアクセス
というのが2012まで
マスターデータ
Appサーバー
(マスターデータ)

ロードバランサ

マスタデータ

マスターデータ

①
memcached

① Appサーバーにマスターデータがある!!
どういうこと?
以前

マスタデータ

1. jsonの内容をDBに保存
2. DBにアクセスしてデータを取得
どういうこと?
以前

今

マスタデータ

1. jsonの内容をDBに保存
2. DBにアクセスしてデータを取得

jsonをAppサーバーに展開
マスターデータ

マスタデータ

Appサーバー

全てがマスターデータを持つ
ロードバランサ

Appサーバーで完結するので高速
デメリット?

マスタデータ

Appサーバーでのプロセスが大きくなる
が、約1年運用した結果でも今の所問題なし

デプロイ時にメモリは解放されます
というわけで
基本構成
マスターデータ

マスタデータ

マスターデー

タのDBを使わ

なくなった

ギルド

プレイヤー0
〃4
〃8
〃12

プレイヤー1
〃5
〃9

プレイヤー2
〃6
〃10

〃13

〃14

実際はソースの名残で一部使ってますが...

プレイヤー3
〃7
〃11
〃15
アジェンダ

アジェンダ

前提

最後に

トライアル&エラー編

キャッシュ
Redis

2011∼
2012∼

まとめ

ギルドバトル編
マスターデータ
バトル
マッチング
今まで通りにやると。。。
単体攻撃

バトル

ギルド

プレイヤー0
〃4
〃8
〃12

プレイヤー1
〃5
〃9

プレイヤー2
〃6
〃10

〃13

〃14

Attack!!

プレイヤー3
〃7
〃11
〃15
複数攻撃

バトル

最大17

箇所への

アクセス
!

ギルド

プレイヤー0
〃4
〃8
〃12

プレイヤー1
〃5
〃9

プレイヤー2
〃6
〃10

プレイヤー3
〃7
〃11

〃13

〃14

〃15

Attack!!x16
さらに、ギルドバトルだと
同時に起きる可能性も

これでもまだ半分以下

バトル
見るからにきつい
問題点

バトル

対象のDBが多いと、管理が難しくなる
アクセスが大変。というかしたくない
対応策
ギルドバトル専用DB

バトル

ギルド

プレイヤー0
〃4
〃8
〃12

プレイヤー1
〃5
〃9

プレイヤー2
〃6
〃10

〃13

〃14

ギルドバトル1

ギルドバトル2

〃3
〃5

〃4
〃6

〃7

〃8

New!!

プレイヤー3
〃7
〃11
〃15
必要なデータの選定

バトル

ギルド
ギルドメンバーのレベル
ギルドメンバーの職業
ギルドメンバーのカード
ギルドメンバーのカードのレベルとかとか
マッチング

バトル

ギルド

バッチサーバー
プレイヤー

バトルの数十分前にcronでバッチが流れる
対戦ギルドの組み合わせを決める
マッチング

バトル

ギルド
#  マッチングIDの発⾏行行

matching_̲id  =  uuid4()

バッチサーバー
プレイヤー

対戦の組み合わせごとに
マッチングID(UUID)を発行する
マッチング

バトル

ギルド

スナップショット
ギルドバトル

バッチサーバー
プレイヤー

マッチングIDを元にギルドバトルDBを選択し、
スナップショットを取る
分割特定はプレイヤーDBの
特定と同じロジック
閉じた戦い

バトル

ギルドA

ギルドB

ギルドC

ギルドD

ギルドE

ギルドF

ギルドバトルDB
うまくいった
が
まだ問題が

一つのDBに集まったとはいえ、
同時に攻撃した場合に問題が起きる
レース・コンディション

バトル
レースコンディション
mame

バトル

hiko

体力100

体力100

mameとhikoのデータを取得

mameとhikoのデータを取得
hikoに攻撃
mameに攻撃
save()
save()
mame視点

バトル

mame

hiko

体力100

体力100

mameとhikoのデータを取得

mameとhikoのデータを取得
ここで攻撃
したから

hikoに攻撃
mameに攻撃

hikoの体力は
save()
100未満(のはず)
save()
一方。。

バトル

mame

hiko

体力100

体力100

mameとhikoのデータを取得

mameとhikoのデータを取得
ここで攻撃
したから

体力100のデータ
を取得

hikoに攻撃
mameに攻撃

hikoの体力は
save()
100未満(のはず)
save()

体力100のまま
save
実際は。。

バトル

mame

hiko

体力100

体力100

mameとhikoのデータを取得
た事に
っ

が無か
攻撃
る!
な
ここで攻撃
したから

mameとhikoのデータを取得
体力100のデータ
を取得

hikoに攻撃
mameに攻撃

hikoの体力は
save()
100未満(のはず)
save()

体力100のまま
save
対応策
唯一の共通オブジェクト
GuildBattleManager
matching_id
ギルドA

ギルドB

バトル
唯一の共通オブジェクト

バトル

更新処理は必ずManagerを通す
Managerで行ロックをかける
共通オブジェクトなのでデッドロック無し
順番

バトル
mame

hiko

体力100

体力100
一旦処理が止められ

Manager
mameとhikoのデータを取得

hikoに攻撃

save()
順番

バトル
mame

hiko

体力100

体力100
mameの処理終了後に流れ出す

Manager
mameとhikoのデータを取得
mameとhikoのデータを取得
hikoに攻撃

mameに攻撃

save()
save()

攻撃を受けた後のデータが
取得される
順番

バトル
mame

hiko

体力100

体力100
mameの処理終了後に流れ出す

Manager
mameとhikoのデータを取得
mameとhikoのデータを取得
hikoに攻撃

mameに攻撃

トランザクションは必須
save()
save()

攻撃を受けた後のデータが
取得される
うまくいった
本当に!
これで全てが終わったかに見えた
アジェンダ

アジェンダ

前提

最後に

トライアル&エラー編

キャッシュ
Redis

2011∼
2012∼

まとめ

ギルドバトル編
マスターデータ
バトル
マッチング
終わらないマッチング
日ごとに増えるユーザー
日ごとに増えるデータ
日ごとに延びるマッチング時間
日ごとに短くなる睡眠時間

マッチング
改善

マッチング

ギルド

スナップショット
ギルドバトル

バッチサーバー
プレイヤー

バッチサーバーから直接ギルドバトルDBにコピーしていた
改善

マッチング

ギルド

#  ギルドIDの対戦リスト

guild_̲ids  =  ([1,  2],[3,4],[5,6])

バッチサーバー

Redis

プレイヤー

Redisに
対戦ギルドの組み合わせのIDのみのリスト
を入れる
改善

マッチング

ギルド

バッチサーバー
プレイヤー

Redis

ジョブサーバー

Redisに対戦リストが入っていないかを常に問い合わせる
改善

マッチング

ギルド

,2] [5,6]
[1
[3,4
]
ギルドバトル

バッチサーバー

Redis

ジョブサーバー

プレイヤー

Redisに入っている対戦リストから
組み合わせのIDをポップし、
並列でスナップショットを取る

スナップショット
終わるマッチング

マッチング

Redisのデータ操作は
アトミック性が保証されている
対戦リストが増えて処理が終わらなくなったら
ジョブサーバーを増やす
マッチング時間が5分の1に

俺が泣いた
アジェンダ

アジェンダ

前提

最後に

トライアル&エラー編

キャッシュ
Redis

2011∼
2012∼

まとめ

ギルドバトル編
マスターデータ
バトル
マッチング
キャッシュ

最後に

余り使っていない
キャッシュが残るバグは今でもある
今までは重いクエリをごまかしていた
それよりもDBのindexを適切に張る
Jetprofiler

重いクエリを検知してくれる
indexミスなのでアクセス障害が
起きた時などに重宝した

最近は使ってないかもしれない
ですが、、

最後に
Redis

最後に

ランキングや1日1回フラグなどに使用
expireを設定するとメモリの節約にもなる
消えても痛くないデータだが、
なるべく永続的に残したいもの
アジェンダ

アジェンダ

前提

最後に

トライアル&エラー編

キャッシュ
Redis

2011∼
2012∼

まとめ

ギルドバトル編
マスターデータ
バトル
マッチング
まとめ

まとめ

DBは規模によらずスケールアウト前提で
最初からKVSに手を出さない
DBで効率が悪そうなもので考える
キャッシュは使わないという選択肢
色々あるけどまとめきれず
ご清聴ありがとうございました

More Related Content

What's hot

【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~UnityTechnologiesJapan002
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫Yuta Imai
 
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用Sugimoto Chizuru
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]DeNA
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~モノビット エンジン
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例sairoutine
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャtorisoup
 
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例Naoya Kishimoto
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化DeNA
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionYoshifumi Kawai
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!Unity Technologies Japan K.K.
 
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたいリアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたいYutoNishine
 
UIと2D/3Dと私 ~2D/3Dを混在させたUIを作ったら、とてもめんどくさかった話~
UIと2D/3Dと私 ~2D/3Dを混在させたUIを作ったら、とてもめんどくさかった話~ UIと2D/3Dと私 ~2D/3Dを混在させたUIを作ったら、とてもめんどくさかった話~
UIと2D/3Dと私 ~2D/3Dを混在させたUIを作ったら、とてもめんどくさかった話~ masayahamazaki
 
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみたリアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみたYutoNishine
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践Yoshifumi Kawai
 
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステムSEGADevTech
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案樽八 仲川
 
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方光晶 上原
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjugYahoo!デベロッパーネットワーク
 

What's hot (20)

【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
 
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
 
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたいリアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
 
UIと2D/3Dと私 ~2D/3Dを混在させたUIを作ったら、とてもめんどくさかった話~
UIと2D/3Dと私 ~2D/3Dを混在させたUIを作ったら、とてもめんどくさかった話~ UIと2D/3Dと私 ~2D/3Dを混在させたUIを作ったら、とてもめんどくさかった話~
UIと2D/3Dと私 ~2D/3Dを混在させたUIを作ったら、とてもめんどくさかった話~
 
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみたリアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
 
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案
 
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 

Viewers also liked

Amebaソシャゲ分析事例のご紹介
Amebaソシャゲ分析事例のご紹介Amebaソシャゲ分析事例のご紹介
Amebaソシャゲ分析事例のご紹介Masanori Takano
 
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発infinite_loop
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニックinfinite_loop
 
データに振り回されて失敗した あんなことやこんなこと ~ゲームのために必要な本当の ビジネス・アナリティクス~
データに振り回されて失敗したあんなことやこんなこと~ゲームのために必要な本当のビジネス・アナリティクス~データに振り回されて失敗したあんなことやこんなこと~ゲームのために必要な本当のビジネス・アナリティクス~
データに振り回されて失敗した あんなことやこんなこと ~ゲームのために必要な本当の ビジネス・アナリティクス~Daisuke Nogami
 
CEDEC2013 ソーシャルゲームの開発現場でUXについて思いっきりあがいてみた1年間の話
CEDEC2013 ソーシャルゲームの開発現場でUXについて思いっきりあがいてみた1年間の話CEDEC2013 ソーシャルゲームの開発現場でUXについて思いっきりあがいてみた1年間の話
CEDEC2013 ソーシャルゲームの開発現場でUXについて思いっきりあがいてみた1年間の話Takahiro YAMAGUCHI
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装infinite_loop
 
MySQL Index勉強会外部公開用
MySQL Index勉強会外部公開用MySQL Index勉強会外部公開用
MySQL Index勉強会外部公開用CROOZ, inc.
 
わかった気になるMySQL
わかった気になるMySQLわかった気になるMySQL
わかった気になるMySQLyoku0825
 
分割と整合性と戦う
分割と整合性と戦う分割と整合性と戦う
分割と整合性と戦うYugo Shimizu
 
Imprementation of realtime_networkgame
Imprementation of realtime_networkgameImprementation of realtime_networkgame
Imprementation of realtime_networkgameSatoshi Yamafuji
 
負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)Yohei Hamada
 
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例Satoshi Yamafuji
 
Fluentd and Embulk Game Server 4
Fluentd and Embulk Game Server 4Fluentd and Embulk Game Server 4
Fluentd and Embulk Game Server 4N Masahiro
 
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン)  【ビヘイビアツリー解説】Halo2 におけるHFSM(階層型有限状態マシン)  【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】Youichiro Miyake
 
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 Yugo Shimizu
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計sairoutine
 
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~johgus johgus
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 

Viewers also liked (19)

Amebaソシャゲ分析事例のご紹介
Amebaソシャゲ分析事例のご紹介Amebaソシャゲ分析事例のご紹介
Amebaソシャゲ分析事例のご紹介
 
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
 
データに振り回されて失敗した あんなことやこんなこと ~ゲームのために必要な本当の ビジネス・アナリティクス~
データに振り回されて失敗したあんなことやこんなこと~ゲームのために必要な本当のビジネス・アナリティクス~データに振り回されて失敗したあんなことやこんなこと~ゲームのために必要な本当のビジネス・アナリティクス~
データに振り回されて失敗した あんなことやこんなこと ~ゲームのために必要な本当の ビジネス・アナリティクス~
 
CEDEC2013 ソーシャルゲームの開発現場でUXについて思いっきりあがいてみた1年間の話
CEDEC2013 ソーシャルゲームの開発現場でUXについて思いっきりあがいてみた1年間の話CEDEC2013 ソーシャルゲームの開発現場でUXについて思いっきりあがいてみた1年間の話
CEDEC2013 ソーシャルゲームの開発現場でUXについて思いっきりあがいてみた1年間の話
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
 
MySQL Index勉強会外部公開用
MySQL Index勉強会外部公開用MySQL Index勉強会外部公開用
MySQL Index勉強会外部公開用
 
わかった気になるMySQL
わかった気になるMySQLわかった気になるMySQL
わかった気になるMySQL
 
分割と整合性と戦う
分割と整合性と戦う分割と整合性と戦う
分割と整合性と戦う
 
Imprementation of realtime_networkgame
Imprementation of realtime_networkgameImprementation of realtime_networkgame
Imprementation of realtime_networkgame
 
負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)
 
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
 
Fluentd and Embulk Game Server 4
Fluentd and Embulk Game Server 4Fluentd and Embulk Game Server 4
Fluentd and Embulk Game Server 4
 
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン)  【ビヘイビアツリー解説】Halo2 におけるHFSM(階層型有限状態マシン)  【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
 
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 

Similar to サーバー未経験者がソーシャルゲームを通して知ったサーバーの事

WordPress 3.8 RC1
WordPress 3.8 RC1WordPress 3.8 RC1
WordPress 3.8 RC1BREN
 
Boost.勉強会 #13 @仙台 鳥小屋
Boost.勉強会 #13 @仙台 鳥小屋Boost.勉強会 #13 @仙台 鳥小屋
Boost.勉強会 #13 @仙台 鳥小屋Yuto M
 
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリに
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリにWeb制作で培ってきたFlashのリッチな表現力をモバイルアプリに
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリにinvogue
 
PWA+WebARをECサイトで使ってみたい
PWA+WebARをECサイトで使ってみたいPWA+WebARをECサイトで使ってみたい
PWA+WebARをECサイトで使ってみたいDaisuke Yamashita
 
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へモバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へekushida
 
GREE TechTalk グリーのクライアント技術戦略
GREE TechTalk グリーのクライアント技術戦略GREE TechTalk グリーのクライアント技術戦略
GREE TechTalk グリーのクライアント技術戦略Daniel-Hiroyuki Haga
 
XPages Day 2013 [B-3] XPages開発を始める Notes技術者のためのWeb技術概論
XPages Day 2013 [B-3] XPages開発を始める Notes技術者のためのWeb技術概論XPages Day 2013 [B-3] XPages開発を始める Notes技術者のためのWeb技術概論
XPages Day 2013 [B-3] XPages開発を始める Notes技術者のためのWeb技術概論賢次 海老原
 
アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~
アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~ アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~
アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~ CYBIRD Co.,Ltd.
 
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)Masataka Sato
 
3D勉強会 第1回 3Dプログラミングのススメ
3D勉強会 第1回 3Dプログラミングのススメ3D勉強会 第1回 3Dプログラミングのススメ
3D勉強会 第1回 3Dプログラミングのススメinfinite_loop
 
消滅都市5周年の運営を支えた技術とその歴史
消滅都市5周年の運営を支えた技術とその歴史消滅都市5周年の運営を支えた技術とその歴史
消滅都市5周年の運営を支えた技術とその歴史gree_tech
 
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)Hiroyuki Kusu
 
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」Serverworks Co.,Ltd.
 
入門者用Android Studio Hands on
入門者用Android Studio Hands on入門者用Android Studio Hands on
入門者用Android Studio Hands onShintaro Yamasaki
 
アプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきことアプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきことYutoNishine
 
年の瀬リアルタイム通信サーバ勉強会
年の瀬リアルタイム通信サーバ勉強会年の瀬リアルタイム通信サーバ勉強会
年の瀬リアルタイム通信サーバ勉強会モノビット エンジン
 
AppStoreとGooglePlayの両プラットフォームに選ばれるUI/UX最適化
AppStoreとGooglePlayの両プラットフォームに選ばれるUI/UX最適化AppStoreとGooglePlayの両プラットフォームに選ばれるUI/UX最適化
AppStoreとGooglePlayの両プラットフォームに選ばれるUI/UX最適化Hiroki Takaba
 
Docker study for beginner in My Company 2017/10/19
Docker study for beginner in My Company 2017/10/19Docker study for beginner in My Company 2017/10/19
Docker study for beginner in My Company 2017/10/19TearTheSky
 

Similar to サーバー未経験者がソーシャルゲームを通して知ったサーバーの事 (20)

WordPress 3.8 RC1
WordPress 3.8 RC1WordPress 3.8 RC1
WordPress 3.8 RC1
 
Boost.勉強会 #13 @仙台 鳥小屋
Boost.勉強会 #13 @仙台 鳥小屋Boost.勉強会 #13 @仙台 鳥小屋
Boost.勉強会 #13 @仙台 鳥小屋
 
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリに
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリにWeb制作で培ってきたFlashのリッチな表現力をモバイルアプリに
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリに
 
PWA+WebARをECサイトで使ってみたい
PWA+WebARをECサイトで使ってみたいPWA+WebARをECサイトで使ってみたい
PWA+WebARをECサイトで使ってみたい
 
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へモバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
 
GREE TechTalk グリーのクライアント技術戦略
GREE TechTalk グリーのクライアント技術戦略GREE TechTalk グリーのクライアント技術戦略
GREE TechTalk グリーのクライアント技術戦略
 
XPages Day 2013 [B-3] XPages開発を始める Notes技術者のためのWeb技術概論
XPages Day 2013 [B-3] XPages開発を始める Notes技術者のためのWeb技術概論XPages Day 2013 [B-3] XPages開発を始める Notes技術者のためのWeb技術概論
XPages Day 2013 [B-3] XPages開発を始める Notes技術者のためのWeb技術概論
 
アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~
アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~ アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~
アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~
 
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
1ヶ月で作り切る!スタートアップのための Rails 爆速開発術 (20170306)
 
3D勉強会 第1回 3Dプログラミングのススメ
3D勉強会 第1回 3Dプログラミングのススメ3D勉強会 第1回 3Dプログラミングのススメ
3D勉強会 第1回 3Dプログラミングのススメ
 
消滅都市5周年の運営を支えた技術とその歴史
消滅都市5周年の運営を支えた技術とその歴史消滅都市5周年の運営を支えた技術とその歴史
消滅都市5周年の運営を支えた技術とその歴史
 
Devsumi2013 gunta 2_pdf
Devsumi2013 gunta 2_pdfDevsumi2013 gunta 2_pdf
Devsumi2013 gunta 2_pdf
 
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
 
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
 
Front night vol1
Front night vol1Front night vol1
Front night vol1
 
入門者用Android Studio Hands on
入門者用Android Studio Hands on入門者用Android Studio Hands on
入門者用Android Studio Hands on
 
アプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきことアプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきこと
 
年の瀬リアルタイム通信サーバ勉強会
年の瀬リアルタイム通信サーバ勉強会年の瀬リアルタイム通信サーバ勉強会
年の瀬リアルタイム通信サーバ勉強会
 
AppStoreとGooglePlayの両プラットフォームに選ばれるUI/UX最適化
AppStoreとGooglePlayの両プラットフォームに選ばれるUI/UX最適化AppStoreとGooglePlayの両プラットフォームに選ばれるUI/UX最適化
AppStoreとGooglePlayの両プラットフォームに選ばれるUI/UX最適化
 
Docker study for beginner in My Company 2017/10/19
Docker study for beginner in My Company 2017/10/19Docker study for beginner in My Company 2017/10/19
Docker study for beginner in My Company 2017/10/19
 

サーバー未経験者がソーシャルゲームを通して知ったサーバーの事