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

InfoPath & SQL Server !

Archive for the ‘C#’ Category

SQL Server に都市名を保存しておき Bing Maps から緯度経度値を取得する。そしてWebBrowser コントトールにカスタム URL を使って Bing Map を表示する。

leave a comment »

Bing Maps は単にブラウザを使って地図を表示するだけではなく、様々なオプションが用意されており開発者にとって使いやすい環境を提供している。たとえば Bing Maps のマッピングソリューションとカスタム URL を利用することによって、SQL Server データベースに都市名を取得しておき、データグリッドビューに表示してクリックすることで WebBrowser コントロールにマップを表示するようなアプリケーションを簡単に作ることができる。

BingMapVisualStudio_001_mid_640

試しにテスト用のアプリケーションを作ってみたのが上のものだ。SQL Server には世界各国の首都データがストアしてあり、首都名から Bing Maps API を使って緯度経度値を取得している。その緯度経度値から Bing Maps のカスタム URL を使って地図を WebBrowser に表示している。

このアプリケーションを本校の地理の授業で使ってもらおうと思っている。世界の都市を分類し、単元の目標に応じた地図を世界地図上で示す。拡大縮小をしマップをドラッグすることで地理がわかる。

この Bing Maps を使う Tips については、2019年6月22日(土)開催の .NETラボで解説します。場所は東京品川、日本マイクロソフト本社。

勉強会の申し込みはこちら「connpass」から。
https://dotnetlab.connpass.com/event/133891/?fbclid=IwAR3DsFRd4xIPZ5BO4wUN6HV_atukJCRgPfLp44r-rcfq7QzLdcks2eLvcrk

.NETラボ
http://dotnetlab.net/

2019年6月2日

松本 吉生(まつもとよしお)

Microsoft MVP Data Platform
京都に生まれ、神戸で幼少期を過ごす。大学で応用化学を学んだのち、理科教諭として高等学校に勤務する。教育の情報化が進む中で校内ネットワークの構築運用に従事し、兵庫県立明石高等学校で文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わる。兵庫県立西宮香風高等学校では多部制単位制の複雑な教育システムを管理する学籍管理データベースシステムをSQL ServerとInfoPath、AccessなどのOfficeソフトウエアによるOBA開発で構築・運用する。2015年から2017年まで兵庫県立神戸工業高等学校でC#プログラミング、IoTなどのコンピュータ教育を行い、現在は兵庫県立神戸甲北高等学校に勤務する。2004年からマイクロソフトMVP(Microsoft Most Valuable Professional)を受賞し、現在15回目の連続受賞。2016年にマイクロソフト認定教育者(Microsoft Innovative Educator Experts : MIEE)を受賞し、現在4回目の連続受賞。

Visual Studio 2019 C# アプリケーション開発 – SQL Server と Bing Maps (1) – 緯度経度情報から地図を表示する Bing Maps のカスタム URL について

leave a comment »

住所や緯度経度情報から地図を表示するアプリケーションを作るにあたって気づいたことがいくつかある。ひとつはWebBrowserコントロールに Bing Maps を表示するとき、カスタムサイズの地図取得をするには embed オプションを使うことだった。embed オプションを使ったカスタム URL ならフォーム上の WebBrowser コントトールにぴったり収まる地図を取得することができる。これについては以前に書いた記事を見てほしい。

Bing Maps をアプリケーションで利用する – カスタムサイズのマップを WebBrowser コントロールに表示する – Visual Studio 2019 C#

Bing Maps のカスタム URL を使えば、緯度経度情報を指定して地球上の任意の地点を中心とする地図を取得することができる。たとえば兵庫県の神戸三ノ宮駅の緯度経度情報は、経度 135.194900、緯度 34.694840 であり、この地点を中心とする地図を表示するカスタム URL は次のようになる。

https://www.bing.com/maps?cp=34.694840~135.194900

cp オプションの後ろに緯度と経度の値をチルダで挟む書き方だ。これに地図の拡大率を指定するlvlオプションを使い、もっと拡大した地図を表示させてみよう。オプションを追加するには & 記号でつないていく。なおレベルのオプションは 1 から 20 までで、徒歩での行き先を示すための一般的な地図利用なら 18 くらいが適当だろう。

https://www.bing.com/maps?CP=34.694840~135.194900&lvl=18

地図上にコレクションのマークを付けることもできる。コレクションの位置を指定するオプションは sp で、緯度経度の指定を point オブジェクトで記述する。point オブジェクトの記述方法は、point に続いてドットをはさみ経度と緯度の値をアンダースコアで繋いで記述する。

https://www.bing.com/maps?CP=34.694840~135.194900&lvl=18&sp=point.34.694840_135.194900

「無題のアイテム」という名前のコレクションが表示されるはずだ。カスタム URL の point オブジェクトには緯度経度情報に加えてコレクションに表示する文字列を送ることもできる。このとき、文字にスペースを入れるには制御文字 %20 を使う。

https://www.bing.com/maps?CP=34.694840~135.194900&lvl=18&sp=point.34.694840_135.194900_Kobe%20Sannomiya%20Station

コレクションの表示を日本語にすることもできる。

https://bing.com/maps/default.aspx?CP=34.694840~135.194900&lvl=18&sp=point.34.694840_135.194900_神戸三ノ宮駅

2019年5月12日

