コンピュータ将棋を作った(のんのんびよりSS)

知らない人のために少し書いておくと、一穂・ひかげ・れんげは歳の離れた姉妹。設定が色々おかしいけど適当に脳内補間してください。

環境構築編

れんげ「ウチ、コンピュータ将棋作りたいん!!」
ひかげ「どしたの急に」
れんげ「ひか姉に勝つ方法がやっとわかったん」
ひかげ(将棋で負けたのまだ根に持ってたのか……)
れんげ「ウチの代わりにコンピュータが指せばいいのんなー」
ひかげ「いやいや、れんげプログラム書けるの?パソコン買ってもらったばっかじゃん」
れんげ「このC++日本語リファレンス読んで勉強するから大丈夫なのん!」
ひかげ(え、いきなりそこ?基本的な情報足りなくない?)
れんげ「習ってない漢字もコピーして再変換すれば読めるん!」
ひかげ「え、ちょっと再変換のやり方教えて」

3時間後

れんげ「ねえねえにVisual Studio入れてもらったん!」
ひかげ「じゃあ私が教えてやるよ、まず新しいプロジェクトを―」
れんげ「ねえねえにC++11の文法と機能を教えてもらったから大丈夫なのん」
ひかげ「……まあでもHello worldくらいは私が教えるよ」

にゃんぱすー
続行するには何かキーを押してください . . .

れんげ「はろーわーるどって何なのん?」
ひかげ「」

基礎編

一穂「まず、簡単なゲームで試してみたらどうかな、まるばつとか」
れんげ「そんなのコンピュータにやらせるまでもないのん」
一穂「そうかー、明日も学校あるんだから、根詰めないでやるんだよ」
れんげ「わかったのん」

次の日

夏海「れんちょんコンピュータ将棋作ってるんだって?」
小鞠「へーすごいねー???」
れんげ「全然できないのん」
夏海「やろうと思ってる時点で十分すごいって」
れんげ「そんなことないのん……」
小鞠「そ、そういえばさ、私たちが将棋覚えたのってれんげん家だよね」
夏海「うわ懐かし!かず姉強かったなー」
れんげ「……!」

れんげ「ねえねえ、これ教えてほしいのん!」
一穂「おや、どうぶつしょうぎか」
れんげ「ねえねえと遊んで、覚えたらプログラム作るのん!」
一穂(どうぶつしょうぎは思いつかなかったなぁ、あのときはれんちょん食いつかなかったし)
れんげ「みんなで将棋やったときのこと思い出したん」
一穂「じゃあれんちょんの先手でいいよー」
ひかげ(なんでフルボッコにする気満々なんだよ)

次の日

れんげ「できたん!」
ひかげ「どれどれ」
れんげ「まだ弱いん、ひか姉テスト対局してほしいのん」
ひかげ「うわインターフェースもちゃんと作ってるんだ」
れんげ「指し手はSFENで入力するのん」
ひかげ「それはちょっときついな」
れんげ「ひか姉が先手でいいのん」
ひかげ「れんげ、後手有利なの知ってるでしょ」

ひかげ「それがけっこう強くてさ、表示が見にくかったのもあるけど、内容は私の負けだった」
一穂「ライオンさんを持ち駒にして落ちちゃったのかなー」
ひかげ「ああ、それは思いつかなくてれんげに言ってないや」
一穂「ひかげにはソース見せてくれないの」
ひかげ「敵に手の内は見せないってさ、どーでもいいけど」
一穂「ウチはさっき見せてもらったんだけどさ」
ひかげ「……」
一穂「配列使ってなかった」
ひかげ「は?」
一穂「ifとgotoだけで、あれは若いうちしかできないスタイルだよねえ」
ひかげ「いやいやいやいや今すぐ矯正しろよ放置すんなよ」

次の日

れんげ「ひか姉の言った通りなのん!配列使ったら簡単だったん!」
ひかげ「まあ、やっと私のアドバイスの価値がわかったみたいだなっ」
れんげ「ありがとなのん、これからはちゃんと文法覚えて簡単な書き方するん」
ひかげ「お、おう、簡単な書き方だとバグも見つけやすくなっていいぞー」
れんげ「今度こそ将棋のプログラム書いて、ひか姉倒すのんなー」
ひかげ(私も作りたくなってきたな)

インターミッション

夏海「ひか姉って将棋の段とか持ってるの?」
ひかげ「免状はとってないけど、将棋ウォーズってとこで1級」
夏海「え、ひか姉でも段じゃないんだ」
ひかげ「うん、私も初段にはなりたいかなあ」
夏海「うちの兄ちゃんが囲碁クエストとかいうので三段になってたけど」
ひかげ(あいつ囲碁もできんのか!)

本格的に開発編

