前回「県内の将棋関係者の半生録を作りたい」と書いた話の続きです。基本的に将棋には関係ありません。


20人くらいの人が執筆してくれると仮定して、どの system を採用すると最も良いか。(締め切りまでに原稿提出がない方は収録しないものとします。)

一番原始的な system は、誰か1人の編集者を置き、その人のところへ電子でも紙でも (そして手書きでも) 原稿を集める方法です。

編集者がものすごく苦労する様子が思い浮かびます。

  • 紙で提出した方の原稿を再度 typing することが大変。
  • 手書きの方の字が読めないと問い合わせないといけない。
  • 上記2つの typing 間違いは typing した人の責任になる。
  • 校正の段階を入れると、紙の提出を OK にしたために紙で返送しないといけない。
  • 「校正しない」と決めても「やはり原稿のあの部分は変更させてくれ」という依頼がくる可能性が高い。

これに加えて、もし最終成果物を電子書籍でなく紙書籍と設定したら、印刷業者に発注し、納品された本を各執筆者へ郵送する、という手間 (と郵送費) がかかります。


今時上記のようなやりとりをする人は (職業としての出版社従業員でもない限り) いないと思うので、次に e-mail で集める方法を考えてみましょう。

それでも、copy & paste 作業で失敗が発生する可能性があります。また、そのための作業時間を編集者が負担することになります。


自動で原稿が完成する仕組みとしては、 Google Documents があります。これの共有機能を利用すれば執筆者それぞれが自分の自由な時間に書き込むことができ、また「締め切り時点の原稿を完成原稿とします」と宣言してしまえば編集者の負担は格段に減ります。

ただ、執筆者は誰でも他の人の執筆部分を編集できる、という点が大きな問題です。悪意を持って他人の執筆部分を編集する人はいないと仮定しても、誤操作で削除してしまうことは大いにあり得ます。

そして、Google Documents は「その部分を誰が編集したか」を追跡する機能 (Git における blame 機能) が弱いと感じます。


なので、各執筆者には自分の部分を markdown 形式で書いてもらい、それを自動集積して epub や PDF に変換する方法が楽そうです。

すると、Git の出番かと思います。

Git 上で集積するなら、host (server) をどれにするか。最も使われているのは GitHub なのですが、GitHub は昔は Open Source Software にだけ無料提供されていたので (private repositories も作れたが制約がきつかった)、そこに県内将棋関係者のための repository を作ることに何となく抵抗があります。

Git は基本的に個人の公開鍵を登録して使う仕組みですが、単なる執筆のためだけに各執筆者に個人の公開鍵を用意してもらうのは大変なので、個人の公開鍵を利用する方法は望ましくなさそうです。

GitHub も基本は個人の公開鍵を利用する形なのですが、GitHub Desktop という application を使えば個人の公開鍵を用意する必要がないので良さそうに感じました。しかし、前出の抵抗感もあります。

原稿は基本的に web 上で書いてもらうことにすれば、個人の公開鍵は不要です。ついでに自分で host を立てることにすれば管理者として色々なことができそうな気がします。

現時点では Gogs という server が良さそうです。

結構前の書籍ですが、『解析魔法少女美咲ちゃん マジカル・オープン!』という書籍がありまして、この書籍の著者が「やねうら王」作者と同一人物であると初めて知りました。

この書籍が紙で絶版になった後に電子書籍化するためにいくつかの敷居があった点が blog で触れられています

プレミア価格になってからも「再販しないんですか?」とブログの読者の方などから問い合わせを数多くいただき、これは再販すべきだよなぁと思って出版社のほうに増刷するか、無料でPDFか何かを公開させてもらえないかと何度か出版社の編集担当に交渉したのだが、これがどうもうまくいかなかった。

まず、本文の著作権自体は著者(私)にある。だから絶版になったあと本文だけを公開することは出来る。しかし図は、下書きは私が書いたものではあるが、出版社の編集側で手直ししたものが本には使われているし、組版をしたのは出版社である。これらに関する権利が出版社にある。また、表紙イラストは漫画家のS先生に出版社側が依頼したものである。

