|1| 始めに

|1| 始めに

始めに

私がFile Makerと出会ったのは印刷会社で働いていた頃です。バージョンは4.0でした。最初はDTPに利用していたのですが、そのうちに独学でしたが納品管理や工程管理のシステムを開発するようになりました。その後、ある大学の保育士や幼稚園教諭を養成する学科で絵や工作など美術に関することを教える傍ら保育園実習や幼稚園実習のためのシステムを開発することになりました。バージョンが7.0に変わってテーブルが使えて便利になったという思いはありましたが、頭の中は5.5の考え方のままでした。気がつくとリレーションシップが複雑に重なりあい、まるで増築、増築を重ねた温泉宿のようでした。途中から時間を見つけて整理し始めましたが、整理しきれないうちに定年を迎えてしまいました。

 

アンカー・ブイやセレクタ・コネクタ、ヴァーチャルリストという言葉を知ったのは退職してからでした。忙しさにかまけていてFileMakerの勉強を怠っていたからです。
今更、遅いのですが自分なりに整理してみようと思います。我流なので間違っているのではないかと心配ですし、プロの開発者から笑われそうですがチャレンジします。

私はMacユーザーなのでMac版FileMakerを使いますが、Windows版FileMakerでも「AppleScriptを実行」や「Eventを送信」などOS固有の機能以外はほとんど共通の使い勝手です。バージョンは17を使っています。

 

実習管理システム

薬剤師、看護師、社会福祉士、教員や保育士など様々な資格で現場実習が求められます。私が大学生の頃は教育実習期間は2週間でしたが、今では4週間になりました。実習に伴う業務は教員や実習担当者にとって大きな負担になっています。この事務作業を効率化するためにどのようなシステムが必要なのでしょうか?

最近では認定こども園という保育園と幼稚園を合せたような施設ができてきて、保育士と幼稚園教諭の両方の資格が必要とされるケースがあります。そこで両方の資格を取得するための実習を考えてみます。それぞれの資格を取得するには異なる実習をする必要があります。

データベースのシステムを考えるとき、業務のワークフローを整理し、目的と到達点を明確にすることが重要だと思います。実習に伴う業務としては、受け入れ人数の打診、依頼状の発送、必要書類の送付、実習中の担当者の訪問指導などがありますが、まずは学生と実習、実習先の関係って何だろうと考えてみます。

簡単にどのような実習があるか説明します。
保育士資格に関連する実習は保育園での実習が1回、社会福祉施設での実習が1回、保育園か社会福祉施設のどちらかで1回になります。
幼稚園教諭免許に関する実習は幼稚園での実習が2回になります。

 

実習管理とは単純に考えると学生と実習先を結びつけることから始まります。一人の学生が定められた要件を満たした実習先で実習します。

学生は実体を持ち、氏名や学生番号などがあります。実習先は実体がある施設を持ち、名称や住所、電話番号などがあります。実習は学習する行為であり、実体はありませんが学校の科目名称を持っています。そして科目名称に対して実習が関連付けられます。

ここで使っている「実体」という言葉はデータベースのER図で使う「実体」とは異なり、眼に見えるものというような意味です。

 

学生の立場から考えると実習は1回だけではありません。保育園の実習では保育園で実習し、社会福祉施設の実習では社会福祉施設で実習し、幼稚園の実習では幼稚園で実習します。実習の内容が同じであれば同じ実習先のこともあります。

学生Aには複数の実習が関連付けられ、個々の実習は1つの実習先に関連付けられます。

 

実習先の立場で考えると学生は特定の実習では原則として複数の実習先で実習することはありませんが、実習先では複数の学生を受け入れることがあります。異なる実習では同じ学生を受け入れることもあります。

 

実習という観点から考えると特定の実習では異なる実習先が複数関連付けられ、個々の実習先は複数の学生に関連付けられることになります。

 

学生、実習先、実習それぞれの関連は 多:多 になっています。 多:多 のままではリレーションを作ってもうまく機能しません。 1:多 または 1:1 の関係でリレーションを作る必要があります。

 中間テーブル

学生、実習先、実習は実際にテーブルを持つことになります。それぞれにユニークなIDを持ちますが、この3つのテーブルのリレーションを有効にするための中間的なテーブルを考えます。
学生、実習先、実習からみて 1:多 の関係になるようなテーブルです。

実習生というテーブルを考えてみます。実習生IDの他に学生id、実習先id、実習idを持てるようにします。そして実習ごとに実習生のレコードを作成します。一人の学生に対して実習の数だけ作成することになります。

 

線が複雑に交差しているようですが、学生と実習生は 1:多、実習と実習生は 1:多、実習先と実習生も1:多 になっています。これで何とか関連性を有効にすることができます。

