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

InfoPath & SQL Server !

Posts Tagged ‘校務システム

校務支援システムの更新 – 02 – 既存システムからエクスポートしたデータを加工してはいけない – そのままインポートできるように SQL Server のテーブル設計をしよう

leave a comment »

sql_server_management_studio_001_mid_640_480

学校の校務支援システムの運用には様々な課題があるが、とりわけ大きい課題がシステム移行時に発生する。既存システムから生徒の氏名住所などの基本情報や、履修情報、成績情報を新システムに移行しなければならないが、その作業と責任は、そのときの学校の担当教員に負わせられることとなる。既存システムの業者も、新システムの業者も、一定の技術情報は提供しても作業に関してはどちらも助けてはくれない。

学校として学籍管理のデータを扱う場合、管理の手法はシステムによって異なる。生徒の氏名や住所、生年月日などの基本データに大きな違いはないだろうが、教科科目の情報、成績管理の手法はシステムによって違いが大きいと考えられる。既存のシステムからエクスポートしたデータを新システムでそのまま使えるとは考えにくい。

そこでデータ処理をする必要がおこるが、業者がデータ移行ツールなどを用意することはない。そこでデータ移行においてデータ処理をする必要が生じるが、これをエクセルなどの表計算ソフトで行うと重大な間違いがおこる危険がある。また一度で完全に移行できることも考えにくいので、ある程度の試行錯誤が必要となる。そのたびに表計算ソフトでデータ加工をしていては手間がかかりすぎ、また事故がおこる危険が大きい。

そこで SQL Server にデータを読み込んで処理することが最も正しい解決策だ。できれば既存システムから SQL クエリによってデータを読み出したいところだが、それができなければ何らかの形でデータをエクスポートすることになるだろう。多くのシステムでエクセルや CSV の形式でデータを取り出すことができるようになっているはずだ。

sql_server_management_studio_006_mid_640

このとき、既存システムで使われるフィールドと新システムで使われるフィールドに違いがあったとき、これを表計算あるいは CSV のデータ上で加工してはいけない。もし新システムで使わないデータフィールドがあったとき、心情的にはデータを切り捨ててインポートしたい欲求は理解できる。余計なフィールド設定をせずに済ませたいだろうからだ。

またフィールド名を修正したい欲求にもかられる。しかしエクスポートしたデータを手作業で加工してはいけない。既存システムからエクスポートしたデータは、そのまま SQL Server にインポートできるようにテーブルを作っておくべきだ。

sql_server_management_studio_003_mid_640_480

データの移行は一回で終わることは、まず、ない。既存システムのデータを新システムにインポートするには、何度かの試行錯誤が必要となるはずだ。またすべてのデータを一度に移行しようとして間違いがあれば修正も困難になる。小さなデータを試験的に移行しながらチェックを繰り返し、うまく移行できることを確かめてから全部のデータを移行するだろう。

このとき、エクスポートしたデータを手作業で加工する工程を挟むと、そのたびに手作業が必要となる。手作業には誤りがつきまとい、とりわけ同じ作業を何度も繰り返していると誤る危険性が高くなる。

新システムで使わないフィールドの設定はせずに済ませたい、おかしなフィールド名は修正したい気持ちになることは理解できるが、ここで手間を惜しまず、エクスポートしたデータは無修正でそのままインポートできるように SQL Server のフィールド設計をしよう。

2019年1月2日

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

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回目の連続受賞。

広告

校務支援システムの更新 – 01 – データ移行は現場教員の責任となる – データ移行作業は SQL Server を使おう

leave a comment »

高等学校の成績処理などにデータベースを使うようになったのは、単位制や総合学科など講座の選択肢が多い学校ができてからだ。基本的にクラス単位で授業を行う普通科高校では、出欠や成績の管理にデータベースを使う必要はなかった。クラス単位で紙ベースの出席簿や成績伝票での処理で十分だったからだ。しかし生徒が多くの講座に分かれて受講する単位制や総合学科の高校では、紙ベースの処理が不可能だ。

筆者も他部制単位制の兵庫県立西宮香風高校に勤務したとき、SQL Server を使った校務支援システムを作り運用した。多くの単位制や総合学科の学校で業者と契約して作られたシステムを運用していたが、新しいタイプの他部制単位制高校に合うシステムはなかったからだ。

近年、単位制や総合学科ではない普通科の高校でも校務支援システムを導入する動きがある。それは普通科の学校でも多様な選択肢を用意した選択講座のカリキュラムを拡大することも背景にある。契約や運用の面からクラウドベースの統一システムを都道府県単位で一括契約するケースも増えてきた。

