ホチキス先生の「プログラマーと呼ばれたい」

InfoPath & SQL Server !

Archive for the ‘プログラミング教育’ Category

マインクラフトのコマンドブロックを使ったプログラミング学習の可能性

leave a comment »

コマンドブロックはユーザーがコマンドを入力し、レッドストーンの信号などによってコードを実行できるブロックだ。コマンドブロックを手に入れるには、コマンド入力で /give を使う。

Minecraft_Education_Edition_039_mid_640

コマンドブロックはワールドに配置して内部にコードを書くことができる。しかし、いわゆる PC 版ではコマンドブロックに書くことができるコードは複数行にわたるものを書けるようだが、現時点ではエデュケーション版で一つのブロックに書くことができるコードは一行だけだ。

Minecraft_Education_Edition_036_mid_640

複数のコードを連続して稼働させるには、必要なコード行数のコマンドブロックを用意し、レッドストーンでつなぐ方法がある。またこのとき、コードによっては実行に時間がかかるものもあるので、実行の順番を考えたいときはレッドストーンの間に反復装置を置いて信号を遅らせると確実だ。

Minecraft_Education_Edition_035_mid_640

ここでは「マインクラフトとプログラミング教育」の課題として設定した「レッドストーンのチャレンジ」をコマンドブロックで作っている。一定のエリアに拒否ブロックを敷き詰め、周囲をボーダーブロックで囲い、そのエリアの内部に端にレバーを立てた許可ブロックの列を24列作る一連のコマンドだ。

ボタンを押せばコマンドブロックが連続的に動作し、課題ワールドを自動的に作る。この一連の挙動は、プログラミング教育においては流れ図の「順次構造」のエクササイズでもある。

Minecraft_Education_Edition_037_mid_640

上から見るとこんな感じだ。

Minecraft_Education_Edition_038_mid_640

新しいマインクラフトのエデュケーション版でプログラミング学習環境となる「コードビルダー」を管理する「Code Connection for Minecraft」に接続するには /code コマンドでもいい。

leave a comment »

2017年5月2日に行われた「Learn what’s next.」で発表された新しいマインクラフトのエデュケーション版にはプログラミング教育のツールとなる機能が盛り込まれている。そのひとつが、プログラミングによって学習環境を整えることと学習者を管理することなどができる「コードビルダー」だ。そして「Code Connection for Minecraft」、日本語で「コードコネクション」と呼ばれるものは「コードビルダー」を管理するサービスだ。

コードビルダーを起動すると、次の画面になりクライアントからのアクセスをリッスンする状態になる。このとき、接続コマンドとして表示される文字列のうち、IP アドレスは「Code Connection for Minecraft」を起動したコンピュータの IP アドレスになっており、ポートはサービスが指定する。クライアントはこの IP アドレスとポート番号で接続する。

Minecraft_Education_Edition_028_mid_640

ちなみにこれと似たサービスに、前のエデュケーション版からあった「Classroom Mode for Minecraft」がある。これは「クラスルームモード」という学習環境を管理するサービスで、ネットワーク上のコンピュータで起動し、クライアントから IP アドレスで接続する形だ。この「Classroom Mode for Minecraft」ではリッスンするポート番号をランダムに生成し、起動するたびに違うポートになった。またサービスを起動したコンピュータ上でクライアントのマインクラフトを起動しても接続できない場合が多かった。しかし新しい「Code Connection for Minecraft」ではリッスンするポート番号は変わらないようだ。また同じコンピュータでクライアントを起動して接続することもできるように改善されている。

クライアントのマインクラフトから接続する場合は、コマンド入力ラインを表示して「Code Connection for Minecraft」で指定されたアドレスに /connect コマンドを入力する。このとき、「Code Connection for Minecraft」にはコマンドをコピーするボタンがあり、これをクリックしてもクリップボードにコマンドがコピーされるのだが、次のように /code コマンドを使うこともできる。

Minecraft_Education_Edition_029_mid_640

/code コマンドを使うときは IP アドレスもポート番号も指定する必要はない。このとき、あらかじめ「Code Connection for Minecraft」を起動していなくても、コンピュータに「Code Connection for Minecraft」がインストールされていれば自動的に起動される。また、事前に「Code Connection for Minecraft」を起動していれば、クライアントのマインクラフトでは「コード接続の起動を試みています」となり「接続しました」のメッセージが出ないこともあるが、この時点ですでに「Code Connection for Minecraft」と接続ができている。

