SlideShare a Scribd company logo
Virtua Fighter5 Final Showdown
               の
   Twitter連動機能について
           株式会社セガ
            岩﨑剛
自己紹介
   株式会社セガ
   第二研究開発本部 開発2課
   岩崎剛
   Twitter: @twtrfk
開発の前段階
部内SNSの構築
2009年5月頃
岩﨑「VF5Rの新仕様にあるライバル設定ってTwitterっぽく
すると面白いかもしれませんね」
企画「うーん」
岩﨑「ちょっと待ってて下さい」
    3日後
岩﨑「AmitterってSNSを部内用に作ってみたんで試してみて
ください」
部内SNSの構築
参考:Amitter
「青天の霹靂」?「にわかに始動」?
2009年11月頃
何故か、初音ミク Project DIVA Arcade(DIVA-AC)と
Twitterの連動の話が急に盛り上がる。
部内SNS用ライブラリの作成
2010年1月頃
Amitterに外部ゕクセス用APIを実装。
DIVA-ACにAmitter用のライブラリ(AmitterUtil)の作成。
AmitterのTLにDIVA-ACのプレイ結果が流れ始める。
部内テストを経て・・・
2010年3月頃
VF5 Final Showdown(VF5FS)の新規機能としてTwitterと
の連動を改めて提案。
正式に始動
2010年4月頃
VF5FSでのTwitter連動が正式に動き出す。
AmitterUtilをVF5FSに移植。
Twitter4JとAmitterUtilをラップするクラスの作成。
システム概略図
データセンター


                   VF5用データベース
                                ユーザTL
             戦績等         個
                         人                    ツイート
                         設
                         定
                         等
                                 バッチ用サーバ
     ゲーム用サーバ
                                           XAuth/OAuth認証
                   VF.NET用サーバ




ゲームセンター
大まかな処理の流れ
(1)ICカードを使ってプレイ
(2)VF.NETのアカウント作成
(3)VF.NETにICカードを紐付ける
(4)VF.NETとTwitterを紐付ける
(5)Twitter連動の設定を行う
(6)ICカードを使って筐体でプレイ
(7)プレイ結果からユーザTLを作成
プレイ結果(八段に昇格など)などがVF5DBに記録されます。
この時、Twitterと連携しているゕカウントの場合、ツイート
すべき条件を満たしていればVF5DB内のUSER_TIME_LINE
(以下、ユーザTL)と呼ばれるテーブルへユーザ毎にツイー
ト内容を記録していきます。
(7)プレイ結果からユーザTLを作成
create table USER_TIME_LINE (
-- ユーザーID
    I_UID       int             not null,
    constraint fk_utl_1 foreign key (I_UID) references USER_INFO(I_UID) on delete cascade,

-- データID
  -- 0〜19
    DATA_ID     smallint        not null,

-- プライマリキー設定
    constraint pk_utl_1 primary key (I_UID, DATA_ID),

-- ツイート内容
  -- 140文字*2バイト(EUC)
    TWEET    varchar(280)       not null default '',

-- 最終更新日時
    UPDATE_TIME timestamp       not null default '2001-01-01-00.00.00.000000'
);
(8)バッチでツイートする
1分間隔で起動するバッチで(7)で生成したユーザTLの内容
をツイートします。
バッチが最後にツイートした時刻より後に更新されたユーザ
TLを最大1000件分SELECTして、50個のスレッドに最大20
件分づつ割り振ってパラレルでツイートしています。
この様な仕様になっている理由
ゲーム本編で実装するリスク
1. C++でTwitter連動の実験はしていなかった。
2. スケジュールがかなり短かった。
3. VF.NETとTwitterの紐付けはサーバ側で行うので、筐体
   で実装しても工数はそんなに減らない。
4. 万が一、バグでプログラムが制御不能になるとどうにも
   ならない。
5. もしも、セガ本体やTwitter社からクレームが来ても迅速
   に対応できない。
6. バグ等で修正版を出すのに数週間単位で時間がかかる。
7. バグ以外の機能追加版は簡単には出せない。
8. ゕクセストークンを送信する事になる。
9. ゲームセンターからセガ管理外のサーバに直接通信した
   タイトルが当時は(多分)無かった。
サーバ側で実装するメリット
1. 既にTwitter4J等を使う基礎実験は済んでいたので、すぐ
   に作業に入れた。
