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

InfoPath & SQL Server !

Archive for the ‘ICT’ Category

新しいマインクラフトのエデュケーション版でプログラミング学習環境となる「コードビルダー」を管理する「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:相対的な位置の指定について、ユーザーエージェントからではなくプレイヤーからの相対的な位置、に書き直しました。こちらも記事を読まれた方の指摘によるものです。ありがとうございます。

マインクラフトはオブジェクト指向プログラミングだ。小学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 を使うとアイデアさえまとまればアプリケーションを作る手間は革命的に小さくなった。重厚長大のシステム開発の時代は終わったのだ。

マインクラフトのエデュケーション版を使った問題解決の授業案を考えています。たとえば小学校四年生の「植木算」の考え方。

leave a comment »

マインクラフトをプログラミング教育に使うことを考えて勉強会をしています。

勉強会「マインクラフトとプログラミング教育」を開催します。
アドミンティーチャーズ
https://adminteachers.wordpress.com/2017/03/08/%e5%8b%89%e5%bc%b7%e4%bc%9a%e3%80%8c%e3%83%9e%e3%82%a4%e3%83%b3%e3%82%af%e3%83%a9%e3%83%95%e3%83%88%e3%81%a8%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e8%82%b2%e3%80%8d/

マインクラフトにはエデュケーション版があり、エデュケーション版には一般のコンシューマー向けのマインクラフトにはない特殊パーツや「Classroom」という授業をするためのモードが用意されています。これらの機能を使えば、効果的に授業でマインクラフトを運用することができます。

マインクラフトは自由度が高く、無限の可能性がありますが、たとえば小学校の算数をテーマに取ると、このような問題解決型の授業案が考えられると思います。

テーマ:レッドストーンで「植木算」を理解しよう
概要:「植木算」は、おおむね小学校四年生の算数で取り上げられる課題で、割り算を習った後に、割り算を現実世界にあてはめて使うことを学ぶ目的で使われます。たとえば「10メートルの道路にそって1メートルおきに木を植えるとしたら、何本の木が必要ですか。」といった問題です。割り算を習った子供は、10メートル割る1メートルで10本、という答えを出せるとして、しかし実際は1mごとの「間」を数えるので9本でよい、ということに気付かせる問題です。これをレッドストーンの働きにおきかえて、15ブロックしか信号が伝わらないレッドストーンを150個使い、全部使ってできるだけ長く信号をつなぐために、何個の反復装置が必要かを考えさせ、実際にマインクラフトの世界でやってみて体験します。

授業案を Docs.com でも公開しています。
https://docs.com/user775272/8741/minecraft-small-challenge-no-2-planting-tree

Minecraft_Small_Change_002_001_mid_640

Minecraft_Small_Change_002_002_mid_640

Minecraft_Small_Change_002_003_mid_640

Minecraft_Small_Change_002_004_mid_640

Minecraft_Small_Change_002_005_mid_640

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

leave a comment »

先日、SQL Server のスペシャリストで Microsoft MVP でもあった河端善博さんと久しぶりにお会いし、Microsoft Flow や Power BI の話をうかがった。実に興味深く、私がやっている IoT や情報教育で使う場面がないか考えた。そこで、まず今作り始めている文字入力トレーニングソフトのデータを Microsoft Flow で処理し、Power BI で分析することをやってみることにした。

まず、実習結果を自分で見るだけなら時間を計り正しく入力できたかどうかを判定できればよい。しかしデータを集約するなら、誰の実習結果かという ID が必要になる。そこで ID をどうするかを含めて、通信データのフォーマットを決めることにした。河端さんから提示されたのは次の項目だ。

"生徒識別子"
"経過秒数"
"スコア"

生徒識別子は文字列型とし、経過秒数やスコアのデータ型をどうするか相談をしたが、型がそろった方がアプリケーション側で作りやすいので文字列型にしてもらった。これに加えて次の項目を付け加えた。

手本文字数"

「スコア」は何文字まで間違いなく入力できたかの文字数を評価することにしているが、もともとの手本の文字数が何文字かがあった方が良いと考えたので、それを加えることにしたのだ。これらの集めるデータは今後どんどん変わっていく可能性があるが、とりあえずこの 4つの項目にすると決めた。データの送信は Web サービスの POST メソッドとし、渡すデータは json で記述することにした。こんなかんじになる。

{
"生徒識別子": "A0000",
"経過秒数": "10",
"スコア": "89",
"手本文字数": "100"
}

すでに作っているアプリケーションに「生徒識別子」のテキストボックスを追加し、Web サービスに POST するコードを書いた。

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

その他の変更点は、入力するための原稿をテキストファイルにして保存し、アプリケーションの起動時に読み込む形にした。また入力原稿は教科書の本文とすることとし、入力分のはじめとおわりを表示して、教科書のどこの文を入力するのかを間違わないようにした。

私がアプリケーションを調整している間に、河端さんに Microsoft Flow で Web サービスを作っていただいた。河端さんに作っていただいた Microsoft Flow は次のようなものだ。Web サービスへの POST の結果を知りたかったので、電子メールで送信してもらうようにお願いした。次の画面は河端さんからもらったものだ。

18109673_10155304824759394_589213491_n_mid_640

何度か試験を繰り返し、正しくデータが送られることを確認した。データの送信確認は電子メールが送られてくることでわかる。

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

このように、私が Visual Studio 2017 でアプリケーションを作り、河端さんが Microsoft Flow でクラウド側のシステムを作る。このコラボレーションが、実質 30 分ほどで動くシステムができあがった。

たとえば生徒の家庭学習などを IT でサポートする場面で、このように簡単にアプリを作ってクラウドの共有フォルダなどで配布し、練習結果を Microsoft Flow で受け取って集計する、Power BI で分析する、といったことが簡単にできる。何年か前なら、なんらかの学習システムみたいなものを作ったものだが、今やこのような時代だ。