Windowsのデバイス周りの知識補強

仮想化でまったくWindowsのデバイス周りの知識がないことがわかったので、ちょっと勉強した。主にデバイスドライバのインストール方式(infファイルの読み方)と、どうやってデバイスとドライバをマッチングするかを調べた。

まず、Windowsにおけるデバイスドライバの知識を次の資料で学習。

上でデバイスドライバーの概略を学んで、下で一部の詳細を学んだ感じ。

後は、実際のINFファイルを開きながらINF File Sections and Directivesで、各行の意味を調べていった。他にも色々読んだ気がするけど、特に印象に残ったのはこの辺かな。

VIOSTOR.INFに勉強がてら適当にコメントつけた奴

KVM(Ubuntu12.04) + Windows 8 環境下におけるVirtIOを用いたストレージアクセスの改善

自宅のWindows機がお亡くなりになったので、ここらで一つ仮想化でも試してみるかと、Windows 8をノートパソコン上のUbuntu12.04にのっけた。
今回の記事は、Windows 8の導入方法と、ディスクアクセスの高速化について、技術的な情報も含めながら記載している。

細かい環境は、以下の通り。

CPU : Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz
メモリ : 4GB
ストレージ : SSD 128GB
ホストOS : Ubuntu 12.04
ゲストOS : Windows 8 (DSP版)

DSP版を仮想環境に入れてもライセンス的に大丈夫ということは公式サイトで確認済み。

とりあえず、最初は仮想マシンの仕組みを簡単に勉強するためにエンジニアなら知っておきたい仮想マシンのしくみを読んだ。センシティブ命令をちゃんとトラップしなきゃいけないという知識とかが得られた。

Windows 8 のインストール

まずは、virt-managerをインストール。aptから入れられたと思うけど、何入れたかは忘れた。
virt-managerを立ち上げたら

  1. 新しい仮想マシンの作成
  2. ローカルのインストールメディアからインストール
  3. インストールメディアの場所は「ISOイメージを使用」を選択。Windows 8のDVDから作ったisoファイルを指定する。
  4. OSの種類とバージョンは「全般」のまま放置。これ、なんか意味あるんだろうか。
  5. メモリとCPUを適当に割り当て。ディスクイメージは前もって「kvm-img create -f raw windows.img 28G」で作ったイメージを利用。

これで出来てしまった。すごい簡単。

ただし、一度、インストールメディアの指定で躓いた。最初はDVDから読み込みを指定していたが、それではいつまでたってもインストールが進まなかったので、「dd if=/dev/sr0 of=/tmp/windows.iso」みたいな感じでディスクイメージを作成して、それを指定した。

VirtIOを用いたストレージの高速化

まずは、Virt IOの仕組みについて調べた。KVMは基本的に完全仮想化を行うが、ゲストOS側に、仮想環境であることを意識したドライバを入れることによって、パフォーマンスを大幅に上昇できる。・・・みたいな理屈があるのだが、技術的背景が気になる人は以下の記事を読んで欲しい。


やるべきことは、簡単に言ってしまうと

  • ゲストOS(Windows)にVirtIO対応のドライバを入れる
  • 仮想マシンの設定でストレージの通信方式(?)をVirtIOに変更

の2点。

Windows用のVirtIOドライバは、Windows VirtIO Driversの記事中にあるリンク先にあるvirtio-win-0.1-59.isoに含まれている。色んなサイトも言ってるように、64bit版Windowsは一部の例外を除き署名されているドライバしか受け入れないんだけど、上のドライバはRedHatさんが署名してくれている。

isoの中にはWindows 7とかWindows 8とか、それぞれに対応したドライバが格納されている。格納されているドライバは次の通り。

  • BALLOON.INF
  • NETKVM.INF
  • VIOSCSI.INF
  • VIOSER.INF
  • VIOSTOR.INF

VIOSTORがストレージ用ドライバ。VIOSTORがストレージ用であることを確認するために、VirtIO適用後にデバイスマネージャーからoem1.inf(インストール時にVIOSTOR.INFがリネームされた)がストレージと結びついているのを確認した。

VIOSTOR.INFを眺めてみるとSCSIのためのドライバっぽい。デバイスにはまったく詳しくないので、IDE用のドライバとかじゃないんだー? とか最初思った。なんでSCSIドライバをストレージのために使うかという議論は丁寧なスライドがあったのだが、ぱっと見つからないので、KVM - The Linux Kernel-Based Virtual Machineの上の方見てください。

とにかく、VIOSTORをインストールすればよい。方法として、世間でやられているのは、

  1. ストレージの追加で、新しいストレージをVirtIO方式で接続する(virt-managerのハードウェアの追加、からできる)。新しいストレージとして振る舞うイメージファイルは適当に用意する。
  2. Windowsのデバイスマネージャーでそのストレージのドライバが無い旨が!マークで表現されてるので、そこを右クリックしてドライバをisoからインストールする。(virt-managerからvirtio-win-0.1-59.isoを仮想マシンに接続しているCDに見せかけることができる)

という方式。Windowsインストール時にデバイスをインストールできる場面があるので、そこからも出来ると思ってるんだけど、なぜかうまくいかなかった。(詳細は後述)

こうしてドライバを入れた後は、最後にvirt-managerで先程追加した新しいストレージを削除し、元のストレージの接続方式をVirtIOにしてやればよい。
ね、簡単でしょ?

パフォーマンス比較


上がVirtIO適用前で下が適用後。凄まじい高速化! ここまで速いと高速化前の設定がどこかおかしかったか、計測方法が間違ってるか(どっかでキャッシュが効いてしまってるとか)という気もするがとりあえず速くなった。嬉しい。

つまった所

最初は一向にうまくいかなかった。ストレージをイメージファイルではなくパーティションにして、ドライバのインストールを新しいハードウェアの追加を利用した方法ではなく、Windowsインストール時にインストールする方式で試していた。それらを上記の方法に切り替えたらきちんと動くようになった。わからん

クトゥルフさんとの戯れ その3

GM 「舞台が神社にうつりました. 歩くことしばらく, ひっそりと神社が見えてきます. 手前に長い階段があり, 立ち入り禁止の札がありますがあまり意味はないでしょう」
羽川「人はいますか?」
GM 「本殿の戸は閉まっていますが鍵はかかっていません. 後ここには誰もいませんね. 本殿の入り口に『こけし納め』と書かれている紙がおかれて30体の通常のこけしが鎮座しています. ここで皆さん, 『目星』か『図書館』で判定をお願いします」
多田「成功です」
GM「まず祭壇の中に神主の書記、古めかしい書物、古めかしい書物に挟まれた紙の3つが目に入ります。神主の手記から行きましょう」

神主の手記
『病気が治らないところを見ると今年はもう越せないかもしれない.
とにかく私の一番の気がかりとなっている村まつりのことはしっかりと書き留めておく.
 太平洋戦争末期の坂井村では平崎より疎開してきた児童30人をあずかっていた.
あの頃は空襲が連日のように起きていた. 坂井村には空襲の手が及ばないと考えていたが,
近くで空襲がある際に, 児童たちを洞窟に疎開させていた.
 8月30日, 避難先だった洞窟が崩落.
 児童全員が生き埋めとなって村人総出で救出に向かったが最早手に負える状態ではなかった.
そして翌年8月30日に神かくしが起こった. 疎開児童と同じような年代の子供が全て神かくしにあってしまったのだ.
疎開児童がたたり神になってしまったと考えた当時の村長は先代に頼んでたたり神を鎮めるための儀式を依頼してきた.
この神社は水子の神社として用いられており, 子供を供養するための最適な手順が存在する.
供養するためのこけしは水樹の木で念入りに作られ, こけしの顔に涙のような彫りをすることから
『泣きこけし』と呼ばれていると先代はおっしゃっていた.

 終戦から60年以上たち当時事件に関わっていた人は大勢なくなってしまった.
30本もの泣きこけしを毎年供養場である神社に収め, 昨年収めたこけしを崖に流すという儀式もただの祭に形骸化してしまった.
幸いなことに儀式が村まつりに変化した後も神かくしは起こっていない. それでも村人たちは村に漂う危うい空気を感じているのか
産まれた子供を里子に出す習慣が定着してしまった.
 今年はこけし職人が一人になってしまったため, 30本の泣きこけしが用意できず, 普通のこけしを混ぜて祭を行うことになった.
とんでもない話だと思ったが泣きこけしを一人で何本も作るのは大変だし仕方ない. 私自身も病気で参加できないのだから,
あまり強く言うことも出来なかった. しかし泣きこけしを納め淵に流すという習慣も無くなってしまうのだろうか.

私は心配だ. 形骸かされたその儀式では効力もあてにならないだろう.
そのときたたり神はたたらないだろうか』

工藤「最適解は村人全員を説得して泣きこけし作成祭だったか!でももう時間がない」
八潮「これを書いたおっさんは何でこんなとこに残していったんだ・・・」
GM 「あと2つのものがあります. 古めかしい書物に対して『オカルト』か『考古学』でロールをお願いします」
あきんど「成功です」
八潮「あきんどすげー」
あきんど「考古学者志望ですから」
GM 「では, 20ページの書物に厄除けのこけし制作方法と呪文が記載されています. まずは, こけしに厄除けの効果を与える制作方法. 水樹の木を削る際に呪文を唱えあかしをつけることが条件になっています. 泣きこけしのことですね. そしてもう一つの呪文は水子に取り込まれたときに水子を払う効果を持つとわかります. ここまで読めたあなたはクトゥルフ神話技能を4%贈呈します(ここで呪文の紙を取り出す)」

