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

InfoPath & SQL Server !

Archive for the ‘T-SQL’ Category

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

leave a comment »

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

学校の先生のための 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 5 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 オブジェクトエクスプローラーで生成したテーブルを確認する。

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

Microsoft Visual Studio 2015 と SQL Server データベースファイルで開発する「目からうろこ」の C# プログラミングによる成績処理システム(4) – Microsoft Visual Studio 2015 によるテーブル作成

leave a comment »

1.テーブルの作成

VisualStudio_成績処理_040_mid_640

前回までに Visual Studio の新しいプロジェクトを開始し、SQL Server データベースファイルを作成した。今回は SQL Server データベースファイルにテーブルを作成する。

Visual Studio の「SQL Server オブジェクトエクスプローラー」で SQL Server データベースファイルを展開すると「テーブル」が表示されるが、データベースファイルを作成した直後にはユーザーテーブルがなく、「システムテーブル」というフォルダだけが表示されている。これは SQL Server データベースファイル自体が利用するテーブルで、通常は中身を見ることがない。ユーザーが利用するテーブルを作成するには、「テーブル」フォルダを右クリックし「新しいテーブルの追加」を行う。

VisualStudio_成績処理_041_mid_640

Visual Studio の「SQL Server オブジェクトエクスプローラー」で「テーブル」フォルダを右クリックし「新しいテーブルの追加」を行うと、このようにテーブルのデザインビューが表示される。画面の左上にはデフォルトで「名前」、「データ型」、「Nullを許容」、「規定」の要素がある。これらを設定しながらテーブルの構造を決めていく。

2.生徒基本情報を保存するテーブルを作成する

まず生徒の氏名など基本情報を保存するテーブルを作成する。成績処理に必要な項目は何かを考えながらフィールドを決めていく。ここでは次のようなフィールドを作成することにした。

・seitoID 生徒番号 文字列型(6) 主キー
・sei 姓 ユニコード可変長文字列型(50)
・mei 名 ユニコード可変長文字列型(50)
・nen 学年 整数型
・class クラス名 1バイト可変長文字列型(3)
・num 出席番号 整数型
・sex 性別 ユニコード文字型
・birthday 生年月日 日付型
・nyunen 入学年度 整数型
・state 在籍状態 整数型

3.フィールド定義の考え方

ひとりの生徒に対して一意の「生徒番号」を与え、生徒個人にひとつの要素をフィールドとして用意する。姓、名、などだ。性別、生年月日、入学年度なども生徒ごとに決まった不変の値をとる。

学年、クラス、出席番号は、年度ごとに値が変わるフィールドになる。これは別テーブルにして年度ごとのデータを集積しなければならないが、生徒データにも現在の状態を記録することが望ましい。学年やクラスでデータを選択することが多いからだ。同様に、場合によっては姓、名も在学中に変わるケースがある。これも別テーブルで管理しなければならないが、現在の姓、名は生徒基本上でわかるようにしておきたい。これは厳密には「正規化」の概念に反することになる。データベース関係の書籍にはテーブル構造を考えるときに「正規化」をしなさい、と書かれているが、硬直的に正規化すると実際のデータ運用上クエリが複雑になるなど問題がおこる。このあたりは、ある程度データベース運用の経験を積むとわかってくる。「正規化」の考え方を理解した上で、実際にどこまで正規化をするかは、どのような処理をしたいのかを念頭におきながら設計していく。

4.データの型の考え方

次にデータの「型」をどうするかを考える。数値なのか文字なのか、コード化するかしないかは難しい選択だ。データベースは表計算ソフトなどでの集計と違い、それぞれのフィールドはデータの「型」を決めなけらばならない。

合計や平均を計算する必要があるデータは数値とする。たとえば出席日数や欠席時間数、成績といった項目だ。だが数字に見えても文字列型として処理することが望ましい場合もある。ゼロで始まるような数字、たとえば電話番号は数値型としては最初のゼロを記録することができなくなるため文字列型にする。学籍番号もゼロで始まる番号が与えられる可能性があれば、文字列型にする。

