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

InfoPath & SQL Server !

Archive for the ‘開発’ Category

マインクラフトはオブジェクト指向プログラミングだ。小学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

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

Orange Pi Zero を買った

leave a comment »

先日買った Orange Pi One が気に入ったので、次に Orange Pi Zero を買ってみた。

P1470922_mid_640_480

パッケージは Orange Pi One のときのものと同じ。パッケージを開けると、Orange Pi One と同じように、Orange Pi Zero 本体と簡潔な一枚のプリントが入っている。

P1470776_mid_640_480

P1470926_mid_640_480

実に小さな筐体にぎっしりと機能が集積されているという感じだ。機能美を感じる。スペックは次の通り。

CPU H2 Quad-core Cortex-A7 H.265/HEVC 1080P
GPU Mali400MP2 GPU @600MHz Supports OpenGL ES 2.0
Memory (SDRAM) 256MB/512MB DDR3 SDRAM(Share with GPU)(256MB version is Standard version)
Onboard Storage TF card (Max. 64GB)/ NOR Flash(2MB Default not posted)
Onboard Network 10/100M Ethernet RJ45 POE is default off
Onboard WIFI XR819, IEEE 802.11 b/g/n
Audio Input MIC
Video Outputs Supports external board via 13pins
Power Source USB OTG can supply power
USB 2.0 Ports Only One USB 2.0 HOST, one USB 2.0 OTG
Buttons Power Button
Low-level peripherals 26 Pins Header, compatible with Raspberry Pi B+ ,13 Pins Header
LED Power led & Status led
Supported OS Android, Lubuntu, Debian, Raspbian
Product size 48 mm × 46mm
Weight 26g

オンボードにイーサネットのコネクタがあり、かつ、Wi-Fi モジュールも装備している。だが HDMI コネクタはなく、画面出力をするには拡張ボードが必要だ。電源は micro USB コネクタから給電できる。このスペックからすると、ネットワーク接続に最適化された軽量の IoT モジュール、という位置づけになるだろう。

Orange Pi は中国の Shenzhen Xunlong Software CO., Limited の製品だ。

Written by Yoshio Matsumoto

2017年4月8日 at 9:47 PM

Orange Pi One を買った

leave a comment »

マイコンボードの世界が熱い。とりわけ現在のトレンドは、Raspberry Pi をモデルにしたものだろう。そのうち、最も面白そうなものは、この Orange Pi だ。

P1470774_mid_640_480

パッケージは簡素だが品のあるものだ。パッケージの中には Orange Pi One 本体と簡潔な一枚のプリントが入っている。

P1470776_mid_640_480

P1470791_edit_mid_640_480

この小さなサイズで、スペックは次の通り。

CPU H3 Quad-core Cortex-A7 H.265/HEVC 4K
GPU Mali400MP2 GPU @600MHz Supports OpenGL ES 2.0
Memory (SDRAM) 512MB DDR3 (shared with GPU)
Onboard Storage TF card (Max. 64GB) / MMC card slot
Onboard Network 10/100M Ethernet RJ45
Video Input A CSI input connector Camera
Video Outputs Supports HDMI output with HDCP
Power Source DC input can supply power, but USB OTG input don’t supply power
USB 2.0 Ports Only One USB 2.0 HOST, one USB 2.0 OTG
Buttons Power Button(SW4)
Low-level peripherals 40 Pins Header,compatible with Raspberry Pi B+
LED Power led & Status led
Supported OS Android Ubuntu, Debian, Rasberry Pi Image
Product size 69 mm × 48mm
Weight 36g

オンボードでイーサネットのネットワークコネクタを装備し、HDMI 出力インタフェースもある。

Orange Pi は中国の Shenzhen Xunlong Software CO., Limited の製品だ。

Written by Yoshio Matsumoto

2017年4月8日 at 9:22 PM

Visual Studio Community 2017 のプロジェクトテンプレートで Visual Basic は「他の言語」扱いになっている。

leave a comment »

Visual Studio Community 2017 をインストールした。起動して新しいプロジェクトを開始するためにプロジェクトテンプレートを開いたら、基本が Visual C# であり、Visual Basic はツリーの「他の言語」の配下になっている。

VisualStudio2017_017_mid_640

< Fig.1 : Visual Studio Community 2017 のプロジェクトテンプレート >

2000年頃から開発がすすめられ、2002年に Windows 98、NT 4.0、2000、XP向けに .NET Framework 1.0 が提供されてから、ゆくゆくは C# が開発の基本言語になると言われており Visual Basic による開発者は内心穏やかではなかった。しかし、それでも長らく Visual Basic は開発の主要言語として位置づけられてきたが、それが現在では「他の言語」に分類されている。

感無量だ、と思い改めて Visual Studio 2015 を起動すると、既にそうなっていた。それどころか Visual Studio Community 2013 でもそうだった。

VisualStudio2017_018_mid_640

