自己紹介

このアプリのために0からオセロを学ぶ羽目になった人

制作者自己紹介

ここでは本製品を制作したЯAMUNEの自己紹介を行います。自我を出しまくっています。ご注意ください。

何者?

どうもこんにちは。ЯAMUNE(ラムネ)です。つい最近選挙権を手に入れた高校3年生です。一応受験生なのでこの作業をやってていいのかわかりませんが、まぁ、他にも制作物を抱えているので気にしないことにしました。
趣味として電子工作やプログラミング、自作PCなどをしています。小学生のころまでは野球とテニスをしていた少年だったのですが中学に入学したタイミングでロボット研究部に入部し、なんやかんやあってここまで来てしまった感じです。主にPythonを扱っていますが、たぶんそんなにうまくはないです。他にもHTML,CSS,JSを書いていてこのサイトも私が作っていますが、実はサーバー運用とかセキュリティとかは学んでいないので大学生になったらそういう分野も学んでいきたいですね。あと、私は電子回路とかの知識が乏しいので、そこらへんの知識を強くして工作の幅を広げたいと思っています。ちなみに大学では情報工学を学びたいと思っています。(学びたいことが多すぎる)
ちなみに理系選択で理科の選択は物理と化学ですが、好きな理科の科目は生物と地学です。あはははは。

この製品を作ることになった経緯は?

なんか学校のベンチャービジネスに関する活動でアプリを作ることになったらしく、その依頼がロボ研に来たのでそれを受けた感じですね。噂によると、ゆくゆくは「eスポーツ(主にFPS系)の行動をAIで解析してコーチングする」という物を作ろうとしているらしいですが、今回はプロトタイプを...ということでオセロでそういうアプリを作ることになったらしいです。オセロとFPS系ではだいぶ勝手が違うので果たしてそれはプロトタイプたりうるのかという疑問を感じましたが、私は「オセロのAIを使ってコーチングするアプリを作れ」としか言われていないのでFPSゲームに関することは一切考えずに、オセロ等のボードゲームでしか扱えないようなアルゴリズムをふんだんに使って作りました(笑)
ちなみに、私が言われたことは本当に「オセロのAIを使ってコーチングするアプリを作れ」だけなので、アルゴリズムの選定やオセロのコツ、そしてアプリのデザインやロゴ制作も私が一人でしました。まさかオセロを0から学び、バックエンドからフロントエンドまで全部一人でこなすことになるとは...

この製品を作るうえで苦労した所は?

元々のオセロの知識が皆無すぎた

依頼を受けたのはいいものの、制作者はオセロに関して無知すぎたのです。知っていたことは

ぐらいでした。そのため、私は最初にオセロ初心者向けサイトをたくさん調べました。それが全体の作業の中で3番目ぐらいには大変でしたね。

確定石を探すロジックが意外と難しかった

「オセロで、その後どんな展開になってもひっくり返らない石ってどんな石?」と聞かれて真っ先に思いつくのは、角の石とそれに連なる角の石と同じ色の辺上の石でしょう。ここまではすぐにわかります。では、それ以外の石はどうでしょうか?
すぐには思いつかないでしょうし、思いついても、「反例が無い」と断言できるでしょうか?そういうことです。ここでは詳しく書きませんが、けっこう大変でした。(いつかどこかでちゃんと書きたいな~)

オセロのロジックを丸々書き換える羽目になった

最初は何も考えずに盤面の表現を8x8の二次元配列で記述していました。その方法で製品が完全に動く段階までいってしまいました。しかし、それだと遅すぎたんです。最終的に採用したのはalpha-beta法というアルゴリズムでしたが、その手法では如何に先の盤面まで計算できるかがカギになってきます。ところが、その2次元配列での盤面管理だと、64個の数字を毎回更新したり、数字を1つずつ取り出して着手可能手などを計算する必要があり、計算に時間がかかってしまうのです。
そのため、私は後になってすべてのオセロのロジックをビットボードに書き換える作業をすることになったわけです。
計画性のなさを笑うがよい。
ちなみにその後、さらなる高速化を求めてさらにpythonからC言語に書き換えていますがこれはわりと簡単だったのでよいことにしました。

美的センスがなさすぎた

今まで様々なものを作ってきましたが、それらの内のほとんどがシステム部分がメインであり、デザインを手掛けたことはほとんどなかったわけです。(文化祭のwebサイトは前年のデザインであったり、イラストの配色などを参考にしたため、ノーカンです。)
そんなわけで、UI設計などの知識も全くない中でボタンの配置だとか、配色だとかを考えるのは非常に骨が折れる作業でした。これが1番大変でしたね。(「苦労したと言う割には完成度が低いのではないか」というクレームは受け付けておりません。)

今までは何を作ってきたんですか?

詳細は私のGitHubをご覧ください。ふざけたリポジトリがたくさんあります。
ここでは私のお気に入りを1つ紹介したいと思います。

特別な板を通して見ないと見えないモニター

