inosyanのブログ

プログラム、家庭菜園、僕が興味を持ったことを書いていきます

【マイクラMakeCode】プロジェクトの管理 その2(削除/URL共有/URL読み込み)

f:id:inosyan:20181006141419g:plain
(空から下を向きながらウールブロックをならべて作ったSNSアイコン)

http://hatenablog.com/前回の続きです。

プロジェクトの削除

 既にプロジェクトがある状態で同じプロジェクトのファイルを読み込むと、同じ名前のプロジェクトが2つできてしまいます。このような場合は古い方のプロジェクトを削除しましょう。

f:id:inosyan:20181006101645g:plain

 プロジェクトを削除するには、編集画面の右上にある歯車のボタンを押し、メニューから「Delete Project」を選びます。

f:id:inosyan:20181006101704g:plain

 確認画面が出ますので「Delete」ボタンを押します。

f:id:inosyan:20181006101717g:plain

 自動でホーム画面に戻ります。プロジェクトが削除されていますね。

f:id:inosyan:20181006101732g:plain

プロジェクトの共有

 作った作品を他の人に見てもらう方法は、保存したファイルを共有する以外に、クラウド1に保存しURLを共有する方法があります。ファイルを共有する方法と比べ、より多くの人に簡単に自分の作品を見てもらうことができます。

 画面の左上にある「Share」ボタンを押します。

f:id:inosyan:20181006101800g:plain

 プロジェクトを公開することに同意するかどうかを確認する画面が開きます。 「Publish project」ボタンを押します。

f:id:inosyan:20181006101845g:plain

 すると、プロジェクトが公開され、URLが発行されます。 このURLは忘れないように記録しておいてください。共有したい相手にこのURLを教えることで、作品を共有することができます。

f:id:inosyan:20181006101826g:plain

共有されたプロジェクトの読み込み

 ためしに共有したURLを読み込んでみましょう。そのために、画面の上にある「Home」ボタンを押します。

f:id:inosyan:20181006101902g:plain

 ホーム画面にある「Import」ボタンを押します。

f:id:inosyan:20181006101942g:plain

 ダイアログから「Import URL」を選びます。

f:id:inosyan:20181006101919g:plain

 URLを入力するダイアログが開くので、さきほどのURLを貼り付け「Go ahead!」を押します。

f:id:inosyan:20181006101955g:plain

 無事に読み込まれましたか? 編集画面になったら成功です。

f:id:inosyan:20181006102008g:plain

共有する場合の注意

 ファイルを友達に渡す方法、URLを共有する方法、いずれにしても自分以外の人に作品を共有する際に気をつけてほしいことがあります。それは、その中に共有してはいけない情報が含まれてないかどうか確認してほしいということです。例えばパスワード、住所、電話番号などの機密情報や個人情報です。もしプログラムの中のコメントやプロジェクトの説明の中にそれらが含まれていると、他の人にそれを見られてしまい、トラブルに巻き込まれる可能性があるからです。

 ファイルやURLを渡す相手が友達でも、意図せず第三者に漏れてしまうかもしれません。一度公開してしまうと取り消すことはできないので、くれぐれも気をつけてください。これはMakeCodeに限ったことではありません。

 プログラムに人に知られては困る情報を書くようなことは無いと思いますが、この記事を見ている読者の中には子ども達もいるかもしれませんので、念のため書きました。

共有URLの発行機能について

 URLを発行し、他の人と共有することができるということは、プロジェクトのデータはクラウドに保存されているはずです。ということは、この機能はバックアップに使えるのでは?と思うかもしれません。ですが、バックアップの用途は想定されていないようです。

 このURLは共有するたびに毎回変わります。つまり、プロジェクトに1つにつき1つのURLが発行されるのではなく、毎回新規のURLが発行されるようです。10回シェアしたら10個のURLが発行されます。これは、このURL発行の仕組みが、誰の何のプロジェクトなのかは関知せず、共有だけを目的としていることを意味します。

 作りかけのプロジェクトは他の人には見せるべきではないので、完成してから共有するようにしましょう。


  1. クラウドとは、インターネット経由で提供されるサービスのこと。例えばユーザーのデータをインターネット上のサーバーに保存するサービスがある。

【マイクラMakeCode】プロジェクトの管理 その1(新規作成/保存/読み込み)

