Amazonでボードゲームを探す

nimをプレーできるWeb Applicationを作ってみよう

ここでは、nimをプレーするプログラムの制作をしてみようと思います。(revenge? [smile])

外部仕様 (2009/3/13)

プログラムを作るにあたって、まず外部仕様を定義します。 外部仕様書*1は、英語では Concept of Operation Documentと言います。 (システムの)操作の構想について書き記したものです。 つまり、このシステムは、どういうふうに動く/動かすのかをシステムの外側の視点で記述したものが外部仕様書です。

きちんとした外部仕様書は、システムの概要や構成、機能仕様、非機能仕様などの項目ごとにしっかりと網羅します。 外部仕様書は、主にシステムを使うユーザーやオペレーションを担当する人が見るドキュメントですので、わかりやすい 平易な表現が望まれます。

Real Programmers Don't Write Pascal*2で論じられたように、 優秀なエンジニアは、仕様書などなくても、どんどんとプログラムを書き進めてしまいがちですが、 プログラムの規模が大きくなったり、作ったプログラムをずっと後になってから再考する場合には、 こうしたドキュメントがあると大変たすかります。館長のシステム会社では、外部仕様をシステム 開発に着手する前にきちんと定義するように心掛けています。

さて、本ゲームシステムについてですが、ぎょうぎょうしいスタイルではなく、最低限の仕様を定義して、 システム制作中に方針がぶれないようにしていきましょう。

システムの目的

nimをプレーするWeb Base Applicationを作成し、The Museum of Abstract Strategy Games(本サイト) 上で公開する。

実現するシステムのプライオリティは次のとおり。

  1. 正型nimを完璧にプレーするAIの実現
  2. 逆型nimをプレーするAIの実現
  3. 人間らしく正型nimをプレーするAIの実現
  4. 人間らしく逆型nimをプレーするAIの実現
  5. かっこいいUIの実現

ユーザーインターフェース

プレーヤー選択について
いずれのゲームルールについても、
人 × 人
Computer × 人
人 × Computer
Computer × Computer
の選択ができること。
対話性
第一段階のUIは、htmlのformを使った入力など最低限度の入力システムでかまわない。
可能であれば、AJAX, Flexなどを使ってページ遷移をせずに対話的にゲームを進められるインターフェースを目指す。
詳細画面設計
TBD (2009/3/13)

機能

  1. アクター
    • プレーヤー
    • AI AIは、本来アクターではないが、AIを独立したコンポーネントとして実現することで、システム上で複数のAIをあつかいやすくし、 外部のシステムがAIをAPIとして提供することへの対応もできる。
  2. ユースケース(機能)
    • 対戦相手を選択する
    • 対戦相手とゲームをプレーする
    • 対戦結果を閲覧する

ゲームアプリケーションを、UMLのUse Case図のように書くのは、ちょっとおまぬけな感じになります。 [smile]

外部API

n/a

システム構成および動作環境

動作環境
本サイト上で使えるWeb Applicationプログラム開発技術であれば、任意の技術を用いてよい。
Ruby CGI (+ AJAX), Java (CGI?/Applet)もしくは、Adobe Flexなどが候補 (2009/3/13)
データベースおよびデータベース論理設計
本システムではデータベースを必要としない
システム構成図
n/a 本サイト上に設置するため。

性能

コンピュータとの対戦時、アプリケーションのレスポンスタイムは3sec以内を目標とする。 UIレスポンスは、マウス操作時のもたつきを感じないこと。

システムとしての性能要求は、本サイト上で公開することから、性能は、本サイトの配置サーバー環境にしたがう。

可用性/セキュリティ

本サイト上で公開することから、可用性およびセキュリティは、配置サーバーの環境とポリシーにしたがう。


...つづく (2009/3/13)

SEE ALSO

Last-modified: 2015-12-13 (日) 21:58:06