松本 吉生(まつもとよしお)

Microsoft MVP Data Platform
京都に生まれ、神戸で幼少期を過ごす。大学で応用化学を学んだのち、理科教諭として高等学校に勤務する。教育の情報化が進む中で校内ネットワークの構築運用に従事し、兵庫県立明石高等学校で文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わる。兵庫県立西宮香風高等学校では多部制単位制の複雑な教育システムを管理する学籍管理データベースシステムをSQL ServerとInfoPath、AccessなどのOfficeソフトウエアによるOBA開発で構築・運用する。2015年から2017年まで兵庫県立神戸工業高等学校でC#プログラミング、IoTなどのコンピュータ教育を行い、現在は兵庫県立神戸甲北高等学校に勤務する。2004年からマイクロソフトMVP(Microsoft Most Valuable Professional)を受賞し、現在15回目の連続受賞。2016年にマイクロソフト認定教育者(Microsoft Innovative Educator Experts : MIEE)を受賞し、現在4回目の連続受賞。

Bing Mapsをアプリケーションで利用する – カスタムサイズのマップを WebBrowser コントロールに表示する – Visual Studio 2019 C#

leave a comment »

WebBrowserコントロールを利用するとアプリケーション内で簡単にWebページを表示できる。Visual Studio 2019 を使って Windows フォームアプリケーションのプロジェクトを開始し、ツールボックスから WebBrowser コントロールを選んでフォームにドラッグするだけだ。

WebBrowserBingmaps_001_mid_640.png

WebBrowserBingmaps_002_mid_640.png

この WebBrowser コントロールに Bingmap で地図を表示するために、テスト用のボタンを作り、WebBrowser コントロールの Navigate メソッドで Bingmap を表示する URL を指定する。

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

private void Button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("https://www.bing.com/maps");
}

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

このプロジェクトで WebBrowser コントロールのサイズを 300 × 300 にしているのだが、取得した Bingmap は大きすぎてコントロールに収まらない。全体を見るにはスクロールする必要がある。これでは使いにくい。

WebBrowserBingmaps_003.png

Bingmap を必要なサイズで取得するには、embed オプションを利用したカスタム URL を利用する。カスタム URL はオプションを & 記号でつなぐようになっている。たとえば地図の拡大レベルを 18、緯度経度が 34.723653, 135.146139 のポイントを幅 300 ピクセル、高さ 300 ピクセルで表示するには次のようなカスタム URL を利用する。

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

https://www.bing.com/maps/embed?LVL=18&CP=34.723653~135.146139&W=300&H=300

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

フォームにもう一つボタンを作り、Click イベントに上記のカスタム URL を WebBrowser コントロールの Navigate メソッドに記述して試してみよう。

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

private void Button2_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("https://www.bing.com/maps/embed?LVL=18&CP=34.723653~135.146139&W=300&H=300 ");
}

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

WebBrowserBingmaps_005_mid_640

WebBrowserBingmaps_006_mid_640.png

プロジェクトをビルドして実行し、ボタンをクリックして Bingmap を表示させてみよう。フォーム上の WebBrowser コントロールにぴったりの大きさで Bingmap を表示し、ナビゲートできるようになった。

WebBrowserBingmaps_007.png

2019年5月11日

松本 吉生(まつもとよしお)

Microsoft MVP Data Platform
京都に生まれ、神戸で幼少期を過ごす。大学で応用化学を学んだのち、理科教諭として高等学校に勤務する。教育の情報化が進む中で校内ネットワークの構築運用に従事し、兵庫県立明石高等学校で文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わる。兵庫県立西宮香風高等学校では多部制単位制の複雑な教育システムを管理する学籍管理データベースシステムをSQL ServerとInfoPath、AccessなどのOfficeソフトウエアによるOBA開発で構築・運用する。2015年から2017年まで兵庫県立神戸工業高等学校でC#プログラミング、IoTなどのコンピュータ教育を行い、現在は兵庫県立神戸甲北高等学校に勤務する。2004年からマイクロソフトMVP(Microsoft Most Valuable Professional)を受賞し、現在15回目の連続受賞。2016年にマイクロソフト認定教育者(Microsoft Innovative Educator Experts : MIEE)を受賞し、現在4回目の連続受賞。

2019年5月18日(土) – 第2回神戸SQL Serverラボ – 神戸SQL Server User Group

leave a comment »

2019年4月から毎月定期開催で「神戸SQL Serverラボ」と題したSQL Serverの勉強会を始めました。場所は神戸三ノ宮駅から徒歩約5分の便利な場所にある、神戸青少年会館をお借りし、毎回テーマを決めて、初心者がSQL Serverデータベースの運用ができることを目指します。また経験者の方にも、それぞれお持ちのノウハウを交流できる場になれば幸いです。

<追記>
第2回からネットワーク環境で SQL Server を利用できるようにします。LAN ポートで有線接続できるか、WiFi 機能を持った PC をお持ちいただければ SQL Server をインストールしなくとも管理ツール SSMS だけ設定すれば実習ができます。用意する SQL Server のバージョンは SQL Server 2014 と SQL Server 2017 です。

場所:神戸青少年会館(神戸市勤労会館の5階6階です)
神戸市中央区雲井通5丁目1番2号 34.694927, 135.197403
kobeshiseishounenkaikan_map bingmapで表示
神戸市青少年会館のアクセスページ
日時:毎月第3土曜日 18:00~19:30