2. VF.NET側の処理を作る段階で、一緒に作ればいいので作
   業に集中できる。
3. バグ修正が簡単に出来る。
4. 機能追加が簡単にできる。
5. ツイートする量がセガ側で確実にコントロールできる。
6. ゲーム筐体からセガ管理外のサーバに直接通信する場合
   にセガ社内で必要な申請が回避できる。
バッチでツイートするメリット
1. 筐体用サーバの負荷をなるべく上げたくない。
2. 処理時間を長引かせたくない。
3. 負荷分散を可能にするため。
その他
苦労した点
1. テスト用のゕカウントは地道に用意するしかない。
2. 一部の携帯キャリゕからTwitterへ直接遷移させることは
   NGとされた。
3. 当時は携帯電話だとOAuth認証ページが正常に表示でき
   ない機種があった。
4. XAuthを使うのに申請が必要なのを知らなかった。
5. XAuthの申請が英語だった。
今後の展開
残念ながら未定。
ハッシュタグとか
ハッシュタグ
#VF5FS

連動ツイートだけ検索する時には
#VF5FS source:VF.NET

バーチャフゔイター公式ゕカウント
@vf_official
ご清聴ありがとうございました

More Related Content

Viewers also liked

NashornとServerSideJavaScript
NashornとServerSideJavaScriptNashornとServerSideJavaScript
NashornとServerSideJavaScriptMizuho Sakamaki
 
これからのNashorn
これからのNashornこれからのNashorn
これからのNashorn
Logico
 
失敗から学ぶAPI設計 #ccc_h4 #jjug #jjug_ccc JJUG CCC 2013 Spring
失敗から学ぶAPI設計  #ccc_h4 #jjug #jjug_ccc JJUG CCC 2013 Spring 失敗から学ぶAPI設計  #ccc_h4 #jjug #jjug_ccc JJUG CCC 2013 Spring
失敗から学ぶAPI設計 #ccc_h4 #jjug #jjug_ccc JJUG CCC 2013 Spring Yusuke Yamamoto
 
A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9
Marcus Lagergren
 
Twitter bootstrap入門 #twtr_hack
Twitter bootstrap入門 #twtr_hackTwitter bootstrap入門 #twtr_hack
Twitter bootstrap入門 #twtr_hack
Toshiaki Maki
 
ElasticsearchとTasteプラグインで作るレコメンドシステム
ElasticsearchとTasteプラグインで作るレコメンドシステムElasticsearchとTasteプラグインで作るレコメンドシステム
ElasticsearchとTasteプラグインで作るレコメンドシステム
Shinsuke Sugaya
 
差別化で未来を生き抜く エンジニアの7つの秘訣
差別化で未来を生き抜く エンジニアの7つの秘訣差別化で未来を生き抜く エンジニアの7つの秘訣
差別化で未来を生き抜く エンジニアの7つの秘訣
Yusuke Yamamoto
 
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
Shinsuke Sugaya
 
CrystalでもRailsを使いたいですか?
CrystalでもRailsを使いたいですか?CrystalでもRailsを使いたいですか?
CrystalでもRailsを使いたいですか?
Masayuki Uchida
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2Masatoshi Tada
 
SolrとElasticsearchの比較
SolrとElasticsearchの比較SolrとElasticsearchの比較
SolrとElasticsearchの比較
genta kaneyama
 
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライドElasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド
崇介 藤井
 
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
Ryota Watabe
 
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
 
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
John Allspaw
 

Viewers also liked (15)

NashornとServerSideJavaScript
NashornとServerSideJavaScriptNashornとServerSideJavaScript
NashornとServerSideJavaScript
 
これからのNashorn
これからのNashornこれからのNashorn
これからのNashorn
 
失敗から学ぶAPI設計 #ccc_h4 #jjug #jjug_ccc JJUG CCC 2013 Spring
失敗から学ぶAPI設計  #ccc_h4 #jjug #jjug_ccc JJUG CCC 2013 Spring 失敗から学ぶAPI設計  #ccc_h4 #jjug #jjug_ccc JJUG CCC 2013 Spring
失敗から学ぶAPI設計 #ccc_h4 #jjug #jjug_ccc JJUG CCC 2013 Spring
 
A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9
 
Twitter bootstrap入門 #twtr_hack
Twitter bootstrap入門 #twtr_hackTwitter bootstrap入門 #twtr_hack
Twitter bootstrap入門 #twtr_hack
 