f:id:inosyan:20181002234742j:plain

新規プロジェクトの作成

 チュートリアルを一通り見たら、つぎはMakeCodeで何か作ってみましょう。チュートリアルやサンプルコードを好きなように作り変えてもいいし、新規にプロジェクトを作ることもできます。

 新規プロジェクトを作るには New Project ボタンを押します。

f:id:inosyan:20181002234759j:plain

 これで新規プロジェクトが作られました。

 まずは名前をつけておきましょう。いまから作るプログラムがどんなものなのかを言葉にします。たとえば家を建てるプログラムなら「House Builder」のような感じです。日本語も使えます。ですが、後で説明する「共有」を行う際、この名前が世界中の人の目に触れることになるので、英語にしておいたほうがより多くの人に見てもらえるでしょう。

f:id:inosyan:20181002234810g:plain

 もし名前入力欄が見えなければ、ウィンドウをすこし横に広げて見てください。

f:id:inosyan:20181002234825g:plain

データの保存は自動。ただしバックアップを推奨

 保存は自動的に行われるようです。ログイン機能が無いところを見ると、クラウド1に保存されているわけでもなさそうなので、おそらく一時的にパソコン内に保存されてるだけです。 これは、パソコンの操作が不慣れな人が保存を意識しなくても良いように配慮された設計なのでしょう。ですが、パソコンが壊れたらせっかく作ったプログラムが無くなってしまいます。

 無くなってほしくないデータは「ファイル」として保存しておくことをお勧めします。そうすれば、そのファイルをUSBメモリや他のハードディスク、クラウドに保存することができますし、友達に自分の作った作品を見せることもできます。

 プロジェクト名の横のフロッピーディスク2のアイコンが保存ボタンです。

f:id:inosyan:20181002234841g:plain

 これを押すと、ファイル名として保存されます。

f:id:inosyan:20181002234855g:plain

データの読み込み

 ためしに保存したファイルを読み込んでみましょう。そのために、画面の上にある「Home」ボタンを押します。

f:id:inosyan:20181002234917g:plain

 ホーム画面にある「Import」ボタンを押します。

f:id:inosyan:20181002234930g:plain

 ダイアログから「Import File」を選びます。

f:id:inosyan:20181002234949g:plain

 ファイル選択画面から「Choose File」を押します。

f:id:inosyan:20181002235001g:plain

 ファイルを選択し、「Open」を押します。

f:id:inosyan:20181002235013g:plain

 選んだファイル名が表示されているのを確認したら「Go ahead!」を押します。

f:id:inosyan:20181002235026g:plain

 ファイルが無事に読み込まれ、編集画面になったら成功です。

f:id:inosyan:20181002235042g:plain


  1. クラウドとは、インターネット経由で提供されるサービスのこと。例えばユーザーのデータをインターネット上のサーバーに保存するサービスがある。

  2. フロッピーディスクとは、昔使われていたコンピュータのデータを記録するための装置。今はほとんど姿を消したが、保存を意味するアイコンには今もまだ広く使われている。

【マイクラMakeCode】MakeCodeのチュートリアルを見てみる その2

f:id:inosyan:20180929001747g:plain
(前回のチュートリアルで穴に落ちて出られなくなったキノコ模様の牛達)

前回の続きです。

プログラムブロック

 スクラッチに代表されるビジュアルプログラミング言語では、ジグソーパズルのピースのようなものをブロックと呼びますが、マインクラフトのゲーム内にも「ブロック」があり、それと紛らわしいので、ここでは「プログラムブロック」と呼ぶことにします。スクラッチをやったことがある人には馴染みのある画面ですね。

 スクラッチでは、「緑の旗」という、一番初めに実行するためのプログラムブロックがありましたね。MakeCode(メイクコード)にも同じ働きのブロックはありますが、MakeCodeの場合は、チャットで「checken」と入力されたときや、プレイヤーが歩いた時など、さまざまなきっかけをもとに実行させます。このきっかけのことを「イベント」と呼びます。

 プログラムブロックの上が平らなものがイベントです。イベントがきっかけで開始するので、その上にはまるプログラムブロックは無いからです。

f:id:inosyan:20180929001814g:plain

ChickenRain(チキンレイン)のコード

 チュートリアルの ChickenRainのコードを詳しくみてみましょう。
