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

InfoPath & SQL Server !

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

アドミンティーチャーズの「ラボワーク」、第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で。

3月5日(土)、神戸三ノ宮で行った「ラボワーク LW02 – Digispark 切手大の小さい Arduino を使う」

leave a comment »

アドミンティーチャーズ「『ラボワーク LW02 – Digispark 切手大の小さい Arduino を使う』の報告」
https://adminteachers.wordpress.com/2016/03/28/%e3%80%8c%e3%83%a9%e3%83%9c%e3%83%af%e3%83%bc%e3%82%af-lw02-digispark-%e5%88%87%e6%89%8b%e5%a4%a7%e3%81%ae%e5%b0%8f%e3%81%95%e3%81%84-arduino-%e3%82%92%e4%bd%bf%e3%81%86%e3%80%8d%e3%81%ae-2/

今回の「ラボワーク」では、参加のみなさんがご自分のパソコンをお持ちになったので、実際に環境を整えたりスケッチを書いたりという実践的な実習ができた。とてもよかった。今回の「ラボワーク」では、次のようなことをした。

・切手大の Arduino の亜種といえる Digispark を使ってみる。
・Arduino IDE で Digispark を開発するための環境を整える。
・Digispark と PC 間のインタフェースについて知る。
・Arduino IDE を使って簡単な「Lチカ」プログラミングをして Digispark を動かす。

Digispark は USB インタフェースの形状が異なるものを 2種類用意した。ひとつはむき出しの USB コネクタがボード上に形成されているもので、もうひとつはボードにマイクロ USB コネクタが付いているも。むき出し USB コネクタのものはケーブル不要で直接パソコンに挿すことができるので便利だ。どちらの Digispark も中身は同じ。

Digispark は Arduino IDE で開発することができるが、Digispark 用のボードマネージャーを適用する必要がある。ここで現在、Digispark 開発用に提供されているボードマネージャーが、Arduino IDE のバージョンによっては動かないという現象がある。Windows 用の Arduino IDE では、1.6.5 では正しく適用されることがわかっているので、異なるバージョンの Arduino IDE を使っている方には 1.6.5 をインストールしなおしていただき、その後 Digispark 用のボードマネージャーを適用していただいた。

Digispark は他の Arduino と異なり、パソコンとのインタフェースは USB – シリアル変換ではない。パソコンからは Digispark はキーボードやマウスと同様の HID (Human Interface Device) として動作する。したがって固有のデバイスドライバを導入する必要がなく、標準の HID ドライバが適用されればいい。スケッチを導入するには、まず Arduino IDE で「マイコンボードに書き込む」ボタンを押してから USB に Digispark を挿す。Digispark は通電後、数十秒間はプログラム転送モードになり、その間にスケッチが導入される。スケッチの導入が終われば自動的にリセットし、プログラムが動き始める。

Digispark にはオンボードで LED が 1個ついているので、スケッチでオンボードの LED を点滅させるスケッチを作って確かめた。点滅速度を変更したり、PWM でフェードイン、フェードアウトの光らせ方を体験したりした。

次回は 4月2日(土)。テーマはプログラミングとし、シフトレジスタでコントロールする LED チューブの点灯と、ダイナミック点灯のプログラミングを考えている。前回同様 12 名の定員の小さな会議室を予約しているので、希望の方は早めに申し込んでください。数日中にアドミンティーチャーズのサイトで告知します。

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

P1120096_mid_640_480

アドミンティーチャーズの「ラボワーク LW01 – Netduino で Lチカプログラミング」

leave a comment »

「アドミンティーチャーズ」は教育の情報化や情報教育、校務の情報化に携わる教職員対象の勉強会で、このたびは「ラボワーク」と名付けて、マイコンボードや電子回路を自由に体験するというスタイルで企画された。

「ラボワーク LW01 – Netduino で Lチカプログラミング」の報告

P1110024_mid_640_480