Minecraft_Education_Edition_030_mid_640

「Code Connection for Minecraft」を見ると次のようにあっており「MakeCode」や「Scratch」、「Tynker」のメニューが出ている。ところでここで、接続したクライアントの IP アドレスを見ると、対象のコンピュータではなくて 127.0.0.1 になっていることがわかる。これはループバックアドレスで接続されているということだ。

Minecraft_Education_Edition_031_mid_640

試しに簡単なコードを「MakeCode」で書き、実行してみる。

Minecraft_Education_Edition_034_mid_640

10 × 10 × 10 のブロックが生成した。

Minecraft_Education_Edition_032_mid_640

マインクラフトのエデュケーション版に実装されたプログラミング学習環境「コードビルダー」を制御する「コードコネクション」の概要

leave a comment »

2017年5月2日に行われた「Learn what’s next.」で、マインクラフトのエデュケーション版に「コードビルダー」が実装されることが発表された。この「コードビルダー」を制御するものが「コードコネクション」だ。「コードコネクション」は、マインクラフトのエデュケーション版サイトから「CODE BUILDER BETA」をダウンロードすると得ることができる。

Minecraft_Education_Edition_002

「CODE BUILDER BETA」をダウンロードして Zip ファイルを解凍すると、フォルダの中に「codeconnection.msi」のファイルがある。これをインストールする。

Minecraft_Education_Edition_020

「codeconnection.msi」をインストールして起動すると、次のような画面が表示される。この状態で、「codeconnection.msi」を実行しているコンピュータがコードコネクションのサーバーとしての役割を担うようになった。

Minecraft_Education_Edition_004_mid_640

この状態でマインクラフトのエデュケーション版を実行する。実行したら新しい世界を作り、まずゲームの世界に入ってから「Enter」キーを押してコマンド入力をする。コマンドは、Code Connection で表示されたものを入力するが、Code Connection の画面のコマンド右にあるアイコンをクリックするとコマンド列がコピーされるので、その場合はペーストするだけでよい。

Minecraft_Education_Edition_021_mid_640

サーバーに接続できると「サーバーの接続を確立しました」のメッセージが表示される。

Minecraft_Education_Edition_022_mid_640

このとき、Code Connection は次のようになっている。

Minecraft_Education_Edition_011_mid_640

「MakeCode」と「Scratch」そして「Tynker」のメニューがある。まず「MakeCode」をやってみよう。MakeCode」はマイクロソフトの学習環境だ。「MakeCode」のボタンを押すと、次のように MakeCode のモジュールがロードされる。

Minecraft_Education_Edition_013_mid_640

MakeCode が呼び出されると次のような画面になる。ブロック型のプログラミング環境だ。

Minecraft_Education_Edition_014_mid_640

このとき、Minecraft 側では次のようになっている。このとき、ユーザーが「エージェント」になったのだと思ったがそうではなく、ユーザーとエージェントが重なっているからこう見えた。

Minecraft_Education_Edition_023_mid_640

実際はこのように、ユーザー自身とは別のエージェントが出現している。

Minecraft_Education_Edition_027_mid_640

動作を確認するために、次のような簡単なコードを書く。ブロックなので「書く」というより「組み立てる」というかんじだろう。

Minecraft_Education_Edition_024_mid_640

このコードは、コマンドで「run」と入力されたときに動くものであり、「~0」というのはプレイヤーからみた相対的な位置を示している。プレイヤーの位置から、X、Y、Z軸に対して 100 × 100 × 100 の位置まで、ブロックで埋めるというコードだ。

Minecraft 側で実行しよう。

Minecraft_Education_Edition_026_mid_640

すると、プレイヤーの位置から巨大なブロックが積み上げられることがわかる。

Minecraft_Education_Edition_025_mid_640

これまででも Minecraft はコマンドの利用によりブロックを配置しユーザーをコントロールすることもできたが、あくまでも一行単位のコマンドしか実行できなかった。しかし新しいマインクラフトのエデュケーション版では、このようにプログラミングができる環境が整った。

これによりマインクラフトは本格的なプログラミング教育のプラットフォームになったといえる。