第2回 2019年5月18日(土)18:00~19:30
「テーブル作成、データ型、主キー、テーブル作成とSQL文」
データベースの作成とテーブル作成について実習します。実習の中でデータを一意に管理するテーブルの主キーについてや、Accessの「オートナンバー型」のようにデータに自動的に連番を与える方法、テーブル作成を SQL 文で行う方法などを体験的に身に着けます。
場所:神戸青少年会館 サークル4号室(神戸市勤労会館の6階です)

申し込み方法:電子メールまたはconnpassで
電子メール:kobesqlserverlabo@matsumotoyoshio.net
電子メールのタイトル:第2回20190518神戸SQL Serverラボに参加します
電子メールの本文:お名前、所属をお書きください。
connpassでの申し込み:https://connpass.com/event/130009/
運営費:500円

(定期開催の予定)

第1回 2019年4月27日(土)18:00~19:30(終了しました)
「SQL Serverのインストールと管理ツールManagement Studioの基本操作」

第2回 2019年5月18日(土)18:00~19:30
「テーブル作成、データ型、主キー、テーブル作成とSQL文」

第3回 2019年6月15日(土)18:00~19:30
「ビューによるデータ操作、射影、選択、結合」

第4回 2019年7月20日(土)18:00~19:30
「関数によるデータ処理、ユーザー定義関数の作成と利用」

第5回 2019年8月17日(土)18:00~19:30
「トリガによるデータ処理の自動化」

第6回 2019年9月21日(土)18:00~19:30
「ストアドプロシージャの作成と利用」

※第7回以降の予定は決定次第ここにご案内します。

2019年5月1日

松本 吉生(まつもとよしお)

Microsoft MVP Data Platform
京都に生まれ、神戸で幼少期を過ごす。大学で応用化学を学んだのち、理科教諭として高等学校に勤務する。教育の情報化が進む中で校内ネットワークの構築運用に従事し、兵庫県立明石高等学校で文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わる。兵庫県立西宮香風高等学校では多部制単位制の複雑な教育システムを管理する学籍管理データベースシステムをSQL ServerとInfoPath、AccessなどのOfficeソフトウエアによるOBA開発で構築・運用する。2015年から2017年まで兵庫県立神戸工業高等学校でC#プログラミング、IoTなどのコンピュータ教育を行い、現在は兵庫県立神戸甲北高等学校に勤務する。2004年からマイクロソフトMVP(Microsoft Most Valuable Professional)を受賞し、現在15回目の連続受賞。2016年にマイクロソフト認定教育者(Microsoft Innovative Educator Experts : MIEE)を受賞し、現在4回目の連続受賞。

Visual Studio 2017 で Microsoft Report を使う – Visual Studio 用 Microsoft RDLC レポートデザイナーをインストールする – 拡張機能と更新プログラムを利用する

leave a comment »

従来、Visual Studioで印刷帳票を作るには、Crystal Reports を使うことが主流だった。略称「クリレポ」と呼ばれ、開発者にとって事実上の標準ツールだったと言える。これは純粋のマイクロソフト製品ではなくサードパーティーによる製品だが、Visual Studio 2008までは Crystal Reports の OEM バージョンが利用できた。Visual Studio 2010 以降も現在の開発元である SAP 社のサイトから無償バージョンをダウンロードして使えるようだが、Microsoft 社は印刷帳票に関する開発環境を Microsoft Report という名称でまとめていく方向性を持っているようだ。

(追記)2020.09.28
————————————————————————————————–
次のマイクロソフトの Docs.com には、レポートデザインに関するヒントが書かれている。
レポート デザインに関するヒント (レポート ビルダーおよび SSRS)
https://docs.microsoft.com/ja-jp/sql/reporting-services/report-design/report-design-tips-report-builder-and-ssrs?WT.mc_id=DP-MVP-10329
————————————————————————————————–

Microsoft Report による帳票の開発は、RDLC レポートデザイナーで行う。RDLC レポートデザイナーは Visual Studio のインストール方法によっては標準でインストールされず、Visual Studio 2017 の「プロジェクト」メニューの「新しい項目の追加」で「レポート」が選択できないことがある。

「新しい項目の追加」ウィンドウにレポートアイテムがなければ、Visual Studio 2017 のメニューで「ツール」-「拡張機能と更新プログラム」を選択し、コンポーネントをインストールする。

MicrosoftReport_005_trimming

「拡張機能と更新プログラム」ウィンドウでは、検索対象を「オンライン」にし、キーワードに「RDLC」を入力する。検索すると「Microsoft RDLC Report Designer」が見つかるはずなので「ダウンロード」のボタンをクリックする。

「ダウンロード」のボタンをクリックするとインストールがスケジュールされるので、Visual Studio をいったん終了する。

MicrosoftReport_007_mid_640

Visual Studio を終了すると自動的に VSIX インストーラーが起動し、コンポーネントのインストールがはじまる。

MicrosoftReport_008

Visual Studio 用 Microsoft RDLC レポートデザイナーのインストールが示されるので「変更」をクリックする。

MicrosoftReport_009

ダウンロードとインストールがはじまる。

MicrosoftReport_010

インストールが完了した。

MicrosoftReport_011.png