f:id:inosyan:20180929001828j:plain

①では、チャットコマンドで "chicken" と入力されるのを待っています。逆に言えば、チャットでそれが入力されるまでは何も起きません。他の文字がうたれても何も起きません。"chicken" と打たれた時だけ、この青色のブロックで囲まれている箇所が実行されます。

②では、囲まれた箇所を100回繰り返します。

③は、動物を、プレイヤーの頭上10メートルの箇所に出現させています。座標は、X、Y、Zの順番で、それがプレイヤーからの相対座標なのか、ワールドの絶対座標なのかを指定できます。
f:id:inosyan:20180929001902g:plain

 上記の③の例では、X, Z は0で、Yだけが10なので、プレイヤーの上方向10メートルの位置だということを示しています。

JavaScriptに切り替え

 画面の上にある、{} のボタンを押してみましょう。
f:id:inosyan:20180929001916g:plain

 プログラムブロックがJavaScriptに切り替わりました。プログラム初心者は戸惑うかもしれません。でもよく見ると、プログラムブロックとやっていることは同じです。 f:id:inosyan:20180929001928g:plain

 上記の①にあたるコードがこれです。

player.onChat("chicken", function () {

})

 これは player(プレイヤー) が onChat(チャットコマンド)で "chichen" と入力した時 function(){} のカッコの中を実行する という意味です。function は 関数 という意味で、プログラムの用語ですが、いまはあまり深く考えず、「実行したいものをまとめておく入れ物」くらいに考えておいて問題ないでしょう。

 次に、上記の②にあたるものがこれです。

    for (let i = 0; i < 100; i++) {

    }

 i(アイ) は「変数」と呼ばれるもので、変化する値を入れておく入れ物です。はじめに i を 0にして、それが 100 より小さいあいだ、iを1ずつ増やしていきながら {} の中を実行する という意味です。

 あることを繰り返し行う書き方はいくつかありますが、これは for(フォア)文と呼ばれるものです。変数の i は他の文字列でも良いですが、for文では i が変数としてよく使われます。

 変数の前に書いた let(レット) は、変化する値だということを表すための記号です。他にも const(コンスト) がありますが、const は変化しない値の時に使います。

 i++ の ++ は、i = i + 1 と書くこともできます。この式の意味は、iに1を足したものを再びiとする という意味で、iが一つずつ増えていきます。このことをインクリメントと言います。

 最後に、上記の③にあたるものがこれです。

        mobs.spawn(mobs.animal(AnimalMob.MushroomCow), positions.create(0, 10, 0))

 「mobs(モブ1)を spawn(発生)させよ。種類は AnimalMob.MushroomCow(キノコ模様の牛)、位置はプレイヤーからの相対位置(x:0, y:10, z:0)」
という意味です。

 丸暗記する必要はないですよ。他のプログラム開発用のツールと同じように、MakeCodeにも「コード補完」という便利な機能がついています。文字を途中まで打ったらあとは候補がでてくるのでそこから選ぶだけです。

f:id:inosyan:20180929002013g:plain

 いかがでしょう。英単語が少しわかれば、プログラムなんて簡単な気がしませんか?


  1. mob(モブ)とは、群衆のことを意味する言葉だが、マインクラフトでは動物やモンスターのことを指す

【マイクラMakeCode】MakeCodeのチュートリアルを見てみる その1

f:id:inosyan:20180925224438j:plain

 Windows10のパソコンにマインクラフトとCodeConnection(コードコネクション)をインストールしたら、いよいよMakeCode(メイクコード)でプログラムができます。 でも、どうやって書き始めたらいいのかわからないかもしれません。まずはMakeCodeで何ができるのかを知るために、チュートリアルを見てみましょう。

MakeCodeの画面

 マインクラフトにCodeConnectionのアドレスを入力し接続されると、CodeConnectionの画面がMakeCodeになり、ウィンドウサイズが画面の半分の大きさになっています。これはおそらく画面の半分にMakeCodeを、もう半分にマインクラフトを置いて作業することを想定してるからですが、ウィンドウの大きさを変えても問題ありません。

f:id:inosyan:20180925224525j:plain

①: 自分のプロジェクト一覧
②: チュートリアル一覧

 チュートリアルは画面に収まりきれないほどたくさんあります。Tutorialsの行の右端のボタンを押せばもっとたくさん見れます。
