10キーで棋譜入力するiモードアプリ

筆者は未だにdocomoのガラケーを使っている。会社でも家でもネットに繋がったPCが手元にあるし、電車通勤ではないし、遠出も頻繁にはしないので、スマホを使う時間が無いのである。外出先では携帯電話は電話とメールとカメラさえ使えれば良く、音楽はiPodで聞くので、日常生活でスマホの必要性を感じる瞬間が全く無い。今だと携帯電話のランニングコストが年間2万円以下で済んでいるので、端末費合わせて2年で20万円かかるようなスマホを購入する気にはならない。

というより、今使ってるP-01Cを大変気に入っているのである。シンプルなデザインで軽くて薄くて自作アプリが動く。完璧である。

筆者はこのiモード携帯に自作の棋譜再生アプリをインストールして活用しており、筆者の1日数分間の将棋ライフに欠かせないものとなっている。

日々、数字ボタンと*#だけで将棋盤を操作していて、ある日、ふと、「7六歩」といった符号を761とかで入力できたら、意外と高速に棋譜入力できて、出先で棋譜を記録できて便利だったりしないか、と思った。筆者は時々、反省のために対局後に盤面を撮影するのだが、記憶力が無く、家に帰って写真を見ると既にそこまでの手順が再現できないことがよくあり、できるなら棋譜を記録したいのである。

携帯電話のアプリでよくある、カーソルキーで駒を選択して動かすUIは、ボタンを押す回数が尋常ではなく、あまりにも手間で時間がかかる。
パソコンやスマホであれば、棋譜入力はマウス操作やタッチパネル操作で行うのが通常で、これは相当に楽だし高速であるが、1手当たり3キーで入力できれば、それよりも速いのではなかろうか。
棋譜の符号に慣れている人でないと使入力しにくいだろうが(チェス初級者の筆者はコマンドライン版gnuchessのNf3とかBxf6といった符号入力に最後まで慣れなかった)、記録した棋譜は符号で書かれているのが一番読みやすいと思うので、そういう棋譜を求めるなら、記録される通りに符号で入力できるのが最善だと思う。


棋譜の符号の数字部分は2桁であり、数字ボタン2発で打てる。数字は1-9なので、0ボタンを「同」にすれば、到達地点の部分は全て2ストローク以内で入力できる。
その次の駒の種類(以下、3キー目と記す。実際には「同」なら2キー目である。)は、成駒を含めると14種類あるので、数字ボタン1回で入力可能とは限らないが、9種類以上の駒が1つのマス目に行ける(または打てる)ことは稀であるので、大抵数字ボタン1回で入力できる。
それ以上に入力が必要な場合というのは、「成」と「不成」がある場合と、同じ種類のそこに行ける(または打てる)駒が2つ以上あり、「打」「左」「引」とかで特定しないといけない場合である。飛車は2枚しかないので、例えば左右で特定するとして、最大でも「左成」「左不成」「右成」「右不成」の4通りである。角も2枚しか無いので同様、桂も最大2ヶ所からしか来ないので同様に最大4通りである。金の動きをする駒は成れないので、最大で「と」の場合に6つの駒を特定する為の6通りである。銀は最大4枚で全て盤上にあってそれぞれ「成」「不成」があれば8通りである。香歩は特定が必要になることがないので、「成」「不成」の2通りである。
従って、駒の種類より後の部分は最大8通りであり、8つのボタンに動的に割り当てれば、数字ボタン1回で入力できる。(以下、4キー目と記す。)

さらに、3キー目と4キー目の組み合わせが10種類を超えることは稀だから、それらをまとめて、例えば「玉」と「金左」と「金右」の選択肢が一緒に出るようにする方がボタンを押す回数は減るだろうが、5八金右は「5」「八」「金」「右」と4キーで入力する方が直感的だし、3キーで確定する場合の方が多いので、「金右」の時だけ異なるボタンになるのでなく、「金」のボタンが固定される方が、慣れによる入力速度UPが期待できるので、3キー目と4キー目は分ける方が良いだろう。