コード化するかどうかも選択が難しい。たとえば性別をコード化し、男は「1」、女は「2」とすることは考えがちだが、性別は多くの帳票で表示されるため、性別をコード化すると多くのクエリでテーブルの追加または表示のためのコードが必要となってしまう。漢字ならデータは2バイト、コードなら1バイトとデータ量は異なるが、「男」、「女」とデータを作っておくことが運用上望ましい。正確に分類集計したいとき、コード化しなければデータの統一性が失われる危険がある場合はコード化する。この例では「在籍状態」をコード化することにした。在籍状態は、通常を「1」、休学を「2」、転出を「3」、退学を「4」、卒業を「5」のように決める。コード化することにより、成績処理などでは在籍状態=1、在籍生徒数をカウントするときは在籍状態>=2、卒業生を集計するときは在籍状態<=5のようにして選択できる。ここを日本語で管理すると、「転出」を「転学」と記録してしまうなどデータの統一性が失われてしまう。

5.テーブルの作成

VisualStudio_成績処理_042_mid_640

テーブルのデザインビューで、既定で最初に「Id」という名前、データ型が「int」のフィールドがあり、そこには鍵のアイコンがついている。これは「主キー」である印だ。これを、フィールド名を「seitoID」に、データ型を「char(6)」に変更する。そして続くフィールドも設定していく。

VisualStudio_成績処理_043_mid_640

フィールドの名前、データ型などを決めたら、最後に「Nullを許容」のチェックを全部外そう。

VisualStudio_成績処理_044_mid_640

「Null」を許容にしておくと、データを登録しなくてもよいフィールドとなり、処理のときに例外が発生する可能性がある。もし何らかの事情で、一時的に「Null」データのまま処理したいケースが出てくる場合はチェックしたままにするが、後のことを考えると「Null」は許容しない方がよいだろう。

6.テーブル生成の SQL 文

フィールドを決めていくと、デザインビューの下の「T-SQL」のところに、CREATE TABLE ではじまるテーブルを定義する SQL 文ができあがっていくのがわかる。データベースにテーブルを作成する操作はこの SQL 文によってされるが、このようなテーブルの構造や構成を定義するために用いられる SQL 文を DDL(Data Definition Language)といい、データを操作する SQL 文である DML(Data Manipulation Language)、データへのアクセス権限などを制御する SQL 文であるDCL(Data Control Language)と区別される。

VisualStudio_成績処理_045_mid_640

SQL 文では CREATE TABLE [dbo].[Table] となっていることがわかる。これは「Table」という名前のテーブルを生成する、という意味だ。テーブル名は「Seito」としたいので、SQL 文の最初の行を CREATE TABLE [dbo].[Seito] のように変更する。

VisualStudio_成績処理_046_mid_640

SQL 文の最初の行を CREATE TABLE [dbo].[Seito] に変更した。

VisualStudio_成績処理_047_mid_640

7.SQL 文の保存

作った SQL 文は実行する前に選択して右クリックで「コピー」すると保存することができる。後でテーブル構造を見直したいときなど、SQL 文をコピーしておくと作業のやりなおしがしやすい。

VisualStudio_成績処理_047_mid_640

コピーした SQL 文はメモ帳などに貼り付けて一括管理しておくといい。

VisualStudio_成績処理_048_mid_640

8.データベースの更新でテーブルを作成する

VisualStudio_成績処理_049_mid_640

テーブル構造が決定したら、テーブルのデザインビューの上部にある上向きの矢印「更新」でデータベースの更新をする。

VisualStudio_成績処理_050_mid_640

「データベース更新のプレビュー」ウィンドウが表示されるので「データベースの更新」ボタンをクリックして更新する。これでデータベースに SQL 文が実行され、テーブルが生成する。このとき「スクリプトの生成」ボタンをクリックすると、テーブル生成の DDL 文、CREATE TABLE 文をファイルに保存することもできる。