f:id:inosyan:20180925224548j:plain

  • Chicken Rain: 空からにわとりを降らせる
  • Agent Moves: エージェントをプレイヤーの場所にワープさせ、前後左右に歩かせる
  • Agent Build: エージェントが歩きながらブロックを置く
  • Mega Jump: プレイヤーを上空にワープさせる
  • Flower Trail: プレイヤーの歩いた場所に花を咲かせる
  • Super Digger: 地面に大きな穴を掘る
  • Fast Forward: 時間を進めて昼と夜をすばやく変える
  • Billboard: ブロックで巨大な文字を書く
  • Compass Rose: 大きな文字で、E(西)、W(東)、N(北)、S(南)を書く
  • Spleef: プレイヤー同士が戦うための競技場(マイクラではスプリーフと言う)を作る
  • Leap of faith: 1x1マスの水たまりと、すごく高い飛び込み台を作る
  • Gold Stairs: 金色の階段を作る
  • Lava Tower: 溶岩の塔を作る
  • Sand Storm: 空から砂を降らせる

Chicken Rain(チキンレイン)

 チュートリアルの一つ、チキンレインを見てみましょう。サムネイルをクリックすると、「Start Tutorial」のボタンが出てくるので、それを押します。
f:id:inosyan:20180925224609j:plain

 開始すると、まずそのチュートリアルの説明が表示されます。
f:id:inosyan:20180925224625j:plain

 つぎに何をすべきか表示されるので、指示どおりにすすめていきます。
f:id:inosyan:20180925224642j:plain

 指示は上に表示されているので、忘れてしまっても大丈夫です。必要最小限のUIに限られているので、迷わずに進めていくことができます。
f:id:inosyan:20180925224658j:plain

 チュートリアルを最後まですすめると、通常のUIに戻ります。
f:id:inosyan:20180925224712j:plain

 実行すると、にわとりが空から降ってきます! プレイヤーの位置にあわせて出現地点がかわるので、プレイヤーが動けばそれについてくるように降ってきます。
f:id:inosyan:20180925224730j:plain

 卵のアイコンをクリックすると、他の選択肢を選ぶ画面が開きます。にわとりのかわりに別の生き物を降らせてみましょう。
f:id:inosyan:20180925224748j:plain

 マインクラフトに出てくる生き物はかわいいですね!
f:id:inosyan:20180925224802j:plain

MakeCodeとマインクラフトでプログラミングを始めるための環境構築

今回は、MakeCode(メイクコード)とマインクラフトでプログラミングを始めるための環境構築について書きます。
f:id:inosyan:20180922174729j:plain

パソコンを用意しよう

Windows10のパソコンが必要になります。スマホやゲーム機ではできません。 ですが、Macでもパラレルズなどの仮想環境1Windows 10が入っていれば大丈夫です。

f:id:inosyan:20180922174752g:plain

マインクラフトを入手しよう

マインクラフトは、もともとはパソコン向けでしたが、今はスマホやゲーム機などいろんなデバイス向けの製品があります。 今回はパソコン向けのマインクラフトを使いますが、ここで注意が必要です。

一番最初に作られたマインクラフトは、Java(ジャバ)というプログラム言語で作られました。なので今は他の製品と区別するため「Java版」と呼ばれています。 以前はパソコンで動くマインクラフトと言えば、このJava版だったのですが、いまはもう一つ「Windows 10版」というものがあります。

これら2つはゲームの内容はほぼ同じですが、いろいろ違いがあり、MakeCodeと連携できるのは Windows 10版 のほうです。 なので、Windows 10版を入手するのですが、ここでも注意が必要です。

Java版のライセンスを持っていれば、Windows 10版は無料で入手できるのです。なので、昔Java版で遊んでいた方は Windows 10版を買い直す必要はありません。

新規で購入される方も、Java版を購入したほうが良いです。なぜならJava版を購入すればWindows 10版もプレイできますが、逆はできないからです。Java版はMod(モッド)という機能を拡張する機能があったり、Macでも動いたりと、Windows 10版とは違う特徴を持っているので、どちらもプレイできるようにJava版の購入をおすすめします。

f:id:inosyan:20180922174806j:plain