当時は書籍と言えば紙ばかりで、出版までの作業の流れには電子的な再利用への考慮がなかったのだと思います。

今の時代だとどういう流れになるのでしょうね。最低限の表紙、最低限の図表をつけて Vivliostyle や Re:VIEW で epub や PDF まで作成し、そこに出版社が「我が社で美麗な表紙を付け、図表を分かりやすく書き換え、ちゃんとした装丁で電子出版・紙出版しますので、その権利を買わせて下さい」となるのでしょうか。そういう、個人では手を出しにくいところにお金をかけて付加価値を増やしてくれるのが出版社の使命かな、と思います。(販路や宣伝面の力もあります。)

そうすると、技術書典のように自分で組版までできる人達が集まって出版社を通さずに販売したり、Kindle でも出版社抜きで著者が Kindle へ直接持ち込むことができるようになるので、書籍における出版社の純粋な価値が以前よりもはっきりしてきたと思われます。

ちょっと話は変わって、とある呟きその続き

Kindle本で巻数が分かれている本をまとめて合本にしている本の表紙が汚いのなんとかならないのだろうか。まとめて安くしてくれるのはありがたいのだが、あのやっつけでセンスのかけらもない表紙が嫌でしかたない。デジタルといえども表紙は本の大切な要素なんですよ。>特に文春e-Books!
電子書籍はデータといえども、データをコレクションして所有するということに変わりはない。せっかくの装丁をデジタル本だからという理由で適当に扱う出版社のセンスが理解できない。

2015年の呟きなので呟いた方も意見が変わっているかも知れませんが、あえて取り上げます。私はあまり賛同できません。

「データをコレクションして所有するということに変わりはない」という点はその通りだと思います。しかし、読者が本文に対して感じる価値と表紙・想定に対して感じる価値は (今の時代は) 分離すべきだと思います。私は表紙についての価値を殆ど感じないので、美麗な表紙の本が1500円、本文が全く同じで醜い表紙の本が1000円で売っていたら、迷わず後者を選びます。

最初の話に戻りますが、今の時代、本文執筆・図表の美麗化・表紙作成・装丁・印刷製本・出版 (販路・宣伝) という感じで価値が分離してきている (部品になってきている) と思います。そして、時代に合う部品だけで本が作られるようになり、それに合わせて価格が変わる (時代に合わない部品が含まれて価格が高くなっていると売れなくなる) と思います。


以前も書いたと思いますが、今の時代に即していて殆ど費用をかけずに書籍が作れる方法は以下の方法かと思います。

  • Markdown 形式で執筆
  • GitHub で集積 (執筆者が複数でも扱いが簡単)
  • Vivliostyle などで epub や PDF を作成
  • 電子的に配布 (紙書籍がいい人は、1冊から製本してくれる会社へ自分で発注)

これで基本的に0円で本が作れます。(集積場所については、GitHub 以外の選択肢の方がいいかも知れません。)

時間に余裕があれば県内の将棋関係者の半生録を作りたいのですけど、いつになることやら。

以前も書きましたが、この blog は 23:00~24:00 のどこかで公開するように設定しています。つまり、blog 内容は基本的に事前に書いています。

すごく遅い話題になりますが、今日の blog 記事は1月第1週に書いておりまして、能登半島の地震が気になっています。

実は去年穴水町までは行ったので「あのお店はどうなっているだろう」という考えが頭をよぎったりします。本当は珠洲市の奥能登塩田村まで行ってみたかったのですが、時間がありませんでした。

復興が始まったら能登半島の産物を積極的に選んで応援するのも1つの手かな、と思っています。

厚生年金保険・健康保険 適用事業所検索システムというものを使うと従業員規模が分かるらしいので、調べてみました。

