4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

オセロAdvent Calendar 2019

Day 17

連盟公式データをAPIで連携させる計画の話

Last updated at Posted at 2019-12-16

皆さまこんにちは。
日本オセロ連盟システムアドバイザーのはじぽんと申します。

私のことをご存じの方は、「誰だこいつ?」と思うくらい普通の始まり方をしてしまいました。
今日はですね、ちょっと想いを語ってみる感じだったりするので、
いつものようなおもしろおかしいネタはちょっとだけ控えてみます。(ちょっとだけかよ)

さて、本題の連盟公式データ。何のことだと思います?
普通に考えても連盟が持ってそうなデータって、大会記録とレーティングくらいですよね。
はい。実際そうだと思います。

え、そんなのを連携するだけで記事を書こうと思ったのかって?
いやいやそんなわけないじゃなですかー(汗)

はい。今はデータ化されてないものの話です。
つまり未来にデータ化しようとしてるもの…それは!!?

続きはWEBでb(いやここWEBだから)

そろそろ連盟公式対局の棋譜をデータ化しようぜ

これですよ。長年思ってたこと。
今現在、棋譜集の販売もしばらくされていないし、そもそもデータで欲しい人はいっぱいいるはず。
棋譜そのものは集めているはずなので、今後いろいろシステムの整備をしていく中で、
棋譜データベースも手掛けようかと思っていました。
前提として大会記録もサイトだけでなくきちんとデータ化した上に乗せたいので
数年レベルのプロジェクトにはなってしまいます。

データベースを作るだけなら簡単。どうやって見せる?どうやって書き込む?

webで表示するビューアを使わせてもらえれば、一応表示は簡単っちゃ簡単なんですが…
たぶんこれからの時代はそれだけじゃ機能的に足りなくて、アプリじゃないといろいろ無理だと思うんです。
そこで考えた。「アプリ作るの大変だから皆に作ってもらおう」()
いや、サボるとかそういうのじゃないですよ??
せっかくいろんな方が優秀なオセロの解析ソフトをどんどん作っていらっしゃるし、ユーザもお気に入りのアプリがあったりするじゃないですか。
なので。
「APIで棋譜データだけ見れるようにしたら、あとはアプリ側でよろしくやってくれるよね」という発想。
そうなれば、棋譜の登録も同じようにいつものアプリで再現して、そのまま送信できればめんどくさくない。ほら天才。

権限とかどうするのさ?

見だしと会話するのが固定芸になってきました。
当然誰彼構わず公式対局の棋譜データを流すなんてことしたらいろいろ問題ですよね。
そこで会員ログイン機能のAPIも作って、ログイントークンがないと棋譜データのAPIからデータを取れないようにしておこうと思います。
アプリ側ではログイン機能の手間が出てきてしまいますが、いろいろ権利がありそうなデータになっちゃうのでがんばってもらうしか。

棋譜を見せたくないとかあるよね。ていうか会員ってだけで他の人の棋譜見れちゃっていいの?

棋譜の公開、非公開はボタンで切り替えれるようにしようかなと。もちろん二人が許可で初めて公開。
それで、確かに今までは棋譜集の販売で一応有料だったものを無料で配布がいいのかってのはあります。
なので今考えてるのは棋譜の見れる範囲にいろいろ制限と、会員制度そのものに種別とか作って行こうとか考えてます。
例えばただの会員であれば自分の棋譜しか見れないけど、もうちょっと会費の高いものに入れば他の人の棋譜が見れるとか。どうかな?

うーん。それだと自分の棋譜は非公開にしつつ、人の棋譜は見ようとする人がいっぱいいて、結局誰も棋譜公開しなくならない?

あーね。確かになー
某氏「棋譜公開したらポイント増える感じにしてメリット出せば?」
おおおナイスなアイデアだ!そんで、そのポイントの数だけ他の人の棋譜を見れるようになる的な!?
こう、棋譜を1つ公開したら他人の棋譜5局まで見れるようになるとか。ちょっとゲームっぽくなって楽しくなる!?!?

そんな感じで課題はいろいろあるけれど、
基本方針は公式システムとしてはweb上でテキスト入力の棋譜登録と、簡易ビューアの棋譜閲覧ができる感じまでしか作らず、
あとはAPI作ってアプリ頑張ってる皆さんにぶん投げようって思ってる次第です!

今考えてる主なAPI仕様

機能 API例 内容
ログイン api-domain/auth/login 会員番号とパスをPOST送信してトークンを受け取る。パスは今のやつではない。
棋譜検索(大会指定) api-domain/records/tournament/1234 指定IDの大会での棋譜情報一覧取得。他にプレイヤー検索など用意する。
棋譜取得 api-domain/record/12345678 指定対局IDの棋譜データをSGF(Smart Game Format)で取得。(場合によってはF5D6形式も用意する)
棋譜登録 api-domain/record/register/12345678 対局結果データがあること前提で、そのIDを使ってPOST送信で棋譜(SGF)を送る。

SGFフォーマットはまだ扱ったことはないんですが、やろうと思えば返し忘れを表現できるとかなんとか聞いたことがあります。

そんな感じでエンジニアオセラーの皆さんといろいろやりたいです。

棋譜一つにしても、アプリを作ってる皆さんからするといろいろ考えが合ったりで、意見を集めるだけでも夢が広がると思うんです。
もちろん棋譜に限らずどんどん話を広げたりと。そういう話をTwitterでするのもいいんですが、専用ツール用意して(SlackとかRedmineとかよく仕事で使う系)、皆で作る系にしていくのもよいかなぁと。出来たらコードもオープンソースにしたいところですね。

という感じでまだまだゆっくり動き出す系ではありますが、いずれ皆さんを巻き込めるようにやっていきたいと思います!
ではではまたーb

4
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?