Java版のライセンスでWindows 10版を入手する方法は こちら に詳しく説明されています。

CodeConnection(コードコネクション)を入手しよう

MakeCodeとマインクラフトを繋ぐためのアプリ、CodeConnectionをいれましょう。これは無料でダウンロードできます。

CodeConnectionインストーラをダウンロード

ダウンロードしたら、インストーラを起動してインストールします。

f:id:inosyan:20180922174823j:plain

マインクラフトをチートモードにしよう

MakeCodeのプログラムでマインクラフトを操作するには、チート機能を有効にする必要があります。

(チートはゲームでズルをすることを指す悪いイメージの言葉ですが、マインクラフトのチート機能ははじめから搭載されている正式な機能ですので、これを使用しても何の問題もありません。安心して使ってください。)

マインクラフトのワールドの設定で、チートをONにしておきましょう。

f:id:inosyan:20180922174840g:plain

CodeConnectionのIPアドレスをマインクラフトに入力しよう

CodeConnectionを起動すると、アドレスが出てくるので、右にあるボタンを押して、クリップボードにコピーしておきましょう。

f:id:inosyan:20180922174900g:plain

アドレスは数字でできており、一見IPアドレス(インターネットのアドレス)のようにも見えますが、それとは違うようです。公開しても害がないものかどうかわからないので、念のため画像にはモザイクをかけてあります。

そして、マインクラフトに戻り、TボタンかEnter(エンター)を押します。 すると、チャット画面が開くので、キーボードの コントロールキーと Vキーを同時に押し、クリップボードにコピーしてあったアドレスを貼り付け、Enterを押します。

f:id:inosyan:20180922174916j:plain

アドレスを貼り付けたあと、Code Connectionの画面に戻ると、画面が切り替わってますね。 どの方法でプログラムするのかをここで選びます。いろいろありますね。スクラッチもあります。 今回はMakeCodeを選びましょう。

f:id:inosyan:20180922174931g:plain

CodeConnectionの画面がMakeCodeの画面になっていたら成功です。チュートリアルを一通り見てみましょう。

f:id:inosyan:20180922174950j:plain


  1. 仮想環境とは、OSの上で別のOSを動かす仕組みのこと。例えばMacの中でWindowsを動かすことができる。

MakeCodeでマインクラフトのプログラムをする意義について 子ども/大人/初心者/プロ それぞれの立場で考えてみた

MakeCodeとマインクラフトのプログラミングをみなさんにおすすめしたいと思ったのですが、まずはじめに、どうして良いのかをはっきりさせておきたくなったので、それについて考えてみました。

子ども

これからの時代は、学校の科目の一つにプログラムが加わりそうです。楽しみながら覚えたいですね。 マインクラフトは人気のあるゲームなので、これを使って勉強することは、子どもたちにとっては嬉しいことでしょう。 普通のプレイではできないようなこと(例えばおびただしい数の爆弾をいっきに爆発させる等)も、プログラムならできるということを知れば、プログラムを学ぶ意欲もわくでしょう。

f:id:inosyan:20180921011053j:plain

大人

趣味として…子供に教えるため…動機はいろいろでしょうが、マインクラフトもMakeCodeも子どもたちだけのものではないので、大人がやったっていいと思います。 マインクラフトは成果が形として見えやすいので、次の学習への意欲が得やすいです。すごい作品をつくったら子どもたちも喜ぶでしょう。

f:id:inosyan:20180921011108j:plain

初心者

タイピングが苦手だったりスペルミスで動かないとやる気が萎えてしまいがちですが、ブロックをならべる方法からはじめることで、だいぶハードルが下がります。 ブロックでのプログラムに慣れたら、JavaScriptでのプログラムに切り替え、文字のプログラムにステップアップできる仕組みが、MakeCodeには備わっています。

f:id:inosyan:20180920003503j:plain

プロ

仕事とは関係のないものを作ってみると、新しい発見があるものです。MakeCodeは実際やってみるといろいろ制約や不便さがあることに気づくと思いますが、制約のなかで結果を出すことは面白いです。プロの作った作品は、これから学ぶ人の役に立つはずですし、そこには仕事とは違った喜びがあるでしょう。

f:id:inosyan:20180920003523j:plain

さて、意義がはっきりわかったので、次回は環境構築について説明したいと思います。