このような校務支援システムの運用にはいろいろな課題があるが、システム更新のときに大きな課題がある。別システムへの更新時に、過去のデータを移行する作業が必要となるのだ。このデータ移行の作業は現場の教員にまかされる。既存システムの業者も、新しいシステムの業者も、どちらも何もしない。責任もとらない。

データの移行は、そのときの担当教員にとって大きな責任を負わせられるものとなる。在校生の成績データを一つ残らず完全に新システムに移行しなければならない。この作業をエクセルなどでやっていては大きな間違いがおきる危険性がある。データ移行の作業は SQL Server を使うことが最も良い。

sql_server_management_studio_001_mid_640_480

既存システムのテーブルにあわせて SQL Serever にテーブルを作る。既存システムからエクセル形式や CSV 形式でエクスポートしたデータを一括で SQL Server に読み込む。例えば高等学校の校務支援システムでは中学校情報を管理するが、中学校コードは既存システムと新システムで異なることがあるだろう。このとき、まず既存システムの中学校コードと新システムで利用するコードを一括で SQL Server に読み込んでおく。

sql_server_management_studio_002_mid_640_480

sql_server_management_studio_003_mid_640_480

sql_server_management_studio_004_mid_640_480

そして既存システムのコードと新システムのコードを関連付けたビューを作り、これを他の情報と関連させる。

sql_server_management_studio_005_mid_640_480

SQL Server で一元的にデータ処理を行うことで、間違いのないコード変換処理をすることができる。SQL Server で正しい変換テーブルとビューを作っておけば、既存システムからのデータ移行作業を手間なく、そして誤りなく何度もテストし確かめることができる。

2019年1月1日

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

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回目の連続受賞。

神戸SQL Server Users GroupのSQL Serverセミナー(初級1)を実施した

leave a comment »

校務の情報化にはデータベースの知識と技術が必要なことから、SQL Serverを勉強するコミュニティを作った。とりわけ今年度から指導要録のデータベース化が一歩前進することから、各学校の担当者はデータベース化に取り組まざるを得ないはずだ。

神戸SQL Server Users Group
http://kobesqlserverusersgroup.wordpress.com/

昨日、2013年11月9日(土)には神戸SQL Server Users Groupと特定非営利活動法人 情報技術相互支援協会の共催で、SQL Serverセミナー(初級1)を開催した。

このSQL Serverセミナーでは、SQL Serverの初心者がSQL Serverの基礎を学び、データベースを使ったシステムを作り運用することができるようにすることを目標としている。1回のトレーニングを90分とし、初級講座を1、2と分けて企画した。初級1ではSQL Management Studioの使い方、テーブル作成、データベースダイアグラム、ビューとリレーションシップ、データの型、簡単なSQL文、を内容とした。初級2ではストアドプロシージャ、トリガ、ユーザー定義関数、データベースダイアグラム、SQLの応用、を計画している。

初級セミナーは1と2でおおよそ基本を網羅するように考えたが、やはり90分では深まりに欠ける。あらかじめ用意した初級1のプリントをひととおり網羅したが、やりたいと思っていた直積やPIVOTまで説明できなかったし、SQL文もごく基本的なものに留まった。次回は初級1.5的なセミナーとし、フォローアップを考えている。

今後もSQL Serverセミナーは神戸三宮で定期的に開催する予定だ。日程は決まり次第、神戸SQL Server Users Groupのblog http://kobesqlserverusersgroup.wordpress.com/ に公開するので、興味がある人はチェックしてほしい。

正しく作られたシステムでも、運用を誤り破綻する恐れをゼロにできない

leave a comment »

いささか大上段に構えたタイトルにしたが、実際におこったことは些細なことである。しかし、今日はあらためてシステムを作ることの難しさを考えさせられた。

今日のテーマはシステム構築における純粋な技術の話ではなく、人の思考や行動といったヒューマンな側面についてである。しかしシステム開発は技術的に完全であればよいものではなく、ヒューマンな要素を十分に考慮しなければならない。また狭い意味でのコンピュータシステムだけを考えるのではなく、データ入力の帳票のあり方、作業の方法なども見直さなければならないケースもある。

私は勤務校でSQL Serverをデータベースにし、InfoPathとAccessを組み合わせた、いわゆる「OBA開発」の手法でクライアントサーバー型の「校務システム」を構築し、運用している。このシステムの基本は、単位制高校である本校の講座編成、時間割、履修登録、出欠、考査点、成績、修得単位など、教務処理を行うものである。それに加えて、通知表などを家庭に発送するための住所管理、職員の勤務時間を集計する従事時間集計、学校評価のアンケート集計など校内の情報管理を一元的に行うものへ発展させている。「OBA開発」の利点は、運用しながらシステムを改良することがやりやすいところだ。