呪文
『イエ=いあアキキかくぇこーる(以下略)』
みたいなのが大分続く気持ち悪い紙が提示される.

多田「ひー!見るんじゃなかった。これ見ちゃいけないなんかだった」
八潮「これ頼っちゃいけない神様に頼ってるよ!」
工藤「これが水子にとらわれたときに抜け出す呪文?」
GM 「取り込まれたときに水子を払うとしかわかりません」
八潮「今、取り込まれてんのかな俺ら」
あきんど「他の人に教えられますか?」
GM 「いけます」
あきんど「じゃあ他の人に教えます」
工藤「多田, 多田. これも祭りで歌わない?」
一同「笑」
多田「俺もちょうどそうしたかった所だ」
工藤「これ村全体を俺達救えるんじゃねーの」
八潮「作ったこけしを振り回しながら」
あきんど「では, 今まで値切りで稼いだお金を神社に奉納します」
八潮「全てがつながってきたw」

工藤「神社を家捜しします」
GM 「実際のところ大したものはありません. 適当に正方形の建物で, 中の方に仏像があり, 入り口付近に30体のこけしが並んでいます. 他に大したものはないです」
工藤「このこけしは何でしたっけ?」
GM「通常のこけし
羽川「そうか. 今年のこけしはもう納めてあるのか」
工藤「ああ, これが本当は泣きこけしになってるべきなのか」
八潮「去年の時点でダメだったってこと?」
工藤「この中に泣きこけしはない?」
GM 「1個もないです」
工藤「泣きこけしを流すことに意味はあるんですか?手記にはなんと?」
GM「たたり神にこけしを流すことで『今年はこれで勘弁してくだせぇ』と言えます」
工藤「所持した方がいいのか, 流した方がいいのかわかんないなぁ. 持ってたらそれをターゲットに来ちゃうかもしれない」
あきんど「俺は流した方がいいと思ってる」
工藤「流しても30体に満たないから, 『30体中6体は流された. だが24体は襲ってくるでごわす』みたいな展開になりそう」
八潮「そうそう. それでこっちには何も武器がないってなりそう」
羽川「今, 世界には何本あるの」
GM 「12本ですね」
羽川「じゃあ一人1個ずつ流して後は1個ずつ持てばいいんじゃない」
全員「おー!」
八潮「言いくるめで親父から巻き上げるか」
羽川「今から戻れば1個ずつぐらい作れるんじゃない. 生き残るのに全力かけるなら作るべきだよね」
八潮「前の神かくしは夜10時ぐらいだったから俺らの勝負する時間は10時ぐらいか」
羽川「流すのはいつぐらい?」
GM 「広場で祭をある程度やってから淵へ捨てに行きます」
八潮「もう俺ら取り込まれてるようなもんだから呪文を唱えてからいけばいいんじゃない」
工藤「その呪文, ノーリスクなんですかね?」
八潮「リスクあるように見えるんだよねw」
工藤「邪神を呼びだしそう」
八潮「頼っちゃいけないものに頼ってそう」
剛田「すごくSAN値減りそうだから唱えるならその瞬間を狙って唱えた方が」
工藤「その瞬間になってはたして唱えられるのかな」
八潮「取り込まれたってどの段階を指すんだろう・・・. もう幽霊は見てるしさ」
工藤「ロックオンされてことを指すのか, 物理的になにかされるのか・・・」

工藤「では, そろそろ村に戻りましょう. ライブは近い」
八潮「人類史上はじめて, 呪いにたいしてライブで挑むw」
八潮「この歌(呪文の紙を取り出す)を多田が歌ってくれるんで俺らはその歌を聞きながらこけしを作ろう」

ここでSAN値のルールチェックが入りました. SAN値が1時間以内に5以上減ったひとは一時的狂気に陥る可能性があります. また1時間以内に5分の1以上減ったひとは割と長い狂気に陥ります

GM 「広場に戻りました. 村はずれの広場でひっそりと行われている祭りをあなたたちは目撃することができます. 子供がいない祭りはどことなく寂しいです. 祭りを見ていると君たちの周りだけ霧が出てきました. 霧はねっとりと絡みつき不快感を覚えます. SANチェックお願いします」
剛田・羽川「失敗!」
八潮「多田さーん、歌でなんとかしてくださいよー」
GM 「かつて宿で見た霧の顔を思い出してください. 今度は気のせいではすみません. いくつもの顔が霧の中, ぼんやりと浮かんでは消えていきます. 能面のような真っ白の無表情な群れ. SANチェックをお願いします」
八潮・剛田「アウト!」
GM「では1D2のSAN値減少です. ずっと恐怖に耐える君達, 次第に霧が晴れていて気づくと村外れにある大きな淵に来ています」
全員「おおおっ!?」
多田「ライブできずか・・・」
GM 「耳元から複数の笑い声が聞こえます. それは淵の方から聞こえている気がしました. ふと淵の方を見て気づいてしまいます. 淵から何本も何本も真っ白な腕が浮き上がってくることに. そしてその腕にはいくつもの唇と眼が浮かんでいます. ではSANチェックお願いします」
GM 「失敗した方は1D4減少してください」
工藤「2減少」
剛田「4減少」
GM 「ねっとりとした霧にまとわりつかれた君たち. 遠くに子供たちの, 叫び声, 鳴き声, あらゆる声が混じってきます. そして淵からゆっくり, ゆっくり子供たちのスガタが現れた. しかしそのスガタは折り重なり混じり合い呻く肉の固まりとなって何もわかりません. 今その腕は君たちに向かって伸ばされてきました. 戦闘処理に入ります!」
八潮「やばいって!」
GM 「たたり神を見た皆さん、SANチェックをお願いします」
全員「失敗」
GM 「え、成功者なし?では失敗した方は1D10のSAN値減少お願いします」
羽川「8減少」 多田「5減少」 工藤「4減少」 八潮「4減少」 剛田「2減少」 あきんど「これで合計8減少です」
GM「では皆さんアイデアロールお願いします. まず失敗した方は手を上げてください」
八潮・剛田「はーい」
GM「では, アイデアチェックに成功してしまった他の方々は, このたたり神がとても日常にふさわしくない恐ろしいものだとわかってしまいます. そうしてこのようなおぞましいたたり神を見てしまったあなたたちは一時的狂気に陥ります」
工藤「これアイディアチェックに失敗すべきだったのか・・・」

たたり神の登場により怒涛の勢いで心に傷を負っていくプレイヤー達. それぞれ以下の疾患を得ます.
工藤: 一時的な幻覚・あるいは妄想
あきんど: 早口で意味不明の会話
羽川:パニック状態で逃げ出す

そして・・・
GM 「多田さんはSAN値の5分の1以上減ってるので一時的狂気ではすみません. 長期の狂気に陥った. 制御不能の震え. 会話や文書で意思疎通不能になる」
八潮「歌でコミュニケーションだ!」
一同「笑」

あきんど「ぶつぶつぶつ」
工藤「見える・・・」
多田「ぷるぷるぷるぷる」
羽川「全力で逃げ出します」
GM 「(図を見せながら)逃げる先はこっちしかないね. 村側に逃げ出します. では行動できる他の方は素早さ順に行動します. たたり神は素早さは0です」
八潮「呪文を唱えます」
GM「わかりました。唱え終わるのは次のターンです。では多田さん」
多田「ぷるぷるぷるぷる」
GM 「わかりました. では工藤さん」
工藤「うーん, 泣きこけしを投げつけます『う、うわぁああ』」
GM 「祟り神は投げつけられた泣きこけしをいくつもある腕の一つで掴みとり, 内部に取り込みました. ではあきんどさん」
あきんど「多弁病で呪文唱えられますか?」
GM 「幸運の半分で成功したらOKとします」
あきんど「ファンブルです」
GM 「呪文を忘却してしまいます. 思い出すには紙を読むのに1ラウンドかかります」
剛田「呪文を唱えながらこけしを投げます. こけしを投げるのにクリティカル出ました」
GM 「では, 投げつけられたこけしをつかむのにたたり神は必死になり次の行動はありません」
全員「やったー!」

GM 「では、皆さん次のラウンドお願いします」
八潮「呪文が唱え終わりました」
GM 「残念なんの効果も発揮されません」
工藤「取り込まれたって状態にはまだ陥ってないのかも知れない」
GM 「次工藤さんお願いします」
工藤「僕は羽川の後を追いかけます『うわぁぁあ』」
八潮「屑w」
多田「混乱してきょろきょろしてます」
GM 「はーい. 次あきんど」
あきんど「呪文忘れてるので書物を読みなおして思い出します」
剛田「こっちも呪文を唱え終わりました」
GM 「何も起こりません. ではたたり神のターン. 位置が遠い羽川さんと工藤さんは狙いません. あきんどを襲います. 神々の攻撃『たたり』が行われます. 真っ白な腕が手にもった泣きごけしに掴みかかります」
あきんど「対抗します」
GM 「100%失敗ですw. こけしは取り込まれてしまいました」
八潮「こけしで多田を殴って『お前には歌があるだろう!』と言います」
一同「笑」
GM 「こぶし技能で1D3振ってください」
八潮「1点ダメージです」
GM 「殴られた多田さんは・・・. 痛かったですねw」
多田「ふざけんなw」
あきんど「何しようかな」
工藤「心理学であいつの考え読んでよ」
八潮「それやばいアプローチだろw」
多田「成功しちゃったらクトゥルフ力どれだけあがるのw」
あきんど「こけし持ってないんで次こられたら・・・. くそっ, 使える能力がねぇ. 逃げます・・・」
GM 「では、次剛田さん」
剛田「多田さんこけし持ってる?」
多田「持ってるね」
剛田「それを強引に奪いに行きます」
多田「もうなんか周りが敵にしか見えないw.抵抗します」
八潮「まさかのPvPがw」
(判定の結果、剛田が多田への組み付きに成功)
GM 「ここからこけしを奪い取るのは判定なしで出来ます. 窒息したりマウントポジションで殴りつけるのは判定がいります. どうしますか?」
工藤「一人の生贄がこけし何本分になるかって話ですよねw」
八潮「一人は一本なんじゃないw」
剛田「では, 組み付いて多田を引きずって逃げます(クリティカルで成功)」
羽川「おおっ!?」
GM「はい, 逃げました」
八潮「えっ, じゃあ俺が最前線w」