名称 被保険者数 適用年月日
公益社団法人 日本将棋連盟 65 昭和37年08月01日
公益社団法人 日本女子プロ将棋協会 1 平成19年08月01日
公益財団法人 日本棋院 327 昭和46年12月01日
一般財団法人 関西棋院 105 昭和32年01月01日

この人数が多いのか少ないのかは分かりません。

「日本将棋連盟は30人くらいかな」と予想していたので、私の予想よりは多かったです。

もし LPSA の「1人」が全職員数だとするならば、職員数の割には活動を頑張っているように思われます。

意外なことに、この中では関西棋院が最初に適用を受けていたのですね。

例会・大会の運営を補助する system を試作してみました。手合いを組む際に参加者が勝ち数順で並んで表示され、また参加者自身が勝敗報告できる仕組みです。前日から大会準備するとして30時間 VPS を借りても21円で済みます (RAM 1GB の場合)

以下、試作ついでに書いた簡易な説明文を紹介します。


例会 system

「今日は1人○局」と対局数が決まっていて、勝っても負けても参加者がその局数分の対局ができる会 (例会を想定) について、それを補助する system を Ruby on Rails で作ってみました。VPS などに配置すれば INTERNET に繋がっている端末なら何でも access できるので、管理者 (運営者) が2人以上だったり参加者に対局結果入力を手伝ってもらったりする場合は便利です。

最低限の部分しか作っていないため、参加者が URL を推測して不正な記録を入力したりすることは防げませんが、全参加者が善意であれば使えるかと思います。(将棋大会にはもっときちんとした system が必要だと思われます。)

最初の準備

「今日は1人○局」を入力します。また、参加者を入力します。

以下、「管理者画面」と「参加者画面」とで区別して説明します。

管理者画面 (1)

この画面は、参加者が10人のとある例会で2回戦まで終了した時点のものです。

今から管理者として3回戦の対局を組んでいきます。

「参加者一覧」は勝ち数が多い順に並んでいます。

まずは一番上の豊島さんの対局相手を決めたいので、「豊島将之の対局を組む」を click します。

右端に「(初対局)」と書かれている人は、この例会で豊島さんと未だ対局していない人です。

今回は渡辺さんと手合いを組むことにしますので、「相手に渡辺明を指定する」を click します。

対局相手を指定したらこのような画面になるので「一覧に戻る」を click します。

次に菅井さんの対局相手を決めようと思います。「菅井達也の対局を組む」を click します。

豊島さんと渡辺さんは既に対局が組まれたので、菅井さんの対局相手として選択することができません。

対局相手は稲葉さんにします。「相手に稲葉陽を指定する」を click します。

対局相手決定後の表示です。

この調子で全員分の対局相手を決めると、以下の画面になります。

参加者画面

参加者には1人1人に別々の専用 URL を渡します。

渡辺さんの場合、2回戦終了時点 (3回戦の相手が決定した後) の画面は以下の通りです。

自分の今までの対局結果が表示されると同時に、3回戦の相手も表示されています。

3回戦が終了したら「結果を報告する」を click します。

結果報告画面はこのようになっています。今回、渡辺さんは負けてしまったので「負けました」を click します。

勝敗報告をしたら、最初に戻ることしかできません。

今回の勝敗報告はちゃんと反映されています。

管理者画面 (2)

参加者が勝敗報告をすると、管理者側にもその結果が反映されます。

思い付き段階なので、実装するかどうかは未定です。

飛車先の歩を交換してからの原始棒銀など、入門者が何度も練習する方が良い定跡があります。

ところが、例えば「低学年の小学生が将棋に興味を持ち、将棋を指せない母親に連れられて月1回の将棋教室に行って原始棒銀を習ったけど、自宅で反復練習する環境がない (父も母も将棋が指せない)」なんて状況だと、次の将棋教室まで復習ができないわけです。

盤・駒がないだけなら保護者が購入すれば済みますが (2000円~3000円程度の出費でしょうか)、子どもの定跡練習の相手をするにはこの程度の金銭では解決できず、保護者自身が将棋を学ぶ必要があります。これは即ち、保護者の可処分時間を将棋に割くことになります。月1回の将棋教室くらいなら連れて行ってもいいけど毎日将棋の相手をさせられるのは大変、という保護者も多いと思います。

