― 31 ―

光センサによる駒位置検出を用いたチェスの棋譜の自動記録システム
真壁純 矢 *・ 竹 下大樹

A u t o ma t i c R e c o r d i n g S y s t e m o f t h e C h e s s S c o r e S h e e t us i n g P i e c e P o s i t i o nD e t e c t i o n w i t h t h e O p t i c a l Se n s o r
M a k a b e J Y U N YA * a n d D a i k i TA K E S H I TA
（ 平 成 26 年 10 月 9 日 受 理 ）In an official competition, the chess players are required to record their score sheets themselves
during the game itself. In this research, we aim at relieving the player's workload by building an
automatic recording system for the chess score sheet. The chessboard which I used in this studyd e t e c t s t h e r e m o v a l o r p l a c e m e n t o f a p i e c e i n a n y o f t h e s q u a r e s t h r o u g h t h e o p t i c a l s e n s o r. O n c e
the turn is played, at the push a button, the chessboard sends all the data—including the position andthe number of transition states in the piece's presence and absence in the square —to the PC.
M o r e o v e r , i t i n c l u d e s t h e a n a l y s i s o f a p l a y e r ’s p l a y s u c h a s a p r o m o t i o n a n d a r e s i g n . T h e P C t h e nanalyses the received data and displays the chess score sheet of the current turn and the time limit in
its GUI. This information is sent back to the chessboard, and its LCD displays it. In addition, if themovement is not right, the LCD displays its fact.
1 諸言
チェスは非常に古い歴史を持ち，全世界 160 ヶ国以上で楽しまれ，少なくとも 6 億 500 万人から 7 億人以上の競技人口を誇る．このように競技人口が多いチェスだが，誰もが試合の記録の仕方を知っているわけではなく，また，国際チェス連盟またはその下部組織が公認している試合では，プレイヤーは一手一手の駒の動きを棋譜として記録しなければならないという決まりがある[1][2]．
本研究では駒位置を検出する上で，回路の小型化が可能であ

図 1.1 作製したフォトリフレクタ

り，ヒステリシス（応差）が小さく，外乱光許容照度が大きいといったメリットがあるフォトリフレクタ（光センサ）を光変調型フォト IC と赤外線 LED を用いて構成し（図 1.1，図 1.2 を参照）
，駒位置の検出を行うことにした．本研究の目的は光セン
サとH8 マイコンをチェスボードに組み込むことでパソコンと通信し，作製したチェスボードから得られるデータを基に行う駒位置の追跡により棋譜の生成を行い,プレイヤーに対して有益な情報を示すことでチェスの支援をすることである．
本研究で用いたチェスボード及びに動作内容については，以降の章にて記述する．
図 1.2 フォトリフレクタの動作の様子*秋田高専専攻科学生
平成27年２月

2.チェスボード― 32 ―
真壁純矢*・竹下大樹

本研究で用いたチェスボードの電源を切った時と入れた時のた操作を判断し，プレイヤーの操作が正しい場合，駒位置，棋様子を図 2.1 (a)，(b)に示し，外部の構成を図 2.2 に示す．こ譜，各プレイヤーの残り時間を GUI にて表示し（図 3.2 を参照），のチェスボードでは明色と暗色の 2 色のマスの区別を白色と青

LCD には棋譜と各プレイヤーの残り時間のみの表示を行う（図色の LED で行い，棋譜やタイマー等の情報表示は LCD で行った．

3.3 を参照）．ここで，プレイヤーの操作がチェスのルールに準また，駒位置情報の取得は 8×8 マス分の光センサの検出によっ拠されていないと判断された場合は LCD にその旨を表示し，駒て行い，リザイン，プロモーション，ターンの終了といったプを元の位置に戻してから，再度操作を行ってもらう（図 3.4 をレイヤーの意思表示はプッシュスイッチにて行えるようにした．

参照）．

このチェスボードは LED，LCD，光センサといった半導体素子③ ここまでで問題が無ければ，次の操作以降同じ動作を行う．

を主として構成した．これらの半導体素子は軽量，長寿命，低消費電力，様々な大きさのものが現存するといった特徴を持つ．
また，H8 マイコンを用いての制御方法について記述した資料は多く存在するため，システム開発が容易である．

図 3.1 プレイヤーの操作(a) 電源を切った時(b) 電源を入れた時
図 2.1 本研究で使用したチェスボード

図 3.2 GUI

図 2.2 チェスボードの外部の構成
3.システム図 3.3 エラーが無い時の LCD の様子

