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

サーバーのおしごと
サーバーのおしごとサーバーのおしごと
サーバーのおしごとYugo Shimizu
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例sairoutine
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~UnityTechnologiesJapan002
 
プログラマが欲しい仕様書とは
プログラマが欲しい仕様書とはプログラマが欲しい仕様書とは
プログラマが欲しい仕様書とはKatsutoshi Makino
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~torisoup
 
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法モノビット エンジン
 
ゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめSugimoto Chizuru
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門torisoup
 
DeNAのサーバー"コード"レスアーキテクチャ
DeNAのサーバー"コード"レスアーキテクチャDeNAのサーバー"コード"レスアーキテクチャ
DeNAのサーバー"コード"レスアーキテクチャHaruto Otake
 
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装Koji Morikawa
 
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#Yoshifumi Kawai
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意Yoshitaka Kawashima
 
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例Naoya Kishimoto
 
任天堂の呪いとナラティブについてバンナム編
任天堂の呪いとナラティブについてバンナム編任天堂の呪いとナラティブについてバンナム編
任天堂の呪いとナラティブについてバンナム編Kawamura Yasuhisa
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
Steam ゲーム内購入 サーバーサイド実装について
Steam ゲーム内購入 サーバーサイド実装についてSteam ゲーム内購入 サーバーサイド実装について
Steam ゲーム内購入 サーバーサイド実装についてKLab Inc. / Tech
 
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用Sugimoto Chizuru
 
MMOGで考えるゲームデザイン
MMOGで考えるゲームデザインMMOGで考えるゲームデザイン
MMOGで考えるゲームデザインKatsumi Mizushima
 
ソーシャルゲームの為のデータベース設計
ソーシャルゲームの為のデータベース設計ソーシャルゲームの為のデータベース設計
ソーシャルゲームの為のデータベース設計kaminashi
 

What's hot (20)

サーバーのおしごと
サーバーのおしごとサーバーのおしごと
サーバーのおしごと
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
 
プログラマが欲しい仕様書とは
プログラマが欲しい仕様書とはプログラマが欲しい仕様書とは
プログラマが欲しい仕様書とは
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
 
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
 
ゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめ
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門
 
DeNAのサーバー"コード"レスアーキテクチャ
DeNAのサーバー"コード"レスアーキテクチャDeNAのサーバー"コード"レスアーキテクチャ
DeNAのサーバー"コード"レスアーキテクチャ
 
Machinationの紹介
Machinationの紹介Machinationの紹介
Machinationの紹介
 
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装
 
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
 
任天堂の呪いとナラティブについてバンナム編
任天堂の呪いとナラティブについてバンナム編任天堂の呪いとナラティブについてバンナム編
任天堂の呪いとナラティブについてバンナム編
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
Steam ゲーム内購入 サーバーサイド実装について
Steam ゲーム内購入 サーバーサイド実装についてSteam ゲーム内購入 サーバーサイド実装について
Steam ゲーム内購入 サーバーサイド実装について
 
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
 
MMOGで考えるゲームデザイン
MMOGで考えるゲームデザインMMOGで考えるゲームデザイン
MMOGで考えるゲームデザイン
 
ソーシャルゲームの為のデータベース設計
ソーシャルゲームの為のデータベース設計ソーシャルゲームの為のデータベース設計
ソーシャルゲームの為のデータベース設計
 

Viewers also liked

Amebaソシャゲ分析事例のご紹介
Amebaソシャゲ分析事例のご紹介Amebaソシャゲ分析事例のご紹介
Amebaソシャゲ分析事例のご紹介Masanori Takano
 
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
 
負荷対策しておもったことまとめ~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 (18)

Amebaソシャゲ分析事例のご紹介
Amebaソシャゲ分析事例のご紹介Amebaソシャゲ分析事例のご紹介
Amebaソシャゲ分析事例のご紹介
 
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
 

Recently uploaded

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 

Recently uploaded (7)

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 

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