2ターン目終了. この時点で全力ダッシュの羽川, それを追う工藤, そこに剛田と多田が続くという状況です. 八潮はたたり神の前で一人立ちつくしています.

GM 「全員回りましたね? たたり神は八潮のこけしを奪っていきます. ではあなたがたのターンです」
八潮「逃げますw. 引きずってるあいつよりも速く!」
GM 「先頭の羽川はそろそろ広場に到着します. さて, では全員逃げ続けるだけですね. たたり神のターンです. 一番近い八潮を取り込みます. たたり神となった子供たち, 彼らの全てが君に助けを求めてきます. それは常人には耐え難い苦痛でした. SANチェックをお願いします」
八潮「成功です」
GM「おめでとう. 1点ダメージです. 次はそちらのターンです」
八潮「呪文を唱えます」
GM 「逃げてる人たちは逃げ続けるでいいですか?」
剛田「あっ、こっそりこけしを奪い取りたいんですけど」
工藤「取らなくていいんじゃない? 多田がもう持ち物扱いだし」
多田「こけしと人で自機が二つw」
剛田「じゃあいいです」
GM 「では呪文を唱え終わりました. そうするとたたり神はその身を大きく震わせ, そのスガタを徐々に徐々に消していきます. 怨念は浄化されました」
一同「ええっ」
GM 「いくつもの波紋があがりこの60年で奉納されてきて1000本以上の泣きこけしが浮かび上がってきます. あまりにも多すぎるその光景は君たちの心身に激しい衝撃を与えるに充分でした. SANチェックをお願いします」
多田「失敗」
GM 「1D3引いてください」
羽川「これで終わり?」
GM 「はい, 八潮さんの素晴らしい呪文によりたたりは消えました」
多田「八潮さんあざーっす」
八潮「錯乱した仲間を殴って逃し、俺が足止めして浄化した感じw」

〜エピローグ〜
GM「君たちは夏の奇妙な体験をしました. 君たちが懸命に話せば話すほど周囲の人は真面目に受け取って合ってくれません. でもあの出来事が現実にあったとはっきり確信できます. なぜなら, 坂井村で作った泣きこけしを淵で失っていたからです. その後, 坂井村は完全な廃村になりました・・・. 泣きこけしはただのこけしに戻りました」

あきんど「俺がレポートを書きます. 技能レベル超高いんで優秀なレポートになると思います」
多田「この呪文もつけとこうw」

感想

あらためて録音を聞き返してみると笑いの絶えない楽しいTRPGとなった.
ロールプレイにはまだまだ難があるもののもう少しやってみたい.
このように書き起こすとGMの努力の跡が見て取れるのも面白かった.

クトゥルフさんとの戯れ その2

(※はじめの方は録音がないためかなり適当です)

GM 「夜が明けました. 皆さんに残念なお知らせです. 村へ続く唯一の道が土砂崩れによって塞がってしまったということが宿の主人から伝えられます」
羽川「閉じ込められた?」
GM 「一応, 本日中には重機が来るらしく, 明日には帰れそうです」
工藤「明日まで生き残れれば・・・. でも, もうレポート的には調べることとか無いんじゃないですか?」
羽川「もうちょっと図書館とか調べようよ」
工藤「うーん, 個人的にはレポートはもういいんで, この胡散臭い宿の主人を調べたいんですよねぇ. 出ていったふりして『隠れる』で宿にいようかな」
羽川「あー, でも『隠れる』ならこっちの方が高いよ」

しばらくの話し合いの後, 羽川が宿に残り, レポートを進めるための図書館組(あきんど・八潮)と, 暇そうな小中学校組(工藤・剛田・多田)に分かれることになりました.

GM 「さて, 宿を出発する皆さん, 『目星』か『聞き耳』でロールお願いします. 成功した人には子供の笑い声が聞こえます. 周りに子供はいないように見えます」
工藤「怖い・・・」

GM 「では, 小中学校組から進めていきます. 小学校・中学校ともに現在は廃校になっているため, 人の姿はありません. 長らく使われていないこともあり, かなりくたびれた印象を受けます」
工藤「小学生いないなら来た意味ないな・・・」
GM 「さて, 皆さん『幸運』で判定お願いします」
多田「成功です」
GM 「では, 皆さんが小学校をぶらぶらしているとこけし屋のおじさんが通りかかります. 『こんなところで何をしてるんですか? ここはもう使われてないですよ』」
多田「なんか全然子供いないっすね. いつ頃からいなくなっちゃったんですか?」
八潮「すごい, 多田が聞き込みをはじめたぞ」
多田「さすがに昨日からこれだけ怪奇現象おこれば気になるよw」
GM 「こけし職人のおじさんが答えます. 坂井村はずっと過疎の一途を辿っているんですが, その原因となった昭和20年ごろの太平洋戦争のときに一気に子供がいなくなりました. おじさんは戦争で子供がたくさん亡くなってしまったと悲しそうに語ります」
工藤「今, 何年なんですか」
GM 「2010年ぐらい」
剛田「小学校が最後に使われていたのは?」
GM 「20年から30年ぐらい前ですね」
多田「では一気にゼロになったわけではないのか」
工藤「卒業した子供はどうなったんですか」
GM 「基本的にこの村にいます」
多田「うーん, 泣きこけしの歌ってなんなんですか?」
GM 「こけし職人のおじさんの先代から教わったもので, 泣きこけしを作るには必ず歌わなければいけないと言われています. 物凄く体力を必要とするためこのおじさんはあまり泣きこけしを作りたがりません」
工藤「何か気になるなぁ・・・. 昨日, 霧は見ましたか?」
GM 「おじさんは特に見ていないと答えます」
工藤「心理学で嘘をついていないか判定します」
GM 「工藤さんはひぐらしの鳴き声に気を取られてこけしおじさんの顔をよく見れませんでした」
一同「ファンブルw」
工藤「みんな! ひぐらしがうるさいぞ」
八潮「あの高校生探偵使えないw」
工藤「じゃあ僕らは小学校を探検します」

GM 「では, 舞台を役場に移します」
あきんど「図書館で本を借りに来ました. 図書館使っていいっすか」
GM 「いいっすよ. 何調べます?」
あきんど「レポートに使えそうな村の歴史を調べます. 『図書館』89で調べます」
八潮「俺の『図書館』は25だ」
あきんど「成功です」
GM 「判定に成功したあなたは二つの情報を手に入れます. 昭和20年の9月1日に戦災者が出ています. 坂井村近辺での被害は非常に大きく, 坂井村では防空壕が崩落しました. 避難中の疎開児童30名が死んでいます」
羽川「ああ疎開先だったんだ」
GM 「はい. もう一つ昭和21年8月20日, 坂井村で神隠しが起こります. 村民23名が行方不明. 全員20歳に満たない未成年です. 警察は組織的な誘拐の可能性を示唆して村民に呼びかけています. 当然未解決です」
八潮「防空壕の場所について調べます. (コロコロ)失敗」
GM 「検討違いの場所を探してしまいます. あと調べられるのは1回ずつです」
あきんど「なぜこけしがこの村の伝統になっているか調べます」
工藤「あきんど優秀だなぁ」
あきんど「ファンブルですw」
工藤「褒めた途端これかよw」
GM 「ファンブルしたあなたは本を崩してしまい, 八潮さんの探索する時間は亡くなってしまいました. これで大体昼頃ですね」
工藤「では, 集合場所に行くか. そろそろ宿に行かないと羽川さんが死んじゃうかも」
GM 「ああ, 羽川さんは3時間ぐらい膝を抱えて待機してました. 何も起こっていません. 今11時過ぎぐらいです」
八潮「みんな宿に集合で」