3.1.チェス支援システム
本研究で構築したチェス支援システムの動作及び支援内容を以下に記述する．
① まず，チェスボード内で駒の移動等のプレイヤーの操作が行われた後，ターン終了ボタンが押されることにより，ターン終了ボタンが押されるまでに行われたデータが PC へと転送する（図 3.1 を参照）．
② チェスボードから送られたデータを元にプレイヤーが行っ
図 3.4 エラーが有る時の LCD の様子
秋田高専研究紀要第50号

― 33 ―
光センサによる駒位置検出を用いたチェスの棋譜の自動記録システム

・白番か黒番の区別・状態遷移数:1 バイト
3.2.通信データ(ⅰ)白番か黒番の区別:4 ビット

本研究のプログラムでは通信に扱うデータの型を char 型とし白番か黒番かを示すデータ．白番と黒番の区別は白側のターたため，通信データは最低でも 1 バイトから扱うこととなる．

ン終了ボタンが押されたか黒側のターン終了ボタンが押された

マイコンからパソコンへの通信データを 6 バイト固定とし，パかによって判別を行った．
これは本来 1 ビットで十分であるが，ソコンからマイコンへの通信データを 33 バイト固定とした．こ

後述の状態遷移のデータ数を格納するために用いる 4 ビットとの章では本研究におけるパソコンとマイコンの通信データにつ併せて 1 バイト単位でデータを管理しているため，残りのデーいて記述する．

タ量である 4 ビットを利用する．なお，白側のボタンが押された場合にはデータを（0）10 とし，黒側のボタンが押された場合には（1）10 として扱った．
(ⅱ)状態遷移数:4 ビット
マス内で発生した状態遷移の回数（各マスに設けられた光センサが変化を検出した回数）を示すデータ．
0回から4回までが，図 3.5 パソコンとマイコンの通信データ
3.2.1.パソコンからマイコンへの通信データ
パソコンからマイコンへの 33 バイトの通信データは，以下のルールに準拠している範囲内でのデータであるとして扱った．
・ファイル・ランク・マスの状態遷移:4 バイト
ファイル・ランク・駒の状態遷移の 1 バイト分のデータを 1ように扱った．なお，本研究で用いた LCD で扱える 1 文字あたセットとし，最大 4 バイト分のデータ数を扱った．

りの縦と横の比は 2 対 1 であり，半角文字となっている．

(ⅰ)ファイル:3 ビット
状態遷移が発生したファイルのデータ．a から h までの縦列の(ⅰ)プレイヤーの操作の正誤情報:1 バイト
プレイヤーの操作が正しいものであったかを示すデータ．正しいものであった場合にはデータを（0）10 とし，誤りがあった位置を示し，（0）10 から（7）10 までのデータとして扱った．
(ⅱ)ランク:3 ビット
状態遷移が発生したランクのデータ．1 から 8 までの横列の位場合には（1）10 として扱った．本来は 1 ビットで十分であるが，置を示し，（0）10 から（7）10 までのデータとして扱った．

最小のデータ量を 1 バイトとして通信データを扱ったため，1 バ(ⅲ)マスの状態遷移:2 ビット

イトとした．
(ⅱ)16 文字の文字列情報:16 バイト
LCD の 1 行目に表示する文字列を扱うために用いるデータ．プ
レイヤーの操作が正しかった場合には棋譜情報，誤りがあった

マスの状態遷移（マス内の駒の有無の変化）を示すデータ．1（1）10 の有から無へ，無からつ目に動いた駒のデータを（0）10，有へのデータとして扱い，2 つ目に動いた駒のデータを（2）10，（3）10 の有から無へ，無から有へのデータとして扱った．

場合には駒の置き直しを指示する旨の内容を格納した．
(ⅲ)16 文字の文字列情報:16 バイト
LCD の 2 行目に表示する文字列を扱うために用いるデータ．プ・黒側・白側のボタンの状態:1 バイト(ⅰ)黒側のボタンの状態:4 ビット

レイヤーの操作が正しかった場合には各プレイヤーの残り時間，黒側の 4 種類のプロモーションボタンあるいはリザインボタ

誤りがあった場合には駒の置き直しを指示する旨の内容を格納ンが押されたかを示すデータ．プロモーションボタンに関するした．

データはナイト，ビショップ，ルーク，クイーンの順に（8）10，（2）10，（1）10 とし，リザインボタンに関するデータは（4）10，（15）10 として扱った．
(ⅱ)白側のボタンの状態:4 ビット
白側の 4 種類のプロモーションボタンあるいはリザインボタンが押されたかを示すデータ．黒側と同様にプロモーションボ

