昨日取り上げた話題の中で、本当に言及したかった部分を抜粋します。

  • 最も重要なのは継続性。そのために重要なのはゲームバランスとプレイ人口。
  • 新規プレイヤーとベテランが全体に満遍なく分散していて、ユーザーがどのレベル帯にいても最適な対戦相手がいる状態が理想。
  • ユーザーのレベルはどんどん上がるので、たえず新規ユーザーを供給しなければならない。

将棋も social games も参加人口がとても重要なのだろう、と理解できます。

今後もし、新規の将棋愛好家が今よりも獲得できなくなると、「指す:観る」の比率としては恐らく「指す率」が上がっていくでしょう。

11年も前の話で、しかも将棋分野ではなく social games の分野なんですが、価格感がわかると思うのでこの話を話題に取り上げます。小規模な social game についての当時の費用だそうです。(以前も取り上げたかも知れません。この blog の昔の記事を確認する余裕がないので、重複していたらすみません。なお、この日の話題と関連しています。)

  • 初期開発費:100万円~400万円
  • スタッフ人数:2人~3人(外注グラフィッカー含む)
  • 開発期間:1ヶ月~2ヶ月
  • 運営費:月30万円~100万円(人件費)
  • サーバー代:月3万円~10万円
  • 宣伝費:月0円(※ここが致命的)
  • 売上:月5万~100万円
  • 概要:儲かるらしいのでソーシャルゲーム作りましたパターン。間違いなく失敗する。(201209追記)このクラスはもう絶滅したと思う。

将棋大会・例会用 system を作るとすると、上記のうち「初期開発費」~「運営費」あたりが参考になると思います。

業務として開発をどこかに外注すると、費用は安くて数百万円、開発期間は上記よりかかるかも知れません。ただ、納期が設定されていないなら、別に外注しなくても将棋界の人が手の空いた時に少しずつ開発してもいいわけです。世の中の多くの OSS (OpenSource Software) はそういう形で開発しています。世の中でよく使われている Linux だって、元々は Linus Torvalds が大学生の時に作ったものであり、そこには報酬は発生していません。

ただ、ちゃんと運営 (運用) するとなると労力はかかります。労力が拠出できない (または技術力が足りない) 場合、金銭で解決できます (人件費=運営費)。

将棋大会・例会の場合、開催時間内だけ system がちゃんと機能すればよいので、上記の例ほどには運営費はかからない気がします。(新機能追加などの業務がありません。なお、不具合が発生したら対処は必要かと思います。)

なので、OSS だと「手が空いている人が空き時間に開発するから、開発費は不要ですよ」「運用のための労力は、大会主催者・例会主催者が負担して下さいね」という形にできます。将棋界の未来を考えると、この形が最善ではないかと思うのです。

そして、運用のための労力を拠出できない (または技術力が足りない) という大会主催者・例会主催者のために SaaS 提供業者があれば、更に理想的です。「我々 株式会社『棋援』は1日○円でこの system を運用します。豊富な経験に基づいて、当日に不具合が発生してもすぐに対処します」というような事業者が現れるとよい、ということです。

ただ、こういう事業者がこの SaaS 事業を黒字にするには、そこそこの数の利用者が必要なんですよね。結局、将棋人口の大小がこういう system の実現可能性を左右することになります。

こういうところこそ日本将棋連盟が担ってくれれば嬉しいのですが (支部会費を集めているのだからこういうところに投資してほしい)、力量的には厳しそうな気もします。

今回の話は、community の人数が少なくなった場合の話です。


世の中、携帯電話の OS は Android と iOS、個人用 PC の OS は MS-Windows が圧倒的な普及率を誇っています。

server の世界だと、Linux が圧倒的です。


日本に Linux が普及しだした頃は (FreeBSD と共に) PC-UNIX と呼ばれていました。個人所有の PC に Linux を入れて使うことができる、という点で色々な人が Linux に手を出していました。

その頃は Linux (の各 distributions) の日本語化があまり進んでいなくて、Linux を導入した後に日本語対応させる、という手順が必要なものが殆どでした。