インストールが完了したら Visual Studio 2017 を再び起動する。C# で Windows フォームアプリケーションの新しいプロジェクトを開始する。

MicrosoftReport_012_mid_640

「プロジェクト」メニューの「新しい項目の追加」を開くと「レポート」と「レポートウィザード」のアイテムが選択できるようになった。

「レポート」を選択し「追加」のボタンをクリックすると、プロジェクトに Report1.rdlc が追加された。

「ツールボックス」を展開すると、レポートにデザインできる「レポートアイテム」が表示されている。

(追記)2020.09.28
————————————————————————————————–
次のマイクロソフトの Docs.com には、レポートデザインに関するヒントが書かれている。
レポート デザインに関するヒント (レポート ビルダーおよび SSRS)
https://docs.microsoft.com/ja-jp/sql/reporting-services/report-design/report-design-tips-report-builder-and-ssrs?WT.mc_id=DP-MVP-10329
————————————————————————————————–

2019年4月30日

松本 吉生(まつもとよしお)

Microsoft MVP Data Platform
京都に生まれ、神戸で幼少期を過ごす。大学で応用化学を学んだのち、理科教諭として高等学校に勤務する。教育の情報化が進む中で校内ネットワークの構築運用に従事し、兵庫県立明石高等学校で文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わる。兵庫県立西宮香風高等学校では多部制単位制の複雑な教育システムを管理する学籍管理データベースシステムをSQL ServerとInfoPath、AccessなどのOfficeソフトウエアによるOBA開発で構築・運用する。2015年から2017年まで兵庫県立神戸工業高等学校でC#プログラミング、IoTなどのコンピュータ教育を行い、現在は兵庫県立神戸甲北高等学校に勤務する。2004年からマイクロソフトMVP(Microsoft Most Valuable Professional)を受賞し、現在15回目の連続受賞。2016年にマイクロソフト認定教育者(Microsoft Innovative Educator Experts : MIEE)を受賞し、現在4回目の連続受賞。

2019年度毎月定期開催 – 神戸SQL Serverラボ – 神戸SQL Server User Group

leave a comment »

2019年4月から毎月定期開催で「神戸SQL Serverラボ」と題したSQL Serverの勉強会を始めます。場所は神戸三ノ宮駅から徒歩約5分の便利な場所にある、神戸青少年会館をお借りし、毎回テーマを決めて、初心者がSQL Serverデータベースの運用ができることを目指します。また経験者の方にも、それぞれお持ちのノウハウを交流できる場になれば幸いです。

場所:神戸青少年会館(神戸市勤労会館の5階6階です)
神戸市中央区雲井通5丁目1番2号 34.694927, 135.197403
kobeshiseishounenkaikan_map bing mapで表示
神戸市青少年会館のアクセスページ
日時:毎月第3土曜日(4月のみ第4土曜日) 18:00~19:30

第一回 2019年4月27日(土)18:00~19:30
「SQL Serverのインストールと管理ツールManagement Studioの基本操作」
場所:神戸青少年会館 サークル4号室(神戸市勤労会館の6階です)

申し込み方法:電子メールまたはconnpassで
電子メール:kobesqlserverlabo@matsumotoyoshio.net
電子メールのタイトル:第一回20190427神戸SQL Serverラボに参加します
電子メールの本文:お名前、所属をお書きください。
connpassでの申し込み:https://connpass.com/event/128749/
運営費:500円

第二回 2019年5月18日(土)18:00~19:30
「テーブル作成、データ型、主キー、テーブル作成とSQL文」

第三回 2019年6月15日(土)18:00~19:30
「ビューによるデータ操作、射影、選択、結合」

第四回 2019年7月20日(土)18:00~19:30
関数によるデータ処理、ユーザー定義関数の作成と利用」

第五回 2019年8月17日(土)18:00~19:30
「トリガによるデータ処理の自動化」

第六回 2019年9月21日(土)18:00~19:30
「ストアドプロシージャの作成と利用」

※第七回以降の予定は決定次第ここにご案内します。

2019年4月20日

松本 吉生(まつもとよしお)

Microsoft MVP Data Platform
京都に生まれ、神戸で幼少期を過ごす。大学で応用化学を学んだのち、理科教諭として高等学校に勤務する。教育の情報化が進む中で校内ネットワークの構築運用に従事し、兵庫県立明石高等学校で文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わる。兵庫県立西宮香風高等学校では多部制単位制の複雑な教育システムを管理する学籍管理データベースシステムをSQL ServerとInfoPath、AccessなどのOfficeソフトウエアによるOBA開発で構築・運用する。2015年から2017年まで兵庫県立神戸工業高等学校でC#プログラミング、IoTなどのコンピュータ教育を行い、現在は兵庫県立神戸甲北高等学校に勤務する。2004年からマイクロソフトMVP(Microsoft Most Valuable Professional)を受賞し、現在15回目の連続受賞。2016年にマイクロソフト認定教育者(Microsoft Innovative Educator Experts : MIEE)を受賞し、現在4回目の連続受賞。

Visual Studio 2019 が米国時間4月2日に公開 – 最新の開発環境をインストールしよう

leave a comment »

Microsoftの統合開発環境、Visual Studioが2019となって米国時間4月2日に公開された。直前のバージョンは2017年3月9日に公開されたVisual Studio 2017なので、およそ2年ぶりのバージョンアップとなる。