MakeCode で Minecraft のプログラミングをしてみました

f:id:inosyan:20180920003351j:plain

こんにちは。久々にブロクを更新します。
最近またMinecraftをはじめました。というのも、MakeCodeというMinecraft用のプログラムを書ける仕組みを知ったからです。
まず、Minecraftを知らない人のために簡単に説明しますと、ブロックをならべたり、穴を掘ったりして家とか道具を作りながら、 モンスターと戦ったり探検したりするゲームです。
昔、娘といっしょにやっていたのですが、娘がハマりすぎてゲームをやめる時間が過ぎてもやめようとしなかったので禁止にしてしまい、それ以来やってませんでした。

f:id:inosyan:20180920003429j:plain

その当時、Raspberry Pi版のMinecraftがあって、それはScratchとつないでプログラムできました。でも、モンスターが出なかったりいろいろ製品版のMinecraftとは違うもので、製品版とは住み分けてる感じでした。

それから、MinecraftMicrosoftに買収されたり、モバイル版が出たりXbox版が出たりといろいろありましたが、動向は気にしつつもあまりプレイする意欲がわきませんでした。 Minecraftが好きなら娘といっしょじゃなくても一人でやればよかったのですが、やる気がでませんでした。 ゲームは好きですが、膨大な時間をゲームに取られるのがいやだからです。それはMinecraftに限ったことではないですが、Minecraftって積み木のようにブロックを積み上げる作業があって、それがとてつもなく時間がかかるのです。城なんてとても作れないから小さい小屋を作って我慢することになっちゃうし。。。 要するに、時間がかかる単調な作業がやる気のでなかった原因です。

ある日、MakeCodeの存在を知りました。それを使えばMinecraftとつないでプログラムでブロックを並べることができるらしい! しかも MinecraftWindows 10版なので、モンスターも出る制約の無いMinecraft! そして、うれしいことにJavaScript(TypeScript)でもコーディングできます。

Windows 10版のMinecraftJava版のライセンスを持っていれば無料で手に入れることができるようです。 僕はmacを使ってますが、Parallelsに入ってるWindows 10に無事インストールできました。

f:id:inosyan:20180920003449j:plain

MakeCodeのページを見るとチュートリアルがたくさんあるので、一通りみてだいたいできることがわかったところで、プログラムを書いてみました。 Scratchそっくりな画面からはじまりますが、JavaScriptに表示を切り替えて書きました。

MakeCodeは、子供向けのプログラム学習用として開発されたアプリで、ブロックをならべてプログラムできる点はスクラッチをやっている子どもたちには親しみやすいと思います。 ブロックとコードを表示切り替えできるので、これからプログラムを始める人にとっては理解を深めるのに良いと思います。

f:id:inosyan:20180920003503j:plain

しばらく触ってみると、カスタムブロックという、プログラムの部品を自分で作る仕組みがあり、それをTypeScriptで書けることに気づきました。 MakeCodeの画面左下のボタンを押すと、Exploler というボタンがでてくるので、それを押すとプロジェクトの中身が見れます。

はじめに開いているプログラムが書かれているファイルは、main.ts だということがわかります。 拡張子は ts つまり、TypeScriptなんです。本当はJavaScriptではなかったんですね。 厳密には Static TypeScript という言語で、Web開発などで使われている TypeScript とは少し違うのですが、ほぼ同じ文法です。

f:id:inosyan:20180920003523j:plain

新規にプロジェクトを書き始めたとき、ユーザが編集できるのは main.ts だけですが、Explorerボタンのところにある + ボタンを押すとこで、custom.ts ができます。これは、ユーザ定義のカスタムブロックを作るためのファイルで、プログラム本体はこの中に書き、main.tsからそれを呼び出すというのが基本スタイルになります。 custom.ts の中では、クラス、enum, interface などをつかって思う存分プログラムができます。 高度なプログラムを書くことも、もちろん可能です。

家を建てるプログラムと、その紹介ムービーを作ってみました。 プログラムはMakeCodeにインポートして使用できます。
家を建てるプログラム【HouseBuilder】

紹介ムービー:


【マイクラMakeCode】MakeCodeでマイクラ魔法使いになろう!(小屋づくり編)

いろいろノウハウがたまったので、次回はそれについてご紹介できればと思います。