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

InfoPath & SQL Server !

Archive for the ‘アルゴリズム’ Category

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 で分析する、といったことが簡単にできる。何年か前なら、なんらかの学習システムみたいなものを作ったものだが、今やこのような時代だ。

小学生エバンジェリストたちがマイクライベントの発表準備をしています。 – 「マインクラフトとプログラミング教育」マイクロソフト関西支社セミナールーム 2017年4月22日(土)

leave a comment »

今週末、4月22日(土)にマイクロソフト関西支社セミナールームで開催する「マインクラフトとプログラミング教育」でエバンジェリストとして発表する小学生たちが発表の準備と打ち合わせをしています。

P1490052_mid_640_480

今日の打ち合わせでは、次のようなことを決めました。

1.発表は一人5分程度なので内容をコンパクトにまとめること。
2.それぞれ発表内容を決めること。
3.あらかじめ完成見本を作っておき、説明してから新しく作ること。
4.当日スムーズにデモができるように練習すること。
5.発表原稿を作ること。デモの手順も必要ならメモをしておくこと。
6.話しながらデモをするリハーサルをすること。

これらは子供たちがみんなで考えながら決めました。リハーサルをすると、しゃべりながらパソコンを操作することが想像以上にむつかしいことがわかり、発表原稿を作ることやデモの練習が必要だということがわかったのです。

今週末、4月22日をお楽しみください!

小学校でマイコンボードの体験会をする。いわゆるLチカの発展形。

leave a comment »

P1460655_mid_640_480

明日は小学校で子供たちにマイコンボードの体験コーナーをする。短い時間で低学年から高学年までの子供たちに楽しさを伝えるために工夫をする。いわゆる「Lチカ」をベースに。

たとえば小学校の高学年、5年生と6年生対象なら、パソコンを使って簡単なプログラミングをすることができるかもしれない。それにしてもある程度のまとまった時間が必要だし、パソコンなど機材を準備しなければならない。

10分程度の短い時間で、小学校1年生から6年生までの幅広い子供たちにマイコンボードや電子工作の楽しさを伝えるにはどうすればいいか。そこにはいろんな工夫の余地がある。

子供たちの輝く瞳を見たい。だから教育は面白い。

神戸三ノ宮で「マインクラフトとプログラミング教育」の勉強会をした。

leave a comment »

P1450907_edit_mid_640_480

2017年1月28日、神戸三ノ宮で「マインクラフトとプログラミング教育」のテーマで勉強会をした。マイクラフトが好きな小学生5人に Surface 3 でモダンアプリ版のマインクラフトをしてもらい、教員5人がサポートしながらマインクラフトを子供たちがどのように使うかを見て、マインクラフトをプログラミング教育に利用するヒントを得ようと考えたのだ。

詳細はアドミンティーチャーズのサイト https://adminteachers.wordpress.com/ にも報告したが、今回は用意した機材で実習がスムーズにできるかを検証することとし、詳細なコースを用意することはしなかった。

今回やってみてよくわかったのは、Surface を使うと数分の準備で実習を始めることができること、子供たちは極めてマインクラフトの世界に興味が高く教員の動機づけがなくても自然に演習に集中できること、自然発生的に協働作業が行われること、わからないことがあれば教えあう関係性が自然におこること、攻略本を一緒に見ながら問題解決をする姿が見られたこと、などだ。

マインクラフトを教材プラットフォームとして、プログラミング教育に利用することは効果的だと実感した。次は効果的な「課題」あるいは「学習コース」を考えることだろう。そのためには教員がマインクラフトの世界を知り、何ができるか、どのようなコースを組み立てることができるかを考える必要がある。

P1450916_mid_640_480

アドミンティーチャーズの「ラボワーク」、第5回は「Netduino 3 と 38 種類のセンサキット体験」をする。

leave a comment »

今年2月から毎月第一土曜日と決めて神戸三ノ宮の会議室を借りてやっているアドミンティーチャーズの「ラボワーク」。第5回は「Netduino 3 と 38 種類のセンサキット体験」をする。

38 種類のセンサは、キースイッチ、ロータリーエンコーダスイッチ、タッチセンサ、距離センサ、サウンドセンサ、人感センサ、レーザーセンサ、磁気センサ、磁気リードセンサ、磁気ホールセンサ、温度センサ、赤外線センサ、傾きセンサ、衝撃センサ、水銀センサ、心拍センサ、炎センサ、リードセンサ、光ブロークンモジュール、ジョイスティックモジュール、フォトレジスタ、バイブレーション、ブザー、フルカラーLED、点滅LED、5Vリレーモジュール、などだ。似た機能のセンサやアクチュエータが複数あり、どんなセンサなのか想像しがたいものもある。今回はセンサキットを買っただけで使っていない。ぶっつけ本番の、まさに「ラボワーク」だ。

P1160745_mid_640_480

また今回から再び Netduino を取り上げる。Arduino と Netduino の両方でプログラミングをする。Netduino はモデルチェンジをしており、Netduino 2 から Netduino 3 となっている。Netduino 3 では I/O ポートが独立したコネクタでボードの片端にまとめられているのでセンサなどを接続しやすい。

P1160846_mid_640_480

P1160848_mid_640_480

第5回ラボワーク「Netduino 3と 38 種類のセンサキット体験」の詳細は、アドミンティーチャーズの Web サイトで。

アドミンティーチャーズ
https://adminteachers.wordpress.com/

アドミンティーチャーズ「ラボワーク LW05 – Netduino 3 と 38 種類のセンサキット体験」
https://adminteachers.wordpress.com/2016/06/03/%e3%83%a9%e3%83%9c%e3%83%af%e3%83%bc%e3%82%af-lw05-netduino-3-%e3%81%a8-38-%e7%a8%ae%e9%a1%9e%e3%81%ae%e3%82%bb%e3%83%b3%e3%82%b5%e3%82%ad%e3%83%83%e3%83%88%e4%bd%93%e9%a8%93/