工藤「じゃあ情報を共有しましょう」
あきんど「昭和20年に戦争があって, 外から来た疎開児童が30人死んだ. そして, その翌年に神かくしが起こった」
八潮「神隠しが起きたのは何日だっけ」
GM 「8月20日ですね」
八潮「近い・・・」
あきんど「帰りたい・・・」
羽川「地元の子供が死んだって話はあった?」
八潮「村人の子供が死んだかは言ってない」
羽川「口減らしのためにこけしを作ってるんじゃなかったっけ?」
八潮「それはただのこけしの由来. 知識ロールでこけしは一般的に口減らしのためとわかった. なんだけど, お祭りで供養のためと口走った奴がいる」
工藤「これについて, こけし屋の親父を追求したけどはぐらかされた. でも, この戦災の話をはぐらかすのは不自然なんですよね. これを隠す必要は無いから他に隠してることがあるはず. あと, あの親父は霧を見てないと言い張っている. これも追求しようとしたけど, ひぐらしがうるさくてわからなかったw」
八潮「レポートとしては, 泣きこけしの始まった時期が欲しい. 好奇心的にはお祭りの由来とか知りたい. 図書館を調べきってないからもうちょっと漁れば何か出てくるかも. 図書館は結構難易度高いから能力が高い奴が行く必要あるんだよなー」
羽川「心理・博物・生物・コンピューターが75以上あります」
八潮「重機械操作なんかじゃなくて図書館を取っておけばよかった」
剛田「広場で祭に関する聞き込みも必要だと思う」
工藤「そういえば, この宿にこけしってあるんですか?」
GM「飾ってますよ. カウンターの裏に」
工藤「それは泣きこけしですか?」
GM「違いますよ」
工藤「この村では泣きこけしはあまり飾らないんですか?」
GM「全員, 目星ロールお願いします」
剛田「成功です」
GM「成功したあなたは泣きこけしがあまり飾られてないのに気づきます. 少なくとも今まで通ったところに泣きこけしは見かけていません」
工藤「名産なのに飾らないんですか?」
GM「泣きこけしは作るのに体力がいるのであまり作られないんですよ」
八潮「俺ら簡単に作ったのにw」
GM「あと最近, こけし職人が一人亡くなっておりもう一人しかいません. それでこけしを作れる量の絶対数が少なくなりました」
工藤「なんなら僕の泣きこけしを飾りますか?」
GM「それなら店の主人は『ください』と嬉しそうです」
工藤「じゃあ僕のださい泣きこけしをあげます」
多田「泣きこけしを理由をつけて放棄しやがったw. 何かに感づきつつある」
GM「宿でこれ以上何かしますか?」
多田「主人は神かくしについて何か知りませんか?」
GM「話した以上のことは知りませんね」
八潮「こけし屋はやめて雑貨屋のおばちゃんに聞きに行く? こっちは神隠しのときに生まれてる可能性があるぞ」
多田「まぶしそうに目を細めて怪しかったしなw」

方針がなかなか定まらないパーティー. レポートを書くべきか? 心霊現象を追うべきか? で右往左往していました. ここで業を煮やしたのかGMから新たな情報が

GM「多田さんはさっき小学校に行きましたよね? 『目星』ロールお願いします」
多田「成功」
GM「成功したあなたは広場にギターの舞台を設置してくれる筈だったのが, 広場にそんな様子が全くないことに気づきます」
全員「うおー!」
多田「ぷるぷるぷるぷるぷる(怒りにふるえる). ちょっとクレームしにいく必要があるようだな. 俺は広場の連中にわからせてくるわ」
剛田「広場では怪しい行動をしていないからマイナス補正がかからない. 聞き込みやるなら広場が一番よさそう」
八潮「値切ったことがあるやつは敵だからなw」
工藤「ミュージシャン一人じゃだめ?」
八潮「ミュージシャンはこれから俺らとは違うミッションに入るからw」
工藤「僕も広場へ行きます」
あきんど「じゃあ残りのメンバーでこけし工房と図書館に行きます. あきんどと羽川が図書館. こけし工房へは八潮と剛田で」

GM 「では, まず図書館から処理します」
羽川「図書館に言って役場の人に『神かくしについての資料があるか』訪ねます」
役場「さっきあきんどが探していたような資料を提示されます」
羽川「役場の人は特に何もしらない?」
GM 「そうですね」
あきんど「心理学でチェックしましょう」
GM 「では, 嘘を言っているようには感じられませんでした」
羽川「その人の年齢は?」
GM 「40ぐらいです」
あきんど「神かくしについて聞いたことあるか訪ねます」
GM 「新聞記事ぐらいですね」
あきんど「僕達こけしについてのレポートを作成に来たんですけど、それについて役立ちそうな情報を紹介してください」
GM 「泣きこけしは水樹という名の特別な木を使っており, それが故に水子の供養に用いられています. このあたりには名産品として水樹がたくさん生えています」
八潮「水子の供養に泣きこけしを使ってるのは事実なの?」
GM 「事実です」
あきんど「では, 泣きこけしを何時頃作り始めたか調べられますか?」
GM 「昭和20年頃からです」
あきんど「戦災があったころかー」
羽川「由来はわかりますか」
GM「本には書いていません. 祭で流すという事はわかります. そもそも本日行われる祭は水子の供養のために行われている祭です. そのときに戦災でなくなった子供を供養するために泣きこけしを30体作って流すという習慣があります」
あきんど「爆撃は本当にあったんですか?」
GM 「爆撃があったという事実は言い伝えでのみ残っています. そして次の年には神かくしがおこっています」
あきんど「うーん、怪しい」
工藤「神かくしは本当にあったのかなー。他に原因があるんじゃないか疑ってしまう」
多田「俺はオカルトを結構信じてるけどな」
羽川「この村にいるのはだいたい40台から60台ぐらい?」
GM 「そうですね」
羽川「それより上の人はいない?」
GM 「雑貨屋のおばあちゃんとか広場で作業している人の中にそれ以上の人がちらほらいます」
羽川「さすがに子供が一人もいないのはおかしくない? 例えば村の年ごとの人口統計情報とかありますか?」
GM 「出生率がだんだん減っていることが役場の人に教えられます. また若者がこの村に定着しなくて出て行ってしまうと伝えられます」
羽川「子供がいなくなったのはわりと最近?」
GM 「もうちょっと古いですね。小学校が廃校になっていることからもわかるように, ここには子供は残れないんですよ. だから小学生ぐらいの年齢になったらみんな外に出します. だから10年ぐらい前からいないんですね」
あきんど「盆なのに帰ってこないなんて薄情だなー」
羽川「盆じゃん!なんで帰ってこないの」
GM 「なんででしょうねー」
工藤「僕らも帰ってませんけどねw」
あきんど「毎年のことですか」
GM 「そうですね」
羽川「正月もこない?」
GM 「正月はきます」
羽川「生きてはいるのか」
八潮「神かくしがあった時期のそばには帰ってこないか」

GM 「では次こけし屋で」
八潮「先代の人って今何してるんですか?」
GM 「こけし職人は顔を曇らせて答えます. 先代は泣きこけしを作るのを最近まで手伝ってくれていたんですが今年の頭くらいに老衰で亡くなってしまいました」
八潮「お詫びにもう1個こけしを作らせて頂きます」
GM 「こけし職人は喜んで隣の部屋につれていってくれます」
剛田「原料はどこからとってくるんですか」
GM 「この辺りに群生しています」
剛田「いつ頃から泣きこけしを作っているんですか」
GM 「昭和20年ごろからです」
八潮「実際に泣きこけしはどれぐらい作ってます?」
GM 「基本的に毎年30本作っていました. 今年は先代もなくなり, 私も衰えてしまったので全然数が足りてません」
全員「おおおお, やべー!」
剛田「今, 何個ぐらいなんですか」
GM 「2個」
全員「やるきねーw」
八潮「そりゃ先代も死ぬわ」
多田「俺らの方が作ってるよw」
GM 「もう30本作るのは無理だと思って心が折れてますね」
八潮「じゃあ俺手伝いますよ。機械修理得意なんでw」 
GM 「今から作ると夜になりますよ」
八潮「何時集合?」
工藤「6時には祭なんで4時ぐらいにはみんな来て欲しい」
八潮「じゃあ4時まで作ります? 4時までだとどれぐらい作れますか?」
GM 「精神力使いきれば6本ぐらいかなぁ」
八潮「じゃあ4本ぐらい作るんで多田の分と工藤の分2本タダでください」
剛田「僕も同じだけ作ります」

GM「ちょっと現在の泣きこけしの場所を確認します. 持ってる人が八潮・剛田・あきんどですね. 後, 宿に1本」
あきんど「今何時ぐらいですか?」
GM「図書館組は14時半ぐらいです. こけし工房組もとりあえず14時半まで行動しましょう. こけしを2本を作ってください」

工藤「じゃあそろそろクレーム組でw」
多田「お前は冷静になれよw」
GM 「はい, お願いします」
多田「どういうことっすか? 昨日、ライブの設営してくれるって言ったっすよね?」
GM 「広場には設営の約束をしたおじさんがいないので事情がわかりませんね」
工藤「ちょっと祭のスケジュールを教えてください。何をするんですか?」
GM 「決まったスケジュール表はありませんが, 日が沈むぐらいにはじまり, そこから盆踊りや屋台めぐりを行い, 日が沈んだ7時半ぐらいに淵へ行きます. 淵は崖の下を川が流れてるイメージです. そこで毎年30本の泣きこけしを投げ入れます」
工藤「今年は泣きこけしが足りていませんがどうするんですか」
GM 「普通のこけしで代用すればなんとでもなるだろうとこの人が思っています」
工藤「広場にいる人のお子さんはどうしてらっしゃるんですか?」
GM 「広場にいる中では子供がいる人はいません」
工藤「子供いない話に突っ込むのはマナー違反っぽいなぁ。じゃあとりあえず『連絡ミスがあったみたいなんですけど, このミュージシャンの舞台を作らなきゃいけないんですよぉ』」
GM(村人)「何かするんですか?」
工藤「泣きこけしの歌を歌うって話になってます」
GM 「うーん, メタな話をすると前回のおじさんは言いくるめられた後, アイデアロールに成功して『いやいや、常識的に考えてありえないだろ』と正気にかえりました」
一同「笑」
GM 「ですから, この二人も言いくるめても後に正気に帰ります. 本気で設営させたければ説得ロールで数時間かけてちゃんと説得してください」
工藤「じゃあ説得でステージを作らせます!」
GM 「説得は本当に時間がかかるので15時半ぐらいまでかかりますがいいですか?」
多田「いいんじゃないやることないし」
工藤「いや, 僕らが駄菓子屋に行くって手もありますよ. でも僕は多田さんのプロデュースがしたいんで」
GM 「では説得で判定してください」
工藤「成功」
GM 「おめでとうございまーす。えんえんと解き続けた貴方は最終的に成功し、ステージ作成を確約させることに成功しました」
多田「どうしてこうなったw」
工藤「よし, 俺はここでこいつらを説得してるから, お前は曲の練習でもしてろ」
八潮「説得してる最中なのに曲の練習はじめるとか挑発みたいだw」
工藤「広場組おわりでーす」

