SlideShare a Scribd company logo
1 of 10
Download to read offline
Copyright (c) Atomitech Corporation. All rights reserved.Copyright (c) Atomitech Corporation. All rights reserved.
会議室を現場にする!
リアルタイム共同編集による
プロトタイピング
(株)アトミテック 研究開発室 室長
早稲田大学GEC非常勤講師
長久勝
1
Copyright (c) Atomitech Corporation. All rights reserved.
概要
● 得られる知見:プログラミング言語として強い制約のある
DSLでの開発のワークフローの考え方
● 前提:Googleドキュメントの使用経験。チーム開発の経験
● 内容:リアルタイム共同編集が可能なノベルゲームエンジン
の体験展示を行います。元々は、プログラマを抜きに
GameJamを行うためのツールとして作り始めましたが、
コードの共同所有、継続的インテグレーション、高速なイテ
レーション、(状態遷移図による)見える化、といった、アジャ
イル開発のプラクティスを取り込むことで、会議のアウトプッ
トとしてノベルゲーム(のプロトタイプ)が得られる仕組みを実
現しています
2
Copyright (c) Atomitech Corporation. All rights reserved.
詳細
日科技連ソフトウェア品質シンポジウム2014「【経験発表】高品質ノベルゲーム開発基盤の提案」では、CEDEC2013
「『モデル検査』のススメ(ゲームシナリオ進行編)」の内容に加え、アジャイル開発のプラクティスを取り込んだノベルゲー
ムエンジンについて報告した。
プログラミング言語として強い制約を課したDSLによる開発においては、会議などで合意が取られる概要設計が大きな
意味を占め、それに沿った個々の実装作業は(プログラミングとして見た場合)それほど大変な作業ではない。例えば、ノ
ベルゲームでは、全体のシナリオ構成が決まると、個々の作業は各シーンの台詞や演出となり、プログラミングとしての
要素が薄くなる。現在、チームでプログラミングを行う際の代表的なワークフローは、分散リポジトリとプルリクエストによ
るものだが、これは概要設計が決まった後に用いられるものなので、会議などで合意が取られる概要設計が大きな意味
を占める場合、大掛かり過ぎてあまり上手く機能しないと考えられ、会議の中でプロトタイピングまで行う方が効率が良
いと考えられる。
本体験展示では、会議の中でプロトタイピングを行う実例を示し、そこでの、コードの共同所有、継続的インテグレーショ
ン、高速なイテレーション、(状態遷移図による)見える化、について示す。
コードの共同所有については、リポジトリやペアプログラミングが持つ問題点を、etherpad-liteで解消できることを示す。
継続的インテグレーションについては、数十秒間隔でDSLを解析し、ほぼリアルタイムで文法エラーの検出を行い、該当
部分を差し替える仕組みによって、コードを実行可能な状態に保つ。
高速なイテレーションについては、常にコードが実行可能な状態を保つことで、複数で同時作業していても、試行錯誤の
速度を維持できる。
(状態遷移図による)見える化については、香盤表の情報も併せ持ったシナリオフロー図のほぼリアルタイムな自動生成
により、コードの状態を把握可能としている。
本展示を体験することで、ワークフローの改善について、ヒントが得られるものと考える。
3
Copyright (c) Atomitech Corporation. All rights reserved.
アトラスX改二
会議のアウトプットとしてノベルゲーム(のプロトタイ
プ)が得られる仕組みを実現している、リアルタイム
共同編集が可能なノベルゲームエンジン
● コードの共同所有
● 継続的インテグレーション
● 高速なイテレーション
● (状態遷移図による)見える化
4
Copyright (c) Atomitech Corporation. All rights reserved.
コードの共同所有
リポジトリ:開発者がローカル環境でリソースの編
集を行う際には、たいてい1人であり、編集中の状
態まで共同所有してはいない
ペアプログラミング:物理的に同じ場所にいないと
機能しない。3人以上だと成り立たない
etherpad-lite:共同編集がリアルタイムで可能
5
Copyright (c) Atomitech Corporation. All rights reserved.
イテレーションの速度
シナリオの分割単位であるシーン毎に文法エラー
を評価し、エラーを検出したシーンをダミーに置き
換えることで、ゲームそのものは実行可能とした
作業中のシーンに含まれるバグの影響を限定し、
複数で同時作業していても、試行錯誤の速度が落
ちない
最新のDSLによる実行確認も、ゲームのリロード
で可能であり、試行錯誤の速度が落ちない6
Copyright (c) Atomitech Corporation. All rights reserved.
CI
数十秒間隔でDSLを解析し、ほぼリアルタイムでシ
ナリオフロー図の更新と文法エラーの検出を行っ
ている
シナリオフロー図をワークショップ会場にプロジェク
ションするなど、変化していく状態遷移図の状況を
共有することで、進捗や課題を簡単に共有できる
7
Copyright (c) Atomitech Corporation. All rights reserved.
見える化
香盤表の情報も併せ持ったシナリオフロー図のほ
ぼリアルタイムな自動生成により、コードの状態を
把握可能としている
8
Copyright (c) Atomitech Corporation. All rights reserved.
「プルリク」「ペアプロ」「コミット駆動「CI」
「プルリク」では、共有不足をレビューで補う
「ペアプロ」では、共有の及ぶ範囲が限定的
コミット駆動「CI」では、変化に遅延する
殆どのコードはDSL化していく
3人ぐらいで書ける
リアルタイム共同編集に適合する領域は
拡大していく
9
Copyright (c) Atomitech Corporation. All rights reserved.
● XP祭り2014:
俺の考えたイテレーションの未来!!(ワークショップ)
● ソフトウェア品質シンポジウム2014:
高品質ノベルゲーム開発基盤の提案(講演)
● GCS2015:
リアルタイム共同編集によるプロトタイピング(講演)
● CEDEC2015:
リアルタイム共同編集によるプロトタイピング(展示)
● ソフトウェア品質シンポジウム2015:
協働体験から、この先のプロセスを考えてみよう
(ディスカッション)
既出情報
10