VisualStudio_成績処理_052_mid_640

データベースの更新が正常に実行できたら、テーブルのデザインビューの下にある「データツール操作」ウィンドウに更新の手順が示される。

VisualStudio_成績処理_053_mid_640

テーブルができたら「SQL Server オブジェクトエクスプローラー」で確認する。ビューを最新の状態に更新すると、「テーブル」フォルダの配下に「dbo.Seito」テーブルができており、テーブル名を展開するとフィールドが列挙される。

次回はこのテーブルに生徒基本情報を保存しよう。

Microsoft Visual Studio 2015 と SQL Server データベースファイルで開発する「目からうろこ」の C# プログラミングによる成績処理システム(3) – Microsoft Visual Studio 2015 による SQL Server オブジェクトの管理とテーブルの表示

leave a comment »

1.SQL Server オブジェクトの管理

VisualStudio_成績処理_035_mid_640

前回は Visual Studio で新しいプロジェクトを開始し、ローカルコンピュータに Microsoft SQL Server データベースファイルを作成してデータ接続を構成した。

作成した Microsoft SQL Server データベースファイルには、実はまだテーブルやビューなど何も存在しない。テーブルやビューなどの作成も Visual Studio で開発することができる。Visual Studio で接続した SQL Server を見るには「SQL Server オブジェクトエクスプローラー」を使う。これはデフォルトで Visual Studio の左側のタブに表示されていないので、メニューの「表示」から「SQL Server オブジェクトエクスプローラー」をクリックして表示する。

VisualStudio_成績処理_036_mid_640

SQL Server オブジェクトエクスプローラーを表示すると左のペインに表示されるが、うっかり閉じるとまたメニューから開かなければならない。このSQL Server オブジェクトエクスプローラーは頻繁に使うので、閉じても左のタブからワンクリックで開くことができるようにしたい。

VisualStudio_成績処理_037_mid_640

SQL Server オブジェクトエクスプローラーをタブからワンクリックで開くことができるようにするには、「SQL Server オブジェクトエクスプローラー」のメニューバーで下向きの三角アイコンをクリックし「自動的に隠す」オプションをクリックしておくといい。

VisualStudio_成績処理_038_mid_640

SQL Server オブジェクトエクスプローラーを「自動的に隠す」オプションにし、左側のタブに固定した。

2.テーブルの表示

VisualStudio_成績処理_039_mid_640

ふたたびSQL Server オブジェクトエクスプローラーを表示すると「SQL Server」の項目がある。左の三角アイコンをクリックすると要素が展開される。「テーブル」まで展開すると、そこには「システムテーブル」のフォルダだけがあり、そのほかのテーブルはない。「システムテーブル」は SQL Server データベースファイル自体の設定に関するデータが保存されており、開くことは通常ない。

次回から、この SQL Server オブジェクトエクスプローラーを使ってテーブルやビューなどを作成する。

Microsoft Visual Studio 2015 と SQL Server データベースファイルで開発する「目からうろこ」の C# プログラミングによる成績処理システム(2) – Visual Studio 2015 による新しいプロジェクトの開始と SQL Server データベースファイルとデータソースの作成

leave a comment »

1.Visual Studio 2015 による新しいプロジェクトの開始

VisualStudio_成績処理_002_mid_640

Visual Studio 2015 を起動する。

VisualStudio_成績処理_003_N_mid_640

起動したら画面の左「開始」から「新しいプロジェクト」をクリックして新しいプロジェクトを開始する。

VisualStudio_成績処理_004_mid_640

プロジェクトで使用する言語やテンプレートを選ぶ。ここでは言語を「C#」、テンプレートを「Windows フォームアプリケーション」とする。必要があれば「名前」でプロジェクトファイルの名前をわかりやすいものに変え、保存する「場所」を変更するなどする。