もし ShogiGUI があれば、そして定跡練習 data があれば、ShogiGUI に読み込ませることで子どもは何度でも定跡を練習することができます。ですが、その準備に手間がかかります。

  • 定跡練習 data を保護者が用意するとなると、やはり学習すべきことが多い (将棋の知識に加えて ShogiGUI の知識が必要)
  • 誰かが定跡練習 data を作っても、それを download して ShogiGUI に読み込ませるまでがやはり大変

で、ふと思ったのですが、以上2点は Scoop の manifest にしてしまえば解決する気がします。具体的には scoop install shogigui suisho shogi-opening-xxxx-20240131 みたいな1行で必要な files を自動で download くれて、後は ShogiGUI に登録するだけ、ということが可能になるだろうということです (xxxx には blog 名称などが入ります)。

王位と女流王位との記念対局の YouTube 動画。世の中では里美女流王位が藤井王位に平手で勝って news になっていましたが (但し持ち時間は 1時間:10分)、私はこの動画の画面配置に衝撃を受けました。

対局者の表情がちゃんと見え、全身もほぼ見えた状態で、盤面もわかるのです。透過率 10%~20% くらいと思われます。

仕組みは恐らく、

  • 記録がかかりが記録した棋譜を Kifu for Windows で再生
  • OBS Studio で盤面・駒台・手番・対局時計・会場画像を sources として指定 (更に trim)
  • 盤面だけ少々透過させる
  • 動画に合わせて Kifu for Windows の手を進める

という感じです。

対局後に編集しているので今までの技術でも同じことはできるのですが、上記の構成の素晴らしい点は、Kifu for Windows で記録しながらでも生放送ができてしまう点です。機材はほぼ最小限で済むでしょう。

将棋とは関係ないのですが (いや、少しだけ関係するのですが)、こんな呟きを見つけました。

いろいろスポーツの本とかも読んでみて、やはり反復練習によって脳の記憶を最適化し認知エネルギーを使わずにできることを増やしていって、空いた認知エネルギーをより難しいことに回す... というのが、人間のやってることなんだなというのがわかる

これ、多分色々な分野でも同じことが言えると思います。

例えば将棋の software。他の人に依頼されて install したり、自分の PC を買い替えて install したりする際、思い出さなければならないことがいくつかあります。

  • .net framework desktop runtime を必要とするかどうか
  • 管理者権限を必要とするかどうか
  • 7-zip を使えば管理者権限なしでも無理やり install できるかどうか
  • そもそも 32-bit CPU だった場合に何が使えるか
  • dlshogi のように GPU を使う場合は事前に何が必要か、 license agreement の中身は何か
  • 評価関数しかなくて探索部は「やねうら王」を用いるような AI はどう導入するか
  • 現在の配布 URL はどこか

そういう面倒なことを全部 Scoop の manifests に押し込んでしまえば、 scoop install shogigui suisho のように1行で簡単に install できるようになります。


実は web 上の server も似たような面があります。

私は AWS 使ったりせずいつも VPS なので、VPS を例に説明すると、初めての人にはなかなか敷居が高いのではないかと思います。

  • 市場占有率が高い最新の distr. を使うとすると CentOS Stream 9 あたりだが、最初から RSA/SHA1 を受け付けない (国内でよく使われている terminal である Tera Term は最近まで RSA は RSA/SHA1 しか使えなかったため、最初から接続できない状況であった)
  • SELinux がなかった時代の文書を参考にすると、SELinux のために文書通りに進まない (そして SELinux を無効化することは望ましくない)
  • rpm や yum の時代の文書は、dnf module に対応していないのでかなり古いやり方が記載されている
  • PHP の最新版を使うには remi を使うのが一般的
  • IPv6 回りは知らないとハマる (設定しないと IPv6 が使えないことが多い、IPv6 が使えない状態で MyDNS に登録すると IPv4 を巻き込んで無効化されることがある、localhost は 127.0.0.1 とは限らない、など)
  • 各 software の End of Life を気にしないといけない

