猫語の翻訳システム開発現場から機械学習やニューラルネットワークを学べるパズルシミュレーションゲーム「while True: learn()」レビュー
猫の言葉を翻訳できる機械学習システムを開発すべく、さまざまな依頼をこなしながら機械学習を学べるパズルアクションゲームが「while True: learn()」です。「while True: learn()」はプログラミング言語のPythonのコードを表しており「learn()という処理を繰り返す」、つまり「学び続ける」という意味。Steamで配信されているので、実際に遊んでみました。
while True: learn()
https://store.steampowered.com/app/619150/while_True_learn/?l=japanese
while True: learn()で機械学習システムを作るムービーが以下。
「while True: learn()」で機械学習システムを作る様子はこんな感じ - YouTube
主人公はフリーランスのエンジニアです。
どうしても解決できないバグに悩まされる主人公。
主人公がコーヒーをいれに席を外すと……
飼い猫がソファからそろり。
PCの前でなにやら操作を始めました。
主人公がデスクに戻ってくると……
なんとバグが解決していました。
これには主人公も驚きです。
プログラマーとしての猫の才覚に気づいた主人公は、猫の言葉を翻訳できる機械学習システムを構築すべく、さまざまなタスクに取り掛かることにしました……というのがゲームのストーリー。
ここからは実際のプレイの様子。while True: learn()のホーム画面はこんな感じです。画面右上の「木」からタスク一覧へ移動します。
タスクはツリー状に連なっており、ひとつのタスクをクリアすることで次のタスクに挑戦できるようになっています。
ゲーム画面はこんな感じ。
右側にはプログラムの本体となる「ノード」が配置されています。ノードには処理時間があり、例えば「エキスパートシステム」は1回の処理に1秒かかります。このノードを組み合わせて、「スキーム」と呼ばれるさまざまな処理を実現していきます。
左側には、ノードに入力するデータがデータの個数とともに表示されています。データの種類は「赤」「青」「緑」の色と「□」「△」「○」の形で分けられています。
右側の出力ストリームには、出力するデータの種類、データの個数、精度が表示されています。例えば上部の出力ストリーム1であれば、緑の「□」を8個、100%の精度で格納する必要があるというわけ。ノードをうまく組み合わせてスキームを作成し、データを分別して適切に出力するというのが、while True: learn()の基本的な遊び方です。
まずはノードをドラッグ&ドロップでフィールドに配置。
今回は「緑」と「青」の入力を別々の出力に分離したいので、色を分離できるエキスパートシステムで「緑」と「他」を出力するようにノードを設定します。
ノードとノードは「▶」同士をドラッグ&ドロップでつなげることで連結できます。
スキームが完成したら「テスト実行」をクリック。
左から右へとデータが流れていき、ノードでデータが振り分けられて、別々の出力へと向かっていきます。
なお、スキームはただ動けばよいというわけではなく、「処理時間」「使用するノード数」に制限があります。また、スキームは「猫クラウド」と呼ばれるクラウド上で稼働しており、処理に応じて毎秒課金されるようになっています。クラウド費用はあとで報酬から差し引かれるため、なるべく効率のよいスキームを開発するのがポイント。
データの流れるスピードは、下部のボタンで0.5倍~3倍の速さで調整が可能です。
スキームが要件を満たすとクリア画面が表示されるので「リリース」でスキームをリリースします。
サーバー費用の「猫クラウド」代を除いた報酬が「CATCASH」でもらえました。
稼いだCATCASHは部屋のインテリアや……
プログラムを楽にしてくれるアイテム、猫のコスチュームなどの購入に充てることができます。
このようにして、タスクツリーのタスクを順番にこなしていくことで、ストーリーが進んでいきます。
「決定木」など、新しい概念のノードが登場した際は説明が表示されるので、機械学習に詳しくない人でもゲームを楽しむことができます。
ゲームを進める過程で開発したプログラムは、赤枠のボタンから再利用できるようになります。
プログラムをうまく再利用すれば、シンプルにプログラムを構築していくことができます。
また、タスクの中には猫のアイコンではなくグラフのアイコンの「スタートアップ」と呼ばれる特別なタスクも存在します。
スタートアップはその名の通り、スタートアップのプロジェクト開発に参加するタスク。
現実のスタートアップでは常に状況が変化し、柔軟な対応が求められるため、while True: learn()内でもテストなしで即座にスキームをリリースしてしまうこともできるようになっています。
スタートアップは単発のタスクとは異なり、継続的な利益を得ることができます。メニュー画面から利益の状況を確認でき、「翌日」をクリックすると日付を1日進めることができます。
ある程度日数が経過すると、プロジェクトの収益が芳しくなくなってきました。そんな時は赤枠のボタンでスタートアップの株式を売却。
スタートアップで利益を上げるには、適切なタイミングで株式を売却するのがポイント。
ノードの中には「学習」が必要なものもあります。
学習を行うことで、判別の精度を高めることができます。
中には自分が「教師」となって動作を規定し……
ノードに教える「教師あり学習」を行うノードもあります。
ゲームを進めていくと、スキームも複雑になっていきます。とはいえ、順番にタスクをこなしていればクリアできるように誘導されているので心配は無用。日本語翻訳がかなり怪しい部分があるものの、while True: learn()は、機械学習はもちろん、プログラミングがまったくわからない人でも「何となく機械学習をわかった気になれる」ゲームとなっていました。
「while True: learn()」はSteamにて配信されており、2021年1月6日までは税込937円で購入することができます。
Steam で 29% オフ:while True: learn()
https://store.steampowered.com/app/619150/while_True_learn/?l=japanese
・関連記事
ダンジョンを攻略しつつSQLインジェクションの脆弱性について学べるサイト「Lord of SQLInjection」 - GIGAZINE
無料のRPGをプレイするだけで未経験者でもプログラミングを習得可能な「コードクロニクル」でPythonをマスターしてみた - GIGAZINE
漢文風プログラミング言語「文言」を読み解いてみた - GIGAZINE
未開の星で工場のラインを組み上げていくゲーム「Factorio」が得意な人はソフトウェアエンジニアに向いている - GIGAZINE
無料でウェブブラウザ上にベルトコンベアを縦横無尽に走らせて工場を作る「shapez.io」をプレイしてみた - GIGAZINE
・関連コンテンツ