< Fig.2 : Visual Studio Professional 2015 のプロジェクトテンプレート >

VisualStudio2017_019_mid_640

< Fig.3 : Visual Studio Community 2013 のプロジェクトテンプレート >

学校の先生のための SQL Server 2016 による成績処理 (1) – SQL Server 2016 Express のダウンロード

leave a comment »

今日における高等学校では生徒の成績処理や学籍管理において、多少ともコンピュータの処理がかかわっているだろう。授業担当者は自分が担当する講座の生徒の成績を、学級担任はクラスの生徒の出席状況やホームルーム活動の記録などをエクセルのような表計算ソフトで処理しているだろう。そして学校全体の成績管理をする教務部は、これらのデータを集めて成績会議の資料を作り、生徒の指導要録を管理し、また進路指導部は調査書の処理をしているはずだ。

これらのデータ処理をエクセルのような表計算ソフトを使って学校全体で行っているケースは多いと思われる。しかし表計算ソフトウエアはもともと個人ベースのデータ処理ツールとして開発されたもので、マルチユーザーでの利用には限界がある。学校の規模にもよるが、高等学校には数十名の教職員が勤務しており、定期考査が終わり評価をつけ、成績会議までの日程はあまり長くない。そして何よりも成績処理には正確さが求められる。成績処理には会計処理における「出納違算金」のようなものはなく、1点でも誤りがあってはいけないのだ。

また学校制度が多様化し、学習指導要領に決められていない「学校設定科目」などを多く開講する「総合学科」や夜間定時制を昼間の時間帯にも拡張した「多部制」、学年の区切りがない「単位制」など新しいタイプの学校ができ、また従来からも自宅学習が基本となる「通信制」がある。これらの学校では、そもそも紙ベースでの成績処理、学籍管理には無理があるため、成績処理システムを外注していることが多い。

筆者は10年間、生徒定員1,120名の大規模な多部制、単位制高校に勤務し、成績処理と学籍管理を行ってきた。この学校は午前、午後、夜間の3つの部を持つ多部制、単位制高校で、毎年280名の入学生を受け入れ、100講座の授業を編成し、約4,500の受講登録をして単位の管理を必要とした。出席データは週当たり8,000件、1年間で30万件となった。これらの処理を、私が赴任するまでは業者に発注したデータベースシステムを使っていたが、さまざまな理由で学校事情をあわないものであったため、筆者はMicrosoft SQL Serverを使って学校独自のシステムを構築して運用した。この経験から学校では、その学校に応じたシステムを現場の教員が作る、いわゆる「内製」が望ましいと確信している。SQL Serverは簡単だ。ぜひ多くの教員がSQL Serverを知り、自ら望む最高のデータベースを構築し運用できることを願っている。

現在マイクロソフトのサイトから、SQL Server 2016がダウンロードできる。
Microsoft SQL Server のページ
https://www.microsoft.com/en-us/sql-server/sql-server-2016

SQLServer2016_for_teachers_001_mid_640

SQL Server 2016にはいくつかのバリエーションがあるが、その中に無料で使えるExpress版がある。実運用では正式版を購入することになるが、試験的な利用ではこのExpress版を使うことができ、現時点でSQL Server 2016 SP1 Expressバージョンが提供されている。

上のページでスクロールし、Editions をクリックするとダウンロードページへのリンクがわかる。
Microsoft SQL Server ダウンロードのページ
https://www.microsoft.com/en-us/sql-server/sql-server-2016-editions

SQLServer2016_for_teachers_002_mid_640

ダウンロードのリンクをクリックすると Microsoft SQL Server 2016 Service Pack 1 Express のダウンロードページが開く。いくつかの言語の版を選択できるようになるので言語のドロップダウンリストボックスをクリックし、英語、フランス語、ドイツ語、イタリア語につづく Japanese を選択してダウンロードする。
Microsoft SQL Server 2016 Service Pack 1 Express ダウンロードのページ
https://www.microsoft.com/en-us/download/details.aspx?id=54284

SQLServer2016_for_teachers_003_mid_640

ダウンロードではディスクのどこかにフォルダを作り、そこに保存する。保存できれば次のようなファイルが生成する。ファイル名は SQLServer2016-SSEI-Expr.exe だ。

SQLServer2016_for_teachers_004_mid

重ねて述べるが、SQL Server は難しくない。また Microsoft SQL Server のように多くのユーザーの支持を得て、業界標準となり、長くバージョンアップを繰り返して使われてきた製品は、そのたびに使いやすく機能が豊富になる。身に着けたことは技術資産となり積み上げられる。これを機会にぜひ使ってほしい。

Written by Yoshio Matsumoto

2017年4月3日 at 10:21 AM

Microsoft Visual Studio 2015 と SQL Server データベースファイルで開発する「目からうろこ」の C# プログラミングによる成績処理システム(5) – 生徒基本情報のデータを整理してデータベースに保存する下準備をする

with 3 comments

1.既存のデータを集める