その時に充分な日本語対応を謳って普及したものが Vine Linux です。Vine Linux を使えば後からわざわざ日本語対応させなくても最初から日本語に対応している、という点がかなり評価されていたように思います。日本国内で Linux を使うなら候補の1番に Vine Linux が上がる、という時代でした (私の周囲だけかも知れませんが…)。

じゃあ今でも Vine Linux は隆盛か、と訊かれると「いいえ」と答えざるを得ません。2017年に Vine Linux 6.5 が release されたのを最後に新しいものは出てこず、2021年には「VineSeed 以外の Vine Linux リリースを終了します」というお知らせまで出ました。(VineSeed は、簡単に言えば Vine Linux の先端です。)

窓の杜でこんな記事もあります。

「Vine Linux」は、コンパクトで軽量な国産Linuxディストリビューション。日本語の扱いに難があるディストリビューションが少なくなかったLinuxの黎明期において、初めから日本語に対応していた「Vine Linux」は扱いやすく、コミュニティでの情報交換も容易であった。国内のLinux普及にもっとも貢献したディストリビューションのうちの1つといえるだろう。
〔中略〕
 現在の最新版は、2017年にリリースされた「Vine Linux 6.5」(Poupille)。最近はリリース版「Vine Linux」のメンテナンスに名乗りを上げる人もほとんどいなかったとのことで、終了はやむを得ない措置といえるだろう。

唯一残っている VineSeed でさえ、例えば Linux Kernel は 5.10.93 です。でも 5.10.93 って2022年1月に release されたものなので、既に1年以上経過しています。言い方は悪いのですが、放置されていると評価されても仕方がない状況です (1年も前の kernel を使い続けることは大変危険です)。


人数が減ってしまった community は衰退の道を進むことになります。誰か篤志家が現れて「オレが支えてやろう」なんて言っても、色々なところで人手が足りていないので、人数が多い communities に追いつくことはほぼ不可能ではないかと思います。

例えば package manager。CentOS Stream では dnf を採用しており、これは rpm → yum → dnf と進化してきたものです。dnf のおかげで、例えば PHP 8.1 と PHP 8.3 とを簡単に切り替えたりできます (yum までは remi の repositories を手動で切り替えたりしてかなり大変でした)。しかし Vine Linux では未だに rpm です。dnf に慣れた身からすると、rpm にはちょっと戻りたくないなあ、と感じます。

まあ、Vine Linux 上で dnf を利用できるようにすることは技術的に可能でしょうが、そのために投入すべき労力量がかなり大きなことが予想されます。


かつて Vine Linux を利用させてもらった身としては、Vine Linux の衰退は寂しいものがありますが、community の人数が減ってしまってはどうにもならないです。


将棋はどうでしょうね。

今の将棋界は、子どもの頃に電子遊戯がなかった世代がかなり中心になって支えています。

皆さんが所属する将棋 community は、「60代+70代」の人数と同じくらい「20代+30代」の人数がいますか? 同じくらいでないとしたら、何割くらいですか?

Vine Linux の例と異なり、将棋人口の変化は割と緩やかです。しかし、変化が緩やかだからこそ、かなり早期に手を打たないといけません。(正直に言うと、「既に手遅れである」という可能性も否定できません。)

かつて将棋は、たいていの男子小学生なら卒業までに1度は遊んだことがある遊戯でした。今、小学校を卒業しようとする男子小学生の将棋経験率はどれくらいでしょうね。過半数ならいいのですが、それも微妙かも知れません。

私はかなりの危機感を持っています。

以前、全駒についてこの blog で取り上げました。

今回、全駒以外の行為も含めて、許容できるかできないか、私の判断を書こうと思います。(なお、私の判断が絶対に正しいというものではなく、人によって・場によって判断基準は異なるものと考えています。) 主に子どもの入門者・初心者を想定しています。

