SlideShare a Scribd company logo
1 of 25
CEDEC 2012(コンピューターエンターテイメントデベロッパーズカンファレンス




  鷲崎 弘宜、坂本 一憲、和田 雅
                 彦
  早稲田大学グローバルソフトウェア
       エンジニアリング研究所
   http://www.washi.cs.waseda.ac.jp/
                                       1
• ねらい
 – パターンと原則に関して、自分なりの意義・
   価値観を持つ。
• 終了時の目標
 – ゲームAIプラットフォームの設計におけるパ
   ターンや原則を知っている。
 – ゲームAIコンテストのゲームデザインにおけ
   るパターンを知っている。
 – それらの概念と広がりを知っている。


                           2
• AI プログラムを作成し対戦
 – プログラミング教育、ゲームAI研究へ
 – ゲームプラットフォームがAPI提供、ターン制のゲーム
• 早稲田大学における開発・運営実績
 –   ’09: ACM ICPC併設 Java Challenge
 –   ‘10: ACM ICPC併設 Java Challenge, 楽天コンテスト
 –   ‘11: Samurai Coding 2011
 –   ‘12: ACM ICPC併設Java Challenge, SamurAI Coding 2012




詳細は異なるが、同じようなことをしている!
設計や実装を再利用できれば、楽によいものを作れるので
は?
class Mathematic {

    public Data sort(Data data){
      switch(settings) {
      case QUICK:
        return quickSort(data);
      case BUBBLE:
        return bubbleSort(data);
      default: ...
    }
}

class Loan {

    public double capital() {
      if(expiry == null &&
        maturity != null)
       return ...;
      if(expiry != null &&
        maturity == null) {
        ...
      }                            4
class Mathematic {                 class Mathematic {
                                     Sorter sorter;
    public Data sort(Data data){     public Data sort(Data data){
      switch(settings) {               return sorter.sort(data);
      case QUICK:                    }
        return quickSort(data);
      case BUBBLE:                 abstract class Sorter {
        return bubbleSort(data);     public abstract Data sort(Data);
      default: ...
    }                              class QuickSorter extends Sorter {
}                                    public Data sort(Data) { ... }

                                   class Loan {
class Loan {                         CapitalCalc capitalCalc;
                                     public double capital(){
    public double capital() {          return capitalCalc.calc(this);
      if(expiry == null &&           }
        maturity != null)
       return ...;                 Interface CapitalCalc {
      if(expiry != null &&           double calc(Loan l);
        maturity == null) {
        ...                        class TermCapital implements ...{
      }                            5 double calc(Loan l) { ... }
文脈
   異なるアルゴリズムが必要。クライアントが知るべきでないデータ
   利用。
   問題
   ・・・アルゴリズムは多数存在している。これらの機能
   を必要とするクラスに埋め込んでしまうことは望ましく
   ない・・・
   解決
   振る舞いのカプセル化、ポリモーフィズムによる変
   更。
Context                          Strategy

contextInterface()               algorithmInterface()


          ConcreteStrategyA      ConcreteStrategyB      ・・・
          algorithmInterface()   algorithmInterface()   ・・・
   結果
   ・・・アルゴリズムと他の実装が混ざると保守しにくい・・・
   ・・・アルゴリズムを拡張、動的変更・・・
   ・・・通信に関するオーバーヘッド、オブジェクト数の増
                 6
• ソフトウェア開発の特定状況下で繰り返される問題と解
       決
          – 変更や再利用のための設計
          – 共通の「ことば」(指針)
     • POSA アーキテクチャパターン
     • Gang of Four(GoF) デザインパターン [GoF00] など
                            文脈: こういうときに
                            問題: こうしたかったら
             抽象化            制約: こういうことを考慮し 具象化
                            解決策: こうしなさい
    類似
                                                              解決               解決
        成功事例                                     抽象化         新たな状況


[GOF00] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides(著), 本位田真一, 吉田和樹 (監訳),
                                                    7
“オブジェクト指向における再利用のためのデザインパターン改訂版", ソフトバンクパブリッシング,
抽出して抽象化すると・・・共通の「こと
  ば」に!
• 設計原則
 – 設計上の根本指針(例: 高凝集・低結合)
• アーキテクチャパターン
 – 共通の骨格、全体としての方針(例: 多
   層)
• デザインパターン
 詳細を省き様々な場合を網羅、再利用可能性
 – 共通の部分的方針
 あり


それらを具体化すると・・・強力な土台
  に!
  特定の場合にのみ、詳細も一括再利用可
• フレームワーク
 (詳細なままではあらゆる場合を網羅しな
 – 再利用・カスタマイズ可能な半完成の実装    8
ドメイン       * システム * サブシステム* クラス  * メソッド
                        /パッケージ  (ファイル) (関数)/属性

   全体                                      部分
抽象的
(汎用) たいてい
     使える
                設計原則

                アーキテクチャ
                              デザインパターン
                パターン
       使えるか
       使えるかも
        も
                フレームワーク

                     特定の場合に
                      あてはまれ
       プロダクトライン       ば使える
                     限り使える      クラス・関数ライブラリ
具体的
(特化)
                                           9
• ゲームAIプラットフォームにおける再利用の
  問題
1. ゲームAIプログラミングに特化していない
 – 近年活発になっているものの歴史の浅い分野
2. 分析,設計,実装で横断的に再利用されな
   い
 – 実装における再利用のみ重視されがち
 – 要求や設計の再利用もしたい!
                要求   設計   実装


                再利用可能な資産
                          10
• 分析,設計,実装の各工程にまたがる再利
  用
 – 要求分析:品質特性(ISO9126)に基づく要求
   分析
  – 設計:要求を満たすような設計原則・設計の指
    針
品質特性
  – 実装:設計原則を満たすようなフレームワーク
                     受け入れテス
        要求分析            ト
   •
 要求 正しい設計がされるような制約を設ける
          設計        結合テスト
 設計原則
            実装    単体テスト
  フレーム
   ワーク                    11
• 漠然とした要求分析は難しい抜けや漏れのない
      – 品質特性(ISO9126)から網羅的に分析
• プラットフォームに必要な品質(副)特性を
  列挙
      – 機能性:セキュリティ
      – 信頼性:障害許容性
      – 効率性:時間効率性
      – 使用性:理解性,魅力性
      – 保守性:解析性,変更性
      – 移植性:環境適応性
• 品質(副)特性から具体的な要求を抽出
Licenced by Alan Cleaver (http://www.flickr.com/photos/alancleaver/4439276478/)   12
• 機能性:セキュリティ
 – 書き換え不可能
   • AIプログラムによるゲーム
     状態の不正な変更を防ぐ
• 信頼性:障害許容性                    AI 不正な
                               AI
                                AI 書き換え
 – AIプログラムからの独立
    • AIプログラムの不具合がプラットフォームに影響し
      ない
    • AIプログラムが無限ループしても落ちない
 while (true) { Int[] array = new int[10];
   ….           System.out.println(array[15]);
 }
  無限ループする              例外を吐くAIプログラム
                                            13
     AI
• 要求を満たすための設計の指針・原則を考
  案             Immutable
                  ゲーム
• 要求1:書き換え不可能     状態
                   ゲーム   AIプログラ
 – Immutableパターン            ム
                     ゲームプラットフォー
                    状態

 – 書き換え不可能な               ム
   オブジェクトを受け渡す
• 要求2:AIプログラムからの独立
 – 設計原則:別スレッド(プロセス)での実行
  • プロセス単位で動作するGoogle Chromeのタブのよ
    うに
 – 設計原則:AIプログラムの計算時間の制限         14
• 設計のパターンや原則をフレームワーク
  に織り込む
 – 利用者のプログラムも自然と設計原則に従う
• Immutableパターン
 – 書き換えできない汎用的なクラスを提供
 例)二次元座標を表すPointクラス
• 設計原則:別スレッド(プロセス)での
  実行            AIプログラ
 – AIプログラムの実行機能を提供   ム
                ゲームプラットフォー
 – 様々な機能を追加可能        ム
   • 実行結果の記録・再生         フレームワーク(GAIA)
   • Decoratorパターンを利用              15
• 実装のみの再利用からの脱却
 – 分析,設計,実装に横断する一貫した再利用
• 開発フローにならう再利用可能な資産の
  抽出
 1. 品質特性から網羅的に要求を列挙
 2. 要求を実現するパターンや設計原則を識別
 3. パターンや設計原則をもとにフレームワーク
    の開発
• ローマは一日してならず
 – プロジェクトを回すたびに資産が成長
 – いつでも使えるように整理しておくことが重
   要                   16
•ゲームデザインパターン
 •AIコンテスト向けのゲーム仕様に関するパターン
 •ゲーム開発のノウハウを一般化,共有

• セルフマイニング
 – 技術者自らが過去の経験を振り返りパターンを抽出
 – 過去4度のコンテスト運営経験からマイニング

• 品質特性に基づいたパターンの抽出と整理
 1. コンテスト向けゲームに関連する品質特性を特定
 2. 過去の題材ゲームに実装された仕様・反省される仕様から
    品質特性に寄与するゲームデザインを抽出
 3. 抽出したデザインをパターンフォーマットに従いドキュメン
    ト化
                             17
品質特性
                                          ターン
 参加性(閾の低さ)   時間が離散的     擬似リアルタイム
                                          同時
                            グラフ
             マップが離散的
    開発コスト                   格子


             戦略と戦術   3すくみ 3プレイヤー以上
      公平性
             対称マップ   トーラス
                                   稀少な状況

     ゲーム性                          ランダム要素
             ゲームの流れを変える
                                  クライマックス


エンターテイメント性   キープオンムービング           盤面縮退

                                  仕切り直し         18
抽出           擬似リアルタイムパターン
                          •背景
                            AI コンテストの参加者は幅広
                            い・・・
                          •フォース
                            参加者が AI プログラムの開発に割
                            り当てられるコストは不明・・・
                          •問題
•プレイヤーが選択した手の結果を            リアルタイムゲームは AI 開発コス
 反映させるタイミングに制約を加える          ト増
•リフレッシュを高速(人間の知覚基準        •解決
                            プレイヤーが選択した手の結果を
で)                          反映させるタイミングに制約を加
 に行い擬似的にリアルタイムな演出           える
                 楽天コンテス
 JC 2009 JC 2010
                   ト
                                                適用
 • 品質特性に寄与し,                        Samurai
   繰り返し実装された仕様を一般化                Coding 2011
                                                 19
20
擬似リアルタイムパターン        具体化
           補完              仕切り直しパターン
                     •問題
 キープオンムービングパター         ・・・・・・
                     •解決
•問題    ン               盤面が同じ状態を繰り返した際に
                       強制的に盤面の状態を変化
  各プレイヤーが同じ手を繰り返し    •関連パターン
  見かけ上試合の進行が止まる        キープオンムービング
•解決
  強制的な盤面の変更や、
  繰り返し同じ手を打てない仕様の導         盤面縮退パターン
  入                  •問題
•関連パターン                ・・・・・・
  擬似リアルタイムパターン       •解決
  仕切り直しパターン            盤面を徐々に縮退させ行動範囲を制限
                     •関連パターン
  盤面縮退パターン             キープオンムービング

                                    21
• ゲームデザインの特徴抽出、パターン言語化 [三宅,
  AsianPLoP11]
  – 「過去の自分と協力プレイ」「あいまいさを題材に」など
• ゲームアーキテクチャ研究の動向 [Morelli, SEKE 2011]
  – 近年は graphics,
    control の研究が
    活発(続いてAI,
    audio, network)
  – フレームワーク、
    設計パターン、
    プロダクトライ
    ン研究あり




                                         22
• 設計原則、アーキテクチャ/デザインパターン
 – 実装のみではなく、設計の再利用
 – 実証済み。開発者間でぶれない。迷わず効率的。
• 設計原則やパターンをフレームワークへ落とし込
  もう
 – 実証済みノウハウに基づく高品質な実装の再利用へ
 – フレームワークの再利用時には背景のパターンや原
   則を把握するとより効率・効果的
• パターンの概念はゲームデザインにも使える
 – ノウハウの伝達
 – 実証済み。新らたなデザインのヒントに。
• パターン間の関連で、「ことば」をつなごう
 – 補完、具体化
 – ノウハウを深める、広げる              23
• http://samuraicoding.org/
• 25歳以下3-5名/チーム
• 国内予選: 10月末提出締切、決勝: 12月




                              24
• 坂本一憲, 大橋昭, 鷲崎弘宜, 深澤良彰, "コンピュータプレイ
  ヤーのプログラム作成を通して競い合うゲームプラット
  フォームの開発を支援するフレームワーク", 電子情報通信学
  会論文誌, Vol.J95-D, No.3, pp.412-424, 2012.
• 鷲崎弘宜, “ソフトウェアパターン - 時を超えるソフトウェア
  の道 -, 情報処理, 情報処理学会, Vol.52, No.9, 2011.
• Kazunori Sakamoto, Akira Ohashi, Masaya Shimizu, Syuhei
  Takahashi, Shinichi Murakami, Hironori Washizaki and Yoshiaki
  Fukazawa, "コンピュータプレイヤー同士の対戦を通したプロ
  グラミングコンテストのパターンランゲージ", Proceedings of
  the 2nd Asian Conference on Pattern Languages of Programs
  (AsianPLoP 2011), pp.III-116-III-133, 2011.
• 坂本一憲, "AIプログラミングを通して参加する教育向けゲー
  ムシステムに適したソフトウェアアーキテクチャ", CEDEC
  2010(CESAデベロッパーズカンファレンス2010), 2010.
• 坂本一憲, 内山諭, 城間祐輝, 野本悠太郎, 庄山昭彦, 中村悠人,
  鷲崎弘宜, 深澤良彰, "AIプログラミングを通して参加する教育
  向けゲームシステムに適したソフトウェアアーキテクチャ",
  ゲーム学会「ゲームと教育」研究部会第3回研究会, 2010.3.
                                                             25

More Related Content

Similar to Cedec2012 ai-contest-design-patterns-principles

大規模なJavaScript開発の話
大規模なJavaScript開発の話大規模なJavaScript開発の話
大規模なJavaScript開発の話terurou
 
2005 re-reverse engineering goal models from legacy code
2005 re-reverse engineering goal models from legacy code2005 re-reverse engineering goal models from legacy code
2005 re-reverse engineering goal models from legacy coden-yuki
 
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】Tomoharu ASAMI
 
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】Tomoharu ASAMI
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Tomoharu ASAMI
 
Kaggleのテクニック
KaggleのテクニックKaggleのテクニック
KaggleのテクニックYasunori Ozaki
 
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】Tomoharu ASAMI
 
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】Tomoharu ASAMI
 
.NET Compiler Platform
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform信之 岩永
 
Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Frameworks We Live By: Design by day-to-day framework development: Multi-para...Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Frameworks We Live By: Design by day-to-day framework development: Multi-para...Atsuhiro Kubo
 
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]DeNA
 
2009 qsic-constructing feature models using goal-oriented analysis
2009 qsic-constructing feature models using goal-oriented analysis2009 qsic-constructing feature models using goal-oriented analysis
2009 qsic-constructing feature models using goal-oriented analysisn-yuki
 
ソフトウェア工学2023 04 開発プロセスモデル
ソフトウェア工学2023 04 開発プロセスモデルソフトウェア工学2023 04 開発プロセスモデル
ソフトウェア工学2023 04 開発プロセスモデルToru Tamaki
 
Jubatusでマルウェア分類
Jubatusでマルウェア分類Jubatusでマルウェア分類
Jubatusでマルウェア分類Shuzo Kashihara
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するTakahito Tejima
 
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】Tomoharu ASAMI
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編Fixstars Corporation
 
ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTURE Project
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編Fixstars Corporation
 

Similar to Cedec2012 ai-contest-design-patterns-principles (20)

大規模なJavaScript開発の話
大規模なJavaScript開発の話大規模なJavaScript開発の話
大規模なJavaScript開発の話
 
Scrum alliance regional gathering tokyo 2013 pub
Scrum alliance regional gathering tokyo 2013 pubScrum alliance regional gathering tokyo 2013 pub
Scrum alliance regional gathering tokyo 2013 pub
 
2005 re-reverse engineering goal models from legacy code
2005 re-reverse engineering goal models from legacy code2005 re-reverse engineering goal models from legacy code
2005 re-reverse engineering goal models from legacy code
 
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
 
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
 
Kaggleのテクニック
KaggleのテクニックKaggleのテクニック
Kaggleのテクニック
 
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
 
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
 
.NET Compiler Platform
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform
 
Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Frameworks We Live By: Design by day-to-day framework development: Multi-para...Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Frameworks We Live By: Design by day-to-day framework development: Multi-para...
 
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
 
2009 qsic-constructing feature models using goal-oriented analysis
2009 qsic-constructing feature models using goal-oriented analysis2009 qsic-constructing feature models using goal-oriented analysis
2009 qsic-constructing feature models using goal-oriented analysis
 
ソフトウェア工学2023 04 開発プロセスモデル
ソフトウェア工学2023 04 開発プロセスモデルソフトウェア工学2023 04 開発プロセスモデル
ソフトウェア工学2023 04 開発プロセスモデル
 
Jubatusでマルウェア分類
Jubatusでマルウェア分類Jubatusでマルウェア分類
Jubatusでマルウェア分類
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
 
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
 
ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
 

More from Hironori Washizaki

Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
IEEE Computer Society 2024 Technology Predictions Update
IEEE Computer Society 2024 Technology Predictions UpdateIEEE Computer Society 2024 Technology Predictions Update
IEEE Computer Society 2024 Technology Predictions UpdateHironori Washizaki
 
鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会
鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会
鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会Hironori Washizaki
 
IEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK GuideIEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK GuideHironori Washizaki
 
TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用
TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用
TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用Hironori Washizaki
 
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225Hironori Washizaki
 
Joseph Yoder : Being Agile about Architecture
Joseph Yoder : Being Agile about ArchitectureJoseph Yoder : Being Agile about Architecture
Joseph Yoder : Being Agile about ArchitectureHironori Washizaki
 
世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート
世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート
世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデートHironori Washizaki
 
SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...
SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...
SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...Hironori Washizaki
 
デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向
デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向
デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向Hironori Washizaki
 
SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~
SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~
SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~Hironori Washizaki
 
人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集
人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集
人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集Hironori Washizaki
 
スマートエスイーコンソーシアムの概要と2021年度成果紹介
スマートエスイーコンソーシアムの概要と2021年度成果紹介スマートエスイーコンソーシアムの概要と2021年度成果紹介
スマートエスイーコンソーシアムの概要と2021年度成果紹介Hironori Washizaki
 
DXの推進において企業内に求められる人材やデジタル人材の育て方
DXの推進において企業内に求められる人材やデジタル人材の育て方DXの推進において企業内に求められる人材やデジタル人材の育て方
DXの推進において企業内に求められる人材やデジタル人材の育て方Hironori Washizaki
 
対応性のある運用のパターン
対応性のある運用のパターン対応性のある運用のパターン
対応性のある運用のパターンHironori Washizaki
 
モデル訓練のパターン
モデル訓練のパターンモデル訓練のパターン
モデル訓練のパターンHironori Washizaki
 
パターンのつながりとAI活用成熟度
パターンのつながりとAI活用成熟度パターンのつながりとAI活用成熟度
パターンのつながりとAI活用成熟度Hironori Washizaki
 
データ表現のパターン
データ表現のパターンデータ表現のパターン
データ表現のパターンHironori Washizaki
 
機械学習デザインパターンの必要性と機械学習ライフサイクル
機械学習デザインパターンの必要性と機械学習ライフサイクル機械学習デザインパターンの必要性と機械学習ライフサイクル
機械学習デザインパターンの必要性と機械学習ライフサイクルHironori Washizaki
 
青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)
青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)
青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)Hironori Washizaki
 

More from Hironori Washizaki (20)

Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
IEEE Computer Society 2024 Technology Predictions Update
IEEE Computer Society 2024 Technology Predictions UpdateIEEE Computer Society 2024 Technology Predictions Update
IEEE Computer Society 2024 Technology Predictions Update
 
鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会
鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会
鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会
 
IEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK GuideIEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
 
TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用
TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用
TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用
 
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225
 
Joseph Yoder : Being Agile about Architecture
Joseph Yoder : Being Agile about ArchitectureJoseph Yoder : Being Agile about Architecture
Joseph Yoder : Being Agile about Architecture
 
世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート
世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート
世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート
 
SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...
SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...
SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...
 
デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向
デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向
デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向
 
SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~
SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~
SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~
 
人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集
人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集
人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集
 
スマートエスイーコンソーシアムの概要と2021年度成果紹介
スマートエスイーコンソーシアムの概要と2021年度成果紹介スマートエスイーコンソーシアムの概要と2021年度成果紹介
スマートエスイーコンソーシアムの概要と2021年度成果紹介
 
DXの推進において企業内に求められる人材やデジタル人材の育て方
DXの推進において企業内に求められる人材やデジタル人材の育て方DXの推進において企業内に求められる人材やデジタル人材の育て方
DXの推進において企業内に求められる人材やデジタル人材の育て方
 
対応性のある運用のパターン
対応性のある運用のパターン対応性のある運用のパターン
対応性のある運用のパターン
 
モデル訓練のパターン
モデル訓練のパターンモデル訓練のパターン
モデル訓練のパターン
 
パターンのつながりとAI活用成熟度
パターンのつながりとAI活用成熟度パターンのつながりとAI活用成熟度
パターンのつながりとAI活用成熟度
 
データ表現のパターン
データ表現のパターンデータ表現のパターン
データ表現のパターン
 
機械学習デザインパターンの必要性と機械学習ライフサイクル
機械学習デザインパターンの必要性と機械学習ライフサイクル機械学習デザインパターンの必要性と機械学習ライフサイクル
機械学習デザインパターンの必要性と機械学習ライフサイクル
 
青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)
青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)
青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)
 

Recently uploaded

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
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
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Recently uploaded (9)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.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」の紹介
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

Cedec2012 ai-contest-design-patterns-principles

  • 1. CEDEC 2012(コンピューターエンターテイメントデベロッパーズカンファレンス 鷲崎 弘宜、坂本 一憲、和田 雅 彦 早稲田大学グローバルソフトウェア エンジニアリング研究所 http://www.washi.cs.waseda.ac.jp/ 1
  • 2. • ねらい – パターンと原則に関して、自分なりの意義・ 価値観を持つ。 • 終了時の目標 – ゲームAIプラットフォームの設計におけるパ ターンや原則を知っている。 – ゲームAIコンテストのゲームデザインにおけ るパターンを知っている。 – それらの概念と広がりを知っている。 2
  • 3. • AI プログラムを作成し対戦 – プログラミング教育、ゲームAI研究へ – ゲームプラットフォームがAPI提供、ターン制のゲーム • 早稲田大学における開発・運営実績 – ’09: ACM ICPC併設 Java Challenge – ‘10: ACM ICPC併設 Java Challenge, 楽天コンテスト – ‘11: Samurai Coding 2011 – ‘12: ACM ICPC併設Java Challenge, SamurAI Coding 2012 詳細は異なるが、同じようなことをしている! 設計や実装を再利用できれば、楽によいものを作れるので は?
  • 4. class Mathematic { public Data sort(Data data){ switch(settings) { case QUICK: return quickSort(data); case BUBBLE: return bubbleSort(data); default: ... } } class Loan { public double capital() { if(expiry == null && maturity != null) return ...; if(expiry != null && maturity == null) { ... } 4
  • 5. class Mathematic { class Mathematic { Sorter sorter; public Data sort(Data data){ public Data sort(Data data){ switch(settings) { return sorter.sort(data); case QUICK: } return quickSort(data); case BUBBLE: abstract class Sorter { return bubbleSort(data); public abstract Data sort(Data); default: ... } class QuickSorter extends Sorter { } public Data sort(Data) { ... } class Loan { class Loan { CapitalCalc capitalCalc; public double capital(){ public double capital() { return capitalCalc.calc(this); if(expiry == null && } maturity != null) return ...; Interface CapitalCalc { if(expiry != null && double calc(Loan l); maturity == null) { ... class TermCapital implements ...{ } 5 double calc(Loan l) { ... }
  • 6. 文脈 異なるアルゴリズムが必要。クライアントが知るべきでないデータ 利用。 問題 ・・・アルゴリズムは多数存在している。これらの機能 を必要とするクラスに埋め込んでしまうことは望ましく ない・・・ 解決 振る舞いのカプセル化、ポリモーフィズムによる変 更。 Context Strategy contextInterface() algorithmInterface() ConcreteStrategyA ConcreteStrategyB ・・・ algorithmInterface() algorithmInterface() ・・・ 結果 ・・・アルゴリズムと他の実装が混ざると保守しにくい・・・ ・・・アルゴリズムを拡張、動的変更・・・ ・・・通信に関するオーバーヘッド、オブジェクト数の増 6
  • 7. • ソフトウェア開発の特定状況下で繰り返される問題と解 決 – 変更や再利用のための設計 – 共通の「ことば」(指針) • POSA アーキテクチャパターン • Gang of Four(GoF) デザインパターン [GoF00] など 文脈: こういうときに 問題: こうしたかったら 抽象化 制約: こういうことを考慮し 具象化 解決策: こうしなさい 類似 解決 解決 成功事例 抽象化 新たな状況 [GOF00] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides(著), 本位田真一, 吉田和樹 (監訳), 7 “オブジェクト指向における再利用のためのデザインパターン改訂版", ソフトバンクパブリッシング,
  • 8. 抽出して抽象化すると・・・共通の「こと ば」に! • 設計原則 – 設計上の根本指針(例: 高凝集・低結合) • アーキテクチャパターン – 共通の骨格、全体としての方針(例: 多 層) • デザインパターン 詳細を省き様々な場合を網羅、再利用可能性 – 共通の部分的方針 あり それらを具体化すると・・・強力な土台 に! 特定の場合にのみ、詳細も一括再利用可 • フレームワーク (詳細なままではあらゆる場合を網羅しな – 再利用・カスタマイズ可能な半完成の実装 8
  • 9. ドメイン * システム * サブシステム* クラス * メソッド /パッケージ (ファイル) (関数)/属性 全体 部分 抽象的 (汎用) たいてい 使える 設計原則 アーキテクチャ デザインパターン パターン 使えるか 使えるかも も フレームワーク 特定の場合に あてはまれ プロダクトライン ば使える 限り使える クラス・関数ライブラリ 具体的 (特化) 9
  • 10. • ゲームAIプラットフォームにおける再利用の 問題 1. ゲームAIプログラミングに特化していない – 近年活発になっているものの歴史の浅い分野 2. 分析,設計,実装で横断的に再利用されな い – 実装における再利用のみ重視されがち – 要求や設計の再利用もしたい! 要求 設計 実装 再利用可能な資産 10
  • 11. • 分析,設計,実装の各工程にまたがる再利 用 – 要求分析:品質特性(ISO9126)に基づく要求 分析 – 設計:要求を満たすような設計原則・設計の指 針 品質特性 – 実装:設計原則を満たすようなフレームワーク 受け入れテス 要求分析 ト • 要求 正しい設計がされるような制約を設ける 設計 結合テスト 設計原則 実装 単体テスト フレーム ワーク 11
  • 12. • 漠然とした要求分析は難しい抜けや漏れのない – 品質特性(ISO9126)から網羅的に分析 • プラットフォームに必要な品質(副)特性を 列挙 – 機能性:セキュリティ – 信頼性:障害許容性 – 効率性:時間効率性 – 使用性:理解性,魅力性 – 保守性:解析性,変更性 – 移植性:環境適応性 • 品質(副)特性から具体的な要求を抽出 Licenced by Alan Cleaver (http://www.flickr.com/photos/alancleaver/4439276478/) 12
  • 13. • 機能性:セキュリティ – 書き換え不可能 • AIプログラムによるゲーム 状態の不正な変更を防ぐ • 信頼性:障害許容性 AI 不正な AI AI 書き換え – AIプログラムからの独立 • AIプログラムの不具合がプラットフォームに影響し ない • AIプログラムが無限ループしても落ちない while (true) { Int[] array = new int[10]; …. System.out.println(array[15]); } 無限ループする 例外を吐くAIプログラム 13 AI
  • 14. • 要求を満たすための設計の指針・原則を考 案 Immutable ゲーム • 要求1:書き換え不可能 状態 ゲーム AIプログラ – Immutableパターン ム ゲームプラットフォー 状態 – 書き換え不可能な ム オブジェクトを受け渡す • 要求2:AIプログラムからの独立 – 設計原則:別スレッド(プロセス)での実行 • プロセス単位で動作するGoogle Chromeのタブのよ うに – 設計原則:AIプログラムの計算時間の制限 14
  • 15. • 設計のパターンや原則をフレームワーク に織り込む – 利用者のプログラムも自然と設計原則に従う • Immutableパターン – 書き換えできない汎用的なクラスを提供 例)二次元座標を表すPointクラス • 設計原則:別スレッド(プロセス)での 実行 AIプログラ – AIプログラムの実行機能を提供 ム ゲームプラットフォー – 様々な機能を追加可能 ム • 実行結果の記録・再生 フレームワーク(GAIA) • Decoratorパターンを利用 15
  • 16. • 実装のみの再利用からの脱却 – 分析,設計,実装に横断する一貫した再利用 • 開発フローにならう再利用可能な資産の 抽出 1. 品質特性から網羅的に要求を列挙 2. 要求を実現するパターンや設計原則を識別 3. パターンや設計原則をもとにフレームワーク の開発 • ローマは一日してならず – プロジェクトを回すたびに資産が成長 – いつでも使えるように整理しておくことが重 要 16
  • 17. •ゲームデザインパターン •AIコンテスト向けのゲーム仕様に関するパターン •ゲーム開発のノウハウを一般化,共有 • セルフマイニング – 技術者自らが過去の経験を振り返りパターンを抽出 – 過去4度のコンテスト運営経験からマイニング • 品質特性に基づいたパターンの抽出と整理 1. コンテスト向けゲームに関連する品質特性を特定 2. 過去の題材ゲームに実装された仕様・反省される仕様から 品質特性に寄与するゲームデザインを抽出 3. 抽出したデザインをパターンフォーマットに従いドキュメン ト化 17
  • 18. 品質特性 ターン 参加性(閾の低さ) 時間が離散的 擬似リアルタイム 同時 グラフ マップが離散的 開発コスト 格子 戦略と戦術 3すくみ 3プレイヤー以上 公平性 対称マップ トーラス 稀少な状況 ゲーム性 ランダム要素 ゲームの流れを変える クライマックス エンターテイメント性 キープオンムービング 盤面縮退 仕切り直し 18
  • 19. 抽出 擬似リアルタイムパターン •背景 AI コンテストの参加者は幅広 い・・・ •フォース 参加者が AI プログラムの開発に割 り当てられるコストは不明・・・ •問題 •プレイヤーが選択した手の結果を リアルタイムゲームは AI 開発コス 反映させるタイミングに制約を加える ト増 •リフレッシュを高速(人間の知覚基準 •解決 プレイヤーが選択した手の結果を で) 反映させるタイミングに制約を加 に行い擬似的にリアルタイムな演出 える 楽天コンテス JC 2009 JC 2010 ト 適用 • 品質特性に寄与し, Samurai 繰り返し実装された仕様を一般化 Coding 2011 19
  • 20. 20
  • 21. 擬似リアルタイムパターン 具体化 補完 仕切り直しパターン •問題 キープオンムービングパター ・・・・・・ •解決 •問題 ン 盤面が同じ状態を繰り返した際に 強制的に盤面の状態を変化 各プレイヤーが同じ手を繰り返し •関連パターン 見かけ上試合の進行が止まる キープオンムービング •解決 強制的な盤面の変更や、 繰り返し同じ手を打てない仕様の導 盤面縮退パターン 入 •問題 •関連パターン ・・・・・・ 擬似リアルタイムパターン •解決 仕切り直しパターン 盤面を徐々に縮退させ行動範囲を制限 •関連パターン 盤面縮退パターン キープオンムービング 21
  • 22. • ゲームデザインの特徴抽出、パターン言語化 [三宅, AsianPLoP11] – 「過去の自分と協力プレイ」「あいまいさを題材に」など • ゲームアーキテクチャ研究の動向 [Morelli, SEKE 2011] – 近年は graphics, control の研究が 活発(続いてAI, audio, network) – フレームワーク、 設計パターン、 プロダクトライ ン研究あり 22
  • 23. • 設計原則、アーキテクチャ/デザインパターン – 実装のみではなく、設計の再利用 – 実証済み。開発者間でぶれない。迷わず効率的。 • 設計原則やパターンをフレームワークへ落とし込 もう – 実証済みノウハウに基づく高品質な実装の再利用へ – フレームワークの再利用時には背景のパターンや原 則を把握するとより効率・効果的 • パターンの概念はゲームデザインにも使える – ノウハウの伝達 – 実証済み。新らたなデザインのヒントに。 • パターン間の関連で、「ことば」をつなごう – 補完、具体化 – ノウハウを深める、広げる 23
  • 24. • http://samuraicoding.org/ • 25歳以下3-5名/チーム • 国内予選: 10月末提出締切、決勝: 12月 24
  • 25. • 坂本一憲, 大橋昭, 鷲崎弘宜, 深澤良彰, "コンピュータプレイ ヤーのプログラム作成を通して競い合うゲームプラット フォームの開発を支援するフレームワーク", 電子情報通信学 会論文誌, Vol.J95-D, No.3, pp.412-424, 2012. • 鷲崎弘宜, “ソフトウェアパターン - 時を超えるソフトウェア の道 -, 情報処理, 情報処理学会, Vol.52, No.9, 2011. • Kazunori Sakamoto, Akira Ohashi, Masaya Shimizu, Syuhei Takahashi, Shinichi Murakami, Hironori Washizaki and Yoshiaki Fukazawa, "コンピュータプレイヤー同士の対戦を通したプロ グラミングコンテストのパターンランゲージ", Proceedings of the 2nd Asian Conference on Pattern Languages of Programs (AsianPLoP 2011), pp.III-116-III-133, 2011. • 坂本一憲, "AIプログラミングを通して参加する教育向けゲー ムシステムに適したソフトウェアアーキテクチャ", CEDEC 2010(CESAデベロッパーズカンファレンス2010), 2010. • 坂本一憲, 内山諭, 城間祐輝, 野本悠太郎, 庄山昭彦, 中村悠人, 鷲崎弘宜, 深澤良彰, "AIプログラミングを通して参加する教育 向けゲームシステムに適したソフトウェアアーキテクチャ", ゲーム学会「ゲームと教育」研究部会第3回研究会, 2010.3. 25