他に何か問題がないか考えてみます。
学生の中には実習中に病気になる学生もいます。1日、2日の病欠であれば実習延長ということもありますが、長期病欠となると実習中断になり、もう一度同じ内容の実習をしなければなりません。次の年度に実習することもありますが、同一年度内に実習することもあります。実習生テーブルでは同一年度内の同一実習の回数を持たせて新しいレコードを作成する必要があります。実習のテーブルでは実習のレコードを年度ごとに作成する必要が出てきます。

 

では、リレーションを作るにはそれぞれのテーブルにどのようなフィールドが必要かを考えてみます。

それぞれのテーブルにまずユニークな番号を振ってIDにします。リレーションキーとして使うために実習生のテーブルに学生id、実習id、実習先idのフィールドを作ります。
私は主キーには「ID」と大文字で、外部キーには「id」と小文字でフィールド名をつけることにしています。

 

実習管理ファイル

取り敢えず、この状態でデータベースを作ってみることにします。
「実習管理」というファイル名にします。

4個のテーブルとフィールドです。ファイルを新規作成するとデフォルトでファイル名と同じテーブルができるのでテーブル名を変更します。私はテーブル名の先頭に記号を入れるようにしています。学生テーブルにはa01_、実習生はa02、実習はb01、実習先はc01というように関係が深いと思われるテーブルには同じアルファベットを使います。フィールド名はテーブル名の記号を先頭に入れることにしています。計算式でフィールドを選択するときにわかりやすくなります。
何かしらの命名規則を持っていた方がいいと思います。

各テーブルのIDは数字タイプのシリアル番号にするのが普通ですが、私はテキストタイプのシリアル番号にすることが多いです。ただ、テキストタイプのIDはレコード件数の上限が見込める場合に限ります。学生IDは1000001、実習生IDは10000001、実習IDは10001、実習先IDは1000001を最初の値にしています。テキストタイプにするのは改行を入れた複数のキーを作ることがあるためですが、邪道かもしれません。普通に数字タイプの連番にした方がいいでしょう。
UUIDでもいいのかもしれませんが、4個のIDを組み合わせてQRコードを作る予定があるので、UUIDは文字数が多く向かないかもしれません。

 

実習管理ファイル

前の図のようにリレーションを作ると学生と実習生は 1:多、実習と実習生は 1:多、実習先と実習生も 1:多 になっていますが、ここではまだリレーションを作りません。キャンセルして変更を破棄するか、リレーションを削除してください。このファイルでリレーションを作成するのは、その必要が生じた時だけになります。

インターフェース用ファイル。

習管理ファイルのほかにもう一つファイルを作ります。ファイ名を「実習管理_UI」にします。

FileMakerでリレーションを作るとゴチャゴチャになりやすいので計算などで使うリレーションとインタフェースで使うリレーションをできる限り分けたいと思ったからです。正しい考え方がどうかよくわかりませんが、以前は何を目的にしたリレーションなのかわからなくなることがよくありました。

テーブルは取り敢えず1個でテーブル名は「ui01_実習管理」です。このテーブルで作るフィールドはすべてグローバルフィールドにします。そしてこのテーブルにできる限り多くのレイアウトを配置します。レイアウトはほとんどインターフェースのために存在するからです。「ui01_g_テキスト」というテキストタイプのグローバルフィールドを作り、レコードを1個作っておきます。グローバルフィールドの名前に記号の後に「_g_」と入れるのも私の命名規則の一つです。

 

実習管理_UIファイル

実習管理_UIから外部データソースとして実習管理を選択します。
|ファイル > 管理 > 外部データソース|と選択していきます。

 

実習管理_UIファイル

リレーションシップグラフを開き、左下の「テーブルを追加」ボタンをクリックして「現在のファイル」ではなく「実習管理」を選択し、実習管理にあるテーブルを1個づつ選択します。

 

実習管理_UIファイル

リレーションシップグラフに配置されたテーブルのレイアウトを実習管理_UI上に作成できるようになり、レコード作成やフィールドへの入力が可能になります。実習管理_UIで入力されたデータは実習管理のデータベースで管理されることになります。

次回はこの実習管理_UIファイルを使って実習生レコードを作成したり、実習生と実習先を結びつけるインターフェースを作ってみたいと思います。


上空を飛ぶ2機の旅客機。地上からの撮影なのでかなり接近しているように見えますが、実際の距離はわかりません。このあと後ろの旅客機が前の旅客機を追い越し違う方角へ飛んで行きました。
Canon EOS KissX7 EF-S55-250mm ISO800 1/640 F9.0 -0.7EV P
Raw SILKYPIX 2018/11/16
Kodaira City