More Related Content

What's hot

VS Code新機能紹介 2020-2021
VS Code新機能紹介2020-2021VS Code新機能紹介2020-2021
VS Code新機能紹介 2020-2021Yuki Ueda
 
お気に入り拡張機能
お気に入り拡張機能お気に入り拡張機能
お気に入り拡張機能SatsukiYabu
 
「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考えるEtsuji Nakai
 
Javaユーザに知ってほしい Processing入門
Javaユーザに知ってほしいProcessing入門Javaユーザに知ってほしいProcessing入門
Javaユーザに知ってほしい Processing入門chickenJr
 
水着回抽出機
水着回抽出機水着回抽出機
水着回抽出機amayaw9
 
Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Masaki Muranaka
 
GBDC 勉強会 #2 Android Studio 実践レポート
GBDC 勉強会 #2 Android Studio 実践レポートGBDC 勉強会 #2 Android Studio 実践レポート
GBDC 勉強会 #2 Android Studio 実践レポートYutaka Kato
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!Masaki Muranaka
 
社内の遊休PCをAzurePipelinesでCICDに活用しよう
社内の遊休PCをAzurePipelinesでCICDに活用しよう社内の遊休PCをAzurePipelinesでCICDに活用しよう
社内の遊休PCをAzurePipelinesでCICDに活用しようShinya Nakajima
 
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用Yoshifumi Kawai
 
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術Unity Technologies Japan K.K.
 

What's hot (11)

VS Code新機能紹介 2020-2021
VS Code新機能紹介2020-2021VS Code新機能紹介2020-2021
VS Code新機能紹介 2020-2021
 
お気に入り拡張機能
お気に入り拡張機能お気に入り拡張機能
お気に入り拡張機能
 
「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える
 
Javaユーザに知ってほしい Processing入門
Javaユーザに知ってほしいProcessing入門Javaユーザに知ってほしいProcessing入門
Javaユーザに知ってほしい Processing入門
 
水着回抽出機
水着回抽出機水着回抽出機
水着回抽出機
 
Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料
 