あきんど「では図書館を調べ終わった組が駄菓子屋にいきます」
GM 「おばあさんがのんびりと眠そうにしてます. 何聞きます?」
羽川「神かくしの詳細を聞きたい。神かくしはどんな事件でした?」
GM 「おばあちゃんは神かくしで自分の子供をなくしているため, 悲しそうな顔で話しはじめます. 本当に何がおこったかわからなかったそうです. 8月20日の午後10時ぐらい, それぞれの家にいた子供たちが一斉にいなくなりました. どの子供も大人が少し目を話している隙に一瞬で消えています」
羽川「時間は大体一緒?」
GM 「はい」
工藤「これ人類の力こえてるなぁ。。。」
あきんど「山狩とかはしましたか?」
GM 「はい. 特に警察は組織的な犯罪を疑っていたため, 色んな人に聴きこみをしましたが最終的に迷宮入りしました」
羽川「消えたのはみんな20歳以下? 20歳以下で消えなかった子供もいる?」
GM 「はい, みんな20歳以下で, 消えなかった子供はこの村にそのとき村にいなかった子供だけです」
あきんど「帰りたい」
羽川「すごい怖いんだけどこれw. そのとき被害に合わなかった子供は返ってきてしばらく村にいたんですか?」
GM 「はい. そして翌年からこの時期に祭を行うようになりました」
羽川「そのときの泣きこけしの数は30?」
GM 「はい」
剛田「あー」
工藤「まずい」
あきんど「足りない。。。」
多田「俺達の最適行動は, 工房で延々こけしを作ることかw」
八潮「今, 全力で作ってるよ!」
工藤「もう間に合わない死んだw」
あきんど「つまり23人が亡くなったのは戦災でなくなった孤児の呪いだって考えてるってことですか?」
GM 「はい. 全くそのとおりです」
八潮「あー」
GM 「そこまで話したおばあさんはそういえば君たちも子供だということに気づきました. 神社にいってお祓いをしてもらったらと勧めてきます」
多田「おばあちゃん優秀ー!」
GM 「この村には亜子神社というものがあって, もともと水子の供養のために色々やっていました. あなたたちもそこでお祓いすると死相も抜けるだろうと行ってきます」
羽川「おばあさん、この辺で子供の声聞こえたりしない?」
GM 「おばあさんはよくわからないという顔をします. そして, その話を聞くとおばあさんはちょっと必死そうな顔で亜子神社に行って来いといいます」
あきんど「では, こけし工房と広場を経由してみんなに声をかけつつ神社に向かいます. 今何時ぐらいですか?」
GM 「15時半ですね」
八潮「じゃあ俺らはこけしを更に1本ぐらい作れてる?」
GM 「そうですねw」
あきんど「では一刻もはやくこけし工房に知らせていきます」
工藤「そうすると二人が取り憑かれたようにこけしを作っているw」
八潮「お前らもどうだ!楽しいぞ!」
あきんど「この二人にお祓いにいかないとやばい旨を伝えます」
八潮「こいつが必死そうなんで俺も行きます。もらう分の2本を肩に担いで出発します」
剛田「こっちは自分の分を1本持って, 2本置いていきます」
あきんど「では, この4人で広場へ向かいます」

工藤「そう、そこにギターは向こうに置いてくださーい。ステージには一人で立つので広さはいらないですー」
一同「笑」
GM 「では, この辺に舞台ができましたw」
あきんど「ここで俺が血相を変えて, お祈りにいかないとやばいと伝えます」
工藤「別に祈ってもいいんだけど, 呪いの射程範囲まで逃げる選択肢はないの?」
羽川「でも, 詳しい範囲は聞いてないんだよね」
工藤「お祈り加護を受けつつ道沿いにダッシュすれば二重に加護がついて死にづらくならないかな」
あきんど「僕はこの谷にこけしを流さないとやばいと思ってるんで」
多田「でも俺は歌を歌うから残るぜ」
工藤「悪い!祭り行こう」
八潮「俺も自分が作ったこけしの行く末を見届けたい」
工藤「じゃあみんなでお祈りにいきます」
八潮「ではこけしを配布して, 全員装備します」

今や漠然とした幽霊への怯えは, かなり具体性を帯びた呪いへの恐怖と変わりました. 果たしてパーティーは生き残ることが出来るのでしょうか?
その3へ続きます.

クトゥルフさんとの戯れ その1

先日, 都内某所で友人たちと「クトゥルフの呼び声」と呼ばれるTRPGをプレイしました. これはそのリプレイです. 初心者GMと初心者プレイヤーによるプレイなこともあり, 完全に内輪向けコンテンツになっています。

なお, 一部録音してないところ(特に序盤)を記憶で補完したり, 読みづらいところや口調などを一部改変しているので, 不当だと感じた参加者の方は言ってくれれば修正します.

イントロダクション

休日だというのに早朝(10時)から集まった我々は期待と不安を抱いていた. TRPGとはいわば紳士のスポーツであり, 何かにつけては「それって儲かるんですかね?」と言ったり, 麻雀で山牌が見えれば容赦なく一発リーチをしたりするカス共には不向きな遊びである. それに加えて「ロールプレイング」である. 自分に正直なこの連中に果たしてそれが可能なのだろうか・・・.

そうしてキャラメイキングが始まった. まず, GMゲームマスター)から背景が説明される.
GM「皆さんは夏休みの課題として伝統工芸について調べるため坂井村に行く高校生の集団です. それを踏まえてキャラクターを作成してください. まずサイコロを振ってパラメーターを決めます. STR(力)は3d6(6面ダイス3個の合計)、APP(魅力は)・・・」
パラメーター, 職業(○○志望の高校生), 技能(言いくるめ・聞き耳など特定の技がどの程度成功するか)を各自決定し, シナリオが始まった・・・.


PC1「大阪出身のあきんどです. 商人の家に産まれましたが跡を継ぐのが嫌で, 考古学者志望として勉強してます. 技能は『考古学』が81, 『値切り』が89です. 『ロシア語』も話せます」
PC2「警官志望の剛田さとしです. 『マーシャルアーツ』が60あって, 『組みつき』も85あります」
PC3「(有名探偵っぽく)工藤真広, 探偵です. 他人の秘密を暴くことに快感を覚えるタイプです. 『言いくるめ』と『鍵開け』が70あります. 『法律』にはあんまり詳しくないです」
PC4「ミュージシャン志望の多田です. ミュージシャンを目指していますが, にわかなので『音楽』技能は55しかないです. あとミュージシャンなので『跳躍』を60にしてます」
PC3「いつでも跳んでください」
GM 「そのときはダメージ判定をお願いしますw」
PC5「東京都出身の八潮です. 銀の匙を読んで農業作業者に憧れています. でも, 朝起きるのが嫌なんで普通の高校に通ってます. あと, 動物とか臭いの嫌なんで技能は『機械修理』とか『重機械操作』とか伸ばしてます. 『信用』が79もあります」
PC4「なんでこんな奴信用するんだw」
PC3「こいつ, 銀の匙から何も学んでないw」
PC6「羽川と申します. 女子高生16歳です. 将来は世界を放浪したいです. 勉強熱心なので『心理学』, 『博物学』, 『コンピューター』が82あります. あと, 普段学校行ってないので『隠れる』と『しのび歩き』が高いです」
PC5「放浪したいって前向きだね」
PC4「なんで学校行ってないと『隠れる』が高いんだ?」
PC5「親に学校行ってきまーすって言いつつ家に隠れてるんじゃないw」
PC6「やっぱ女のロールプレイできないから男にしようw」

シナリオ開始!

GM「じゃあはじめまーす」

拍手が終わるとGMに関する簡単なルール説明がなされました. 4面ダイスの読み方とか.

GM「では皆さんは同一グループとして坂井村へ泣きこけしの調査へ向かいます. 皆さんが乗ったバスはガタゴトと音を立てながら山道を登っていきます」
工藤(PC3)「おい、多田ジャンプしろよー」
多田(PC4)「イエーイ! イエーイ!」
GM「皆さん『目星』でロール(成功判定)お願いします」
あきんど(PC1) 「成功しました」
剛田(PC2)「クリティカルです」
GM 「成功した皆さんはバスには他に誰も乗っていないことに気づきます. お盆で子供たちが村へ返ってきそうな時期にも関わらず誰もいません」
一同 (不穏な気配にざわつく)
工藤 「少子化が酷いなこの村はw」
GM 「更にクリティカルした人はこのバスが1日1本だと知っています」
多田「やっべ!これ殺人事件とかおこるながれだわ(クリティカルで成功した)」
工藤「また多田が何か言ってるよw」
多田「信用無い! 仲間に対して『言いくるめ』使わないとw」
GM 「そうこうしているとバスはバス停につきました. うるさいひぐらしの鳴き声と照りつける太陽が迎えます. ここから見渡せる範囲に広場と宿が見えます. さてどうしますか?」
工藤「とりあえず宿に荷物起きましょう」
多田「いいんじゃねいいんじゃね」
工藤「お前はジャンプしてろよ」
多田「いえーい」
GM 「宿の主人が皆さんを迎えてくれます『暑いところよく来てくれた』. 主人は全然人が来なかったのでとてもうれしそうです. 地図を渡してくれます(GM, 紙に描いた地図を出す)」