Netduino は内部で .NET Micro Framework が動き、Visual Studio を使って C# のプログラミングができるマイコンボードだ。実際に Visual Studio で開発するためには、SDK などいくつかの追加モジュールをセットアップする必要がある。このラボワークでは、Arduino の典型的なループを使った「L チカ」プログラミングと同じアルゴリズムで C# のコードを書いて比較し、また Netduino で別スレッドで実行する 2 つの「L チカ」プログラミングのデモをした。

P1110012_mid_640_480

Netduino や Arduino は受け取った電圧変化をディジタル変換するアナログ入力の A/D ポートを標準で持っている。このアナログ入力ポートの動作を確かめるために、まずボリュームで電圧変化を与えて A/D 変換をし、次に距離センサーを使って距離の測定ができることを確かめた。

P1110004_mid_640_480

そのほかブレッドボードを使った回路実験や 7 セグメント LED、バー型 LED、マトリックス型 LED などの使い方、Arduino の亜種や類似のマイコンボード、組み込み実装用の Arduino Pro Mini などの紹介もした。

この「ラボワーク」は今後も毎月第一土曜日に兵庫県の神戸市、三ノ宮で行うことを考えている。次回の計画は月半ばにアドミンティーチャーズのサイトで案内することとする。

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

興味のある方はぜひご参加ください。

日経ソフトウエア 2014年7月号 – これがわかれば脱初心者 キーワードで学ぶプログラミング上達法30(書評)

leave a comment »

IMG_9198_mid_640_480

巻頭に特別レポート「PS Vitaで動くゲームを手軽に作れる! Unity for PSM パブリックプレビュー版が登場」がある。従来はPSM用のゲームはPSM SDKを使っていたが、米ユニティ・テクノロジーズのUnity統合開発ツールをPSM開発環境として使える「Unity for PlayStation Mobile」のパブリックプレビュー版が公開され、無料で使うことができることを紹介している。レポートは見開き2ページの簡単なものだが、ユニティ・テクノロジーズ・ジャパンが公開した3Dキャラクター「ユニティちゃん」をPS Vitaで動かすこと、横スクロール型の簡単なゲームを作ることをやっている。UnityはC#、JavaScript、Booによる開発に対応しており、この記事ではC#を使ったスクリプトが参考として示されている。

連載ハードウエア入門塾「ラスベリーパイで遊ぼう」は注目の記事で、今回と次回の2回に分けて「携帯ゲームを作る」というテーマになっている。ここでいう携帯ゲームは、ラズベリーパイをPCやディスプレイから切り離し、操作スイッチを付け、モバイルバッテリーで駆動しドットマトリックスLEDで画面表示をするというもので、いわばゲームウォッチのようなマシンに仕上げるというものだ。ドットマトリックスLEDは5×7ドットのものでしかないので凝った表示はできないだろうが、LEDを使う手法がわかれば応用は簡単だろう。また開発手法としてPCからネットワーク経由でSSH接続することにしており、ネットワークの設定やSSHクライアントとの通信方法などが説明されている。リモート接続の場合はLeafpadが使えないので、ラズベリーパイ内臓のnanoテキストエディタを使う方法が示されている。テストプログラムは日本最初のテレビ放送実験で使われた、カタカナの「イ」の字を表示するものだ。著者のセンスがうかがえる。

さて特集1「これがわかれば脱初心者 キーワードで学ぶプログラミング上達法30」だが、ノウハウ記事として書かれたものだと思うが読み物としてさらっと読んでも面白い。たとえわかっていることでも巧い例えで説明されると「なるほど」と膝を打つだろう。「非同期処理とは、ある処理の実行中に別の処理を止めないという意味です。」という説明などは「うまいな」と思う。