GBDC 勉強会 #2 Android Studio 実践レポート
GBDC 勉強会 #2 Android Studio 実践レポートGBDC 勉強会 #2 Android Studio 実践レポート
GBDC 勉強会 #2 Android Studio 実践レポート
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
 
社内の遊休PCをAzurePipelinesでCICDに活用しよう
社内の遊休PCをAzurePipelinesでCICDに活用しよう社内の遊休PCをAzurePipelinesでCICDに活用しよう
社内の遊休PCをAzurePipelinesでCICDに活用しよう
 
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
 
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
 

Similar to 会議室を現場にする! リアルタイム共同編集によるプロトタイピング

アジャイルナイトセミナー_2012年10月18日_Social Game x Agile Development
アジャイルナイトセミナー_2012年10月18日_Social Game x Agile Developmentアジャイルナイトセミナー_2012年10月18日_Social Game x Agile Development
アジャイルナイトセミナー_2012年10月18日_Social Game x Agile DevelopmentGo2GroupJapan
 
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangFINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangYoshiki Shibukawa
 
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019満徳 関
 
3Dリッチコンテンツビジネス活用のご提案ver3.1
3Dリッチコンテンツビジネス活用のご提案ver3.13Dリッチコンテンツビジネス活用のご提案ver3.1
3Dリッチコンテンツビジネス活用のご提案ver3.1ITDORAKU
 
とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例agileware_jp
 
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」Takashi Endo
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)NTT DATA Technology & Innovation
 
ゲーム業界から見たアジャイル開発
ゲーム業界から見たアジャイル開発ゲーム業界から見たアジャイル開発
ゲーム業界から見たアジャイル開発Masaru Nagaku
 
うちの開発におけるXD利用法
うちの開発におけるXD利用法うちの開発におけるXD利用法
うちの開発におけるXD利用法Kazuma Sekiguchi
 
ex-Workshop06『three.jsを使ってモデリングソフトを試作する』
ex-Workshop06『three.jsを使ってモデリングソフトを試作する』ex-Workshop06『three.jsを使ってモデリングソフトを試作する』
ex-Workshop06『three.jsを使ってモデリングソフトを試作する』Takahiro Hirata
 
01 idea table3.0
01 idea table3.001 idea table3.0
01 idea table3.0umisuzume
 
Toolkit for CreateJSで作るリッチコンテンツ
Toolkit for CreateJSで作るリッチコンテンツToolkit for CreateJSで作るリッチコンテンツ
Toolkit for CreateJSで作るリッチコンテンツYasunobu Ikeda
 
WeDX Flow Hands-on
WeDX Flow Hands-onWeDX Flow Hands-on
WeDX Flow Hands-onJingun Jung
 
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021Atsushi Nakamura
 
初学者のためのプロンプトエンジニアリング実践.pptx
初学者のためのプロンプトエンジニアリング実践.pptx初学者のためのプロンプトエンジニアリング実践.pptx
初学者のためのプロンプトエンジニアリング実践.pptxAkifumi Niida
 
Chromeでストレージ永続化を実現するには
Chromeでストレージ永続化を実現するにはChromeでストレージ永続化を実現するには
Chromeでストレージ永続化を実現するにはgoccy
 
enchant.jsを使った子ども向けプログラミングワークショップ講義内容
enchant.jsを使った子ども向けプログラミングワークショップ講義内容enchant.jsを使った子ども向けプログラミングワークショップ講義内容
enchant.jsを使った子ども向けプログラミングワークショップ講義内容Yuki Tanaka
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよYohei Oda
 

Similar to 会議室を現場にする! リアルタイム共同編集によるプロトタイピング (20)

アジャイルナイトセミナー_2012年10月18日_Social Game x Agile Development
アジャイルナイトセミナー_2012年10月18日_Social Game x Agile Developmentアジャイルナイトセミナー_2012年10月18日_Social Game x Agile Development
アジャイルナイトセミナー_2012年10月18日_Social Game x Agile Development
 
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangFINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
 
Mithril
MithrilMithril
Mithril
 
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
 
3Dリッチコンテンツビジネス活用のご提案ver3.1
3Dリッチコンテンツビジネス活用のご提案ver3.13Dリッチコンテンツビジネス活用のご提案ver3.1
3Dリッチコンテンツビジネス活用のご提案ver3.1
 
とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例
 
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
ゲーム業界から見たアジャイル開発
ゲーム業界から見たアジャイル開発ゲーム業界から見たアジャイル開発
ゲーム業界から見たアジャイル開発
 
うちの開発におけるXD利用法
うちの開発におけるXD利用法うちの開発におけるXD利用法
うちの開発におけるXD利用法
 
ex-Workshop06『three.jsを使ってモデリングソフトを試作する』
ex-Workshop06『three.jsを使ってモデリングソフトを試作する』ex-Workshop06『three.jsを使ってモデリングソフトを試作する』
ex-Workshop06『three.jsを使ってモデリングソフトを試作する』
 
01 idea table3.0
01 idea table3.001 idea table3.0
01 idea table3.0
 
Toolkit for CreateJSで作るリッチコンテンツ
Toolkit for CreateJSで作るリッチコンテンツToolkit for CreateJSで作るリッチコンテンツ
Toolkit for CreateJSで作るリッチコンテンツ
 
WeDX Flow Hands-on
WeDX Flow Hands-onWeDX Flow Hands-on
WeDX Flow Hands-on
 
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
 
【初心者向け】API を使ってクラウドの管理を自動化しよう
【初心者向け】API を使ってクラウドの管理を自動化しよう【初心者向け】API を使ってクラウドの管理を自動化しよう
【初心者向け】API を使ってクラウドの管理を自動化しよう
 
初学者のためのプロンプトエンジニアリング実践.pptx
初学者のためのプロンプトエンジニアリング実践.pptx初学者のためのプロンプトエンジニアリング実践.pptx
初学者のためのプロンプトエンジニアリング実践.pptx
 
Chromeでストレージ永続化を実現するには
Chromeでストレージ永続化を実現するにはChromeでストレージ永続化を実現するには
Chromeでストレージ永続化を実現するには
 
enchant.jsを使った子ども向けプログラミングワークショップ講義内容
enchant.jsを使った子ども向けプログラミングワークショップ講義内容enchant.jsを使った子ども向けプログラミングワークショップ講義内容
enchant.jsを使った子ども向けプログラミングワークショップ講義内容
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよ
 

More from Masaru Nagaku

GTMF2018大阪Meet-ups
GTMF2018大阪Meet-upsGTMF2018大阪Meet-ups
GTMF2018大阪Meet-upsMasaru Nagaku
 
教育・研究クラウドサービスのためのパターンランゲージ
教育・研究クラウドサービスのためのパターンランゲージ教育・研究クラウドサービスのためのパターンランゲージ
教育・研究クラウドサービスのためのパターンランゲージMasaru Nagaku
 
FDRによるRPGシナリオの検証
FDRによるRPGシナリオの検証FDRによるRPGシナリオの検証
FDRによるRPGシナリオの検証Masaru Nagaku
 
高品質ノベルゲーム開発基盤の提案
高品質ノベルゲーム開発基盤の提案高品質ノベルゲーム開発基盤の提案
高品質ノベルゲーム開発基盤の提案Masaru Nagaku
 
人類の単一個体融合に向けて
人類の単一個体融合に向けて人類の単一個体融合に向けて
人類の単一個体融合に向けてMasaru Nagaku
 
ゲームとモデル検査ワークショップ#1
ゲームとモデル検査ワークショップ#1ゲームとモデル検査ワークショップ#1
ゲームとモデル検査ワークショップ#1Masaru Nagaku
 
「モデル検査」のススメ (ゲームシナリオ進行編)
「モデル検査」のススメ (ゲームシナリオ進行編)「モデル検査」のススメ (ゲームシナリオ進行編)
「モデル検査」のススメ (ゲームシナリオ進行編)Masaru Nagaku
 
An Experiment of 1/319
An Experiment of 1/319An Experiment of 1/319
An Experiment of 1/319Masaru Nagaku
 
ワークショップ「ゲーム開発チームにおけるパトレット」
ワークショップ「ゲーム開発チームにおけるパトレット」ワークショップ「ゲーム開発チームにおけるパトレット」
ワークショップ「ゲーム開発チームにおけるパトレット」Masaru Nagaku
 