GM 「バス停は皆さんが来た場所ですね. 役場は図書館が併設してあり調べ物が可能です. 小中学校は子供が一切いなくなって廃校になっています. 広場では明日13日の夕方から行われる祭りの準備が行われています. こけし工房は, 皆さんこけしの調査に来ているのでメインとなりそうな場所ですね」

工藤「主人の絵下手だなw」
八潮「重機械はどこに? これGMの村モチーフなんじゃないのw」
GM「わりとそうですねw」
羽川「あれ? 洞窟にこけしがあるんじゃないの?」
GM 「洞窟!? そんな設定あったっけ」
多田「こいつはやくも放浪したがってるぞw」
羽川「完全にこけしの祠があってそれを見に行く話かと思ってた」
工藤「何も把握してないw. だから学校来てない奴は嫌いなんだよ」
八潮「先生の話聞けよ! 学校の宿題で洞窟にいくってRPGかよ」
GM 「宿の主人が帽子はいらないかと聞いてきます. 熱いので麦わら帽子が3つ常備されています」
結局, 八潮, 剛田, 羽川が装備するとこに

あきんど「とりあえず宿を値切ります」
GM 「宿は一泊一人8000円になります」
工藤「客が少ないことをいかして値切ろう」
あきんど「成功です」
GM 「では店の主人が渋い顔をしつつ『6人も来てくれたんだからおまけしましょう』と一泊7000円にしてくれます」
工藤「よし, 二人目の値切りだw」
GM 「二回目の値切りなら達成度に-30でふってください. こんな風に達成値ボーナスは色々つくのでロールプレイを考慮します」
八潮「所持金って概念あるの?」
GM 「一般的な額を持ってるという事で」
八潮「値切ることに何の意味がw. サイコロをふる練習かw」

GM 「ここで時間はだいたい昼をまわったぐらいです. 行きたい場所を指定してください」
あきんど「とりあえずこけし工房では」
工藤「えー小中学校からいこうよー」
あきんど「でも廃校ですよ」
多田「俺, 広場で音楽やりてーんだけど」
剛田「せっかくだし洞窟いきましょうよw」
多田「てめえらは課題やってろよ!俺は遊びてーんだよ」
八潮「なんでみんなで来ちゃったんだろうw」
工藤「課題をやる組と遊ぶ組で分けよう. 多田とかいても役に立たねーだろw」

ここでパーティーは, こけし工房へ行く課題をやる組(あきんど, 工藤, 八潮, 羽川)と広場へ行く遊ぶ組(剛田, 多田)に別れました.

GM 「では, 広場から先に処理していきます. 広場へ行った二人は櫓や屋台を準備中の村人に遭遇することができます. 目星か人類学を振ってみてください」
剛田「(コロコロ)成功です」
GM 「成功したあなたはこのあたりに子供が一切いないことに気が付きます. お祭りの準備をしているのは40台か50台ぐらいのおじさんばかりです. 屋台も2, 3個ちらほらあるぐらいですね」
羽川「もうダメだ」
多田「若い人全然いねーっすねーw. この村大丈夫ですかぁ?」
一同「失礼だー!」
GM 「かなり嫌そうな顔をしておじさんが答えてくれます. 『子供はほとんどいなくなって年寄りばかりになってしまったんだ』」
剛田「なんでいないんですかぁ?」
GM 「ロールプレイが最悪なので信用か言いくるめの-20でお願いします」
多田「成功しました」
剛田「失敗です」
GM 「多田の話なら聞いてくれそうです」
多田「大丈夫ですよ!明日の祭りは俺の音楽で盛り上げます」
一同「(笑)」
GM 「じゃあわかった舞台を用意しておこうw」
多田「明日は俺のロックで決めてやるぜ! ギターを持ってきています」
GM 「情報が欲しいと言っていた方が失敗してしまった」

GM 「次はこけし工房です. こちらにはムキムキのおじさんがいます. そのおじさんがいる受付の後ろにこけしが100個ぐらいずらーっと並んでいます」
八潮「とりあえず, こけしの由来を教えてください」
GM 「おじさんがこけしの由来を教えてくれます. こけしは昔子供がいない家庭に子供が授かるように願いをこめて作られたもので, 子供を削ると書いて『子削し』とよみます」
八潮「子供を・・・削る. それ削ってません?w」
GM 「削ってるのは木だから大丈夫ですw. ここで知識-20かオカルトで振ってください. 成功した人はこけしについて更に次の情報を知っています. 昔, 口減らしのために子供を減らしていた時代がありました. そのとき間引きや水子の供養のために作られたこけしというものが存在します. そっちの方のこけしは子供を消すとかいて『子消し』です」
工藤「(成功した)今回の宿題には関係ないかw. こけし業者はいくらぐらい儲かるんですか?」
GM 「おじさんが渋そうな顔で全く儲かってないことを教えてくれます」
あきんど「これは経済状況も踏まえたいい課題になりますね」
工藤「レポート用に写真が撮りたい」
GM 「写真が撮りたいというとおじさんは嬉しそうに服を脱いで筋肉を見せてやってきます」
工藤「そういうのいいんで」
GM 「おじさんはさみしそうな顔をしてぎりぎり写りそうな位置に立っていますねw」

GM 「さて, こけし体験ツアーの張り紙がおじさんの後ろに貼っています. 2500円なり」
あきんど「今, 何時ぐらいですか?」
GM 「14時半ぐらいです」
あきんど「行きましょう. 『値切り』で」
GM 「おじさんは嫌そうな顔をしています. 判定で-20してください」
工藤「それぐらいじゃ奴の値切りは抗えないだろw」
あきんど「成功ですw」
GM 「『残り二人も連れてきてくれ』と言いながら2000円に値引きしてくれます」
工藤「じゃあ作り始めますか」

GM 「ここでは泣きこけしと呼ばれる少し変わったこけしをお祭りの供養のために使っています. その泣きこけしの作り方を職人さんが教えてくれます」
八潮「供養のためって言った?」
GM 「言いました. 明日のお祭りは子供の供養のために泣きこけしを流します」
八潮「おかしくないっすか. 供養ってどういうことっすか」
GM 「おじさんは凄く話したくなさそうなので言いくるめか信用の-50でお願いします」
八潮「信用79でふります. 他にもっと高い奴いないの? お前らもっと人間としてさぁ(失敗)」
GM 「こけし職人さんは言葉を濁した後, 何もなかったかのように泣きこけしの作り方を説明します. 泣きこけしを作るには伝統的に歌を歌う必要があり根性がいります(MP-1). まあ, 若者なら大丈夫でしょう. これが泣きこけしを作るときの歌です(紙を出す)」
あきんど「こういうときこそミュージシャンが欲しいw」
八潮「友達のロック歌手の歌じゃダメですか?」
GM 「ダメですw. この歌限定ですね」

(長い歌をGMが教えてくれる)ひゃっこい夏なら作らんしょ・・・以下略

GM 「これを歌いながら泣きこけしを作ってください. DEXの5倍-20でお願いします」
八潮「『機械修理』を使っていいですか?」
GM 「いいですよ」
八潮「重機械操作なら?」
GM 「ダメです. 成功した人はかっこいい泣きこけしを, 失敗した人はぶさいくな泣きこけしを作れました」
多田「作れんじゃんw」
あきんど「まあ体験講座ですからねw. 無理なら更に値引きでしょ」
工藤「これ以上レポートに必要なことある?」
羽川「図書館に行くぐらいだよね? 現地の図書館で調べるみたいな」
GM 「現在, 時間は16時ぐらいです. あと1箇所ぐらいなら調べられます」
工藤「とりあえず広場で合流して情報交換します」

工藤「なんか面白いことあった?」
多田「ついにライブのステージを約束させたぜ!」
工藤「さっすが! お前のためにいい歌持ってきたから(泣きこけしの歌の歌詞カードを取り出す). これをロック調にして歌ってくれよ」
多田「任せとけよ. そのうちこれのアレンジのロールふるから」
工藤「二人とも泣きこけしを工房で作れるから後で作ってきたら?」
剛田「えーめんどくせぇな」
八潮「お前警官志望だよな」
あきんど「さて, 夜用の食料とか雑貨屋いってかわないと」
八潮「じゃあ雑貨屋いくか」

そして一同, 雑貨屋へ

GM 「では, 雑貨屋へ向かいました. あなたたちは古びた幟がたくさん並んでいる雑貨屋を見つけます. その中にはうたたねしている老婆がいました. 簡単な飲み物や食事, あとおみやげのこけしのキーホルダーなどがありますね」
剛田「じゃあキーホルダーでも買いますか」
あきんど「おかしとキーホルダー、飲み物もかいます」
GM 「わかりました. こけしキーホルダーとおかし全部あわせて5000円くらいです」
工藤「よし, あきんどやれ」
あきんど「こけしが売れてないらしくちょっと汚れてるのを見て、そこを突っ込んで値切ります」
GM 「街の名産品であるこけしを値切られてはいけないと先代から言われてきたおばあちゃんは, 一切値切りには応じません. 起きたおばあさんは賑やかな皆さんを目を細めて眺めています」
剛田「それに心理学をかけます」
GM 「何にたいしてやります?」
剛田「じゃあ僕らに対する反応(目を細める)に対して『心理学』で」
GM 「(コロコロ)おばあさんは太陽が眩しくて目を細めただけだとわかります」(『心理学』はGMが判定します)
工藤「これはわかってないw. 値切らない理由について『心理学』で判定します. どうやったら値切れるか知りたい」
GM 「おばあさんは大した理由なく値切られたくないとわかります」
剛田「高いなぁやだなぁ」
多田「まあいいぜ. これも思い出作りってやつだろ」
あきんど「2個買いました. どんなこけしですか?」
GM 「その辺の奴なんでつまらないこけしです」
工藤「今何時ぐらいですか」
GM 「今はもう夕方です. 少し空が曇ってきて星がほとんど見えないので暗いです」
工藤「じゃあ宿で宴会だな」