対局せずに棋書を読む
対局せずに将棋漫画を読む
対局せずに学校の宿題に取り組む
対局せず、ボーッとする
対局せずに持参した漫画を読む
会場を走り回る ×
他の子と一緒にころげまわって遊ぶ × (そういう子がいて苦労した教室もあったようです)
対局中の他人に近づく × (片手を伸ばして相手に触れる距離はダメ、と言うようにしています)
他人の対局中の将棋盤が載っている机に触れる × (あまり頻繁に指摘はしないのですが、机に触ると段々対局者に近づいてしまうので、「机に触らないように」と言うことが多いです)
全駒
全駒 (大抵の1手詰を解ける棋力を持つ者が、「投了」を知らない入門者を相手に全駒した場合) (入門者に対して「『もう勝てない』と思ったら『負けました』と言っていいよ」と助言すると思います)
敗者に対し「○年生なのに△年生に負けた」と言う (○>△) × (この発言は許してはいけないと考えています)
敗者に対し「○歳なのに△歳に負けた」と言う (○>△) × (同上)

私の感覚は上記の通りです。

決まりを守り、他人に迷惑をかけなければ、将棋の場では基本的に何をしてもよいと考えています。(ただし、大会の場合は私の線引きがちょっと変わります。)

なお、私に関して「あのオジサン、大人なのにとても弱いんだよー」と言うことは歓迎しています。自己紹介の時でも「この中で私が一番弱いです」と説明しますし、棋力面の侮辱が私に集中すれば入門者が侮辱を受けることが減るからです。

将棋の世界は、小学6年生が幼稚園児にあっさり負けるなんてこともよくあるのですが (そして、その小学6年生が子ども相手に全敗だったりするのですが)、私がその小学6年生に負ければ、場内の侮辱の多くを私が引き受けることができます。対局票の上でも私に対する勝利が記載されて、全敗でなくなります (実質全敗であってもパッと見てすぐには分からないようになります)。

やねうら王の作者さんが、Python からやねうら王を操作する Ayane というものを公開しています。

ここ数年は他にも機械学習関係で Python code が増えているので、ついに Python に手を出してみました。


ただ…私は Ruby 畑の者なので、Ruby 畑の感覚で色々やろうと思っても Python 畑は結構勝手が違うように感じました。

例えば Ruby 畑だと以下のような感じです。

  • package manager は RubyGems + Bundler が一般的。
  • 「abc」という code (program) を書き始めるなら、まずは bundle gem abc と入力して雛型を作り、必要事項を埋めていく。
  • code (program) の文書は YARD 形式で記入することが一般的。ちょくちょく yardoc と入力して文書化率が 100% 近くを保っているかどうか随時確認。
  • code (program) の整形は RuboCop に任せることが一般的。
  • 完成したら package 化しておくと (RubyGem にしておくと) 自分も他人も再利用が楽。

で、最初に Python で標準的な package manager が何なのか調べてみたのですが、どれが標準的なのかよく分かりません。一番よく見かける package manager は pip というものなのですが、雛型を生成する機能が見つかりません。

pip より新しそうな pipenv というものも見つけました。こんな記述

もう pipvirtualenv を別々に使う必要はありません。 両者は連係して動作します。

もあったので、「pip が RubyGems に、 virtualenv が Bundler に対応するのかな」と理解したのですが、それでもやっぱりこの pipenv が学習に値するのか、判断がつきませんでした。(上記の記述とその続きを読むと、まるで pipenv が決定版であるように感じる表現なのですが、自己評価・自己表現というものはかなり盛られていることが多いので、信頼できませんでした。)

さらに調べて「Pythonのパッケージングと配布の全体像」という資料を見つけました。これによると、pipenv が作られたのは2017年のようです。「Bundler が2009年頃に登場していたのに比べると、随分遅いなあ、『事実上の標準』(defact standard) 争いに決着がつくのが遅かったのかな?」と思っていたら、Python の package managers はその後も登場しているようで、未だに群雄割拠時代が続いているのかも知れません。


こういう場合、どれに手を出すと良いのでしょうね。pipenv? poetry? rye? こういうのって、事実上の標準が定まると他は廃れていくので、最初の選択が結構大切です。(Ruby 畑では RubyGem 作成用として Bundler の他にも gemcutter なんかがあったのですが、今では完全に廃れてしまいました。)