More from Masaru Nagaku (11)

GTMF2018大阪Meet-ups
GTMF2018大阪Meet-upsGTMF2018大阪Meet-ups
GTMF2018大阪Meet-ups
 
教育・研究クラウドサービスのためのパターンランゲージ
教育・研究クラウドサービスのためのパターンランゲージ教育・研究クラウドサービスのためのパターンランゲージ
教育・研究クラウドサービスのためのパターンランゲージ
 
FDRによるRPGシナリオの検証
FDRによるRPGシナリオの検証FDRによるRPGシナリオの検証
FDRによるRPGシナリオの検証
 
高品質ノベルゲーム開発基盤の提案
高品質ノベルゲーム開発基盤の提案高品質ノベルゲーム開発基盤の提案
高品質ノベルゲーム開発基盤の提案
 
人類の単一個体融合に向けて
人類の単一個体融合に向けて人類の単一個体融合に向けて
人類の単一個体融合に向けて
 
GameJamCanvas
GameJamCanvasGameJamCanvas
GameJamCanvas
 
ゲームとモデル検査ワークショップ#1
ゲームとモデル検査ワークショップ#1ゲームとモデル検査ワークショップ#1
ゲームとモデル検査ワークショップ#1
 
「モデル検査」のススメ (ゲームシナリオ進行編)
「モデル検査」のススメ (ゲームシナリオ進行編)「モデル検査」のススメ (ゲームシナリオ進行編)
「モデル検査」のススメ (ゲームシナリオ進行編)
 
An Experiment of 1/319
An Experiment of 1/319An Experiment of 1/319
An Experiment of 1/319
 
ワークショップ「ゲーム開発チームにおけるパトレット」
ワークショップ「ゲーム開発チームにおけるパトレット」ワークショップ「ゲーム開発チームにおけるパトレット」
ワークショップ「ゲーム開発チームにおけるパトレット」
 
Xp20120915
Xp20120915Xp20120915
Xp20120915
 

