将棋アプリ「かる~い将棋盤」の改善計画

この記事の所要時間は約 3 分 です。

一旦、将棋盤アプリは完成した。

apr_logo

改善するべき点は多々あるので、これは忘れずにToDoリスト化しておく。

  • モーダルウィンドウへの対応
  • 駒落ち対局への対応
  • 棋譜再生機能
  • 棋譜保存機能
  • 棋譜共有機能
  • 投了ボタンの追加
  • 厳密な合法手判定

操作感を向上させるためにも「モーダルウィンドウへの対応」は、是非、やりたい。「駒落ち対局」についても、実装するだけなら、さほど難しくないのだが、どうやれば、綺麗なプログラムコードになるかを考えていたら、先延ばしになってしまった。

====ここまでは、必ず、やる====

「棋譜再生」は、まったく別アプリを作るのと同じくらいの労力が必要だが、将棋盤UIの更にその先を目指すには、取り組むべき課題だと思っている。

「棋譜保存」「棋譜共有」は、再生に比べると、書くプログラムの量は少なそうだ。

そして、棋譜実装に関して考え始めると、改めて「投了ボタン」がないことに気がつく。これは付けておかないと……ただ、実装するボタンなどが増える度に、使いやすいUIは何か、ということを意識させられる。モーダルウィンドウなどで、メニュー画面を呼び出すのが、一番よさそうだ。

====ここまでは、やりたい====

「厳密な合法手判定」については、いろいろと考えなくてはならないことが多い。

  • 王手放置の禁止
  • 自殺手の禁止
  • 打ち歩詰め
  • 連続王手の千日手

「王手放置の禁止」「自殺手の禁止」を実現するためには、チェスで言うところの「ピン」の概念や移動駒以外の効き判定を実装する必要があり、複雑なロジックを組むことになるため、アプリの「軽さ」が損なわれるのではないか、という気もしている。

更に、「打ち歩詰め」についても、詰み判定のロジックを考える必要があり、これもひと仕事だ。詰み判定には、効き判定の実装が活かせそうなので、やるなら、このあたりは、まとめて取り組むべきなのだろうな。

「連続王手の千日手」は、世の中の他の将棋アプリでは、どのように実現しているのだろうか?(そもそも実現しているのか?という話もあるわけだが)これを実現するには、過去の局面情報を保持しておかねばならず、この禁則手を実装するために払うコストとして、それが見合っているのか、ということに悩まずには入られない。

……ここまで書いてきて、そもそも「千日手」や「持将棋」に対応していなかったことに、改めて、気がつく。

さて。とりあえず、このToDoについては、上から順に、じっくりと対応していきたい。