Code Kata —3手の詰将棋

すぎのいさんと昼ご飯を食べながら話していて、オレオレ Code Kata の素材になるのではと思ったのでメモしておく。

Code Kata について知らない方は、まずこちらをどうぞ。

codekata.com

良くある社内の業務フローなどで、稟議を起票する、承認あるいは否認する、確認するという3ステップの基本形がある。 現実の業務フローは2段階以上の承認があったり、キャンセルがあるためもっと複雑なものであるが、まずはこの基本形を抑えることからはじまる。

登場人物には、起票者と承認者の2人が現れる。

Web アプリケーションを想定してみよう。起票者側の UI と承認者側の UI で操作された結果に対して、起票された稟議の状態を変えて行くことになる。

ここで考えられるストーリーは次のふたつ。

1. 承認されるフロー

  1. 起票者として、稟議をあげる
  2. 承認者として、稟議を承認する
  3. 起票者として、稟議が承認されたことが分かる

2. 否認されるフロー

  1. 起票者として、稟議をあげる
  2. 承認者として、稟議を否認する
  3. 起票者として、稟議が否認されたことが分かる

これらのアクションに対する URL 設計や本実装について考えてみることで、基本となるワークフローの Kata (いわゆる武道の型とかそういった Kata) を身につけることができると思う。

なお、非機能要件として、さまざまな実践的なことが考えられるがここでは割愛。

そのあたりは次のイベントで体験できるかもしれない (私は予定が埋まっていて行けなくて残念) 。

rubychildren.doorkeeper.jp

詰め将棋 (あるいは本将棋、詰碁など) では、自分が指す、相手が返す、相手の返し手に対して指すといった3手の読みを基本形に、5手、7手、9手...と深く読む、相手がAと返したとき、Bと返したとき、Cと返したとき...と枝分かれした手への幅を読むといった応用形になってくる。この応用形を行うにはまず基本形の3手の読みができる必要がある。基礎重要。

今回はこの3手の読みを後付けのメタファーとした、ワークフローの基本形を Kata として示してみた。