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

InfoPath & SQL Server !

Archive for the ‘開発’ Category

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

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

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 オブジェクトエクスプローラーを使ってテーブルやビューなどを作成する。