Visual Studioの製品ラインナップは時代とともに変化してきたが、Visual Studio 2013からのバージョンには、個人の開発者にはProfessionalエディション相当の機能を無償で利用できるCommunity版がある。Microsoft社は営利企業であるので、無料で使えるCommunity版には利用制限がある。おおまかには、個人開発者、大学関係者、非営利団体従事者、オープンソース開発者、開発者5名以下の中小企業であるが、利用にあたってはMicrosoft社のページなどで確認して使わなければならない。

VS2019installa_001_mid_640

Microsoft社のVisual Studioのトップページには、新バージョンVisual Studio 2019のインストールリンクなど関連情報が並んでいる。

Visual Studio IDE, Code Editor, Azure DevOps, & App Center

このページで、Visual Studio IDEにある「Windows用ダウンロード」のボタンにマウスを重ねると、ダウンロードできるバージョンを選ぶことができる。

VS2019installa_002_mid_640

個人の開発者などCommunity版を利用できるユーザーなら、これをダウンロードしよう。

VS2019installa_003_mid_640

ブラウザの下部にダウンロードするファイルの操作を選ぶメッセージが出るので、「実行」をクリックする。

VS2019installa_004_mid_640

「作業を開始する前に、インストールを構成するためにいくつかの点を設定する必要があります」のメッセージが出る。「続行」をクリックすると、ファイルのダウンロードとインストールがはじまる。

VS2019installa_005_mid_640

VS2019installa_006_mid_640

VS2019installa_007_mid_640

まずインストーラが起動するので、作りたいアプリケーションのタイプなどを選んでインストールを構成する。ここではデスクトップのデータベースアプリケーションを作ることを想定し、「.NET デスクトップ開発」と「データの保存と処理」を選択している。

VS2019installa_008_mid_640VS2019installa_009_mid_640

「インストール」をクリックすると、ファイルのダウンロードとインストールがはじまる。

VS2019installa_010_mid_640VS2019installa_011_mid_640

インストールが完了したら、マイクロソフトアカウントでサインインをするウィンドウが表示される。

VS2019installa_012_mid_640

マイクロソフトアカウントでサインインをすると、ユーザー名が表示される。

VS2019installa_014_edit_mid_640

しばらく待つとVisual Studio 2019が起動する。起動画面はとてもシンプルだ。

VS2019installa_015_mid_640

2019年4月13日

松本 吉生(まつもとよしお)

Microsoft MVP Data Platform
京都に生まれ、神戸で幼少期を過ごす。大学で応用化学を学んだのち、理科教諭として高等学校に勤務する。教育の情報化が進む中で校内ネットワークの構築運用に従事し、兵庫県立明石高等学校で文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わる。兵庫県立西宮香風高等学校では多部制単位制の複雑な教育システムを管理する学籍管理データベースシステムをSQL ServerとInfoPath、AccessなどのOfficeソフトウエアによるOBA開発で構築・運用する。2015年から2017年まで兵庫県立神戸工業高等学校でC#プログラミング、IoTなどのコンピュータ教育を行い、現在は兵庫県立神戸甲北高等学校に勤務する。2004年からマイクロソフトMVP(Microsoft Most Valuable Professional)を受賞し、現在15回目の連続受賞。2016年にマイクロソフト認定教育者(Microsoft Innovative Educator Experts : MIEE)を受賞し、現在4回目の連続受賞。

プログラミングせずにプログラミング思考が身に着くはずがない – 「プログラミング思考」という言葉のまやかし – Visual Studio を使った C# プログラミングは最高の学習環境である。

leave a comment »

「情報教育」や「プログラミング教育」という言葉が表に出るたびに本質からそれる言葉が作り出される。その理由は明らかだ。コンピュータのことを知らない人間が「情報教育」を語るとき「情報教育はコンピュータを教えるものではない」と言い、プログラミングを知らない人間が「プログラミングができなくてもプログラミング思考を身に着けることができる」と言う。この二つの理由の根は同じだ。

たとえばこのように言ってみよう。「英語で話ができなくても英語的思考を身に着けることができる」「足し算引き算ができなくても数学的思考を身に着けることができる」「電池を豆電球につなぎ光らせることができなくても理科的思考を身に着けることができる」「楽器を何も弾くことができなくても音楽的思考を身に着けることができる」

もうこれでいいだろう。

つまり、「プログラミングする」ということは「プログラミング思考」を養うための重要な学習プロセスであり、また「プログラミングができる」ことによって「プログラミング思考が身についた」ことを評価することができるのだ。

しかし、このことは当然、実用的なアプリケーションを完成させるまでのプログラミング力を養う必要はない、ということも真実である。またどのような言語を使うかも、学習者のレベルにあわせて選択すべきであろう。学習ツールとしてのプラットフォームも同様だ。

小学生ならブロック型のプログラミング言語を使うことがいいだろう。そしてブロックの背後にはコードがあることを体験させる。中学生程度なら多くの学校で実践されているエクセルのマクロ、VBA を使うのもいいだろう。厳密に言えばエクセルのマクロはプログラミングではなく、エクセルというアプリケーションソフトの「オートメーション」だ。しかしエクセルのマクロには学習者にとってたいへん有効な、マクロの自動記録の機能がある。マクロの記録をしながら画面を操作すると、操作の手順がマクロとして記録される。このコードを元にして応用、発展させることで、マクロの自学自習ができる。