特集2「最新!SQL Server 2014で知る今どきデータベース活用法 インストールから『インメモリー』高速化まで」もいい記事だ。Introduction「データベースって何?どうやって使うもの?」では、そもそもデータベースとは何なのか、からSQL Serverのエディションの違いなど基本的なことを説明している。Part1「Visual Basic/C#でSQL Server 2014を使ってみよう」ではSQL Serverと開発ツールVisial Studio Expressのインストール方法、SQL Serverの起動や設定方法、テーブルの作成などが示されている。とりわけ対応するSQL Serverのバージョン違いや更新プログラムによってインストールがうまくいかない場合の対処方法などが説明されているのでたいへん役に立つ。Part2「2014の新機能『インメモリーOLTP』と『遅延持続性トランザクション』を試す」ではSQL Server Evaluationエディションをインストールし、テスト用のテーブルとストアドプロシージャを作成する。テーブルは「メモリー最適化」テーブルとし、ストアドプロシージャは「ネイティブコンパイル」する。そして大量のデータを追加するストアドプロシージャを実行して処理時間を比較している。通常のテーブルに通常のストアドプロシージャを実行する場合に比べ、メモリー最適化テーブルにネイティブコンパイルしたストアドプロシージャを実行すると40倍以上の実行速度向上がみられることがレポートされている。また「遅延持続性トランザクション」と「インメモリーOLTP」の使い方や処理速度の比較も説明されている。

特集3「プログラマのおもちゃに最適! 『Sphero』プログラミング入門」は米コロラド州のOrbotix社が2013年に発売したボール型ロボット「Sphero」のプログラミングにについての記事だ。Spheroはボール型のロボットで、スマートフォンからBluetoothで接続しコントロールするようにデザインされている。この記事ではSpheroをコントロールし、Spheroの状態を読み取るスマホアプリを作成することと、パソコンでBluetooth接続してコントロールするプログラミング、そしてLeap MotionのジェスチャーでSpheroをコントロールする方法が説明されている。SpheroはAmazonなどで1万4千円程度で購入できるそうであり、ロボット実習のエントリーモデルとしてたいへん興味深い。

笹川賢一氏による特別レポート「Lisp処理系自作奮闘記」も興味をそそられる。6ページという短い記事だが、言語を作るということが体験できる貴重な記事だ。筆者はこのレポートの末尾に「『言語処理系を使える』ということと『言語処理系を作れる』ということには大きな隔たり、大きな飛躍があります。この記事で、言語処理系を作る面白さ、難しさ、困難を乗り越えた時の達成感の一部でも、お伝えできていれば望外の喜びです。」と書いている。今後も類似の記事が掲載されることを期待している。

Microsof MVPの薬師寺国安氏の「Google Web API活用入門」は連載第2回目。今回は「分類やキーワードで検索し、Googleマップ上に施設を表示」するプログラミングだ。サンプルコードは地図上の半径1キロメートル内の銀行の位置を示すプログラミングを示している。応用次第で様々な活用場面が広がりそうだ。

また「楽しんで学ぶ Java入門教室」が始まった。初心者向けに丁寧に解説されているので、Javaをこれから始めようと思う人にはうってつけの記事だ。「HTML5でゲームを作ろう」は連載第8回。今回は「箱入り娘パズルを作る」がテーマだ。これも面白い。

IMG_9199_small_320_240

付録の冊子は「Javaやりたいこと逆引き事典」だ。

日経ソフトウエア 2014年6月号 – 現代プログラマの必須知識 HTML5&JavaScript徹底攻略(書評)

leave a comment »

IMG_8818_mid_640_480

特別レポートの記事が4つあるが、そのうち巻頭で紹介されている「ヘッドマウントディスプレイ戦争勃発!新型Oculus Rift vs Project Morpheus」には大きな関心を持った。これは1988年に第一回が開催されてから米国で毎年行われる「Game Developers Conference、通称GDCのレポートだ。ここで米Oculus VRより新型ヘッドマウントディスプレイOculus Rift Development Kit 2が正式に発表された。また日本のソニー・コンピュータエンタテインメントも新型ヘッドマウントディスプレイ、Project Morpheusを発表し、デモを行った。この記事ではGDCで展示された実機やデモを体験している写真も交えて、わかりやすくこれらを紹介している。ヘッドマウントディスプレイは考え方としては昔からあるが、なかなか実現だれなかったデバイスだが、これらの発表により開発が加速化するかもしれない。とても興味深い。