追記1:ユーザー自身がエージェントになったかのような勘違いをしていましたが、ご指摘により書き直しました。ご指摘ありがとうございます。
追記2:相対的な位置の指定について、ユーザーエージェントからではなくプレイヤーからの相対的な位置、に書き直しました。こちらも記事を読まれた方の指摘によるものです。ありがとうございます。

マインクラフトのエデュケーション版にプログラミング機能「コードビルダー」が実装された。マインクラフトは本格的なプログラミング教育のプラットフォームになった。

leave a comment »

2017年5月2日にニューヨークで行われたマイクロソフトの教育イベント「Learn what’s next.」でマインクラフトの新しいバージョンと新機能の概要が発表された。マインクラフトには「コードビルダー」が実装され、マインクラフトは本格的なプログラミング教育のプラットフォームになった。

Minecraft_Education_Edition_008

Microsoft Learn what’s next.
https://blogs.microsoft.com/blog/2017/04/12/save-date-learn-whats-next/#sm.001lojei91eiodt7v6o2qn6lbsw18

この新しいマインクラフトのエデュケーション版の大きな特徴は「コードビルダー」と呼ばれるプログラミング機能が実装されたことだ。

マインクラフトのエデュケーション版では、コマンドによって学習者を操作し、ブロックを世界に配置して環境を整えることができた。しかしそれは、コマンドウィンドウからの直接入力であり、1行ずつ実行することしかできなかった。しかし新しいマインクラフトのエデュケーション版では、プログラミングによってプレイヤーを動かし、世界を作っていくことができるようになる。

詳細は Minecraft Education Edition の Web ページでわかる。

Minecraft Education Edition
https://education.minecraft.net/

Minecraft_Education_Edition_009

新しいバージョンを利用するには、Code Builder Beta をダウンロードする。ダウンロードの直リンクは次のページだ。

Minecraft Education Edition
https://education.minecraft.net/get-started/download/

Minecraft_Education_Edition_002

「コードビルダー」の機能によってマインクラフトは本格的なプログラミング教育のプラットフォームになった、と、まずは言うことができるが、もしかしたらこれは初めの一歩であり、この先に壮大なプログラミング世界の大革命がやってくる予感がする。体が震えるほどの期待に満ちている。マインクラフトには学校教育者だけでなく、職業プログラマーも要注目だ。

マインクラフトはオブジェクト指向プログラミングだ。小学6年生の息子が作るマシンを見て思う。

leave a comment »

わが子は「マインクラフトエバンジェリスト」と言っていいほどマインクラフトを熟視している。今日は新宿で「こどもの日プログラミング無料体験会 ~マインクラフトで身につく3つの力~(小学3年生~中学生対象)」というイベントをやるために新宿に来ているのだが、早めに着いた新宿でマクドナルドに入り、マインクラフトをしているわが子を横目で見ながら、いったい何を作っているのか質問をした。

P1490790_mid_640_480_edit

一心不乱に何やら大きな仕掛けを作っているのだが、かなり複雑な仕組みだということが想像できる。いったい何を作っているのか、と聞くと「自動アイテム仕け機」だという。これは、チェストというアイテムを収める箱を 22 列に 2 つずつ、計 44 個並べ、その上や横にホッパーというアイテムを移動させる仕組みを配置する。さらに信号を制御するコンパレータ―やリピーター、信号を発生するトーチを配置する。これらをうまく考えて組み立てると、一番端のホッパーにアイテムを投げ入れると、自動的にアイテムがホッパーの中を送られていき、それぞれ分別されてチェストに入れられるのだ。

個々のブロックには基本的な仕組み、動作が組み込まれている。それらを組み合わせて一連の働きをする仕掛けを作る。これは、まさに、イベントドリブン型のオブジェクト指向プログラミングの思考力を要する作業だ。

こうしたレッドストーンの信号を応用した仕組みを組み立てる作業は、間違いなく論理思考、とりわけ現代的プログラミングの思考力に重なり合っている。「マインクラフトとプログラミング教育」というものが俺のテーマの一つだったが、わが子の姿を見ていて気付かされたことは、大人があれこれ理屈をつけて「教育」に結びつけなくても、子供は自然に価値のあることを見つけ、遊び感覚で論理的思考を養っているということだ。

Written by Yoshio Matsumoto

2017年5月5日 at 8:40 AM

ESP8266 Wi-Fi SoC を搭載した nodeMCU には大きさ、形が異なるいくつかのタイプがある。一見同じもののように見える 2つのタイプを比べてみる。