高校生では本格的なプログラミングを学習させるべきだ。高校生には実際に社会で使われているアプリケーションやプラットフォームを使って実習をさせるべきである。筆者は20年も前に高等学校でマルチメディアデザインの授業を始めたが、当時いくつかあった安価な画像編集ソフトを使わず、Adobe の Photoshop を使った。

新しい技術の概念はツールに表現されている。適切なツールを使うことで新しい技術概念を正しく身に着けることができる。技術とツールは不可分である。

どの言語を使ってプログラミング教育をしていい。とならば、Visual Studio を使った C# プログラミングは大きな選択肢の一つである以上に、コンピュータの OS が Windows であるならば、最も開発環境を整えやすく、実社会で使われており、効率よく、単純なものから高機能なものまで作ることができ、データベースやネットワークの実習ができるアプリケーションも簡単に作ることができ、しかも書店に行けば初心者から上級者まで様々な解説書が手に入る、Visual Studio と C# の組み合わせは最高の選択肢だといえる。

2018年10月10日

松本 吉生(まつもとよしお)
Microsoft MVP Data Platform

1961年京都に生まれ、神戸で幼少期を過ごす。大学で応用化学を学んだのち、理科教諭として高等学校に勤務する。教育の情報化が進む中で校内ネットワークの構築運用に従事し、兵庫県立明石高等学校で文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わる。兵庫県立西宮香風高等学校では多部制単位制の複雑な教育システムを管理する学籍管理データベースシステムをSQL ServerとInfoPath、AccessなどのOfficeソフトウエアによるOBA開発で構築・運用する。2015年から2017年まで兵庫県立神戸工業高等学校でC#プログラミング、IoTなどのコンピュータ教育を行い、現在は兵庫県立神戸甲北高等学校に勤務する。2004年からマイクロソフトMVP(Microsoft Most Valuable Professional)を受賞し、現在15回目の連続受賞。2016年にマイクロソフト認定教育者(Microsoft Innovative Educator Experts : MIEE)を受賞し、現在4回目の連続受賞。

10分でわかる – Visual Studio と C# で理解するオブジェクト指向プログラミング

leave a comment »

オブジェクト指向は現代プログラミングにおいては強力な手法だが、高度に抽象化された概念を伴うため理解するには適切な学習と訓練が必要である。そこで Visual Studio 2017 を使った C# プログラミングにより、具体的な例をあげて、オブジェクト指向を説明してみよう。

たとえばフォーム上にボタンがあり、ボタンの大きさをスライダの操作によって変化させるようなプログラムを考えよう。Visual Studio ならツールボックスにボタンコントロールとトラックバーが用意されているので、マウス操作だけでフォーム上に配置することができる。

OOP_001

OOP_002

トラックバーで変化させる値の範囲を、0から300にしよう。それには作成した trackBar1 のプロパティをプロパティウィンドウで変更する。Minimum の値は 0 のまま、Maximum の値を 300 に変更する。

OOP_003

次にトラックバーをマウスでダブルクリックし、トラックバーのスクロールイベントを作成する。ここに次のコードを書こう。これはオブジェクト指向ではないプログラミングの例だ。

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

button1.Height = trackBar1.Value;
button1.Width = trackBar1.Value;

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

OOP_004

ビルドして実行する。すると、スクロールバーを動かすことでボタンの高さの値と幅の値がスクロールバーの値になるので、大きさが変化する。ちゃんと動くプログラムができる。

OOP_005

OOP_006

OOP_007

フォームの大きさに対して 300 というボタンのサイズは大きすぎるので、スライダを右端によせればボタンがフォームからはみ出すようになる。

では、ここからだ。

スライダの値範囲は 0 ~ 300 のままとし、スライダを操作してもボタンのサイズが 100 ~ 200 の範囲に留まるようにプログラムを書き換えよう。if 文を知っていれば、たいてい次のようにコードを書くだろう。

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

if (trackBar1.Value > 100 && trackBar1.Value < 200)
{
button1.Height = trackBar1.Value;
button1.Width = trackBar1.Value;
}

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

OOP_008

もちろん、これで求める動作をするアプリケーションが得られる。しかし、オブジェクト指向では、こう考える。ボタンのサイズが 100 から 200 の範囲に留まるのは操作をする側で調節するのではなく、ボタン自体の性質にするべきだと考える。サイズを 100 以下にする指示や 200 以上にする指示を無視するように実装するのだ。

ではオブジェクト指向でやってみよう。

それにはもともと用意されたボタンオブジェクトに変更を加える必要がある。そこでオブジェクト指向の「継承」という概念を用いる。「継承」は、あるオブジェクトの性質を引き継ぐ別のオブジェクトを作る方法である。次のコードでは「継承」を利用して custumButton のオブジェクトを作っている。

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

class CustomButton : Button
{

}

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

そして Form1 クラスに myCustomButton の名前で CustomButton オブジェクトを作り、フォームの Load イベントで myCustomButton のインスタンスを生成してフォームに表示する。

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

CustomButton myCustomButton;

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

myCustomButton = new CustomButton();
this.Controls.Add(myCustomButton);

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

OOP_009

この状態でビルドすると、フォームの左上にボタンができているが、これは Button オブジェクトを継承して作った CustomButton である。ただ、この CustomButton には何もコードを付け加えていないので、このままでは単なるボタンと同じである。