ひかげ「れんげ、αβ法とか知ってるの?」
一穂「それは検索すれば出てくるからねぇ、疑似コードが読めなくて苦労してたみたいだけど」
ひかげ「あと反復深化とか、どうぶつしょうぎのとき思考時間バラバラだったし」
れんげ「何の話してるのん」
ひかげ「お、順調に進んでるー?」
れんげ「進んでるのん」
一穂「れんちょん、自分の力で頑張るのもいいけど、その道の人に話を聞くのもだいじだよ」
れんげ「完全解析ブログっていうかっこいいの見つけたん」
一穂「おお、それはそれは」
れんげ「難しいからわからないとこ教えてほしいん」
一穂(頷く)
ひかげ「おう、まかせろ」
れんげ「お願いしますなのん」

次の週

れんげ「ひか姉、聞きたいことあるん」
ひかげ「何?」
れんげ「1手で行ける局面に5手かけて行くのは読まなくていいのんな」
ひかげ「ええと、5手目を読むときに迂回手順は負けの点数を返すみたいな?」
れんげ「ひか姉も考えたことあるん」
ひかげ「まあそんなちゃんと考えたわけじゃないけど」
れんげ「そうなんなー、負けの点数にするの簡単そうだからやってみるん」
ひかげ「しかし最初から細かいことやってるなー」

1時間後

ひかげ「れんげ!ごめん!5手目指したあとは相手の手番だから返すのは勝ちの点数だ!!」

USI対応編

ひかげ「それ、インターフェースも自分で作るの?」
れんげ「うしに対応させてあるん」
ひかげ(『うし』と『ゆーえすあい』どっちが正しいんだっけ)
れんげ「ねえねえに手伝ってもらったのん、でも時間かかったのん」
ひかげ(思考エンジンと関係ない部分で人に頼るスキル持ってるとかマジすげえ)

評価関数編

ひかげ「KPPって、心がぴょんぴょんしないか」
れんげ「それは『ごちうさ』なのん、変なイメージ付けないでほしいのん」
ひかげ「ご、ごめんなさい…… れんげはKPP使ってたよな」
れんげ「今のウチには荷が重いから、2駒関係にしたのん」
ひかげ「そっかー、ところでチノちゃんて、れんげに似てる気がしない?」
れんげ「ひか姉気持ち悪いん」

ひか姉に挑戦編

蛍「コンピュータ将棋、完成しそうなんだ」
れんげ「コンピュータ将棋に完成はないん、どこかで区切りを付けなきゃいけないだけなん」
蛍「すごいねー、私だけ将棋やったことないから、覚えてみようかなあ」
れんげ「ほたるんもウチのコンピュータと対戦するん!」
蛍「うん!」

れんげの家

蛍「お邪魔しまーす」
れんげ「これでひか姉に挑戦できるん」
蛍「何してるの?」
れんげ「学校行ってる間、自己対戦させてたん」
蛍「じこたいせん?」
れんげ「自分同士でずっと将棋指してたん、途中で止まったりしてなかったん」
蛍「へ〜」
れんげ「ひか姉帰ってくるまで将棋やるん!」
蛍「れんちゃんに教えてもらうの楽しみー」

1時間後

ひかげ「ただいまー」
れんげ「お、おかえりなのん」
ひかげ「お、いよいよできたかー?」
れんげ「さっそく振り駒するのん!」
ひかげ「あ、ほたるんこんちはー、振るぞー」
れんげ「歩が4枚なのん」
ひかげ(あからさまにがっかりしてるけど私レベルだと関係ないだろ)
れんげ「ひか姉の先手でお願いしますなのん」
ひかげ「あの、気になるからあんまり近くで見ないでくれるかな」

5分後

れんげ「対抗形でひか姉が急戦してるん」
蛍「たいこうけい?」
れんげ「振り飛車居飛車の戦いなん」
蛍「さっき教えてもらった形なんだね」
れんげ「コンピュータ、ウチより強いからよくわからないのん」
蛍「私は全然わからないよ、小鞠先輩たちも誘えばよかったね」

10分後

蛍「もう終盤、だよね?」
れんげ「ひか姉、駒損してるけど挟撃の形作っててさすがなのん」
蛍「挟撃って、王様を挟み撃ちにすることだよね」
れんげ「プログラムするの難しくてできなかったん」
蛍(双眼鏡で覗くの疲れないのかなあ)
ひかげ(よし!)
蛍「あ、終わったみたいだよ」
れんげ「負けちゃったのん……」

エピローグ

一穂「今度、世界コンピュータ将棋選手権に出るんだ」
楓「え!久しぶりですね」
一穂「今回は開発者じゃなくて、れんげの保護者として行くんだけどね」
楓「開発者としての先輩も見たかったっす」
一穂「私も忙しいんだけど、他に頼める人もいないからねー」
楓「わ、私も仕事があるんで!」