APIドリブン

いつもウェブアプリを作るときには画面の遷移の流れを追って作るんだけど、今回はAPIの仕様策定からスタートした。なるべく多くの人が手軽にボットを作れるような遊び場を作ることが目的なのでなるべくシンプルなフォーマットでなるべく少ない情報をやり取りしてゲームを進めることを考えている。これはこれで違う視点から見れて切り分けがはっきりしていいなぁ。
人間が操作するブラウザ上の画面遷移を考えているとそれに引きずられて「ここではこんな情報も出てくれるとうれしいな」とか「このボタン一つで何々ができたらいいのに」ってのに引きずられて本来複数に分割すべき処理が一つに固まってしまったりする。そしてそれがくっついていることが問題であることに気づけない。
具体的に言うと最中限で最初に/start_new_gameで「自分とランダムAIが2人着席したゲームを作る」というようにしてしまったために、対人戦やAIの選択をするための自然なデザインが思いつかなかった。新しいゲームを作成する時点で、そのプレイヤー3人を指定しないと行けないような思い込みをしていた。実際には/start_gameで誰も着席していない新しいゲームを作成してパーマリンクを作成し、そこからjoin(自分の参加)やadd_player(AIの追加)すればいい。対人戦ならそのパーマリンクを相手に送って相手がjoinすればいい。気づいてみれば当たり前なんだが、古いデザインにとらわれるとなかなか気づけないもんなんだなぁ。