OOP_010

次に、この CustomButton に自分のサイズを変更するメソッドを定義する。こんなかんじだ。

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

public void changeSize(int x)
{
this.Height = x;
this.Width = x;
}

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

これにより CustomButton オブジェクトは changeSize メソッドを持つことになり、myCustomButton.changeSize(100) のようにしてサイズを変更できるようになる。

ここでさらに、ボタンのサイズを 100 ~ 200 に限定するため、次のようにコードを書き加える。

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

public void changeSize(int x)
{
if (x > 100 && x < 200)
{
this.Height = x;
this.Width = x;
}
}

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

このことにより、ボタン自身がサイズの変更を 100 ~ 200 の場合のみ受け付けるようになる。トラックバーのスクロールイベントには次のようなコードを書く。

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

myCustomButton.changeSize(trackBar1.Value);

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

OOP_011

OOP_012

OOP_013

OOP_014

これにより、ボタンのサイズを変更するプログラムは、全体のコードでは changeSize メソッドを利用して「大きさ変われ」と指示を出し、それを受けたカスタムボタンオブジェクト自身が指示通り動くかどうかを判断して動くようになる。カスタムボタンは 100 ~ 200 の値しか受け付けないので、それ以外の指示を出しても無視する挙動をする。オブジェクトにふるまいを実装することで、値の指示範囲を主プログラム側で気にする必要がなくなるのだ。

さらに CustomButton クラスの記述を分離コードの Form1.Designer.cs に移動すると、プログラム全体はより見やすくなる。

OOP_015

OOP_016

さらに c# には、オーバーロードという概念があり、同じ名前のメソッドでも引数の型が異なれば重複して実装することができる。たとえばこのカスタムボタンに、サイズが 150 × 150 の決まった「mid」サイズの定義があるとして、それを次のように定義することができる。

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

public void changeSize(string x)
{
this.Height = 150;
this.Width = 150;
}

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

OOP_017

全体のコードでは、数値で大きさを変える changeSize メソッドと同じ名前でカスタムボタンに「ミッドサイズになれ」と指示を出すことができる。

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

myCustomButton.changeSize(“mid”);

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

新しくフォームに作ったボタンをクリックして「ミッドサイズ」にするコードは次の通りだ。

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

OOP_018

このようにオブジェクト指向プログラミングでは「ふるまい」をオブジェクトの側に実装し、全体のプログラムからは

180 × 180 の大きさになれ

myCustomButton.changeSize(180);

ミッドサイズの大きさになれ

myCustomButton.changeSize(“mid”);

といった指示を出すように書くことができるようになる。このことでオブジェクトのふるまいがオブジェクト自身に記述され、プログラム全体が見やすく、また合理的にコントロールできるようになる。

2018年3月8日

松本 吉生(まつもとよしお)
Microsoft MVP Data Platform

1961年京都に生まれ、神戸で幼少期を過ごす。大学で応用化学を学んだのち、理科教諭として高等学校に勤務する。教育の情報化が進む中で校内ネットワークの構築運用に従事し、兵庫県立明石高等学校で文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わる。兵庫県立西宮香風高等学校では多部制単位制の複雑な教育システムを管理する学籍管理データベースシステムをSQL ServerとInfoPath、AccessなどのOfficeソフトウエアによるOBA開発で構築・運用する。現在は兵庫県立神戸工業高等学校でC#プログラミング、IoTなどのコンピュータ教育を行う。2004年からマイクロソフトMVP(Microsoft Most Valuable Professional)を受賞し、現在14回目の連続受賞。2016年にマイクロソフト認定教育者(Microsoft Innovative Educator Experts : MIEE)を受賞し、現在3回目の連続受賞。

プログラミングのできない学者や有識者がプログラミング教育をねじ曲げる – プログラミングの「プ」の字もなかった教科「情報」迷走の轍をふまないために – プログラミング教育の体系化が緊急課題

with 2 comments

念のため、本文はあくまでも現場の一教員による私見であることを断っておく。

2003年から教科「情報」が高等学校ではじまったとき「教科『情報』はコンピュータを教える教科ではない」と声高に叫ばれ、そこで台頭してきたのは「なになに情報教育学会」といった新興のステークホルダーである。それは、長年日本のコンピュータ教育をけん引してきた情報処理学会とは異にした流れの、教育学や認知科学分野の学者や有識者によるものだった。当時の雰囲気は「情報処理は情報教育学の単なる一分野にすぎない」といった論調が主流であった。おそらくボタンの掛け違いはここに始まった。このために情報教育はコンピュータやインターネットを正面からとりあげず、普遍的なメディア論やプレゼンテーションやディベート、調べ学習、問題解決学習、共同学習、さらには道徳のような「情報モラル」に偏り、プログラミングの「プ」の字もなく始まった。

2003年にはじまり15年間の迷走を続けた教科「情報」は、ようやく小学校のプログラミング教育をきっかけに本来の目標に立ち戻ろうとしている。だが問題は、教科「情報」がはじまったときと似た現象、つまりプログラミングのできない学者や有識者がプログラミング教育のステークホルダーに居座り続けようとしていることだ。そのため、たとえば文部科学省の調査研究協力者会議「小学校段階における論理的思考力や創造性、問題解決能力等の育成とプログラミング教育に関する有識者会議」では2016年6月16日に出した「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」にわざわざ「コーディング(プログラミング言語を用いた記述方法)を覚えることがプログラミング教育の目的であるとの誤解が広がりつつあるのではないかとの指摘もある」「時代を超えて普遍的に求められる力としての『プログラミング的思考』などを育むことであり、コーディングを覚えることが目的ではない。」などと書かれている。

