作品づくりサポート
【MakeCodeシリーズ⑥】関数の使い方

今回の記事について
MakeCodeでプログラムを作成していると、同様の処理を何度も行うことがあります。同じ処理のブロックを繰り返し組むのは大変ですし、プログラムが長くなってしまう可能性もあります。
そこで今回は、わかりやすいプログラムを楽に作成することができるようになる「関数」について紹介したいと思います。
今回の記事では、関数を使用して以下のような橋をつくるプログラムを作成してみましょう!

※MakeCodeの基本的な使い方は別記事「MakeCodeの使い方」をご参照ください。
関数とは
今回のMakeCodeでは関数を使うので、関数について確認しましょう。
関数とは、ある決まった処理を行うプログラムのかたまりで、必要なタイミングで関数を呼び出すことで、使用することができます。
関数を使うメリットは主に以下の3つです。
・同様の処理を何度も繰り返さなくて済む
・プログラムを簡略化できる
・プログラムがどのような処理をしているのか、見てわかりやすくなる
では、以下の例をもとに、関数がどういったものなのか見てみましょう。
例えば、マイクラ内で家を2軒建てるプログラムをつくりたいとします。まったく同じ家を建てるのであれば、繰り返しを利用すれば簡単につくることができるかもしれません。しかし、壁の高さも屋根の色も違った場合どうでしょうか?当然、繰り返しを使うことはできません。さらに、今度は4軒建てるプログラムをつくって欲しいと頼まれたらどうでしょうか?2軒分のプログラムを追加する必要があり、プログラム全体が長くなってしまいます。

そこで、家を1軒だけ建てる関数を作成してみます。関数には、パラメーターという関数内で使用できる変数を設定できます。今回は、パラメーターに「壁の高さ:x」と「屋根の色:color」を用意しました。これにより、家を建てる関数を実行するたびに、壁の高さと屋根の色を指定することができます。

先ほどの画像と比べて、「チャットコマンド”run”を入力した時」の中の処理が短くなり、見やすくもなったと思います。
MakeCodeでの関数の作成方法
MakeCodeで関数を作成する手順について説明します。
左側に「高度なブロック」というタブがあるのでそちらをクリックし、出てきた「関数」をクリックしてください。そこで「関数を作成する」をクリックすると、新たな関数を作成することができます。

立ち上がった画面で、関数の名前を決めたり、パラメーターを追加したりすることができます。追加するには、上側の「パラメーターを追加する」の文字の隣の必要な型のボタンをクリックします。よければ「完了」ボタンをクリックします。

「関数」内に、今作成した関数を呼び出すためのブロックが追加されます。以下のように、プログラム内で作成した関数を呼び出すことによって、関数内の処理を実行することができます。

関数内でパラーメーターの値を利用するには、関数ブロックのパラメーターを右クリックし、「複製する」をクリックしてください。複製されたパラメーターを任意の位置にはめることで、利用することができます。

それでは、関数を活用した建築の方法を学習していきましょう!
関数を活用した橋の建築方法
関数を使わない場合
まず、関数を使わないプログラムを見てみましょう。こちらは橋の3分の1程度を作成するプログラムです。中身をじっくり見ていただく必要はありませんが、一目で複雑でわかりにくいプログラムであることがわかると思います。


さらに、この橋は柱と柱の間の幅が全て同じではないので、繰り返しを使うことはできません。つまり、このまま関数を使わずに橋を完成させようとすると、上のプログラムの3倍の長さになってしまいます。

そこで関数を使用することで、わかりやすく、簡単なプログラムを作成することができます。それでは、関数を活用して橋をつくってみましょう!
最初だけ実行するプログラムの作成
まずはじめに、変数とブロックの設定を行います。「ループ」にある「最初だけ」というブロックを使い、以下のようにします。この設定ははじめに1回だけ行えば良いので、このように「チャットコマンド”run”を入力した時」から処理を分けることで、無駄に何度も実行することを避けます。
変数heightは道の地上からの距離、変数widthは塀の列も含めた道の幅にします。エージェントのスロット1番に石レンガ、スロット2番に模様入りの石レンガ、スロット3番に石レンガの塀(丸石の壁グループの7番のブロック)を設定させます。メインで使用するブロックは石レンガなので、スロット番号1を有効にしておきます。

橋の構造の確認
次に、プログラムを関数化するために、橋の構造を確認します。
下の画像のように、柱(赤枠)を含むアーチ状のパーツが4つ、その間に道(青枠)だけのパーツが3つあります。このように同じような形のパーツごとに分けることで、関数化することが容易になります。

関数の作成
今回は、以下の4つの関数を用意したいと思います。
・柱をつくる関数
・道をつくる関数
・アーチをつくる関数
・橋をつくる関数
まず、柱をつくる関数を作成してみましょう。以下のような関数makePillarを作成し、チャットコマンド”run”を入力した時に呼び出します。すると以下のように、縦に石レンガが4ブロック積まれた2本の柱が作成されます。


次に、道をつくる関数を作成してみましょう。以下のような関数makeRoadを作成し、同様に呼び出します。すると以下のように、模様入りの石レンガを使用した1列の道が上に追加されます。


ここで、つくられた構造物を見てください。アーチ状にブロックが置かれています。つまり、関数makePillarと関数makeRoadを連続で実行すると、アーチをつくることができます。
それでは以下のように、関数makeArchを作成し、その中で関数makePillarと関数makeRoadを呼び出すようにします。このように、関数の中で関数を呼び出すこともできます。これで、チャットコマンドに”run”を入力したときに、関数makeArchを呼び出すだけでアーチを作成することができます。

では、上のプログラムに続けて、アーチを作成した後に道を繋げてみましょう。関数makeRoadの呼び出しを3回繰り返してください。このとき、パラメーターは”3″なので気をつけてくださいね。すると以下のように、3列分の道が繋がります。


次にアーチを作成したいのですが、ここから作りはじめると高さがずれてしまいます。そのため、一度エージェントを地面まで下ろしてあげましょう。繰り返しのブロックの後に、以下のようにブロックを追加します。


そしたら、アーチ→道→エージェントを下ろす→アーチ→…→アーチというように繰り返します。最後は関数makeArchの呼び出しで終わります。すると、このようにエージェントが橋をどんどん繋いでいってくれます。ここでプログラムを見ていただきたいのですが、同じような処理が繰り返されていることに気づいていただけるでしょうか?


そうです!ここもさらに関数化することができます!「アーチ→道→エージェントを下ろす」という一連の処理を、以下のように関数makeBridgeとします。

プログラムの完成
これで橋をつくるプログラムの完成です!!こちらが完成したプログラムです。

プログラムを動かすと、橋がつくれました!

さいごに
MakeCodeでは、他にも建物の建築をAgentに手伝ってもらったり、さまざまな仕掛けをつくったりすることができます。ぜひ自分でもいろいろ試して、効率良く作品づくりを進めてみてくださいね。
保護者や指導者の方々へ
MakeCodeは、子ども達が視覚的に理解しやすい「ビジュアルプログラミング言語」を採用しています。
MakeCodeでプログラミングに触れて興味が湧き、その後自分自身で言語を学び、もっと複雑なプログラミングに挑戦していく子もいます。
Minecraftカップに参加する中で、お子さんから「もっと早く建物をつくりたい」「プログラミングもやってみたい」といった声が上がりましたら、ぜひ本記事をすすめてみてください。
MakeCodeシリーズ
【MakeCodeシリーズ①】fillコマンドとreplaceコマンド
<執筆:渡邊陽翔>