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

InfoPath & SQL Server !

Archive for the ‘Power BI’ Category

IoT 開発における Arduino ファミリーの優位性 – nodeMCU を使う理由

leave a comment »

IoT 開発のために主として Arduino ファミリーと呼ぶことができるマイコンボードを使っている。ここで「Arduino ファミリー」と言っているのは、オフィシャルな Arduino 開発環境である Arduino IDE を使って開発でき、物理的な仕様もほぼ Arduino に準じているものを指している。

広告

IoT開発のためのマイコンボードについて考える – その必要な特性は何か

leave a comment »

現在、様々なマイコンボードが開発され生産、販売されており、それらは様々な用途に利用されているが、IoT 開発におけるマイコンボードに必要な特性は何だろう。

C# – 教科「情報」の授業で使うタイピングトレーニングのソフトを作っています。その 6。テキストボックスをリッチテキストボックスに変更。フォントサイズを変えることができるようにした。

leave a comment »

授業でタイピング練習をすると同時に、アジャイル的なアプリケーションの開発の実際を体験する目的で、自作のタイピングソフトを作って改良を重ねている。今回はやや大きめの変更を加えた。

ひとつは、例題に対して自分が入力した文字のどこが間違ったかを「〇〇文字目」と表示していたのだが、実際に間違った文字の色を変えるなど直感的にわかるようにしてほしい、という生徒からの要望だ。これは、たしかに、わかる。しかしテキストボックスでは文字装飾に限界があるので、テキストボックスをリッチテキストボックスに変更し、間違った文字の BackColor を変えるようにした。

間違った文字の位置は、文字列の比較で myStrCount に入っているので、それを利用して次のようなコードになる。

—————————————————————————————–

//スコアの値から間違った文字を赤く変える
richTextBox1.Select(myStrCount, 1);
richTextBox1.SelectionBackColor = Color.Red;

—————————————————————————————–

もうひとつの要望は、文字の大きさが小さいので自分で適度な大きさに変更できるようにしてほしい、というものだった。これもいいフィードバックだ。

そこでフォームに 2 つのボタンとトラックバー、文字の大きさのサンプルテキストボックスを加えた。ボタンにはフォントサイズを 1 ポイントずつ増減するコードを書き、フォントサイズの下限を 1、上限を 30 としてトラックバーを連結した。コードは次の通りだ。

—————————————————————————————–

int myFontSize; // フォントサイズを変数にする

// フォントサイズを増やすボタン
private void buttonFontSizeUp_Click(object sender, EventArgs e)
{
    myFontSize++;
    if(myFontSize > 30)
     {
        myFontSize = 30;
    }
    myFontSizeChange();
}

// フォントサイズを下げるボタン
private void buttonFontSizeDown_Click(object sender, EventArgs e)
{
    myFontSize–;
    if(myFontSize <1)
    {
        myFontSize = 1;
    }
    myFontSizeChange();
}

// フォントサイズを変更するメソッド
private void myFontSizeChange()
{
     textBox2.Font = new Font("MS UI Gothic", myFontSize);
    richTextBox1.Font = new Font("MS UI Gothic", myFontSize);
    textBoxFontSize.Text = myFontSize.ToString();
    trackBar1.Value = myFontSize;
}

// トラックバーのスクロールイベントに対するメソッド
private void trackBar1_Scroll(object sender, EventArgs e)
{
    myFontSize = trackBar1.Value;
    myFontSizeChange();
}

—————————————————————————————–

textInputProgram_006

textInputProgram_007_mid_640_480

C# – 教科「情報」の授業で使うタイピングトレーニングのソフトを作っています。その 5。ユーザー ID を Active Directory から取得するようにした。

leave a comment »

教科「情報」の授業でタイピングソフトを自作して生徒実習をしている。このねらいは 2 つある。ひとつは、実際に使いやすいソフトウエアを使いたい、ということがある。特に生徒の実習データを Microsoft Flow に送信して集計しやすくする、ということがある。もう一つの目的は、ソフトウエア開発の実際を生徒に見せたい、ということだ。

いわゆる「ウォーターフロー型」の開発には限界があることが多く指摘されている。現代的なソフトウエア開発環境を最大限に活用するには、アジャイルと呼ばれる開発スタイルが望ましい。そこで教科「情報」の授業で自分が作ったソフトウエアを生徒に使わせながら、問題点や改善点を指摘させて次のバージョンに適用する、という手法でソフトウエア開発の実際を間接的に体験させるのだ。