leave a comment »

いわゆる nodeMCU と呼ばれるマイコンボードは、オンボードに ESP8266 の Wi-Fi モジュールを搭載しており、IoTデバイスとして安価で使いやすいものだ。IoT ではマイコンボードをネットワークにつなぐことに大きな意味があるのだが、他の多くの安価なマイコンボードではネットワーク関連のデバイスはオプションパーツ扱いになっていることが多い。パーツがオプションであるということは、自由度がある代わりに本体とパーツ、間のインタフェースと、トラブルシュートに要する項目が増える問題がある。その点、オンボードでネットワークモジュールを搭載しているマイコンボードでは、それらを考慮する必要がないので開発が楽だ。しかも nodeMCU は極めて安価である。

nodeMCU は日本の Amazon でも買うことができるが、大きさや形が異なるいくつかのタイプがある。このうち、よく似ていて一見すると同じもののように見える 2つのタイプを比べよう。

P1490289_edit_mid_640_480

こうして横に並べて比べると違いがわかるが、ネットで注文するときなどは、よく見ないと違いがわからない。まず全体の大きさが違うのだが、これらを別々のページで見たときには、大きさではわかりにくいだろう。そこで比べるには、搭載している部品の配置に注目するといい。わかりやすいのは USB コネクタの近くにある、おそらく USB シリアルインタフェースチップだと思われる黒い IC チップだ。写真の右側、「LoLin」と呼ばれる nodeMCU では横長のチップが搭載されているが、左側の「Amica」と呼ばれる nodeMCU では正方形の小さめのチップが搭載されている。あと違いが目に付くのは、左の「Amica」のきれいに整列したチップ抵抗だと思われる部品、あるいはチップコンデンサと思われるオレンジ色の大きめの部品あたりだろう。

P1490291_mid_640_480

裏から見れば違いはよくわかる。写真の右側には、おそらく雲をイメージしてデザインしたシンボルマークと「NODEMCU Amica」の名前がある。右側は「LoLin」と書かれている。

さて、この 2タイプの nodeMCU だが、プロトタイピングにおいて大きさの違いが使い勝手に影響するところは、一般的な長潟のブレッドボードを使うときに、大きい方の「LoLin」ではピンの穴を全部覆ってしまい、信号を取り出せなくなるところだ。これに対して小さい方の「Amica」では、かろうじて 1ラインは信号を取り出せるように残っている。

P1490294_edit_640_480

もし「LoLin」を長潟のブレッドボードで使いたいなら、2枚ならべて使うことになるだろう。

P1490295_edit_640_480

P1490291_mid_640_480

C# – 教科「情報」の授業で使うタイピングトレーニングのソフトを作っています。その 3。河端さんとのコラボレーション。Microsoft Flow と Microsoft Power BI で何ができるか。

leave a comment »

教科「情報」の授業で使うタイピングトレーニングのソフトを作っており、Microsoft SQL Server の大家であり Microsoft MVP でもあった河端さんと一緒に考えている。私は Visual Studio でクライアントの開発をし、河端さんにクラウドのアプリケーションを作ってもらっている。クライアントは Windows デスクトップアプリで、開発言語はもちろん C# だ。

河端さんには、クライアントアプリケーションから POST データを受け取るサービスを、Microsoft Flow で作ってもらった。Microsoft Flow で受け取ったメッセージを電子メールで通知する、といったシステムを、お互い離れた拠点でメッセージをやりとりしながら、およそ 30 分で作ることができた。これが現代的な開発スタイルだといえよう。

そして河端さんには、Power BI の分析ページを作ってもらった。こんなかんじだ。

文字入力トレーニングアプリ_003_PowerBI_1_mid_640

文字入力トレーニングアプリ_004_PowerBI_2_mid_640

文字入力トレーニングアプリ_005_PowerBI_3_mid_640

河端さんは、私がクライアントの Windows フォームアプリケーションを調整している間に、Microsoft Flow に送られたデータをこのように分析する Microsoft Power BI のフォームを作られていた。これらのビューを作るには、およそ 15分もあればよいそうだ。

このように、Microsoft Flow と Microsoft Power BI を使うとアイデアさえまとまればアプリケーションを作る手間は革命的に小さくなった。重厚長大のシステム開発の時代は終わったのだ。