コンピュータープログラムの実行を擬人化した、世界で称賛されているプログラミングパズルに続編が登場【レビュー:7 Billion Humans】

 コンピューターのプログラミングを擬人化した論理パズルゲームの名作『Human Resource Machine』(ヒューマン・リソース・マシン)
 多くの表彰を受けたこの作品に、まるでプログラム言語が進化するかの如く、新しい命令語が追加された続編が(スマホにも)登場しました。
 『7 Billion Humans』(セブン・ビリオン・ヒューマンズ)です。

 『Human Resource Machine』は日本語版の登場が遅かったため、日本での知名度はそれほどでもないのですが、海外では非常に高く評価されている作品です。
 Appleも(アルファベット圏の国で)2016年のベストアプリのひとつに選んでいました。
 その続編であるため、海外ではかなり注目されていたゲームです。

 社員くんを動かす「命令語」を並べて条件を満たす動作を行わせる、コンピューターのプログラミングをゲーム化した作品で、プログラムをゲーム化する試みは昔からありましたが、その中でもっともクオリティが高く、大きな成功を収め、そして「プログラミングらしい」作品だといえます。

 今作が前作と違う点は大きくふたつ。「IF文の拡張」と「並列処理」
 今回は一度に多くの社員くんが登場し、同時に作業を行います。さらに多彩な条件判定を行わせることができるようになりました。
 加えて、数値や位置を記憶する命令や、かけ算や割り算に対応した計算命令といった、新しい命令語も追加されています。
 まあ、できることが増えた分、各ステージの「お題」も高度化しているので、喜んでばかりもいられないのですが……。

 iOS版の価格は600円。
 買い切りゲームなので課金・スタミナ・広告等はありません。

 先行して公開されていたPC(Steam)版は1520円。
 Nintendo Switch版も公開されていて、こちらは1500円です。
 Nintendo Switch版はソフト名が「セブン・ビリオン・ヒューマンズ」というカタカナ表記なのでご注意ください。

 今回は(iOS版とSwitch版は)最初から日本語化されているため、言語の心配はありません。
 ジョークが日本のものになっているなど、翻訳も完璧です。

 今回はオープニングが風刺が効いていて必見なので、ちょっと紹介しておきましょう。

 時は未来。機械化によって人間は仕事をしなくて良くなりました。
 ぜんぶ「マシーン」に任せられるようになったのです。

 もうビックリするほどユートピア!

 無料で無限のエネルギーが供給される時代!

 「君たちは、したいことを自由にすればいい!」

 しかし、人間は仕事がしたいのです。

 もっと給料が高くて、やり甲斐のある仕事を!

 そしてマシーンが告げました。

 「ならば与えてやろう! 最高の、見たこともない、果てしないシゴトを!」
 「おめでとう、キミたちは全員採用だ!」

 このゲームの開発メーカー「Tomorrow Corporation」の作品は、ひたすら暖炉で物を燃やす『Little Inferno』など、そこはかとないブラックなストーリーがあるものが多いのですが、今作もそんな感じですね。

 そしてゲーム内容ですが…… ステージを開始すると、上司さんが与太話の後に「お題」を告げます。
 これを達成する「プログラム」を作って走らせればクリア。

 画面の右側にはプログラムを作るスペースがあり、その横に「命令語」の書かれたラベルが並んでいます。
 これをドラッグで作成スペースに配置していきます。

 命令語には指定の方向に歩く「Step」や、パネルを拾う「PickUp」などがあり、たとえば5マス下にあるパネルを拾うプログラムなら以下のようになります。

 これを再生ボタンで走らせれば、社員くんがまるで機械のように、5マス歩いてパネルを拾います。
 それで一応、問題はないのですが……。

 でも、これだと少し長いですね。
 ステージが進むと、指定の命令に移動する「Jump」や、条件の判定を行える「if」が使えるようになります。

 これらを使い、「下に進んで、もし真下にパネルがあるなら拾う。それを繰り返す」というプログラムに改良したものが以下になります。

 これだと4行で済みます。
 しかもパネルの位置が3マス先でも、6マス先でも対応できます。
 このように命令語を並べることで、社員くんを任意にコントロールすることができます。

 そして今作は、前述の「if文」が大幅にパワーアップ。
 前作『Human Resource Machine』は「if文」の分岐条件に「0なら分岐」と「マイナスなら分岐」しかありませんでした。
 そのため「A」と「B」の数値の大小を判別したい場合、まずふたつの数値を引き算し、結果がマイナスならBが大きい、0以上ならAが大きいか同じ、というプログラムにする必要がありました。

 しかし今回は「if文」に「不等号」が登場。
 単純に「A<B か?」という判別を行えるようになりました。
 もう事前の引き算なんて必要なく、「==」(同じ)、「<=」(右が大きいか同じ)、「≠」(同じでない)という判別も可能に。

 さらに数値だけでなく「何かあるか」「穴があるか」「指定の方向が壁か」といった判定も行えます。
 条件を増やす「AND」(複数の条件をどちらも満たしているなら実行)や、「OR」(複数の条件のどれかを満たしていれば実行)という設定も可能。
 より多彩な状況チェックができるようになっています。