VisualStudio_成績処理_006_mid_640

2.データベース SQL Server データベースファイルとデータソースの作成

テンプレートが構成され、Windows フォームアプリケーションの雛形が表示される。Windows フォームを作る前に、まずデータベースを作成しよう。そのために Visual Studio の左端に並んでいるタブから「データソース」をクリックする。

VisualStudio_成績処理_007_mid_640

データソースとは、プログラムがデータベースに接続する経路のようなものだ。プロジェクトにはまだデータベースがないのでデータソースもない。「プロジェクトには現在関連データソースがありません。」といったメッセージが示されている。そこで「新しいデータソースの追加」をクリックする。

VisualStudio_成績処理_008_mid_640

Microsoft Visual Studio 2015 は SQL Server 以外の様々なデータベースに接続できるウィザードを持っているので、いくつか選択肢が示される。このあたりの選択肢は用語と概念が理解できていないと何を選んでよいか迷うが、ここで使いたいデータベースは SQL Server データベースファイルとして次のように決定していく。まず「データソースの種類の選択」では「データベース」を選択する。

VisualStudio_成績処理_010_mid_640

「データベースモデルの選択」では選択肢はひとつしかなく「データセット」を選択する。

VisualStudio_成績処理_012_mid_640

次の「データ接続の選択」では、もし以前に同じ Visual Studio でデータベースアプリケーションを開発したことがあるなら、「アプリケーションがデータベースへの接続に使用するデータ接続」のところに以前設定したデータ接続が選択されているかもしれない。ここでは初めてデータ接続を作成するので、選択する項目がない。いずれにせよ新しい SQL Server データベースファイルを作るので、「新しい接続」のボタンをクリックする。

VisualStudio_成績処理_014_mid_640

次の「データソースの選択」では、接続したいデータベースを選ぶことができる。ネットワーク上に SQL Server があれば「Microsoft SQL Server」を選択することになる。また Microsoft Access データベースファイルを選択することもできることがわかる。ここでは新しくアプリケーション内に「Microsoft SQL Server データベースファイル」を作成して利用したいので、「Microsoft SQL Server データベースファイル」を選択する。そうすると自動的に「データプロバイダ」も設定される。

VisualStudio_成績処理_017_mid_640

次の「接続の追加」画面では、データベースファイル名を記述することになるが、まだファイルを生成していないので「参照」ボタンをクリックする。「参照」ボタンをクリックすることで、新規の Microsoft SQL Server データベースファイルを生成することができる。

VisualStudio_成績処理_019_mid_640

このように「SQL Server データベースファイルの選択」ウィンドウが表示されるので、データベースファイルを保存したいフォルダを選び、ファイル名を決める。ファイルがなくても「開く」のボタンをクリックすればよい。

VisualStudio_成績処理_021_mid_640

「接続の追加」画面に戻り、データベースファイル名が書かれている。だがこの時点ではまだデータベースファイルは生成していない。

VisualStudio_成績処理_023_mid_640

「OK」をクリックして先にすすむと、このようにデータベースファイルを作成しますか、というメッセージが表示される。「はい」をクリックするとデータベースファイルが生成する。

VisualStudio_成績処理_025_mid_640

少し前の「データ接続の選択」画面が表示され、データ接続が設定されたことがわかる。このとき、下段の「+」をクリックして「アプリケーションに保存する接続文字列」を展開すると、アプリケーション上でどのような構成がされているかがわかる。この設定情報は知らなくてもアプリケーションを開発することができるが、操作を誤ってトラブルになったときや、この先アプリケーションの工夫をするときに役に立つので一度見ておくといい。

VisualStudio_成績処理_027_mid_640

「アプリケーションに保存する接続文字列」を展開すると、Data Source としてデータベースファイル名や接続時のセキュリティ、タイムアウトなどが記述されている。

VisualStudio_成績処理_028_mid_640