ElasticsearchとTasteプラグインで作るレコメンドシステム
ElasticsearchとTasteプラグインで作るレコメンドシステムElasticsearchとTasteプラグインで作るレコメンドシステム
ElasticsearchとTasteプラグインで作るレコメンドシステム
 
差別化で未来を生き抜く エンジニアの7つの秘訣
差別化で未来を生き抜く エンジニアの7つの秘訣差別化で未来を生き抜く エンジニアの7つの秘訣
差別化で未来を生き抜く エンジニアの7つの秘訣
 
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
 
CrystalでもRailsを使いたいですか?
CrystalでもRailsを使いたいですか?CrystalでもRailsを使いたいですか?
CrystalでもRailsを使いたいですか?
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
 
SolrとElasticsearchの比較
SolrとElasticsearchの比較SolrとElasticsearchの比較
SolrとElasticsearchの比較
 
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライドElasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド
 
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
 
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
 
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
 

Similar to Virtua Fighter5 Final ShowdownのTwitter連動機能について #twtr_hack

Bot Framework v4 開発 Tips 2018-11
Bot Framework v4  開発 Tips 2018-11Bot Framework v4  開発 Tips 2018-11
Bot Framework v4 開発 Tips 2018-11
Atsushi Yokohama (BEACHSIDE)
 
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
Satoshi Yamafuji
 
VRのマルチプラットフォーム開発について
VRのマルチプラットフォーム開発についてVRのマルチプラットフォーム開発について
VRのマルチプラットフォーム開発について
yashinut
 
Azure Static Web Apps を試してみた!
Azure Static Web Apps を試してみた!Azure Static Web Apps を試してみた!
Azure Static Web Apps を試してみた!
一希 大田
 
191030 anna-with-python
191030 anna-with-python191030 anna-with-python
191030 anna-with-python
Takuya Nishimoto
 
Bot Framework Emulator はこんなにすごい
Bot Framework Emulator はこんなにすごいBot Framework Emulator はこんなにすごい
Bot Framework Emulator はこんなにすごい
Yoshitaka Seo
 
Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(後篇)
Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(後篇)Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(後篇)
Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(後篇)
Youichiro Miyake
 
CEDEC 2015: PlaygroundとLuaによる 大規模モバイルオンラインゲーム開発のレベルアップ Part3
CEDEC 2015: PlaygroundとLuaによる 大規模モバイルオンラインゲーム開発のレベルアップ Part3CEDEC 2015: PlaygroundとLuaによる 大規模モバイルオンラインゲーム開発のレベルアップ Part3
CEDEC 2015: PlaygroundとLuaによる 大規模モバイルオンラインゲーム開発のレベルアップ Part3
Takuya Hashimoto
 

Similar to Virtua Fighter5 Final ShowdownのTwitter連動機能について #twtr_hack (8)

Bot Framework v4 開発 Tips 2018-11
Bot Framework v4  開発 Tips 2018-11Bot Framework v4  開発 Tips 2018-11
Bot Framework v4 開発 Tips 2018-11
 
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
 
VRのマルチプラットフォーム開発について
VRのマルチプラットフォーム開発についてVRのマルチプラットフォーム開発について
VRのマルチプラットフォーム開発について
 
Azure Static Web Apps を試してみた!
Azure Static Web Apps を試してみた!Azure Static Web Apps を試してみた!
Azure Static Web Apps を試してみた!
 
191030 anna-with-python
191030 anna-with-python191030 anna-with-python
191030 anna-with-python
 
Bot Framework Emulator はこんなにすごい
Bot Framework Emulator はこんなにすごいBot Framework Emulator はこんなにすごい
Bot Framework Emulator はこんなにすごい
 
Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(後篇)
Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(後篇)Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(後篇)
Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(後篇)
 
CEDEC 2015: PlaygroundとLuaによる 大規模モバイルオンラインゲーム開発のレベルアップ Part3
CEDEC 2015: PlaygroundとLuaによる 大規模モバイルオンラインゲーム開発のレベルアップ Part3CEDEC 2015: PlaygroundとLuaによる 大規模モバイルオンラインゲーム開発のレベルアップ Part3
CEDEC 2015: PlaygroundとLuaによる 大規模モバイルオンラインゲーム開発のレベルアップ Part3
 

Virtua Fighter5 Final ShowdownのTwitter連動機能について #twtr_hack