緑の箱から出てくるパネルが、50以上なら右の赤い箱(シュレッダー)に、50未満なら左の赤い箱に手渡ししていくステージ。
「何か持っていて、となりに社員がいるのなら、その人に持っているものを渡す」という「and」を使ったif文を並べています。ifの中にifを入れることも可能。
「else」は条件を満たさなかった時に実行させる行動があるときに使いますが、「条件を満たさなかったらそのまま先に進む」という場合は「else」は必要ありません。

 難しく聞こえるかもしれませんが、色々な条件で判別できた方が「命令語に限りがあり、その不自由さを工夫でなんとかする」という方法を考えなくて済むので、ラクに対応できます。
 どのような方法でも、動作結果がクリア条件を満たせれば、それで正解です。
 (ただし運が悪いと失敗する、といった不安定なプログラムはダメ)

 今作のもうひとつの特徴は、社員くんがたくさん登場し、全員が同時に、命令通りに動くこと。
 いわゆる「マルチタスク」、並列処理

 人数分のプログラムを用意する必要はなく、全員がひとつのプログラムに従って動きます。
 しかしそのため、全員が参照しても問題ないプログラムにする必要があります。

 クリア条件さえ満たせれば、社員の皆さんが穴に落ちようがシュレッダーにかけられようが問題ないのですが、社員が減るとクリアに不都合な場合は回避するプログラムにしなければなりません。

4人の社員さんが4つの列の数値を同時にチェックしていくプログラム。つまり「4スレッド」処理。
より効率よく作業が進められそうですが…… 全員が滞りなく動くプログラムを作るのは難しいステージもあります。
実際のプログラミングでも、マルチスレッド(複数処理)の方が難度が上がります。
なお、命令語の「set」は社員のメモリ(記憶)に数値を覚えさせるもの。
if文でメモリを条件に使う場合、そのメモリに何かが入っていないといけないので、このプログラムでは最初にとりあえず「99」を入れています。
これは上司さんが作った問題のあるプログラムを修正するステージ。つまり「デバッグ」する課題。
多くはありませんが、こんなデバッグステージも用意されています。

 ゲームが進めば、待望の新たな命令語が登場します。
 まずは「calc」。これは数値を計算するものですが、かけ算や割り算も可能。
 前作はかけ算や割り算をするのに工夫が必要でしたが、もう1発で計算できます。

 そして「メモリ」が導入され、社員くんが数値を覚えられるようになります。
 たとえば「行動」→「メモリ=メモリ+1」→「メモリが9以下なら最初に戻る」というプログラムにすれば、行動を10回繰り返してくれます。
 「10以下」を「持っているパネルの数字」などにすることも可能で、色々と応用可能。
 つまり、「変数」を簡単に扱えるようになりました。

 できることが増えれば「お題」も難しくなりますが、今作は本当に、色々な方法で各ステージをクリアしていけます。
 中盤以降のステージを10人がプレイすれば、おそらく10人全員、作ったプログラムは異なっていることでしょう。

 自分なりの工夫とロジックでプログラムを組んで解法に繋げられることが、この作品が優れたプログラミングゲームであることを示しています。
 そしてどんなプログラムでも、条件が常に成立するかを柔軟に判定する、このゲームのプログラムもすごいです。