次の画面では「選択された接続は、現在のプロジェクトにはないローカルデータファイルを使用します。プロジェクトにファイルをコピーして接続を変更しますか?」と問われる。また「データファイルをプロジェクトにコピーする場合、アプリケーション実行時に、プロジェクトの出力ディレクトリにコピーされます。この動作の制御に関する情報については、F1を押してください。」といった記述もある。

なにやらものものしい説明になっており「はい」とするのか「いいえ」とするのか戸惑う。この挙動については、初めての人には理解できないだろう。これは説明が悪いのではなく、プロジェクトの開発と完成品の展開についての概念があってはじめて理解できる記述だ。

「現在のプロジェクトにはないローカルデータファイルを使用します」というのは、Visual Studio のプロジェクトが保存されるフォルダーではないところに SQL Server データベースファイルを作ったことを指摘されている。そして「プロジェクトにファイルをコピーして接続を変更しますか?」というのは、先に指定した SQL Server データベースファイルのフォルダやファイル名のものを使わず、それを Visual Studio のプロジェクトフォルダにコピーして開発を続けますか、と聞いている。もしここで「はい」をクリックすると、先に指定した SQL Server データベースファイルのフォルダやファイル名のものは使われず、Visual Studio のプロジェクトフォルダにコピーされたものを使って開発がすすめられることになる。

もしプログラムを開発したあと、どこか別のパソコンに展開し、そこで最初から運用を始めるならそれでいい。しかし今からやりたい開発は、開発しながらデータも用意していき、運用もそのまま開発に引き続いて行う予定である。そのため、ここでは先に指定した SQL Server データベースファイルのフォルダやファイル名のものをそのまま使いたいので「いいえ」をクリックする。

VisualStudio_成績処理_030_mid_640

ここでデータソース作成ウィザードは最終段階で、接続文字列をアプリケーション構成ファイルに保存する。

VisualStudio_成績処理_032_mid_640

データソース構成ウィザードは、データベースオブジェクトの選択に戻る。ここでデータソースを構成したのに「データセット内に指定するデータベースオブジェクト」が何もないが、データベースオブジェクトとはテーブルやビューなどの要素のことであり、ここではデータベースファイルを作っただけで中身を構成していないので何も表示されていない。「データセット名」は自分が指定した SQL Server データベースファイルの名前を含んで自動的に決められる。このまま「完了」をクリックしてウィザードを終了する。

VisualStudio_成績処理_034_mid_640

Visual Studio の画面に戻った。すると左の「データソース」タブに「mySQLSVDBFDataSet」という名前のデータセットができていることがわかる。これで SQL Server データベースファイルとデータソースの作成が完了した。

Microsoft Visual Studio 2015 と SQL Server データベースファイルで開発する「目からうろこ」の C# プログラミングによる成績処理システム(1) – 成績処理システムを開発する背景とシステムの概要

with 2 comments

1.成績処理システムを開発する背景

私は30年の教員経験と、そのうちで学校のコンピュータシステムを15年間担当してきた経験から、学校の成績処理システムは教員自身が作り運用することが最善だという持論を持っている。なぜならコンピュータの管理やシステム開発の技術は教員が学んで身につけることができるが、学校の成績処理の方法は学校業務を経験しなければわからないからである。学校が成績処理システムを業者に発注して開発させることがあるが、コンピュータシステムを知らない教員と学校業務を知らないシステムエンジニアが十分な仕様書を作らずに開発に入ると間違いなく使えないシステムができあがる。さらに 15年前には、システム開発を教員がすることに無理があったが、今は優秀な開発ツールがあり、わずかな技術習得と短い時間でデータベースアプリケーションを作ることができる時代になっている。

