『RimWorld』で分かる?作業パーツを組み上げていく「プログラミング的思考」とは【ゲームで世界を観る#49】 | Game*Spark - 国内・海外ゲーム情報サイト

ハードコアゲーマーのためのWebメディア

『RimWorld』で分かる?作業パーツを組み上げていく「プログラミング的思考」とは【ゲームで世界を観る#49】

物事の「仕組み」を分解して考える、それがプログラミング的思考。

連載・特集 特集
『RimWorld』で分かる?作業パーツを組み上げていく「プログラミング的思考」とは【ゲームで世界を観る#49】
  • 『RimWorld』で分かる?作業パーツを組み上げていく「プログラミング的思考」とは【ゲームで世界を観る#49】
  • 『RimWorld』で分かる?作業パーツを組み上げていく「プログラミング的思考」とは【ゲームで世界を観る#49】
  • 『RimWorld』で分かる?作業パーツを組み上げていく「プログラミング的思考」とは【ゲームで世界を観る#49】
  • 『RimWorld』で分かる?作業パーツを組み上げていく「プログラミング的思考」とは【ゲームで世界を観る#49】
  • 『RimWorld』で分かる?作業パーツを組み上げていく「プログラミング的思考」とは【ゲームで世界を観る#49】
  • 『RimWorld』で分かる?作業パーツを組み上げていく「プログラミング的思考」とは【ゲームで世界を観る#49】
  • 『RimWorld』で分かる?作業パーツを組み上げていく「プログラミング的思考」とは【ゲームで世界を観る#49】
  • 『RimWorld』で分かる?作業パーツを組み上げていく「プログラミング的思考」とは【ゲームで世界を観る#49】

「プログラミング的思考」という言葉が最近注目されています。小学校でコンピューターのプログラミング教育が始まったことに付随するのですが、文科省の説明によると「自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力」とあります。

『RimWorld』であれば、惑星脱出、コロニー運営という大きな目的に対し、襲撃への備え、食料生産など中目標に分解し、そこからさらに具体的な必要な物資や作業などを洗い出します。サバイバルの根幹である食糧確保に於いても、細かく分解していけばテーブルに並ぶまでにたくさんの作業が積み重なっていることが分かります。

『RimWorld』ではほとんどの作業を入植者が自動で行い、逐一指示を出すのは効率が悪いです。このゲームでやることは、プレイヤーが望む目標、あるいはAIストーリーテラーが与える理不尽なトラブルという「問題」に対して、ゲームのシステムに沿って入植者が適切な行動を実行する手順を作ること、つまり半自動的に「解決」できるようプログラミングしていくことなのです。

例えば、コロニー立ち上げの時はまず優先順位や各種制限の設定をしていくと思いますが、プレイヤーそれぞれにパターン構築をしているのではないでしょうか。全滅を何度も繰り返し、対策や効率を重視した「手順」を組み上げているかと思います。その「手順」を実行すれば同じ形式のコロニーを誰でも作れる。これもある種の「プログラム」と言えるかもしれません。

安定したコロニーのためには食糧の供給は必須です。ディスペンサーを使うにしろ材料調達は必須であり、何もせず料理が出てくるわけではありません。ゼロからであれば、まずは狩猟するところから始めるでしょう。最も単純な「プログラム」を組むと、「動物を狩る」「解体する」「調理する」の3つの作業になるでしょう。

「プログラム」に基づいて、ゲーム中で作業台を置きました。確かに処理と調理はできますが、ひとつ大きな問題が出てきました。それは、「生肉と料理を置く場所がない」ということです。このままでは、処理したものを地面に置くことになります。

そこで作業台の合間にロッカーを設置しました。これで余った分を汚さずに済みますね。すると、今度は解体で出る革が溜まっています。放置しておくと場所を圧迫するため、ここにもロッカーを作ります。

革のロッカーの隣にミシン台を置いて、衣服生産ラインを追加します。動物の肉を食べるためには、肉の生産と同時に出る革を消費する必要があるのです。最初の食料生産プランの時にこれを予測できるでしょうか?このように、単純な動作の積み重ねであるプログラムは、実行してみると見落としや想定外によって新たな課題が見つかります。目標通りに動かすためには、シミュレーションや実行を試して「不具合」を洗い出し、一つ一つ潰していく新しい作業を増やしていきます。

食材にバリエーションを増やすため農地を作っていると、食事をした入植者が食中毒を起こしていると報告が入りました。発生原因は「不潔な調理場」とあります。ここまで拡張した作業のパーツは9個になりましたが、この「不具合」の原因はどこにあるでしょうか?プログラミングで肝心なのはこの「洗い出し」で、計画した通りに動作しなかった時にどこに原因があるか、そこを直せばちゃんと動くのか、検証を行うことが大切です。

つまり、「作業パーツの一つ一つを把握し、効率的な手順を組み上げ、不具合を検証する」というのが「プログラミング的思考」と言えるのではないでしょうか。

自動化工場を設計するときにはそうして組み上げた「プログラム」の順序通りに設備を置いていくと効率的で、流れ作業の導線を作るのに「プログラム的思考」が応用されるのです。

時には予想外の外的要因によってもうまくいかない場合があります。カマドを機能させるには入植者が燃料を補給する「運搬」の作業が必要なのですが、優先順位が後ろにあるために後回しにされがちです。

燃料の木材は建設にも使うので、最初の頃は枯渇することもしばしば。食料生産ラインを作っても気がついたら生食ばかりで食中毒続出、なんて経験ありませんか?作業のパーツが多くなるほど原因の特定は難しくなり、このタイミングで火災などのトラブルが起きようものなら、何が起こっているのか把握できないまま壊滅的ダメージを受けるでしょう。クリティカルエラーを防ぐためにも、原因究明ができるよう仕組みや手順を隅々まで把握しておくことが管理者には求められます。

PCというブラックボックスのものを日常的に扱うようになり、末端の結果だけを受け取るだけではイノベーションは生まれにくいということで、学校教育を通じて物事の仕組みを考える習慣を身につけさせようというのがプログラミング教育の趣旨です。膨大な作業パーツでコロニー運営を組み上げる『RimWorld』は、失敗と検証を繰り返して効率的な手順を編み出す「プログラミング的思考」を試すのにうってつけではないでしょうか。


《Skollfang》

好奇心と探究心 Skollfang

ゲームの世界をもっと好きになる「おいしい一粒」をお届けします。

+ 続きを読む
【注目の記事】[PR]

編集部おすすめの記事

特集

連載・特集 アクセスランキング

アクセスランキングをもっと見る

page top