で、何回も servers を立てて慣れてくるとあまり頭を使わなくてもよくなります。

そうしたら、後はその先のことを考えるだけです。私は Rails が好きなので、class 図を考えたらそのまま Rails に落とし込んで、frontend は何も工夫せずとりあえず使い物になればいい、程度の取り組み方をします。(React とか手を出す方がいいのだろうとは思うのですが、React は好きじゃないし、まあ「なくてもいいかな」と。)

将棋 ID の話題について、現時点で思いつく範囲の課題を挙げておきます。

どこが管理するか

第1案。個人番号 (マイナンバー) のように住民個人個人に強制的に一意の番号を割り振る制度を作る。「行政手続における特定の個人を識別するための番号の利用等に関する法律」のような立法を必要とするので、実現可能性は皆無です。

第2案。日本将棋連盟が将棋 ID と関連情報を管理し、「全ての将棋大会は全ての将棋大会参加者へ将棋 ID を割り振ること」と宣言する。これは「全ての将棋大会」を強制実施の対象としているため反発が多いと思われます。

第3案。日本将棋連盟が将棋 ID と関連情報を管理し、「将棋大会のうち将棋 ID 活用を希望する大会は全ての将棋大会参加者へ将棋 ID を割り振る」ようにする。これは「アマ連」が全ての R 大会で実施ている方法に近いかと思います。書くと長くなるので省略しますが、「アマ連」は R を計算する以外の ID の役割を考えていないようです。また「アマ連」の力量面でも R の計算以外の活用は難しいかと思います。日本将棋連盟の力量はアマ連より上だとは思いますが、それでも難しいと思われます。

第4案。日本将棋連盟 (またはこれに類する唯一の機関) が将棋 ID の発行だけを管理し、各大会での対局情報は各大会の主催者が管理し、適切な範囲で公開する。第1~3案よりは実現可能性が上がると思いますが、将棋 ID を利用する将棋大会が全国である程度普及しないと「この大会だけ将棋 ID を発行しても意義が薄い」としてどの大会でも将棋 ID を採用してもらえないかと思います。鶏が先か卵が先か、という問題です。また、将棋 ID の発行が必要となるたびに日本将棋連盟に依頼しなければなりません (web interface などを用意してくれればかなり楽になりますが、日本将棋連盟にはそこまでの力量はないと思われます。予算があれば実現できますが、日本将棋連盟としては予算に余裕があるならもっと他のところに使いたいと感じるでしょう。)

第5案。各県連 (または類する機関) が県内用の将棋 ID を発行し、各大会での対局情報は各大会の主催者が管理し、適切な範囲で公開する。県にもよると思いますが、将棋大会に参加する方の多くは主に県内の将棋大会に参加していると思いますので、県内用の将棋 ID でそこそこ用が足ります。また、ID 発行のためだけに日本将棋連盟に依頼する必要もなくなります。

以下、第5案を基本に考えます。

名寄せの問題

各県で将棋 ID を発行するようになると、そのままでは重複する可能性が出てきます。そのため「○県で発行された ID ○○○○と○県で発行された ID ○○○○は同じ人物」という情報をどこかで管理する必要があります。

これは「名寄せ」という作業です。名寄せ情報の管理だけなら、日本将棋連盟 (または類する唯一の機関) が管理してもあまり問題がなさそうに思われます。

更に言うと、名寄せの仕組みさえ構築できるなら、別に県連以外が将棋 ID を発行しても構わないわけです。