特集1は「HTML5&Java Script徹底攻略」でPart1から4に分かれて36ページの紙面が割かれている。Part1は「HTML5時代のJavaScript入門」で初心者にわかりやすくJavaScriptを説明している。この説明の中で「JavaScriptの関数は、クラスとして利用することもできます」、「正確にはJavaScriptにはクラスという概念はありませんが、クラスを想定することでJavaScriptのオブジェクト指向を理解しやすくなります」という記述がある。これにははっとさせられた。今までオブジェクト指向を何か特別な考え方と思い込み、なかなか理解することが難しかったという経験があるが、よく考えれば関数であるかオブジェクトであるかはその分類に意味があるわけではなく、要は機能の説明として「関数」や「オブジェクト」という言葉を使っているのだ、と気づかされた。多くのサンプルスクリプトで説明がされているが、たいへんわかりやすく面白い。良い記事だ。Part2は「おすすめJavaScriptライブラリ」で、資料的な意味がある。

特集2の「スマホ向けOS『Firefox OS』とHTML5によるハードウエア操作」も面白い。米Mozillaが中心となって開発しているスマホ向けのプラットフォーム「Firefox OS」の解説だ。すべてのアプリをHTML5で記述することができる仕組みと、それがなぜ注目されているのかがよくわかる。Part4は「HTML5セキュリティ入門」で、実際に開発する場合には必要な知識がまとめられている。

また今月から新連載がはじまった「実践!最新Androidプログラミング」も注目だ。いままで興味はあっても手を出せなかったAndroidアプリのプログラミングが、毎月少しずつ連載で学ぶことができる。プログラミングは書籍やWebを参考にして勉強することもできるが、雑誌の連載はタイムリーに最新の環境で、かつ実践的に学ぶことができる。変化の激しいこの時代に書籍の情報は最新でない場合が多く、Webの情報は部分的でまとまっていないことが多い。雑誌の連載は、最新情報を体系的に学ぶ最適の方法だと思う。

もうひとつの新しい連載は「便利なWebサイトを手軽に作成 Google Yahoo Web API 活用入門」だ。これは私の友人でもあるMicrosoft MVPの薬師寺国安さんが執筆されている。薬師寺さんには多くの著書があるが、どれも実践的でわかりやすく、初心者が段階的に学べるように丁寧に書かれており、この連載も大いに注目したい。今回は第1回で、「Googleマップを埋め込んでマーカー表示させる」が取り上げられている。

最後に紹介したいのは、ずっと連載を追いかけている「ハードウエア入門塾 ラズベリーパイで遊ぼう」だ。今回は連載第3回、「カメラとレーザーを使った監視装置を作る」だ。カメラモジュールはラズベリーパイ純正、米OmniVision Technologies社のCMOSイメージセンサーOV5647を使い、レーザーは赤色レーザー発光モジュールLM-101-A2、光センサーとしてフォトトランジスタNJL7502Lを使っている。

IMG_8819_mid_640_480

付録は「すぐわかる、すぐ使える プログラミングの便利帳10冊」で、CDに過去の特別付録から9つの冊子をPDFにしたものと新規書き下ろしの1冊の10冊が収められている。新規書き下ろしは「無償の開発ツールでだれでも作れる Androidアプリ開発の事始め」、付録冊子からは「イケてるユーザーインターフェースを作ろう Android UIパーツ活用ガイド」、「ベテラン講師の新人研修をバーチャル体験 5日でJavaがわかる本」、「何も知らない新入社員を一緒にPHPをマスター ボクのPHP奮闘記」、「入門から応用まで、サンプルコードで学習できる Visual C#やりたいこと逆引き事典」、「タグやプロパティの使い方が実例でわかる HTML5&CSS3クイックリファレンス」、「Webをカッコよくするライブラリを使いこなそう JavaScriptライブラリ活用レシピ集」、「目的別に必要なコマンドが探せる Windows/Mac両対応コマンド大事典」、「マクロで業務を効率化 Excel VBAプログラミング事典」、「今さら聞けない基礎用語をじっくり解説 読むプログラミング用語辞典」だ。CDはプラケースに入っていて、このまま本棚に立てておけるから便利だ。