図 3.6 パソコンからマイコンへの通信データの内容

タンに関するデータはナイト，ビショップ，ルーク，クイーン（4）10，（2）10，（1）10 とし，リザインボタンに関の順に（8）10，3.2.2.マイコンからパソコンへの通信データ
マイコンからパソコンへの 6 バイトの通信データは光センサ検出結果とボタンの検出結果から基礎的なデータとして以下のようにまとめて扱った．
平成27年２月

するデータは(15)10 として扱った．

― 34 ―
真壁純矢*・竹下大樹

1バイト

1バイト

4ビット

4ビット

3ビット 3ビット

棋譜を付ける際に最も多く用いられている代数式表記法で記述

1バイト

白番か黒番 マスの状態遷 ファイル ランク
マスの状態の区別（0か1） 移数（0から7） （0から7） 遷移 （0から3）

・・・・

黒側のボタン状態 白側のボタン状態

2ビット4ビットを行う．

4ビット

ファイル・ランク・状態の1セット、最大で4バイト分

図 3.7 マイコンからパソコンへの通信データの内容
ここで例として，図 3.8 のように b5 のポーンが a6 のポーンを取った場合の通信データは各ビット 10 進数で表現すると図(a) 試合開始前(b) 試合開始後
図 3.11 GUI のメイン画面

3.9 のようになり，1 バイトごとに 2 進数と 16 進数で表現すると図 3.10 のようになる．

転送データ用
ランク番号7867564534231201

図 3.12 設定画面

転送データ用
ファイル番号

図 3.8abcdefgh01234567b5 のポーンが a6 のポーンを取った場合の駒の動き

4.光センサによる駒情報の取得
マスの状態遷移により，駒の情報を取得することが可能である．このシステムにおいてのマスの状態遷移数による駒の動作
及びプレイヤーの判断は表 4.1 のようになる．なお，本研究で

1バイト

0

1バイト

30

5

1バイト

0

ファイル ランク(a)
(6)

白の番

マスの状態遷移数

142

ファイル ランク(b)(5)

マスの状態遷移（有から無）

1バイト

0

5

ファイル ランク(a)(6)

マスの状態遷移（有から無）

1バイト

30

はシステムの基本的な動作に関わる部分を優先して構築したた
0

黒側のボタンマスの状態遷移（無から有）

白側のボタンめ，(ⅰ)スティルメイト，(ⅱ)ドロー・オファー，(ⅲ)デッド・ポジションといったドローの動作やプロモーションといった特殊動作への対応はまだ実現していない．また，プレイヤーが駒を持ち上げたマスと駒を置いたマスの遷移のみをデータとして※6バイト目のデータは使用しない

図 3.9 各ビットの 10 進数で表現した通信データ扱ったため，図 4.2 のように a1 のルークが h1 のルークを取得した場合では，a1 と h1 のマスのみが状態が遷移したとして扱うこととなる．現在は駒の移動の際に本来はマスの状態遷移に関2進数 0000 0011 0001 0100 0011 0010 0001 0111 0000 0000

わらない座標に関するデータを取得した場合はエラーとして扱っているが，通信データの 1 つ目の駒が 1 度目に持ち上げられた時のデータ，1 つ目の駒が最後に置かれた時のデータ（2 つ目16進数

31432170

図 3.10 1 バイトごとに 2 進数と 16 進数で表現した通信データの駒が持ち上げられる前のデータ），2 つ目駒が 1 度目に持ち上げられた時のデータ，最後に行われた状態遷移のデータの 4 つデータから駒の動作を判断することにより，データをまとめる

3.3.GUI
本研究ではチェスの支援として，移植性が良く，プログラミングが比較的簡単であるという特徴を持つ OpenGL[3][4]を用いように試みている．
この章の 4.1 以降では取得する駒の動作情報について記述する．て作成した GUI にて，図 3.11 (b)のように棋譜情報，駒位置情報，タイマー情報の表示を行った．設定画面では，タイマーの設定を行えるようにした（図 3.12 を参照）
．このシステムでは
秋田高専研究紀要第50号

― 35 ―
光センサによる駒位置検出を用いたチェスの棋譜の自動記録システムは駒位置のデータから行った．

図 4.1 マスの状態遷移の様子①

駒が有ったマスから駒が無くなる．

②

駒が有ったマスから駒が無くなる．

③

駒が無かったマスに駒が有る状態になる．

④

プロモーションの条件を満たせば，プロモーションが行われる．