「メモリ」が登場後、社員の皆さんをタップすると、その人が覚えているメモリの中身をチェックできます。
メモリは4つあり、それぞれ異なる数値を覚えられるので、うまく活用しましょう。
第三段階から、他の社員に呼びかける「tell」と、それを聞く「listen」の命令が追加されます。
これはマルチスレッドの制御命令で、「listen おはよー」の命令を受けた人は、誰かにtellで「おはよー」と呼びかけられるまで処理を停止します。
同時に動くと困るときに、これで止めたり再開させたりできます。
ゲーム終盤、第四段階で出てくる「forEachDir」の命令はかなりわかりにくい。
ゲーム中では「隣接する周囲8マスをスキャンする」と書かれていますが、正確には指定した方向のマスを、1マスずつ順番に、指定のメモリに代入し、そのつど囲いの中の命令を実行できる。これをすべてのマスのチェックが終わるまで繰り返す、というものです。

 各ステージには「行数目標」「スピード目標」のふたつの評価があります。
 行数目標はできるだけ短い行数でクリア可能なプログラムを組むもの、スピード目標は完了までのスピードをできるだけ速くするもので、いわば行数目標が「データサイズをいかに減らせるか」、スピード目標が「いかに高速なプログラムを組めるか」の評価です。

 ただ、これらは「やり込み要素」であり、目標に達していなくても特に問題はありません。
 これらを目指すとパズルとしての難易度は大幅に上がるため、まずは気にせずクリアを目指しましょう。

 しかしデータサイズの軽減や、処理の高速化は、プログラマーにとって重要な技術です。
 組み方に工夫が必要な場合が多く、それはプログラミングのセンスを磨くのに良いため、クリア後に挑戦してみるのも良いかも。

 実際のプログラミングでも、まずは正常に走るものを組んで、それを最適化していくのがサイズ軽減や高速化の基本ですね。

ステージクリア時の評価画面。今回のスピード評価は動作が完了するまでの実時間が計測されます。
「calc」による計算と「if」による条件判定は時間がかかるので、多少行数が長くなってもそれらを減らしたプログラムにした方が処理速度はアップします。
にしても「ifを削ってスピードアップ」とか、BASIC時代を思い出しますね……。
いきなりエアロビを始めるOL三人衆&上司ロボ。
今回もデモシーンがいくつか用意されていて、前作よりジョークな感じです。

 ゲーム自体は前作より若干わかりづらくなっている印象もあります。
 if文の不等号やANDとORの使い方、命令語の並べ方などは、プログラムの経験がないと迷うかも。

 ただ、今作はなんといっても最初から日本語。
 その時点でもう、英語だった(日本語化前の)前作より、はるかにわかりやすいです。
 また、無理なく命令語の使い方を学べるステージ構成になっているので、未経験者でもプログラムの楽しさを体験することができるでしょう。

 前作は不自由なプログラム言語だったので、工夫する楽しさがあった反面、「これをやればプログラムがわかる」という感じではなかったのですが、今作のif文やメモリ(変数)は、将来ソフトウェアに携わるときに理解の助けになりそうです。

 パズルとして没頭できるほど面白く、演出などのクオリティも高く、それでいて役に立ちそうな、イチオシしたい作品です。

7 Billion Humans
(セブン・ビリオン・ヒューマンズ)

プログラムを擬人化したコンピュータープログラミングパズル

(画像は7 Billion Humans – AppStore より)

・パズル
・Tomorrow Corporation(アメリカ)
・iOS版600円、Steam版1520円、Switch版1500円

文/カムライターオ

【あわせて読みたい】

 

「自分には才能がない」ひろゆきが語る幼少期の“挫折”。現役プログラマでもクリア困難? 『ヒューマン・リソース・マシーン』をレビュー【ひろゆき・タダゲーレビュー】

 やることはプログラミングだが、難しい専門知識などはとくに必要なし。addやjumpなど、都度都度現れるコマンドを組み合わせ、解法を導き出すのだ。単純なだけに、腕前によってかなり洗練された解法や泥臭い解法になり得るのだが、ひろゆき氏は果たして……。(編集部)

関連記事:

『A列車で行こう』『信長の野望』に夢中になった中学生が、パソコン誌に投稿し続けたシミュレーションゲームのプログラム。それが今、Nintendo Switchで動き出した【カイロソフト社長インタビュー】

ゲーム開発版「しくじり先生」? 海外の開発者たちが失敗談を共有。なぜ動くかわからないプログラムから力技で解決したバグまで

著者
『Ultima Online』や『信長の野望 Online』、『シムシティ4』など、数々のゲームのファンサイトを作成してきた。
 iPhone アプリのレビューサイトを経て電ファミニコゲーマーのお世話に。 
 シューティングとシミュレーションが特に好き。
  • このエントリーをはてなブックマークに追加
電ファミのDiscordでこの記事について語ろう!

関連記事

SNSで話題の記事

新着記事

新着記事

連載・特集一覧

カテゴリ

ゲームマガジン

関連サイト

その他

若ゲのいたり
榎本俊二の現代ゲーム用語大全

カテゴリーピックアップ