GM 「皆さん, 宿にもどってきもどってきました. 店の主人から食事の準備ができていることを知らされます. 山菜とか山の名産を山盛りにした食事がでてきます」
八潮「肉ねーのかよ、肉」
GM 「食事中に皆さん『聞き耳』お願いします。成功したあなたたちは2階からがたごとという音が聞こえてきます」
あきんど「他に誰かいるんですか」
GM 「他に誰も客がいないことを皆さんは知っています」
八潮「ねずみだろ. でっかいねずみだよ」
多田「この店は防犯どーなってんだよぉ」
あきんど「値切りだ!」
羽川「もうやだ, こいつらw」
一同「(笑)」
GM 「主人は嫌そうな顔しますね」
多田「泥棒かもしれないんで見てきたほうがよくねぇ? じゃんけんで二人見に行こう」

じゃんけんの結果, 剛田, 多田の二人が見に行くことになりました.

多田「いざとなったらお前の柔道で頼むぜ」
GM 「では, 舞台を2階に移しましょう. 2階へ行った二人は荷物が少し移動しているような気がしました」
剛田「他に部屋はあるんですか」
GM 「あー, 6人ですが部屋の割り振りはどうなっていますか? 3, 4人ぐらいは泊まれるサイズの部屋が3つ2階にあります」
工藤「このメンバーなら多田, 剛田とそれ以外に別れますね」
羽川「仲悪いんじゃないの, こいつらw」
GM 「では二人は自分の部屋の荷物がずれていたのを確認しました」
多田「一応窓や扉の様子を調べます」
剛田「その間に他の部屋みてきます」
GJ 「では目星をお願いします」
多田「(コロコロ)失敗」
GM 「失敗したあなたは, どこも変じゃないんじゃないかなーというぐらいしかわかりません」
多田「動いたような気もするけど気のせいかも知れないしよくわかんねーや」
GM 「もうひとつの部屋にいったあなたはもうひとつの部屋も同様に荷物が動いているとわかります」
剛田「じゃあそちらの部屋で窓の外を見ます. 失敗です」
GM 「あなたも何もわかりません」
多田「じゃあ下へ戻ります」
工藤「どうだった?」
多田「荷物動いてた気もするけど、よくわかんねーや」
あきんど「荷物動いてるって店主が動かしたんじゃないの」
GM 「皆さんは店主が2階へいっていないことを知っています」
羽川「それ中身確認したりした?」
剛田「見てないよ」
あきんど「じゃあ食べ終わって部屋戻ります. さっき動いたかもしれないと言われたので荷物を確認します」
GM 「では, 荷物を調べる人は『目星』でふってください. 成功した人は中身には変化がないことに気づきます」
多田「俺はその間に泣きこけしの歌をロック調にアレンジします. あっ, アレンジ失敗w」
GM 「では, 誰が聞いてもロックに聞こえないおかしな歌が手に入ります」
あきんど「もう寝ましょうか」

GM 「さて, 皆さん寝る前に目星お願いします」
剛田・工藤「成功」
GM 「成功したあなたたちはつい窓の外を見てしまいます」
八潮「それ本当に成功かよw」
GM 「するとあたりにはすっかり霧がたちこめているのに気づきます. その霧は怪しげな動き方をして複数の顔を形作っていきます. 窓の外に複数の怪しげな顔を見てしまったあなた方はこの異常な事態に関してSANチェックをお願いします」

クトゥルフの呼び声では精神的ショックを受けた際は, SANチェックを行います. サイコロで現在のSAN値以下の値を出せば成功し, SAN値はあまり減ることがありません. 一方で失敗してしまった場合, SAN値は減少してしまいます. SAN値は大きく減少すると妄想などの精神的疾患を負い, 0になってしまうと発狂してしまいます.

剛田「失敗!」
GM 「では1点のSAN値減少をお願いします. 瞬きをすると人の顔は見えなくなっています. 周囲はもう普通の霧です」
剛田「気のせいか. 寝るか」
工藤「こうして仲間には何の情報もいかなかったw」
GM 「はい, では夜寝ようとしたあなた達. あなた達は興奮しているせいか環境が変わったせいか中々眠れません. ここでアイデアでダイスロールをお願いします」
GM 「失敗したあなたは廊下からどたどたした足音を聞きます. 成功したあなたは廊下に複数の誰かが走りまわっているような軽い足音を聞くことができます」
羽川「怖い・・・」

多田「おい, 柔道強いんだし剛田見てこいよ」
剛田「武器としてギターよこせ」
多田「柔道に武器使うなよw」
工藤「ドアを開けて確認します」
剛田「こっちも開けます」

GM 「ドアをあけましたね? ドアをあけた瞬間足音が全てやみます. ドアをあけて何もないとわかった二人はSAN値チェックをお願いします」
剛田・工藤「失敗です」
GM 「ではSAN値を1ずつ減らしてください」
剛田「若干半狂乱になってギターを振り回します. 空をこう『あああぁ!』ってかんじで」
多田「よせ!」

工藤「不審なので主人に問い合わせます」
GM 「工藤さんはまっすぐ主人のいる1階に降りていくということで」
八潮・羽川・多田「ついていきます」
あきんど・剛田「ふて寝します」
GM 「では残った二人から処理します. 部屋に残った二人は, 何か布団がふくらんでいることに気づきます」
あきんど「え, 俺の布団ですか」
GM 「はい, お二人の布団です」
剛田「ジャンプして飛び乗ります」
一同「お前なんなんだよ」
あきんど「怖くなったので4人についていくことにします」
GM 「ジャンプして飛び乗った剛田さん, 布団は空気でも入っていたのかくしゃっとなって何の反応もありません」
工藤「くっそー, あいつにイベントおこるんだけど, あいつからは情報がこない」
GM 「他の4人についていこうとしたあきんどには背中から『はーっ』という生臭い湿った空気がかかっているのがわかります」
あきんど「走って八潮に抱きつきます」
GM 「そうすると不思議な吐息はなくなりました. SAN値チェックをお願いします」
あきんど「成功です. 絶対なんかいるって. やばいって」
羽川「何があったの」
あきんど「絶対この宿バケモノがいるぜ」
GM 「主人のところへいきましたか? では起こされた主人が眠そうな顔で対応します」
工藤「泥棒が出ました」
GM 「泥棒!?」
工藤「明らかに部屋の外を歩いていた奴がいる. あれは泥棒だから早く警察に言ったほうがいい」
GM 「何の音も聞いていない主人は『あなたたちの誰かがいたずらをしているんじゃないですか』と返します」
八潮「俺らがそんな奴に見えますか!」
多田「『言いくるめ』, 『言いくるめ』!」
GM 「では, 『言いくるめ』か『信用』でロールしてください. ここまでのロールプレイが相当あれだったので, -70でお願いします」
あきんど「寝起きですから最悪ですね」
工藤「しかも値切ってるからなw」
多田「クリティカルで成功w」
八潮「アイドルすげー!」
GM 「では言いくるめられた主人はこの村の警官隊のところに連絡をとると約束します. でも明日の朝になりますね」
多田「なんかおかしくねーっすかこのムラ」
GM 「店の主人は特に何も感じていないので何がおかしいかわからないという表情です」
あきんど「この村は幽霊出たりしないんですか」
GM 「幽霊なんて出たらそれをネタに商売してるよと笑いますね」
工藤「じゃあ戸締り確認して寝るか」
GM 「では部屋に戻って布団に入ったあなたたちは, 周囲に浮かぶ光の影を見ることができます」
羽川「もう寝かせてくれよw」
あきんど「俺はもう布団の中にもぐりこんで見なかったことにします」
GM 「その光は適当に宙をまって消えてしまいました」
工藤「たまゆらか」
羽川「実際こうなったら山の中でも歩いて帰るなw」
GM 「光を見たかどうか『目星』で判定してください」
多田「成功!」(他は全員失敗)
工藤「多田だけが光を見たとわめいているw」
一同「(笑)」
多田「おいやべーってこれやべーって絶対なんかおかしいよ」
八潮「それインスピレーションが降りてきたんじゃないのw」
多田「仲間に対して『言いくるめ』!」
八潮「じゃあ俺は寝るわ」
工藤「ミュージシャン以外寝てますねw」

ここで1日目終了です! 村には段々と不穏な気配が立ち込めてきました. これは一体なんなんでしょうね?

scikit.learn手法徹底比較! 決定木編

今回は決定木を用いて手書き文字データの分類を行う.

決定木の詳細はあらゆる所で解説されているので適当に調べて欲しい. このPDFを参考にしたけど, いい資料かは微妙.
決定木は各節に質問が, 葉にクラスラベルが結び付けられている木(データ構造の木)である. 各節では入力ベクトルのある次元の値に関する質問があり(ex. 入力ベクトルの1次元目は5以上か?), 新たなデータを分類する際は, その質問に対する答えによって, データはその節の左右に振り分けられる. それを再帰的に繰り返すと, データは各葉に振り分けられ, そのデータのクラスラベルは, 葉に割り当てられたクラスラベルになる.

学習段階では, その木の形と節に割り当てる質問を探索する. どのような質問がいいかは, その質問によるデータ集合の不純度(Impurity)の変化によって判断する. 不純度は確率変数の分布に対して割り当てられる量である. k個の値を取る確率変数の確率分布をとすると, 不純度は性質として

  • となるような確率分布において最小になる
  • は全てのに対してとなるような確率分布において最大になる

