棋譜や手筋データを集約+αして、次世代をもっと強く

## はじめに
次世代の子供たちが、より一層強くなるために色々してみようZE！ な話です。
[前回の記事](https://qiita.com/sensuikan1973/items/9813555649a9c6234f87)よりも概念的な話が多めです。

`既存のデータを活用する話` と `データ自体を作っていく話` に分けて書きたいと思います。

* `既存のデータを活用する話`
  * → まだ存在しないデータではありますが、[公式データ(棋譜や大会情報)の活用](#公式データ棋譜や大会情報の活用)という話を書きました。
* `データ自体を作っていく話`
  * → `手筋` を例にとって、[手筋データの収集](#手筋データの収集) という話を書きました。

## 公式データ(棋譜や大会情報)の活用
### 情報を開発者に開く
[hajipong](https://qiita.com/hajipong)さんの[連盟公式データをAPIで連携させる計画の話](https://qiita.com/hajipong/items/12ea7fb1370aedf1876e)は、とても重要な話です。

以下のような情報を開発者に開くことで、色々なモノ作りを外に委ねることができるからです。

* 公式大会の棋譜
* 公式大会の対局結果
* 「○月○日に××で大会があります」といった大会情報
* 「オセロ小学生グランプリの申し込みは○月○日までです」といった連絡情報
* レーティング情報

website やスマホアプリ、デスクトップアプリなどでこれらの情報を活用することが可能になります。
特に公式大会の棋譜については、入力フローどうするの? って話が難しい課題ではありますが。
理想的には、盤そのものから棋譜を取ってくることですが、それはそれで課題があります。じゃあ、局後に入力の方法はどうかというと、それもそれで当然課題があります。むずかしい。

### 開くと何が良いのさ？
例えば以下のようなモノを、誰かが作れるようになります。

* 大会や連絡情報の通知機能[^1]
* レーティングや棋譜の統計を扱うサイト
* 全国大会/世界大会で打たれている頻度を表示しつつ何か色々するアプリ

だいぶ雑な例ですが、色々捗るわけです。
例はほんの一例に過ぎないです。

### 「棋譜単体じゃ意味なくない？」
例えば棋譜について、こう思う方もいるかもしれないです。
実際には棋譜に解説等がついてこそコンテンツ力が生まれるので大事な点です。

公式データは、ひとまず一次的な情報を提供することに専念すべきで、解説機能やカテゴリタグ等のリッチさは、基本的に第三者に求めることになるかと思います。

つまりほとんどの場合で、公式データとサービス固有のデータを紐付けて何かを作る誰かが必要になってきます。
棋譜と何をどう結び付けるかは、解決したい課題の内容によって変わってきます。

ともかく、公式データの API 公開によって、いくつかの課題を解決するための手立てを多くの人に提供できるわけです。(何もまとまってない..)

## 手筋データの収集
話は変わって、`手筋` データの集約を試みる話をします。

例えば `手筋` のようなデータは、公式の保有情報ではないです。
これをどう収集するのか。
そう、作り手が体系整えて収集するんです。(なお、この際に公式データと紐づけるかどうかはあんま重要じゃないので省略します)

収集というと適切じゃないかもしれないです。だって `手筋` データの収集先はどこかって言われても至る所にありますからね。
本だったり、SNS だったり、ブログだったり、ノートだったり...
しかもどれもバラバラな形式なので、集めたって上手くまとめられません。

なので、`手筋データの投稿先を提供する` ことを考えることにします。

### どんな感じで投稿場所を提供しようか？
そもそも `手筋` ってなんですかね?

逆偶数理論みたいに名前がついてるやつ?
定石名がついてるやつ?
全国大会の重要なところで負けた局面?

まあ最後のは何か違いそうですが、`知見を投稿する` という意味ではどれも対象ですよね。
そして、どれも「棋譜+解説+カテゴリ分類」みたいな形式として表現できそうです。
よし、それでは `知見を投稿する` と捉えなおしましょう。

投稿先はもちろんインターネットの海ですが、どうやって投稿してもらいましょうか?

携帯には既に解析アプリが存在していますし、PC よりも投稿ハードルが低いです。さらに、長文を求めない方針だったとすれば、携帯のフリック入力で十分なので、PC である必然性も低いです。
というわけで、携帯から投稿できる場所を提供したいとします。

(スマホアプリにするか、Web Application にするか等は、色んな要素諸々踏まえて決定します。詳細は省略)

### どういう形式でデータを表現するのが良いか?
`知見` のデータ形式を考えてみます。
まず、以下のような情報は当然持っていて欲しいです。

* 棋譜
* 投稿日時
* 解説
* カテゴリ分類

ざっくりこんだけの種類の情報を持っていればいいか?

んー、少し微妙ですね。
画面に表示するときのことを考えると　"タイトル" なんかも欲しいです。

それと、`知見` の質の高さを表現できるようにしたいですね。
良い知見が見つけやすくなるように。

というわけで、 "お気に入り数" も持たせるようにしましょう。[^2]

* 棋譜
* 投稿日時
* 解説
* カテゴリ分類
* タイトル
* お気に入り数

### 知見って問題とも捉えられるじゃん?
良く考えたら、ある局面を問題として投稿するのと大差ないですね。
むしろ、問題として挑戦できた方が嬉しいです。

問題として挑戦できるようにした場合、"タイトル" と "解説" は任意としても良さそうですね。携帯のフリック入力は疲れますし。
ちなみに、長文を入力したい場合もあるでしょうから、余裕があれば Web Application も作れるとなお良いですね。

* 棋譜
* 投稿日時
* 解説(任意)
* カテゴリ分類
* タイトル(任意)
* お気に入り数

そろそろ文字だけだと辛いので画像貼ると、結果こんな感じですね。
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159680/5ab5a604-ee05-75c5-39ec-04945de72077.png"><span> <span/><img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159680/5a56a412-f253-7351-01e8-2889b87b185f.png">

そんで、問題なんだし、一発正解率ランキングとか個人の統計データとかも欲しいよね。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159680/dc3299eb-c1f3-569d-d70a-1eeaad187c7a.png"><span> </span><img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159680/cb10729a-c3c2-5fdd-ab52-09ee151897d5.png">

あと、実は投稿すること自体が知識の整理に繋がるので、過去の投稿を振り返れるようにもしておきたいですよね。
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159680/c421fe99-44cb-4a59-f137-db657f849ffa.png">

[^1]: S2S notification が公式側になければ、batch で定期的に覗きにいく感じ
[^2]: "お気に入り数"のようなものを棋譜データと一緒に持たせるかどうかは、主に DB の性質によります。DB の性質によっては一緒に持つべきではないですが、ここでは詳しく触れません。