<概要>

日時:2016年6月4日(土)19:00~20:00
場所:神戸市青少年会館 サークル4号室(6階)
        (前回の勤労会館と同じ建物です)

神戸市中央区雲井通5丁目1番2号
最寄駅は三宮(JR、阪神、阪急、神戸市営地下鉄)徒歩2分から5分
神戸市勤労会館へのアクセス

対象:高等学校の情報教員、または情報教育に関心のある方
定員:15名
申し込み:電子メール

宛先 ad-teachers@outlook.com
件名 「2016年6月4日 ラボワーク LW05 申し込み」
メールの本文にご氏名、所属をお書きください。

今週末は神戸三ノ宮でアドミンティーチャーズのラボワーク。ArduinoでWebサービスをプログラミング。

leave a comment »

今週末は連休の後半だが、5月7日(土)に神戸三ノ宮でアドミンティーチャーズのラボワーク第4会をやる。今回のテーマは「Webサービス」だ。使うのは WIZnet の TCP/IP ハードウェア処理チップ W5100 を使った Arduino UNO 用の定番イーサネットシールドだ。

アドミンティーチャーズ「ラボワーク LW04 – W5100イーサネットシールドを使ったWebサービスのプログラミング」
https://adminteachers.wordpress.com/2016/04/18/%e3%83%a9%e3%83%9c%e3%83%af%e3%83%bc%e3%82%af-lw04-w5100%e3%82%a4%e3%83%bc%e3%82%b5%e3%83%8d%e3%83%83%e3%83%88%e3%82%b7%e3%83%bc%e3%83%ab%e3%83%89%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9fweb/

p1140109_clip_640_480

Arduino には、このイーサネットシールドを使って TCP/IP 通信をするライブラリが提供されている。このライブラリを利用すると簡単に TCP/IP 通信をするプログラムを作ることができる。Web サービスのサンプルコードも提供されており、簡単に Web サーバーを作ることができる。

Web サーバーを作るだけでなく、プログラム上で TCP/IP 通信のデータを見ると、Web サービスでどんなデータがやりとりされているかがわかる。すると単に決まった固定の HTML テキストを返すだけでなく、I/O ポートから受け取ったデータを返すことや、POST メソッドで受け取ったデータをどう処理すればいいかが理論的に理解できる。

このように今回の実習では、単に実用的な Web サービスを作るだけでなく、HTTP 通信の中身を明らかにすることもラボワークの目的とする。まさに「ラボ」という言葉にぴったりの時間にするように企画している。

神戸三ノ宮で開催したアドミンティーチャーズの「ラボワーク LW03 – マルチファンクションシールドを使ったシフトレジスタとダイナミック点灯のプログラミング」

leave a comment »

「ラボワーク」と題してこの 2月から兵庫県神戸市中央区、JR三ノ宮駅近くの会議室を借りて勉強会をやっている。今回は 3回目で、実験用のマルチファンクションシールドを使ったプログラミンを体験した。

マルチファンクションシールドは Arduino UNO 用に作られた実験用シールドで、昔の言い方では「ドーターボード」と呼ばれる一種の拡張ボードだ。Arduino UNO のI/Oピンにあわせて作られているが、必要なピンだけジャンパケーブルでつなげば他のマイコンボードでも使える。

P1140072_mid_640_480

このマルチファンクションボードには 4つの 7セグメント LED チューブ、3つのボタン、4つの LED、ブザー、ポテンショメーター(ボリューム)がついている。これらの部品をマイコンボードでテストしようと思えばブレッドボードで回路を組んでもいいのだが、このように基盤に取り付けられていると簡単に実験できる。ラボワークではマルチファンクションシールドと Arduino UNO、Digispark などを人数分用意した。

P1130534_mid_640_480

Arduino UNO でマルチファンクションシールドを使うには、そのまま上に載せればいい。

P1130543_mid_640_480

Arduino UNO を使う場合は上に載せるだけだが、Digispark で使う場合は次のように 5本のジャンパワイヤーで接続する。3本はデータ送信用、2本は電源供給用だ。

P1140074_mid_640_480

P1130536_mid_640_480

Digispark は前回のラボワークではオンボードの LED をコントロールしただけだったので加工の必要がなかったが、今回のようにジャンパワイヤーで I/O を接続するには I/O ピンをはんだ付けしなければならない。I/O ピンがついていない Digispark のためにはんだごてを用意した。

P1130538_mid_640_480

プログラミングは各自のコンピュータで Arduino IDE を使って行った。プリントを用意してサンプルコードを簡単なものから実用的なものまで用意して体験した。

P1130546_mid_640_480

マルチファンクションシールドには 4つの 7セグメント LEDチューブが載っている。この LEDチューブはシフトレジスタ 74HC595を介して接続されている。74HC595は汎用シフトレジスタで、3本のコントロール信号でシリアル信号を8ビットのパラレル信号に変換することができる。マルチファンクションシールドにはこの 74HC595が 2つ搭載されており、ひとつは 7セグメントの形を決め、もうひとつは出力する LEDを決める。

シフトレジスタの使い方とダイナミック点灯の概念を理解するサンプルコードを用意し、LEDチューブの形と点灯させるチューブの選択、ビットパターンの関係を表にしてイメージできるようにプリントを用意した。

P1130548_mid_640_480

P1130542_mid_640_480

「ラボワーク」は毎月第一土曜日の夜やっている。次回は 5月7日(土)の夜、19:00から。詳細は「アドミンティーチャーズ」の Webで。