コンピュータシステムに限界はない。人間が想像し得るシステムはどんなものでも作ることができる。しかしそれは、いつでもどこでも誰にでもあっという間にできるものではない。複雑なシステムを作るにはそれなりの時間と手間、熟考された設計が必要だ。作り始めてから不具合がわかることや、経験を積んでからより良い手法に気づくことがある。学校の教務規定が変わることもあるし、成績処理のやり方が変わることもある。教員自らがシステムを作る「内製」は、どんな変化にも対応できる利点がある。これらのことから、成績処理システムを構築する場合には、最初から多くの機能を作りこむのではなく、時間をかけずに必要最小限の機能から作ることがよい。

私は昨年の春、12年勤務した大規模で複雑な多部制単位制高校から、規模の小さな夜間定時制の工業高校に異動になり、教務部長を務めている。以前の勤務校では Microsoft SQL Server と Microsoft Office InfoPath や Microsoft Office Access などを組み合わせたいわゆる「 OBA 開発」によるクライアントサーバー型のシステムを作って運用したが、多くの全日制普通高校とは多くの面で違いがあった。現任校では成績処理のコンピュータ化がなされていないため、これを機会に簡単な成績処理システムを作ることにし、その作成過程を紹介することにする。現任校は学年制であり今から作成過程を紹介するシステムは多くの学校の参考になるだろう。

2.Microsoft Visual Studio 2015

Visual Studio は 1997 年に発表され改良を重ねてきた開発効率のたいへん良い開発ツールで、基本的な使い方を学ぶだけで簡単なアプリケーションを作ることができる。各出版社から「はじめて作る Visual Studio ・・・」といったタイトルの書籍がたくさん出版され、初心者でもそれらを読みながら簡単なゲームのようなプログラムを作ることができる。だが 10 年ほど前、Visual Studio 2005 の頃にはデータベースを利用するプログラミングをしようと思うと途端に敷居が高くなり、開発は難しかった。しかし Visual Studio は 2010 、2012 、2013 、2015 とバージョンアップを続ける中で、着実にデータベースアプリケーションの作成を改善してきており、2015 では SQL Server に接続するデータベースアプリケーションの開発は驚くほど簡単になり、データベースアプリケーション開発ツールとしての基本的機能はほぼ完成をみたといえる。

3.SQL Server データベースファイルとは

SQL Server データベースファイルは Microsoft SQL Server のデータベースの実体で、拡張子が .mdf のデータベースファイルと .ldf のログファイルで構成される。このデータベースはファイルであり、SQL Server のような DBMS に管理されないデータベースファイルだが、SQL Server と同じテーブルやビューを持ち、トリガや関数などを SQL Server と同じ技術で開発できる。ストアドプロシージャも利用できる。SQL Server データベースファイルは必要があれば既存の SQL Server にアタッチすることで管理下におくことができ、デタッチで切り離すことができる。この SQL Server データベースファイルは Microsoft Visual Studio 2015 による C# アプリケーション開発において、シームレスに管理でき、アプリケーションに組み込むことができるため、アプリケーションの組み込みデータベースとして利用しやすい。

4.システムの概要

これから作るシステムは、学校全体で使うマルチユーザーのクライアントサーバー型ではなく、あくまでも教務部長としての私が成績会議の資料を作るために効率化することを当面の目的とする。

(1)生徒名簿やクラスごとの講座情報と成績入力できるデータをあらかじめ用意しておく。
(2)期末考査の後に各授業担当者から出された成績伝票から教務部長が出欠と評価を入力する。
(3)成績会議に応じたデータを抽出して成績会議資料が作成できる。

これらの処理がコンピュータでできれば、期末考査の後に成績伝票が集まると、次の日にでも成績会議を開くことができるようになる。また成績データを集約すれば、帳票さえデザインすれば通知表やクラスごとの生成期一覧表も作成できるようになるだろう。さらにクライアントサーバー型にすれば、そもそも成績伝票を作成する時点で各先生方に成績入力をシステム上で行ってもらうことにできる。そういった展開を視野に入れながら、当面はスタンドアロンのパソコン上で動く Windows Forms アプリケーションを開発する。