を持つ. つまり確率が偏る程, 不純度は小さい値となり, 確率が均等になる程, 不純度は大きな値となる. 不純度として使える関数はいくつか種類があるが, エントロピーが最も有名だろう.

訓練集合中で, クラスラベルの各値がどの程度出現するかを確率分布によって表現することができる. 質問前の全データ集合で定義される確率分布の不純度と, 質問後に二つに別れたデータ集合, それぞれの不純度を平均したものとを比較し, 最も不純度が減少するような質問が望ましい. なぜなら, 不純度が小さなデータ集合は同じクラスラベルのものを多く含んでおり, そのようなデータ集合を生み出す質問はそのクラスを抽出する能力が高いと考えられるからだ.

このようにして訓練集合全体を質問の連続によって再帰的に分類していき, 葉に達するとその葉に属する訓練データから, その葉に結びつけるクラスラベルを決定する.

sklearnにおける決定木

さて, 手法の説明はこのぐらいにしてscikit.learnにおける決定木について述べる. scikit.learnではDecisionTreeClassifierを用いて決定木による分類を行う. 分類性能を左右するパラメーターは

  • criterion : 不純度としてどのような関数を使うか. entropy(エントロピー)とgini(ジニ係数)がある.
  • max_depth : 決定木を構成する際の, 決定木の深さの上限
  • min_split : データを分割しながら決定木を構成する際, 節に割り当てられたデータ数がmin_split以下になるとそれ以上分割しない

max_depthとmin_splitはオーバーフィッティングを防ぐために設定する. あまりにデータ数わりあての小さい葉を認めると, ノイズに弱くなりやすいらしい.

実験では各criterion(entropy, gini)ごとに, max_depthを[5,10,20,40,NoLimit]から, min_splitを[1,5,10,20,40]から5-foldクロスバリデーションで最適なパラメーターに設定し, 性能を計測した.

criterion=entropyの場合

データ数 正答率 学習時間(sec) 平均予測時間(msec)
1000 0.6624 0.5122 0.00187
3000 0.7466 1.6600 0.00106
5000 0.7817 2.7806 0.00202
10000 0.8079 5.5169 0.00199
20000 0.8412 10.7413 0.00169

criterion=giniの場合

データ数 正答率 学習時間(sec) 平均予測時間(msec)
1000 0.6924 0.1841 0.00188
3000 0.7362 0.7163 0.00108
5000 0.7729 1.2658 0.00203
10000 0.8033 2.6406 0.00204
20000 0.8293 6.9938 0.00175

まず, 正答率に着目すると概ねentropyの方が少し高いがこの程度では差があると言えるか怪しい. また, データ数が増えるに従って正答率は上昇し続けているので, もっとデータ数を増やすと更なる性能上昇が見込めそう.

学習時間はデータ数に対して線形で増加するようだ. giniの方が一貫して低く, 計算コストが低いことが伺える. 一方, 平均予測時間はデータ数に関係なくわりと早い. そして当たり前だがcriterionとはあまり関係がない.

次にクロスバリデーションの感想. このデータではmin_split=1, max_depth=NoLimitという全くオーバーフィッティング対策をしないセッティングでも性能の劣化は生じなかった. 一方, max_depth=5としたときは大きな性能の劣化が生じた. 計算時間もあまりパラメーターに依存しなかったが, max_depth=5のときは少し早かった. criterion=entropy, N=10000のときのクロスバリデーション結果を記載しておく.

分類性能

min_split\max_depth 5 10 20 40
1 0.6855 0.8058 0.8029 0.8029
5 0.6855 0.8041 0.8018 0.8018
10 0.6855 0.8041 0.8027 0.8027
20 0.6855 0.8003 0.7993 0.7993
40 0.6855 0.7894 0.7881 0.7881

計算時間

min_split\max_depth 5 10 20 40
1 4.15 6.23 6.27 6.33
5 4.11 6.05 6.31 6.32
10 4.05 5.87 6.18 6.12
20 3.91 5.92 6.05 6.07
40 4.02 5.77 5.87 6.00

その他のパラメーター

ここまでで触れていないDecisionTreeClassifierのいくつかのパラメーターについて説明する.

  • max_features : どのような質問がいいか探索する際に, 入力ベクトルの各次元ごとに質問を試し, 不純度の減少度を比較するのだが, 全部の次元で試すのは計算コストがかかるので, ランダムにmax_features個だけ試す
  • min_density : 用いるデータ数の割合が, min_densityより小さくなった場合, データのコピーが発生する. その代わり, maskによる除外サンプルの計算が不要になるので計算速度は速くなる
  • compute_importances : 入力ベクトルの各次元がどの程度エラーの削減に寄与したかを計算するかどうか(あまりちゃんと調べていない)

max_featuresは例えば"sqrt"に設定すると, sqrt(次元数)個の次元の中から, 質問するのに最適な次元を選択する. この設定を試してみたところデータ数1万, criterion=entropyで分類性能が76.2%と大きく劣化した. これは考えてみれば当たり前で, この画像データの場合, 情報をあまり含んでいない次元(隅の方とか)が存在するためと思われる.

min_densityは上の説明だけではわかりづらい. コードを読めば一目瞭然である.

if n_node_samples / X.shape[0] <= min_density:
  X = X[sample_mask]
  sample_mask = np.ones((X.shape[0],), dtype=np.bool)

sklearnのDecisionTreeの実装では, 現在の分岐に関わる要素を取り出すのにsample_mask変数を用いて, 必要になった際にその都度取り出すことでメモリコピーを防いでいる. しかし, これは毎回データを取り出すためにオーバーヘッドが生じるため, メモリ使用量とそのオーバーヘッドのトレードオフを制御するのがmin_densityである.

上のコードでは, Xは入力ベクトル全体の集合なのだが, 入力ベクトルの個数中, n_node_samples(今回の分岐に関わるデータ数)の割合がmin_density以下の場合, sample_maskでデータを取り出すのを辞め, 現在使っているデータをコピーし入力ベクトル全体とみなすことで, それ以降の取り出しの手間を省いている.

実験としてmin_density=1.0, つまり毎回コピーするようにしてみたが, このデータでは1割程度の性能改善にしかならなかった.

おまけ実験

公式ヘルプには「次元削減手法を試してみろ」とあるので, 次元削減手法として確率的PCA(主成分分析)と, 入力ベクトルの各次元ごとにラベルとの関連度(本当はちょっと違うが)を調べ上位のもののみを残すSelectKBestを用いて実験を行なってみた. なお, criteria=entropy, データ数1万とする.

まず, PCAで次元削減を行った. 結果は以下の表である. 次元削減時間はPCAにかかった時間である. またoriginalは, 次元削減を行わない際の結果である.

次元数 正答率 次元削減時間 学習時間(sec) 平均予測時間(msec)
10 0.764 22.06 0.68 0.00023
30 0.781 22.30 1.93 0.00025
50 0.779 22.52 3.20 0.00027
100 0.772 23.08 6.39 0.00033
200 0.770 24.26 12.84 0.00068
original(784) 0.808 0.00 5.52 0.00200

PCAによる次元削減によって正答率は残念ながら大きく減少してしまう. 次元削減時間も非常に大きく, 計算量の削減にも寄与しない.

次元削減時間は削減後の次元数にほとんど依存しない. 一方, 学習時間は次元数に対して線形となる. そして, 次元数200のときは次元削減を行わない場合よりも学習時間が大きくなってしまう. 決定木の実装詳細を知らないので原因は不明であるが, 元のデータはスパースなのがPCAによってスパースでなくなるのが学習時間を延ばしていると推測している.

次に, SelectKBestで次元削減を行った. PCAは各特徴(次元)の線形結合を新たな特徴として用いることで次元削減を行うが, こちらは一部の特徴のみを使うことで次元削減を行う.

次が次元削減を行うコードである.

transformer = feature_selection.SelectKBest(feature_selection.f_classif, k=feature_components)
transformer.fit(datas, labels)
datas = transformer.transform(datas)

feature_componentsに削減後の次元数を与える. 今回の場合, ここに50などを指定しても次元数は274になってしまう. これは, 同じぐらい重要な特徴は全部取り込んでしまう実装になっているためである.

次元300で試した結果が次の表である.

次元数 正答率 次元削減時間 学習時間(sec) 平均予測時間(msec)
300 0.812 0.410 3.403 0.00092
original 0.808 0.00 5.52 0.00200

正答率を維持したまま次元削減時間, 学習時間をあわせても時間が短縮されており, 次元削減として有効に働いていることが分かる.

まとめ

やはりSVMなどに比べると性能が低い. ただ, K近傍法に比べて性能が大きく劣るのは意外だった. 決定木とK近傍法の対比としてこちらの資料では

  • K近傍法は領域を区切るときに, 入力した値のみを問題にしている. 一方で決定木はラベルを考慮している
  • K近傍法は全領域において同じkを用いている. これは領域によって適した値が変わるはずである. 一方, 決定木は領域の区切り方は場所によって様々なサイズを取りうる

としている. これらの利点を活かすにはデータ数が不足していたのかもしれない.

補足情報として, sklearnでは, 決定木にpruning(枝かり)の機能がない. これは, 学習データの一部をよけておき, それぞれの節の分岐が性能向上に寄与するかどうかをそのデータでチェックし, 結果によってはその節を取り除くことで, 過学習を防ぐ枠組みである. これを用いるとおそらく, そこまでmin_splitなどを気にする必要がなくなるため, 結構不便かも知れない.