ComputerCraftのご紹介
ComputerCraftは、PC版MinecraftのModの一つです。
このModによりマインクラフト世界にコンピュータを導入でき、様々な作業を自動化できるようになります。
中でもタートルというプログラム可能な自走型ロボットを使うことで、楽しみながらプログラミングを体験できることがこのModの特徴になります。
そもそもMinecraftとは
Minecraft(マインクラフト)は、ストックホルムにあるMojang(もやん)という会社が開発・発売しているゲームタイトルです。
同タイトルはPC版、XBOX版、携帯(iOS/Android)版で発売され、そのすべてでミリオンヒットしているので、皆さんも名前くらいはご存知かと思います。
すでに様々な人から語りつくされている感もあり、このゲームの魅力を語るのは少しだけ恥ずかしいものがあるのですが、ここでは大きく2つの魅力を取り上げてみたいと思います。
小さな世界(マイクロワールド)
1つは、マイクロワールドとしてのマインクラフトです。
ゲーム内世界は、1メートル四方の立方体を積み重ねたブロックワールドで抽象化して表現されています。砂ブロック・石ブロック・丸太ブロック・葉っぱブロックなどなど。これらを素手や道具を使って壊し、そして手に入れたこれらブロックを使って壁を作り、家を作り、村を作り、城を作ることができます。
現実世界を抽象化した小さな世界(マイクロワールド)としてのマインクラフトは、ブロック単位という複雑すぎず簡単すぎずの絶妙な遊び道具を我々に提供してくれます。
我々は煩雑な物理法則にとらわれず、単純な箱庭の中で遊ぶことに集中できるわけです。
箱庭の楽しみ方は人それぞれです。
農場を作ってスローライフを楽しむも良し、城を作って王様プレイに浸るも良し、巨大建築物を作って動画公開するも良し、中にはパズルのようにピタゴラスイッチを作って楽しんでいる人もいます。
非公式のゲーム追加要素(Mod)
もう1つの魅力として、豊富な追加要素があります。
マインクラフト自体は一つのシンプルなソフトなのですが、世界中のマインクラフトファンが、自分たちで非公式の追加プログラム(Modと呼ばれます)を作り公開しています。
このModの数は把握しきれないほど存在しており、ユーザーはそれらの中から自分の気に入ったModを選び、自分好みのマインクラフト世界を作ることができるのです。
Mojangが公開する素のマインクラフトをバニラ(アイスクリーム業界の基本であるバニラにたとえています)と呼んでいるのですが、バニラに様々なトッピング(Mod)を加えることで、自分好みの味(ゲーム世界)を作ることができます。
いつまでも飽きることなくゲームを楽しめることが、マインクラフトの最大の魅力の一つと言えるでしょう。
- スルメゲーと呼ばれるゲームがあるけれど、そのスルメを自分好みに味付けできるなら、それはもう究極のスルメでしょう?
Modの一つであるComputerCraft
Daniel Ratcliffe(dan200)氏が作成したComputerCraftというModは、バニラ世界にコンピュータとタートルという2大要素を導入します。
コンピュータでは、Luaというプログラム言語を使うことでプログラムを組むことができます。
プログラムによりいくらでも複雑な計算処理ができるので、たとえば現在時刻を表示する時計を作ったり、タイマーを作って自動農場収穫装置を時限式にしたり、ゲーム内でアニメーション画像を表示したりなどなど、工夫次第で様々なことができるようになります。
中でも、プログラム可能な自走ロボットであるタートルを使えば、自動で一定範囲の採掘をしたり、自動で壁や床を作ったり、またあるいは様々な材料を作って料理をしたりなど、さらにできることが広がります。
何を自動化するかはユーザーの発想次第です。マインクラフトという小さな世界であなただけの工夫をしてみましょう。
- アイデアとプログラム次第でなんでもできるよ!
プログラミング可能なタートル
タートルプログラミングは、直感的で、逐一動作で、シンプルです。
turtle.forward() turtle.turnRight() turtle.forward()
例えば上記のようなプログラムを実行させることにより、目の前にいるタートルが1歩前進し、右を向き、また1歩前進します。
for文を使った次のようなプログラムを組むことで、ひたすら真下に穴を掘り潜っていく(正確には50回)タートルを見ることができます。
for i=1,50 do turtle.digDown() turtle.down() end
書いたプログラムを実行するとすぐにタートルが動き始めます。もしプログラムが間違えていたらタートルの動きがおかしくなるのですぐにわかります。
そのときは、タートルを殴ってアイテム化することで元の位置に引き戻しましょう。そしてプログラムを修正して再実行するのです。
プログラムで書いたとおり動いて僕たちを助けてくれる、そんな忠実なシモベがタートルなのです。
- タートルは癒し要素です。究極的には萌え要素になります:P
プログラミング学習環境としての評価
ComputerCraft(以下、CC)が用いているLuaというプログラム言語はシンプルな言語仕様のため、学習コストは比較的低いと言われています。
とはいえ、プログラミングの全くの初心者がCCでいきなりプログラムを組めるようになるかというと、さすがにそれは無理があります。
少なくとも、プログラムとは何か、関数とは何か、変数とは何か、そしてループとは何か。この程度の知識は最低限必要でしょう。
逆に言うと、他のプログラム言語を1つでも一通り扱えるならば10分あればLuaの文法を理解できます。あとはTurtle APIを解説したWikiを見ながら、自由にプログラムを組み楽しむことができるでしょう。
個人的な偏見も込みで、プログラミング学習環境としてのCCを僕は以下のように評価しています。
- プログラミング知識ゼロの人
- あまり向かない。理由は、完全初心者向けの教科書やマニュアルが整備されていないから。自分で教科書を探してきて、自分である程度学ぶことができる人なら大丈夫。
- 時間をかければソースコードを見てその流れを追うことができる。でもプログラムを書いた経験はほとんどないという人。
- 向いている。タートルプログラミングを通してプログラムを書くコツを学ぶことができる。むしろメインターゲット。
- サンプルプログラムを真似しながら時間をかければプログラムを書ける人。
- メインターゲットその2。タートルプログラミングのコツをつかめばいろいろなプログラムを書けるようになる。
- そのためのサンプルプログラムは、このサイトでも、できるだけ紹介するつもりです。
- プログラミングすることに慣れれば、プログラマーとしてさらにステップアップ!
- 職業プログラマー(あるいは日曜プログラマー)。CCってどんなものか試してみたいという人。
- 10分あればCCプログラムが書けるようになります。簡単すぎて逆に物足りなさを感じるかも。
- 工夫を凝らして複雑な動作をするプログラムを書けるようになるとさらに楽しくなります。
- 「○○という制約の中でこんなすごいことが実現できるのです」こういったことに喜びを感じる人にはうってつけのModです。
- 喜びよりも物足りなさを感じはじめたら、Moddingを始めるのはどうでしょうか。
- つまり、Java言語を使って新しいModを作るのです。
- Lua言語自体の学習の為にこのModを使うのもありかもしれません。Lua面白いよLua。
- CCの魅力=タートルへの愛+プログラミングの楽しさ
まとめ
Q.ComputerCraftを楽しめるのはどんなユーザー?
A.プログラミングに興味のある人ならだれでも。
プログラミング初級者から中級、上級者に至るまで、プログラミングすることの楽しさ(書いたらすぐ動く!)をいくらでも経験することができるModです。
ただしCC自体に教科書は用意されていないので、プログラミング知識ゼロの人にはちょっときついかもしれません(自分で教科書を探して勉強できる人なら大丈夫)。
また楽しいだけでなく、CCでプログラミング経験を積むことで、プログラミング初級→中級→上級とステップアップできるかもしれません。
「こ、これゲームしてるんじゃないよ。プ、プログラムの勉強しているんだよ! ほんとだよ」
ほら、自己弁護も完璧。
そしてCCが物足りなくなってきたら、Java言語を使ってModを作りましょう。modderへステップアップ!