同じ理由で、3キー目は、数字ボタンに固定的に
1: 歩 2: 香 3: 桂 4: 銀 5: 金 6: 角 7: 飛 8: 玉
と割り当て、成駒はその時空いている番号とする方が良かろう。それも、空いてればなるべく成る前の駒の番号(馬なら角の6)、空いてなければなるべく成る前の駒の次になる(角、馬の順になる)ように、次に空いている番号にすると良いだろう。


という訳で、夏休みにそういうiアプリを作成した。

・スクリーンショット
1キー目待ち状態の画面

3キー目待ち状態の画面

4キー目待ち状態の画面

サブメニュー画面

i-mode用ダウンロードページへのリンク

・ソースコード
 iKifuRecorder.java
 Board.java
 KifTree.java
 CGI.java

・作成者
 maruinen(筆者のネット将棋でのハンドル)

3キー目は、選択し得る駒が10種類以下なら0-9ボタンで指定、11種類以上なら0をページ切替ボタンとした。
ソフトキーで棋譜入力モード/再生モードを切り替えたり、サブメニュー画面を開いたり、アプリを終了したりできる。
棋譜の途中から入力を開始すると、元の棋譜が消えるのでなく、棋譜の分岐ができる。分岐を消すには、消したい手の先頭まで再生して、サブメニューの「ここまでの棋譜の最終手以降を消去」のボタンを押す。

入力した棋譜は、ソフトキーで終了すると、スクラッチパッドに保存される。終話キーで終了すると、保存されない。スクラッチパッドに保存された棋譜は、次回の起動時に自動的に読み込まれる。
また、入力した棋譜は、このサーバーのWebページにアップロードすることもできる。アップロードされた棋譜は、
http://ynomura.dip.jp/tmp/uploaded_kifus.html
で見ることができる。このページから棋譜をコピー&ペーストして、柿木将棋やMacの桜花で読み込めることを確認済である。
なお、棋譜をアップロードするには、このアプリの「ソフト設定」の通信設定を「する」にしてから起動する必要がある。また、このページにアップロードされた棋譜は誰でも閲覧可能だし、古いものは勝手に消えていく。


参考リンク
棋譜の表記方法:日本将棋連盟


初めは、入力した棋譜をメールで送信できるようにしようと思ったのだが、メーラーとの連携はトラステッドiアプリでないとできないようなので、諦めた。

この入力方式が本当に便利かどうかは、まだ十分に使い込んでいないので、わからない。というか、最大の問題は、対局直後であっても、初めからの手順を覚えてるかどうかかも知れない。切れ負け寸前で1手数秒で指し続けた手を、相手の手も含めて覚えてる自信が無い。

筆者は日常生活ではスマホの必要性を全く感じないが、仕事で一応IT業界に指一本くらいは突っ込んでいる身としては、時代について行けなくなるデメリットがあり、スマホの購入を何度も考えている。しかし、Android端末はどうも値段に見合う価値を見出せず、買う気がしない。
iPhoneの購入は度々考えているが、$99/yearを払わないと自作アプリを自分の端末にインストールすることができないのが、個人的には耐えられないレベルの障害であり、完全移行することができない。
…と思っていたのだが、今調べると、もしかしてXcode 7から、無料で自作アプリを端末にインストールできるようになったのだろうか?!

※9/22 有効になっていた余計なテストコードを削除してバイナリー更新、ソースコード公開

※9/22 追記
一応、これで最低限の棋譜管理機能を備えていることになると思うが、データのimportができないのがもう1つである。トラステッドiアプリでないと、SDカードの読み書きもできないし、HTTP通信もiアプリの配布サイトとしかできないので、PC等からCGIで棋譜をアップロードすると登録番号が発行され、iアプリからその番号でダウンロードできるような、棋譜ダウンロード用CGIをこのサーバーに作るくらいしか思い付かない。しかし、CGIを公開するとSPAMの攻撃を受けるので、その対策が面倒である。