めまいがするほどだ。コーディングを覚えずに時代を超えて普遍的に求められる「プログラミング的思考」など身につくなどと本気で思っているのだろうか。

この現状は、おそらく、いわば「外国に行ったことのない学者や有識者が国際理解教育を作ろうとしている」くらいの状況である。

その一方で、主として小学校の現場では、先駆的な教員によって自主的にプログラミング教育の実践が始まっている。子どもたちに扱いやすい教材、わかりやすいカリキュラム、実習をしやすい環境構築を模索している。インターネットを通じた実践交流も活発に行われている。もはや緊急の課題は、初等中等教育を通じたプログラミング教育の体系化である。「プログラミング教育はプログラミングを教えるものではない」などと禅問答をしている場合ではないのだ。

小学校では流れ図に示される構造化、つまり順次構造、反復構造、条件分岐でいいとして、ブロック型プログラミングから始めることがいいだろう。簡単なマイコンボードを使った計測や制御も取り入れるべきだ。ではその次はどうか。中学校では何をするのか、高等学校では何をするのか。

まず何よりもオブジェクト指向を取り上げるべきだ。オブジェクト指向がわからなければ現代プログラミングを理解したことにならない。かく言う私もオブジェクト指向を理解するには時間がかかった。「オブ脳」という言葉があるように、オブジェクト指向は言葉で説明されて理解できるものではなく、例えれば自転車に乗れるようになるようなものだ。子どもが自転車に乗れるようになる瞬間、それは突然やってくる。なんどもなんども失敗を繰り返し、ほんの数センチでさえ動いて倒れる様子を見ていると、はたして本当に乗れる日が来るのだろうかと心配になるが、乗れるようになるのは突然である。そして一度乗れるようになれば、あたりまえのようにすいすいとこげるようになる。

オブジェクト指向を理解するにはオブジェクト指向プログラミングをしなければならない。自分でコードを書き、動かしてはじめてオブジェクト指向は理解できる。「オブジェクト指向はカプセル化、継承、ポリモーフィズム」と暗記するだけでは何の意味もない。なぜプログラミングはオブジェクト指向になったのか、オブジェクト指向の何がいいのか、どこでどうオブジェクト指向を利用すればいいのか、を理解しなければ意味がない。それには言語として C# (C Sharp) がいいと断言できる。かつて BASIC が初心者にとって学びやすい言語であったのと同じくらい C# はオブジェクト指向を学ぶ初心者にとって学びやすい。言語仕様が正確であり、JIS や ISO にも規定されている。ポインタやガーベージコレクションを意識する必要もない。書法は簡潔で美しい。Visual Studio という優れた開発環境もある。

すぐれた自転車教室にはノウハウがあり、一日やれば必ず乗れるようになるプログラムがある。それと同じように、オブジェクト指向も優れたカリキュラムがあれば誰でも理解できるようになる。中学校段階なら必ず理解できる。オブジェクト指向とともに理解しなければならないことは、イベントドリブンである。サーバーサイドプログラミングも中学校では身につけさせたい。Webサービスのインタフェースなどは中学生段階でも理解できるだろう。

コンピュータの抽象化、クラウドコンピューティングは高等学校の内容になるだろう。機械学習や AI、データ処理を通じてイベントドリブンからデータドリブンのプログラミングを学ぶ必要がある。マイコンボードをネットワークにつなぎセンサのデータを集めるIoTからデータベースを学ぶ必要もあるだろう。近い将来クラウドコンピューティングは革命的に転換しそうなので、関数型プログラミングやサーバーレスといった技術がテーマになるだろう。

数年後には小学校でプログラミングの基礎を身につけた子どもたちが中学校へ、そして高等学校へ進学してくる。必要なことはプログラミングのできる学者や有識者が情報教育をけん引し、プログラミング教育を体系化することだ。現場の教員も口を開けて待つのではなく、自己研鑽と教材研究にいますぐ取り組むべきである。

2018年1月12日

松本 吉生(まつもとよしお)
Microsoft MVP Data Platform

1961年京都に生まれ、神戸で幼少期を過ごす。大学で応用化学を学んだのち、理科教諭として高等学校に勤務する。教育の情報化が進む中で校内ネットワークの構築運用に従事し、兵庫県立明石高等学校で文部科学省の「光ファイバー網による学校ネットワーク活用方法研究開発事業」に携わる。兵庫県立西宮香風高等学校では多部制単位制の複雑な教育システムを管理する学籍管理データベースシステムをSQL ServerとInfoPath、AccessなどのOfficeソフトウエアによるOBA開発で構築・運用する。現在は兵庫県立神戸工業高等学校でC#プログラミング、IoTなどのコンピュータ教育を行う。2004年からマイクロソフトMVP(Microsoft Most Valuable Professional)を受賞し、現在14回目の連続受賞。2016年にマイクロソフト認定教育者(Microsoft Innovative Educator Experts : MIEE)を受賞し、現在3回目の連続受賞。