思えば、例えば QR code 決済は PayPay の独り勝ちになったので、支部役員内の決済は PayPay を採用しました。

「今から主力戦法を選択しよう」と考えている将棋初心者も似たような気持ちなのかも知れません。多数派の利点は棋書が多いことが挙げられるかと思います。(しかし、あえて少数派の戦法を選ぶという方針もあってよいと思います。)


余談。JavaScript の標準的な package manager である npm はかなりイカレていて、例えばほんの数十行の Vivliostyle 文書を書くだけで約 100MB もの保存容量を消費します (1文書毎に約 100MB なので、10文書なら約 1GB です)。なのに npm の web site には「npm is committed to making JavaScript development elegant, productive, and safe.」なんて書いてあります。いやいや、elegant とは対極でしょうに。自己評価とはあてにならないものです。

Python に手を出す前、「Python の package managers も npm みたいな頭の悪い管理方式を採用していたらどうしよう」という心配をしていました。最初に pip を試してみて、その心配が不要であることが分かり、良かったです。

JavaScript の名誉のために書いておくと、npm より新しい pnpm を使えば、npm による恐ろしいほどの disk 容量浪費を避けることができます。技術的な話はこちらが詳しいです。

…すみません、将棋とはほぼ関係ない話をダラダラと書いてしまいました。

最初に断っておきますが、「この将棋団体は外来者・初見さんはお断り、現在の構成員だけで続けていく」という場合は当てはまりません。

そうではなく、新規参加者を呼び込みたいのであれば、この呟きを読んでいただきたいです。

私のような人見知りマンは、一見で飲み屋に入った時、仲の良い常連で盛り上がっていると疎外感を感じて二度と行かなくなる。これってコミュニティ運営でも起こりえて、あまりにも仲良しで「できあがってる感」が出てしまうと、新しく入ってくる人を自然と排除してしまいかねないのでは。

常連だけで固まっていると、こういう方の情報が入ってきません。

関連する呟き

初心者歓迎って書いてる場所程こんな事が多い気がする

私もそういう気がします。「初心者歓迎」という言葉を「初心者でも気分よく過ごせますよ」という意味じゃなくて「常連ばっかりが固まっているこの場に自ら頭を突っ込んで仲間になってくれる人がいたら、それは歓迎しますよ」みたいな意味で使っている人が少なくないのではないかと。しかも「初心者歓迎」という言葉を書いた人自身にその自覚がない可能性が高そうです。(「私たちが歓迎しているのだから、あなたも当然嬉しいでしょう?」みたいな感覚が見え隠れします。)

表題の「ある程度よそよそしい方がよい」は言い過ぎかもしれませんが、そういう側面はあると思います。少なくとも、常連が場を 100% 支配するようだと新規の方はほぼ入ってこないと思います。

(よければこちらの話も読んでいただきたいです。参加者がどういう気分で時間を過ごせるか、は重要だと思います。)

将棋の対局結果の data 仕様の参考にするため、Portable Game Notation (PGN) の仕様を見つけて見出しだけざっと読みました。

markdown 形式にしてくれればいいのに txt 形式なので、1行の文字数制限のため文の変なところで途切れて Google 翻訳にうまくかかりません。まあ、元原稿がとても古い時代のものなので、仕方ないのかも知れません。(和訳も見つけましたが、2004年時点のものでした。)

前にも書きましたが、PGN 自体が YAML や JSON じゃないので扱いにくいです。

もっと書きやすい形で書けて、PGN にも変換できて、rating の計算もしやすい、という形式を考案中です。

私は十三棋道館に行ったことがないのですが、段級位認定が関西で最も厳しいという噂は聞いたことがありました。

今回、こんな記述を見つけました。

⑤十三棋道館
ここも老舗。日本一厳しい認定。おそらく24と同じぐらい。五段半で大阪府代表レベルなので、ここが一般の七段相当だろう。十三の初段半で24の初段~連盟三段ぐらいか。

本当に「日本一」かどうかは分かりませんが、そう評価されるくらいには厳しいのですね。