VisualStudio_成績処理_054_mid_640

生徒基本情報のようなデータは、成績処理にデータベースを使っていない学校でも、多くはエクセルのような表計算で管理されているだろう。まず校内にある生徒データを集めてエクセルでまとめる。エクセルはこのようなデータ型が決まっていないデータを集めて整理するには使いやすい。

この例でわかるように、表計算のデータはデータとしてそのまま使えない場合がある。よくあるのは、数字に見えるが実際は日本語の2バイトフォント、いわゆる全角文字になっていること、アルファベットも全角と半角が混在していること、よけいな空白が混じっていること、などだ。上の表計算データの例では、氏名が姓と名に分かれておらず、また空白が入っていること、氏名の後ろに何らかの意味を持った記号「・」があること、などだ。

2.氏名データを姓と名に分ける

VisualStudio_成績処理_055_mid_640

どうしても手作業が発生するのは、氏名データから姓と名を分ける作業だ。ここではエクセルの関数を使って氏名のデータから全角と半角の空白と、これも全角と半角の「・」を取り除き、前から2文字を仮に姓だとして、前から3文字以降を名だとして切り取っている。エクセルの表計算上の関数は次のようになる。

「姓名の空白をとる」関数の例 =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(E2," ","")," ",""),"・",""),"・","")
「姓を切り取る」関数の例 =LEFT(H2,2)
「名を切り取る」関数 =MID(H2,3,10)

また数字のようで日本語であるかもしれない「学年」や「出席番号」を数字にし、性別からよけいな空白を取り除く、クラスを半角にする、などの処理をする。

「学年を数字にする」関数の例 =VALUE(A2)
「出席番号を数字にする」関数の例 =VALUE(D2)
「性別から空白を取る」関数の例 =SUBSTITUTE(SUBSTITUTE(F2," ","")," ","")
「クラスを半角にする」関数の例 =ASC(C2)

3.テーブル構造の見直しとテーブルを生成する SQL 文の変更

こうして既存のデータを整理すると、生徒基本情報データとしてあったほうが良いフィールドに気づく。ここでは「学科名」と「本科か専修コースか」のデータが必要だと考えた。

本校では、クラス名を学科名からつけている。建築科はクラス名に「A」をつけており、1年生は「A1」、2年生は「A2」といったものだ。したがって生徒が所属するクラス名から学科がわかるが、学科名はフィールドとして持っておいたほうが様々な処理がしやすいと考えた。また本校は一般の高校生が学ぶ「本科」に加えて、いちど高等学校を卒業した社会人が学ぶ「専修コース」があるので、それもデータとして加えたい。

・gakka 学科名 ユニコード可変長文字列型(4)
・honsen クラス名 ユニコード可変長文字列型(2)

「gakka」フィールドには「建築」、「機械」、「電気」、「情報技術」のデータを記録することに、「honsen」フィールドには「本科」または「専修」を記録することにする。

テーブル構造を変えるには、最初に作ったテーブル作成の SQL 文を変更して行う。メモ帳などのテキストファイルにしておいた元の SQL 文を次のように変更する。

VisualStudio_成績処理_056_mid_640

SQL 文のうち、[gakka] で始まる行と [honsen] で始まる行を追加した。

4.テーブルの削除とテーブル生成の SQL 文の実行

VisualStudio_成績処理_057_mid_640

Visual Studio の SQL Server オブジェクトエクスプローラーで、作った dbo.Seito テーブルを削除する。削除はテーブル名をポイントして右クリックし「削除」をする。

VisualStudio_成績処理_058_mid_640

テーブルを削除すると、テーブルにデータがあった場合そのデータがすべてなくなってしまうので、たいへん危険な操作になる。そこで「データベース更新のプレビュー」で、ほんとうに削除して良いか聞かれる。よければ「データベースの更新」をクリックする。

VisualStudio_成績処理_060_mid_640

テーブルがなくなった。

VisualStudio_成績処理_061_mid_640

SQL Server オブジェクトエクスプローラーで「テーブル」フォルダを右クリックし、もういちど「新しいテーブルの追加」を行う。

VisualStudio_成績処理_062_mid_640

ここでデザインビューを操作するのではなく、デザインビューの下の「T-SQL」に先のメモ帳で作り直した SQL 文を貼り付ける。すると上のデザインビューにも SQL 文に相当するデザインが表示される。

VisualStudio_成績処理_063_mid_640

テーブルのデザインビューの左上にある上向き矢印「更新」でデータベースを更新する。

VisualStudio_成績処理_064_mid_640

「データベース更新のプレビュー」で「データベースの更新」ボタンをクリックして更新を実行する。

VisualStudio_成績処理_066_mid_640

下部の「データツール操作」で更新が正常に完了したことがわかる。

VisualStudio_成績処理_067_mid_640

SQL Server オブジェクトエクスプローラーで生成したテーブルを確認する。

次回は整理したデータをテーブルに保存する作業を行う。