会議室を現場にする! リアルタイム共同編集によるプロトタイピング

  • 1. Copyright (c) Atomitech Corporation. All rights reserved.Copyright (c) Atomitech Corporation. All rights reserved. 会議室を現場にする! リアルタイム共同編集による プロトタイピング (株)アトミテック 研究開発室 室長 早稲田大学GEC非常勤講師 長久勝 1
  • 2. Copyright (c) Atomitech Corporation. All rights reserved. 概要 ● 得られる知見:プログラミング言語として強い制約のある DSLでの開発のワークフローの考え方 ● 前提:Googleドキュメントの使用経験。チーム開発の経験 ● 内容:リアルタイム共同編集が可能なノベルゲームエンジン の体験展示を行います。元々は、プログラマを抜きに GameJamを行うためのツールとして作り始めましたが、 コードの共同所有、継続的インテグレーション、高速なイテ レーション、(状態遷移図による)見える化、といった、アジャ イル開発のプラクティスを取り込むことで、会議のアウトプッ トとしてノベルゲーム(のプロトタイプ)が得られる仕組みを実 現しています 2
  • 3. Copyright (c) Atomitech Corporation. All rights reserved. 詳細 日科技連ソフトウェア品質シンポジウム2014「【経験発表】高品質ノベルゲーム開発基盤の提案」では、CEDEC2013 「『モデル検査』のススメ(ゲームシナリオ進行編)」の内容に加え、アジャイル開発のプラクティスを取り込んだノベルゲー ムエンジンについて報告した。 プログラミング言語として強い制約を課したDSLによる開発においては、会議などで合意が取られる概要設計が大きな 意味を占め、それに沿った個々の実装作業は(プログラミングとして見た場合)それほど大変な作業ではない。例えば、ノ ベルゲームでは、全体のシナリオ構成が決まると、個々の作業は各シーンの台詞や演出となり、プログラミングとしての 要素が薄くなる。現在、チームでプログラミングを行う際の代表的なワークフローは、分散リポジトリとプルリクエストによ るものだが、これは概要設計が決まった後に用いられるものなので、会議などで合意が取られる概要設計が大きな意味 を占める場合、大掛かり過ぎてあまり上手く機能しないと考えられ、会議の中でプロトタイピングまで行う方が効率が良 いと考えられる。 本体験展示では、会議の中でプロトタイピングを行う実例を示し、そこでの、コードの共同所有、継続的インテグレーショ ン、高速なイテレーション、(状態遷移図による)見える化、について示す。 コードの共同所有については、リポジトリやペアプログラミングが持つ問題点を、etherpad-liteで解消できることを示す。 継続的インテグレーションについては、数十秒間隔でDSLを解析し、ほぼリアルタイムで文法エラーの検出を行い、該当 部分を差し替える仕組みによって、コードを実行可能な状態に保つ。 高速なイテレーションについては、常にコードが実行可能な状態を保つことで、複数で同時作業していても、試行錯誤の 速度を維持できる。 (状態遷移図による)見える化については、香盤表の情報も併せ持ったシナリオフロー図のほぼリアルタイムな自動生成 により、コードの状態を把握可能としている。 本展示を体験することで、ワークフローの改善について、ヒントが得られるものと考える。 3
  • 4. Copyright (c) Atomitech Corporation. All rights reserved. アトラスX改二 会議のアウトプットとしてノベルゲーム(のプロトタイ プ)が得られる仕組みを実現している、リアルタイム 共同編集が可能なノベルゲームエンジン ● コードの共同所有 ● 継続的インテグレーション ● 高速なイテレーション ● (状態遷移図による)見える化 4
  • 5. Copyright (c) Atomitech Corporation. All rights reserved. コードの共同所有 リポジトリ:開発者がローカル環境でリソースの編 集を行う際には、たいてい1人であり、編集中の状 態まで共同所有してはいない ペアプログラミング:物理的に同じ場所にいないと 機能しない。3人以上だと成り立たない etherpad-lite:共同編集がリアルタイムで可能 5
  • 6. Copyright (c) Atomitech Corporation. All rights reserved. イテレーションの速度 シナリオの分割単位であるシーン毎に文法エラー を評価し、エラーを検出したシーンをダミーに置き 換えることで、ゲームそのものは実行可能とした 作業中のシーンに含まれるバグの影響を限定し、 複数で同時作業していても、試行錯誤の速度が落 ちない 最新のDSLによる実行確認も、ゲームのリロード で可能であり、試行錯誤の速度が落ちない6
  • 7. Copyright (c) Atomitech Corporation. All rights reserved. CI 数十秒間隔でDSLを解析し、ほぼリアルタイムでシ ナリオフロー図の更新と文法エラーの検出を行っ ている シナリオフロー図をワークショップ会場にプロジェク ションするなど、変化していく状態遷移図の状況を 共有することで、進捗や課題を簡単に共有できる 7
  • 8. Copyright (c) Atomitech Corporation. All rights reserved. 見える化 香盤表の情報も併せ持ったシナリオフロー図のほ ぼリアルタイムな自動生成により、コードの状態を 把握可能としている 8
  • 9. Copyright (c) Atomitech Corporation. All rights reserved. 「プルリク」「ペアプロ」「コミット駆動「CI」 「プルリク」では、共有不足をレビューで補う 「ペアプロ」では、共有の及ぶ範囲が限定的 コミット駆動「CI」では、変化に遅延する 殆どのコードはDSL化していく 3人ぐらいで書ける リアルタイム共同編集に適合する領域は 拡大していく 9
  • 10. Copyright (c) Atomitech Corporation. All rights reserved. ● XP祭り2014: 俺の考えたイテレーションの未来!!(ワークショップ) ● ソフトウェア品質シンポジウム2014: 高品質ノベルゲーム開発基盤の提案(講演) ● GCS2015: リアルタイム共同編集によるプロトタイピング(講演) ● CEDEC2015: リアルタイム共同編集によるプロトタイピング(展示) ● ソフトウェア品質シンポジウム2015: 協働体験から、この先のプロセスを考えてみよう (ディスカッション) 既出情報 10