図 4.2 a1 のルークが h1 のルークを取得した時の動作
図 4.3 駒の移動とプロモーションに関する状態遷移の様子
表 4.1 マスの状態遷移数による駒の動作及びプレイヤーの判断
状態遷移数(回)動作の分類(ⅰ)スティルメイト

0(ⅱ)ドロー・オファー(ⅲ)デッド・ポジション(ⅳ)リザイン12(ⅰ)ルール違反(ⅰ)駒の移動(ⅱ)駒の移動後のプロモーション(ⅰ)相手の駒の取得

3(ⅱ)相手の駒の取得後のプロモーション(ⅲ)アンパッサン

4(ⅰ)キャスリング

5 以上(ⅰ)ルール違反

4.1.駒の移動とプロモーション
マスの状態遷移数が 2 回の時の動作の一つとして(ⅰ)駒の移動が考えられる．(ⅱ)駒移動後のプロモーションであるかの判
断は，駒位置とボタンのデータから行った．
①

駒が有ったマスから駒が無くなる．

②

駒が無かったマスに駒が有る状態になる．

③

プロモーションの条件を満たせば，プロモーションが行わ

図 4.4 駒の取得とプロモーションに関する状態遷移の様子れる．
4.3.アンパッサン
4.2.相手の駒の取得とプロモーションマスの状態遷移数が 3 回の時の特殊動作として(ⅲ)アンパッ

マスの状態遷移数が 3 回の時の動作の一つとして(ⅰ)相手のサンが考えられ，駒の動かし方は先に相手と自分の駒を全部持駒の取得が考えられ，駒の動かし方は相手の駒を先に持ち上げち上げてから駒を置いた場合（2 パターン）と自分の駒を持ち上る場合と自分の駒を先に持ち上げる場合の 2 パターンであるとげて，置いてから相手の駒を持ち上げた場合とが考えられる．

した．(ⅱ)相手の駒の取得後のプロモーションであるかの判断

・先に相手と自分の駒を全部持ち上げてから駒を置いた場合

平成27年２月

― 36 ―
真壁純矢*・竹下大樹①

駒が有ったマスから駒が無くなる．

②

駒が無かったマスに駒が有る状態になる．

②

駒が有ったマスから駒が無くなる．

③

駒が有ったマスから駒が無くなる．

③

駒が無かったマスに駒が有る状態になる．

④

駒が無かったマスに駒が有る状態になる．

5.結論
本研究ではフォトリフレクタを作製し，H8 マイコンと共にチェスボードに組み込むことでパソコンとの通信を行えるようにし，通信データを基とした基本的な駒位置の追跡と対応する棋譜の自動記録を達成した．しかしながら，マイコンからパソコンへの通信データを「4.光センサによる駒情報の取得」で記述したように必要最低限なマスの状態遷移で行われたものとして扱ったため，ロバストな駒位置検出ができなくなってしまっている
ことや，ドロー，プロモーション等の一部の動作への対応がまだなこと等，改良すべきことがある．これらの問題を解決して，プレイヤーの負担を軽減させることができるシステムを構築していくことが今後の課題である．

図 4.5 駒を全部持ち上げた場合のアンパッサンに関する状態
遷移の様子
・自分の駒を持ち上げ，置いてから相手の駒を持ち上げた場合①

駒が有ったマスから駒が無くなる．

②

駒が無かったマスに駒が有る状態になる．

③

駒が有ったマスから駒が無くなる．

図 4.7 キャスリングに関する状態遷移の様子
図 4.6 自分の駒を先に移動させる場合のアンパッサンに関する状態遷移の様子

6.参考文献[1] JCA(日本チェス協会),<http://www.jca-chess.com/>,H25.9.30

4.4.キャスリング

[2] CHESS MANIAC,<http://www.chessmaniac.com/>, H25.9.30

マスの状態遷移数が 4 回の時の特殊動作として(ⅲ)キャスリ[3] 小本 真広, www.komoto.org,ングが考えられ，キングサイド・キャスリングとクイーンサイ<http://www.komoto.org/>,H25.9.30

ド・キャスリングの 2 パターンある．公式ルールではキャスリ[4] 和歌山大学システム工学部デザイン情報学科 床井浩平,

ングの際の駒の移動手順は決められており，これに従った場合，GLUT による「手抜き」OpenGL 入門,移動する駒位置は異なるものの，マスの状態遷移はどちらも変<http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html>

わらず，以下のようになる．

,H25.9.30①

駒が有ったマスから駒が無くなる．
秋田高専研究紀要第50号