大阪府代表になることは近隣県代表になることよりも難易度が高そうに見えますので、その点でも一般的な将棋の場より厳しいのだろうと思います。

やねうら王の作者さんの blog にこんなことが書いてありました

将棋にはジリ貧という概念がありましてな…。(手数はかかるけど初心者でもプロ相手にぼちぼちと金攻めすれば勝てる、みたいな局面)

「ジリ貧」という一般的な言葉だけでは将棋を知らない方には通じにくいと思いますが、括弧内の説明は分かってもらいやすいかと思います。


何年か前から考えていることですが、「強くなりたい」という気持ちがあまり大きくなく、またなかなか強くなれない、という初心者がいたら「ぼちぼちと金攻めすれば勝てる」という戦術を伝えてみるのがよさそうな気がします。

ああ、もちろん、王道は詰将棋などで終盤力を鍛えることだと思います。ですが、そもそも攻めっ気があまりない子もいるのです。

更に言うと、将棋は戦争を模した遊戯であり、戦争は物量で勝つことが基本ですから、と金攻めはそれほど悪い戦術ではないと思うのです。

私は入門者と対局している時に「中盤~終盤で迷ったら、とりあえずと金をたくさん作ってみるのもいいよ。攻めがゆっくりになってしまうけど、悪くはない方法だよ」と伝えることも少なくないです。

最初に、数字の大原則を確認しておきます。

  • 算用数字 (Arabic nuerals) は基数を表す
  • ローマ数字 (Roman numerals) は序数を表す

漢数字は特に決まりがないと思われるので、漢数字で序数を表しても大丈夫だと思います。


次に、将棋の「○段」「○級」は全て「○○が○段と認定しています」「○○が○級と認定しています」であることをここで確認しておきます。

ですので、「日本将棋連盟が免状基準で初段と認定しています」という人と「関西将棋会館道場が初段と認定しています」という人と「○○支部が初段と認定しています」という人と「○○小学校将棋倶楽部が初段と認定しています」という人の棋力が異なる、という現状は脇に置いておきます。(外部者にとっては「初段」の棋力が統一されている方が分かりやすいでしょうが、各団体・各集団にとって観測できる事象がかなり制限されている以上、現状では仕方ないと考えています。)


もう1つ再確認したいことがあります。日本将棋連盟が発行する一番下の認定状は15級ですが、これは「15級より下の棋力は存在しない」ということではなく「日本将棋連盟は15級より下の棋力の認定状を (本部窓口として) 発行しない」ということです。

定義域として棋力が存在しないことと、団体として認定状を発行しないこととは、まったく別のことです。この区別がついていない人を過去に見かけましたので、一応書かせていただきました。


これでやっと本題に入れます。

関西将棋会館道場のように段級差による手合い割を定めている場合、段級差は原則として基数的 (量的) でないといけません。

同段級 平手振り駒
1段級差 下手先
2段級差 香落(左香)
3段級差 角落
4段級差 飛落
5段級差 飛香落(左香)
6,7段級差 二枚落(飛・角)
8,9段級差 四枚落(飛・角・両香)
10段級差 六枚落(飛・角・両桂・両香) 

 

関西将棋会館道場は、それなりの来客数があり、上記の手合い割に基づく昇段昇級規程で段級位を定めていますので、段級位の物差しはかなりしっかりしていると言って良いと思います。(この仕組みで段級位が本当に精度よく線形になるのか、は検証する必要があると思いますが、その話は脇に置いておきます。)

この仕組みがあるので、「小学生の頃に友達とよく将棋を指しました」というくらいの (将棋を習ったことがない) 成人男性ですと道場で15級として手合いを付けてもらっても大抵は負け越すはずです。母集団と物差しを元に段級位を定義しているので、このような (正常な) 状態になります。


ところが、物差しのことを考えずに勝手に段級位を定義する人がいます。その一例を以下に引用します。

前述のように、日将連は、10級からのスタートとしているので、その意味ははっきりしている。将棋のルールを覚え、指すことができれば、10級だ。