そのままですね。「特別な板を通して見ないと見えないモニター」です。
では、「特別な板」とはなんでしょうか?
その名も「偏光板」です。
え?そんなに特別じゃない?じゃあ逆に聞きますけど、家にありますか?偏光板。ないでしょ?え?ある?液晶モニターに付いてるからある?......
そうなんです。実は偏光板は液晶ディスプレイには必ず使われているのです。
詳しい説明はGitHubのリポジトリに文化祭で展示した時のポスターがあるのでそちらをご覧ください。 真っ白に光っているモニター画面があるが、その中で偏光板を通している部分だけは写っているものが見えている。 ところで、これはあくまで「工作」ではなく「改造」ではないかと思われるかもしれませんが、この指摘に対しては無視することで解決とさせていただきます。

特技は?

場合分けなどを羅列して把握するのはけっこう得意です。何かコードを書くときに条件分岐をたくさん書くわけですが(特にシステム制作など)、その分岐を事前に考えてコーディングを比較的スムーズに行えます。また、何かしらで問題が起きたときに、その原因を推測して検証するうえでも役に立っています。
また、初見のPCソフトなどの使い方をわりと早く習得できたりもします。この特技は何か新しいことを始めるときにとても役に立ちます。
また、学校で学んだことを制作物に取り入れるのも比較的得意だと思っています。先ほど紹介した偏光板を用いた不思議なモニターは、物理で学習した「光の偏光」という性質を利用しているものなのです。(そもそも液晶ディスプレイ自体が偏光を利用したものですが)
ほかにも、3D空間の演算を行う時には空間ベクトルの考え方を役立てたり、今回のオセロのロジックでは、情報で習った数の補数表現などを活用している部分もあります。このように積極的に学校で学習したことを取り入れることで、学校で勉強をする意義が見出し易いのに加えて、「学校で学んだことはこんなことにも使えるのか!」という感覚も味わえるので、勉強のモチベーションを上げることができるわけです。(「学ぶことのハードルが下がる」とも表現できるかもしれません)
時々、「学校で学ぶこと(内容)はあんまり好きじゃないが、ほかで学ぶことは好きだ」と主張する人がいますが、私はその主張は本質をとらえられていないと感じています。少し考えてみると、世の中の事物のほとんどは学校で学ぶ「主要五科目」に帰結すると思いませんか?特に理系科目はその傾向が強いと感じています。
例えば、料理は化学です。物理の熱力学も入っているかもしれません。洗濯も化学ですし、買い物の時は数学が活躍します。また、音楽は明らかに物理ですよね。そしてもちろん、スポーツも物理です。もしかしたら化学の要素もあるかもしれません。化学が得意な人は、たくさんのボールを片付けるとき、恐らく充填率が74%になるボールの並べ方をして効率的にボールを片付けるでしょう。私は理系科目の具体例しか出せませんが、ほかにも多くのことが「学校で習うこと」につながっていると思っています。
にもかかわらず、なぜ前述したように、「他で学ぶことは好き」なのに、「学校で学ぶことはあんまり好きじゃない」という視点になってしまう人がいるのでしょうか?それは、事物を1つの角度からしか見ようとしないからだと思います。自分の好きなものを、「自分の好きなもの」としての角度からしか見ようとしないのです。そのため、その「好きなもの」が持ち合わせている「学校で学ぶこと」としての一面を見落としてしまっているのです。だからこそ私は、身の回りのことを「学校で学ぶこと」と結びつけて考えるようにしています。このように少し視点を変えるだけで「あれ?これ授業で習ったやつかも」と気づけるのです。それに気づくと、学ぶことが一気に身近になって、楽しくなるんですよね。
...とんでもなく話がそれましたが、つまり私は、様々な事象に対して様々な角度から好奇心を持って見ることが得意というわけです。

自分が誇れることはありますか?

中学3年の頃に(高1かも)、積分の概念を知らなかったのに自力で区分求積法にたどり着いたことですね。
当時、RCJというロボットの大会に出ていたのですが、そのロボットは「機体が進んだ距離」を把握する必要があったのです。普通は距離センサーやLiDARなどを使いますが、私はここで、「加速度センサーで取得した値を用いて距離を求められるのでは」と思ったのです。確かその時は、理科で、等加速度運動する物体の変位は

x= v0t+ 12at2

で表せるということと、それがv-tグラフの面積でもあることを習ったばかり(高1だったら習ったばかりではないですね)だったと思います。そこで、こう思ったわけです。「ロボットの動きは等加速度ではないけど、一瞬を切り取ったら等加速度とみなせるんじゃないか?そして、その加速度と時間を式に代入するのをクロック毎とかで行ってどんどん足していけば変位が求まるのでは??」と。これを閃いて友達に説明したところ、塾で先取りをしていた友達に「それを積分というのではないのか」と指摘されました。ちなみに、実際に実装してみても、なんかセンサーの精度的にあんまりうまく動かなかったので没になりました。



次の記事↓

リンク先のページのサムネイル画像

前回の記事↓

リンク先のページのサムネイル画像

@e_Coachi_AI

© 2025 ЯAMUNE