このシステムに今年度から生徒の保健情報も扱うことにした。身長、体重などの健康記録に加えて、内科検診など検査結果も処理できなければならない。これらのデータをどのようにデータベース化するかについては、養護教諭つまり保健の先生と相談しながら設計し、実際のデータに対応できるものにした。このあたりの詳細は、また別にblogにまとめるつもりだ。

さて前置きが長くなったが、このシステムに「結核検診結果」を入力することになった。結核検診について、SQL Serverのテーブル構造は次のようになっている。

<SQL Serverのテーブル構造>
学籍番号 char(7)
年度 char(2)
結核検診 char(2)
結核検診詳細 varchar(50)

「結核検診」フィールドはコード管理し、00が「未受診」、01が「異常なし」、02が「異常あり」とし、所見があったときは「結核検診詳細」フィールドに自由記述することとした。

これにデータを入力するためのInfoPathフォームは次のようなものである。

脊柱側弯_001_edit
<Fig.1 結核検診結果を入力するInfoPathフォーム>

SQL Serverで「結核検診」フィールドのデフォルト値を00にしておき、ボタンで01または02に変更できるようにする。「結核検診詳細」テキストボックスは、「結核検診」フィールドが02でなければグレーアウトし、読み取り専用になるようにしておく。これはInfoPathのテキストボックスのプロパティで「条件付き書式」で設定する。結核検診の結果が「異常あり」でなければ、詳細は入力できないようにしておくのだ。入力間違いを少なくする仕掛けだ。

さて、入力作業をしているところに、ふと、立ち寄って後ろから見ていると、なにかおかしいことに気づいた。次のような入力画面が見えたのだ。

脊柱側弯_002_edit
<Fig.2 目にとまったおかしな入力画面>

結核検診の結果を入力しているのに、詳細が「脊柱側湾」となっている。入力担当は若い男性教員だ。どうやら養護教諭に頼まれてかわりに入力しているらしい。

「脊柱側湾」って、結核と関係ないんじゃない」「はあ。」「それは内科検診の項目だから、入力フォームを間違っていると思うよ」「はあ。でも結核検診の結果に書いてあるんです。養護教諭の先生がとりあえずそこに入力しておいて、って言ったので」

そこで入力のために使っている検診結果の表を見ると、確かに次のように書かれている。氏名はもちろん仮名である。

脊柱側弯_003_edit
<Fig.3 データ入力に使った結核検診の結果表>

「結核検診」の記録のはずなのに、結核と関係ない「脊柱側湾」の所見が書かれている。これはおかしいのではないか。そこで養護教諭に事情を問いただした。すると、こういうことである。

結核検診はレントゲンなので、結核の疑いのあるなしだけでなく、脊柱側湾つまり脊柱が曲がっている症状もわかることが多いのだ。そこで慣習として、いわばサービスみたいなものとして、脊柱側湾の症状がレントゲンからわかれば、検査機関が所見に書いてくれるということなのだ。

養護教諭の立場からすると、少しでも多くの症状が早く発見できればよいのだろうが、データ入力上は間違いの原因になる。この生徒は、脊柱側湾であるが、結核の異常はないのである。しかし、上のような入力では、結核検診で異常が発見されたことに集計されてしまう。

何が問題なのか。まず入力に使う結果用紙の様式が問題である。脊柱側湾を結核検診で所見に書くなら、所見の欄を2つに分け、まず結核検診の結果を書き、それとは別にその他の所見を書くべきである。検査結果の用紙を見直したい。

もし検査用紙の見直しができないならば、データ入力において、やはりそのデータに関する、ある程度の知識を持っていること、データがどのように集計されるべきなのかという意味を理解していることが必要である。書式がデータ入力に即していなかったり、記入の仕方があいまいであっても、きちんと判断できる人間が入力するなら問題ない。

今回のケースは些細なこと、また結核検診という、まず全員が異常なしとなるだろう記録であったので、このまま間違い入力をしてしまっても、後で間違いが発見されただろう。しかしこのようなケースが他の例でも起こりうることであり、いかに正しく設計されたシステムであっても、間違ったデータ入力が見過ごされて信頼性のないデータで汚染され、全体として機能しないシステムに陥る危険を垣間見た気がする。