この時点で、棋力の存在と認定状の発行を混同していることが分かります。(しかも、この記事の執筆時点で日本将棋連盟は15級の認定状を発行しているので、「10級からのスタート」自体も誤りです。)

おわかりのように、5級とは級位と初段の真ん中である。その上で次のように定義したい。

「将棋の5級とは、最低1冊の棋書(戦法解説など将棋関連の書籍)を読破し、何か一つ、得意戦法を持つことである」
ちなみに初段については、私は、こう定義する。

「将棋の初段とは、対局を終えたあと、初手から投了までを相手の手も含めて再現できることである」

言うまでもなく、こういう定義をすると物差しは破綻します。言い換えると、段級差による手合い割が適用できなくなります。

ピンとこない人のために、温度で説明します。温度表記は「水が氷る温度を0度と定義します」「水が沸騰する温度を100度と定義します」「この2つの定義を元に、等間隔に温度を数値で表します」という仕組みになっています (気圧などの話は無視しています)。

お判りになると思いますが、外から与えられる定義は2つまで許容され、あとは等間隔に目盛りをつける必要があります。

もしも「鶏卵を10分間茹でてちょうど固ゆでになる温度を50度と定義します」というように3つ目の定義が入ってきたら目盛りが狂うことが分かりますでしょうか。温度の定義が非線形になります。


以前、とある将棋大会の段級位認定部門へ私の息子と息子の友人数名を連れて行き、「この子は15級です」と言ったところ、係員から「将棋に15級なんて存在しない、一番下は10級だ」と言われ、対局表を強制的に10級に書き換えられたことがあります。

なお、ここにくる子の多くは関西将棋会館道場の経験者であると思われ、その場合は関西将棋会館道場の段級位を名乗るでしょう。(一般的に、緩い認定による段級位を名乗ることは恥ずかしいことではないかと思われます。)

確か関西将棋会館道場と同じ手合い割を採用していたと思うので、先述の子 (10級に書き換えられた子) は8級の子と香落ちで対局することになります。いい勝負ができそうでしょうか。

ついでに1件、架空の事例を考えてみて下さい。将棋を習ったことがないけど友達同士で指している子をこの段級位認定部門へ連れて行ったとします。ちゃんと統計を取ったわけではないですが、私の経験上、校内で無敵の強さを誇る子でもせいぜい20級、普通の子は25級程度、弱い子は30級以下、という感じです。仮にこの子が25級だとして、係員に勝手に「10級」と設定されて、道場8級の実力がある子と香落ちで対局していい勝負ができそうでしょうか。

1局だけなら我慢できるかも知れませんが、次から次へと不適切な手合い割で対局させられたら、その子はどう感じるでしょうね。多分、8割以上の確率で将棋が大嫌いになって「もう一生将棋なんてやらない」と思うでしょうね。


将棋関係者は、不適切な将棋大会が大量の将棋嫌い児童を生み出していることを認識すべきです。先述のような出鱈目な棋力定義をする人がいて、そのような定義 (特に「一番下は○級」という定義) を妄信的に信じながら物差し的な手合い割を適用しようとする係員がいると、本当に悲惨な状況になります。こういう行動は害悪でしかありません。

どうしても「一番下は10級」「一番下は15級」のようなことをしたいのであれば、以下のいずれかを選んでいただきたいです。

  • X級、XV級、のようにローマ数字で表す。そうすると級位差は等間隔とは限らないこととなり、級位差に基づく手合い割は適用できなくなる。(実態に基づく手合いを組まざるを得なくなり、将棋大会で悲しい思いをする子どもが減る。)
  • 一番下の級に該当する子どもの参加者を大量に集める。私の推測ですが、一番下を「10級」とする場合でも、その「10級」に該当する子どもが20人参加すれば棋力が近い同士で対局が組めるようになり、悪影響が出にくくなります。

でもやっぱり、将棋関係者には物差しによる段級位設定をしていただき「将棋を始めたばかりの人には25級や30級の人がいる」という認識を持っていただきたいです。

入門者に対して将棋界が今までどれほど冷酷な仕打ちをしてきたのか、関係者全員が認識すべきだと思っています。