そのためには、最初から完成されたソフトウエアを使わさない。最初はごく基本的な仕組みだけ作ったソフトウエアを使わせ、問題点や改善点を指摘することを演習とする。

様々な意見が生徒から出て興味深いのだが、これはまた別項でまとめることにする。今回のマイナーバージョンアップでは「学籍番号を入力するのが面倒だ」と「学籍番号を全角で入力してしまう間違いがおこる」ことを回避することを考えた。これは、システム管理をやっている者には常識的な実装になるが、ユーザー ID を Active Directory から取得することだ。これは一行のコードで実現できる。

——————————————————————————————-

myUserName = Environment.UserName;

——————————————————————————————-

そして取得したユーザー ID を gakuseID テキストボックスに表示する。

——————————————————————————————-

gakuseID.Text = myUserName;

——————————————————————————————-

ちゃんと取得することが確認できれば、学籍番号のテキストボックスの Enabled プロパティを false にし、書き換えられないようにする。

——————————————————————————————-

gakuseID.Enabled = false;

——————————————————————————————-

これで学生番号は間違いなく処理されるようになる。

C# – 教科「情報」の授業で使うタイピングトレーニングのソフトを作っています。その 4。いつでも終了、開始ができるボタンのインタフェースを制御した。

leave a comment »

教科「情報」の授業で使うタイピングトレーニングのソフトを作っている。ここでマイナーチェンジをしたのは、ボタンの有効状態を制御したところだ。たとえば、次の画面は文字入力をトレーニングして「終了」のボタンを押し、かかった時間とスコアを表示したところだ。

textInputProgram_001_mid_640

ところがこの状態で「開始」のボタンが有効になっている。そこでこのまま「開始」をクリックして「終了」をクリックすると、一字も入力することなく結果が出てしまう。

textInputProgram_002_mid_640

そこで「開始」ボタンを押す前は「終了」と「リセット」を無効にし、「開始」ボタンを押せば「開始」ボタンは無効となり「終了」ボタンが有効になり、「終了」ボタンを押せば「終了」ボタンは無効となり「リセット」ボタンが有効となる、といったようにボタンの有効無効を制御することにした。

まずフォームの初期化で「終了」ボタンと「リセット」ボタンを無効にしておく。

——————————————————————————————

btnEnd.Enabled = false; //終了ボタンを無効にする
btnClear.Enabled = false; //クリアボタンを無効にする

——————————————————————————————

次に「開始」ボタンのクリックイベントで「開始」ボタンを無効にし「終了」ボタンを有効にする。

——————————————————————————————

btnStart.Enabled = false; //開始ボタンを無効にする
btnEnd.Enabled = true; //終了ボタンを有効にする

——————————————————————————————

そして「終了」ボタンのクリックイベントで「終了」ボタンを無効にし「クリア」ボタンを有効にする。

——————————————————————————————

btnStart.Enabled = false; //スタートボタンを無効にする
btnClear.Enabled = true; //リセットボタンを有効にする

——————————————————————————————

最後に「クリア」ボタンのクリックイベントで「クリア」ボタンを無効にし「開始」ボタンを有効にする。

——————————————————————————————

btnClear.Enabled = false; //クリアボタンを無効にする
btnStart.Enabled = true; //スタートボタンを有効にする

——————————————————————————————

これでボタンの有効無効管理ができた。

textInputProgram_003_mid_640

textInputProgram_004_mid_640

textInputProgram_005_mid_640

さて、このような制御をどこまですればよいのだろうか。それはプログラムを誰がどのように使うのかにかかっている。たとえばこのソフトウエアが、自分で文字入力のトレーニング結果を知りたいために使うのならば、このような制御を考える必要はないのかもしれない。自分の力を知るために「ずる」をする意味がないからだ。しかし、たとえば学校の授業で先生が生徒に課す場合は、少しでもよい結果を出すために「ずる」をしようと考える生徒がいるかもしれない。

そのことを考えると、たとえばテキストを別に入力しておき、ペーストするような「ずる」も考えられるかもしれない。使いやすさと同時に、想定外の利用をされないように考えることは、ソフトウエアの本来の機能とはまた別に、ソフトウエア開発のテーマである。

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 を使うとアイデアさえまとまればアプリケーションを作る手間は革命的に小さくなった。重厚長大のシステム開発の時代は終わったのだ。

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