棋力の過少申告を防ぎたい将棋大会であれば、参加者は以下のいずれかを選択する形になるかと思います。

  • 私は今までに将棋 ID を発行されたことはありません。
  • 私の将棋 ID (の1つ) は○○○○であり、私が持つ将棋 ID は全て名寄せ済みです。
  • 私の将棋 ID (の1つ) は○○○○であり、私が持つ将棋 ID は名寄せ済みではない (名寄せしていない将棋 ID が残っている可能性がある) が、私と思われる将棋 ID の名寄せ登録権限を大会主催者に委任します (復委任権を含む)。

対局結果の記録と access

大会主催者は対局者 ID と結果を公表することが基本となります (義務ではないですが、これを公表しないと他の将棋大会で棋力過少申告の検出に役立たないので、公表することが望ましいです)。

公表場所は、大会 web site などがあればそこが望ましいでしょう。書式は YAML か JSON が望ましいですが、もっと human-readable な書式を定めてもよいかも知れません。

公表場所の URL を集積する場所がほしいところです。そのための専用 server を用意するのが望ましいかも知れませんが、管理の費用と手間がかかります。GitHub あたりに載せてしまう方が楽かも知れません。(このあたりの仕組みの考察は不充分です。誰もが Git を使えるなら git の sub repositories 機能で各大会の情報を束ねてもいいかも知れませんが、実現可能性は低そうです。結局、Git などの道具の普及率から最適な方法が社会的に決まるような気がします。)

ここまで仕組みが揃えば、各大会などの対局者 ID と結果を scrape して大会参加者の過去の履歴を簡単に探すことができそうです。

正しくない情報の排除方法

次の問題は、正しくない情報をどうやって排除するか、です。

例えば A さんのことを憎む B さんが、次の大会で A さんと対局しないように A さんを本来より上の階級へ送り込みたいとします。B さんは虚偽の大会 C を開催したことにし、そこでは A さんが全国大会優勝者相手に勝利したことにすれば (そういう情報を公開すれば)、A さんの見かけ上の対局実績は上がります。

これを避けることは少々難しいです。

対策の1つは、大会主催者の信頼度を設定することです。と言っても「その信頼度を誰が設定するのか」という問題があるので、やるとしたら PGP の「信頼の輪」のような方法になるかと思います。(各県連、各支部、各普及指導員を起点として、そこから認証と信頼の連鎖をつなげていく感じです。)

また、失効 (revocation) 情報のようなものを流せる仕組みも、もしかしたら役立つかも知れません。(失効情報というよりは、異議申し立て情報の方が正確かも知れません。)

結局は社会的な普及過程に従う

まあはっきり言いますと、仮に私が日本将棋連盟の職員で、予算も権限もあって、中央集権的な仕組みを構築していいなら、多分運用できます。冒頭の第2案や第3案あたりです。予算感は、初期開発費数百万円、年間運用費数十万円です。連盟が主催に入っているアマ大会について県予選や地区予選から全て適用すれば、それだけで各種の将棋大会参加者の数割 (県によって差がありますが私の予想では5割~8割くらい) に将棋 ID を割り振ることができ、そうすると他の将棋大会でも導入が一気に進むような気がします。

でも多分、それほどの予算を確保することは難しいし、また連盟職員の勤務時間を割り当てる価値があるかどうかの判断はどうなるか分かりません。

結局、予算はほぼ0円で、中央集権的でない分散的な仕組みを用意し、それを社会的に普及させていくしかないものと思われます。

日本棋院の歴代理事長という一覧表を見つけました。公式の情報ではないので信頼していいのかどうか分かりませんが、辞任理由が記載されている点が興味深いです。

また、5ch 情報なのでとても怪しい (他の情報源が見つからない) のですが、こんな記述がありました。

現に関西棋院の若手は政権交代までは漕ぎ着けた

本当かどうかさっぱり分かりませんが、興味深い話題ではあります。

日本将棋連盟・関西将棋会館・日本棋院・関西棋院の情報技術面の比較で関西棋院がダントツに良かったことと関係があるのかな、などと勝手に推測しています。


将棋界も色々と危機的な状況だと思いますが、囲碁界にも規模の面で何とか持ちこたえてほしいです。