コンテキストとエンティティ - 用語の説明

コンテキストとは

コンテキストとは、場面や状況に即した見せ方で情報を表現するための形式です。

コンテキストは、主に項目と行で構成されています。項目とは、コンテキストが持つ情報の格納単位で、項目名とデータ型を持ちます。データベースにおけるテーブルのフィールドに相当します。行は、コンテキストが持つ実際の情報の件数で、それぞれの行には項目数分の値を持てます。データベースにおけるレコードに相当します。

例えば「机」という物が持つ情報を使って概念を説明します。消費者にとっては、自分が使う物についての大きさや色、価格などの情報に興味があり、製造者にとっては、製造するすべての物についての寸法や素材、製造原価などの情報に興味があります。さらに、販売者にとっては自分が販売する物についての卸価格や販売価格、利益率、納期などに興味があります。このように、同じ物でも、立場や役割によって興味がある情報の項目や、その対象の件数は異なります。コンテキサーの業務アプリでは、コンテキストを定義することで、担当者の立場や役割に即した情報の件数や項目を見せ方として選べます。

エンティティとは

エンティティとは、コンテキストが扱う情報の実体です。 コンテキストは実体(データ)を持たず、コンテキストに対応するエンティティが実体を持っています。コンテキストは、エンティティが持つ要素を役割に即して取捨選択して表現します。

エンティティは、主に要素と属性で構成されています。要素は、実体としての意味を持つ最小単位です。属性は、一つの要素が持つ値の区分けです。一つの要素には複数の属性を持たせられます。

コンテキストは必ず1つのエンティティとだけに対応させる必要があります。なお、1つのエンティティは、複数のコンテキストと対応付けられます。また、コンテキサーでは、エンティティを直接見たり変更したりできず、必ずコンテキストを通じて操作する必要があります。

概念としてエンティティを説明すると、エンティティは記憶装置(メモリ)へ格納するのに都合の良い形式と位置づけられます。コンテキストは立場や役割によって変化しますが、エンティティはコンテキストとは無関係に、計算機で扱いやすく分類しやすい形式で保存するためのものとして考えます。


コンテキストには、用途に応じてパネル用・入出力用・作業用の3種類があります。

パネルコンテキスト

担当者が利用する画面や帳票など表示を伴ったコンテキストをパネルコンテキストと呼びます。

パネルコンテキストには、入力フォームと表形式のどちらかまたは両方を表示でき、業務内容に応じて設計者が画面デザインを選べます。入力フォームは、テキストボックスやチェックボックスなど、GUI部品が配置された画面です。入力フォームには、一度に一行分の情報を表示できます。表形式は、横が項目、縦が行で構成されたグリッド形式の画面です。表形式には、一画面に複数の行の情報を表示させられます。

パネルコンテキストを単に「パネル」と表記することもあります。

入出力コンテキスト

入出力コンテキストは、CSVファイルやデータベースなど外部のデータソース(入出力先)の固有の事情に対応したコンテキストです。コンテキサーでは、ほぼすべてのデータを、入出力コンテキストを通じて、読み込んだり書き込んだりします。

例えば、入出力コンテキストの入出力先がCSVファイルの場合、入出力コンテキストの項目と行が、それぞれフィールドとレコードに対応して読み書きされます。

入出力コンテキストは、設計者のみが扱い、担当者からは見ることができません。

作業用コンテキスト

作業用コンテキストは、業務ロジック固有の内部手続きのために使うコンテキストです。業務ロジックで使用するデータだけをまとめたり、業務ロジックによって得られたデータを一時的に保存したりする役割で使用します。

作業用コンテキストも、設計者のみが扱い、担当者からは見ることができません。

コンテキスト連携

コンテキスト連携を定義すると、コンテキストとコンテキストが決められた関係でデータを操作できます。エンティティ連結は、エンティティ間の不変的な関係を定義するのに対して、コンテキスト連携では、特定のタイミングで決められた関係でデータを連携元から連携先へやりとりできます。コンテキスト連携には、転記・限定・入力補助の3つがあります。

例えば、ある伝票をもとに、別の伝票の内容を更新したり、消し込んだりする業務は、コンテキスト連携の「転記」で表現できます。コンテキスト連携での操作によって、コンテキスト上で行が追加されたり、修正または削除されたりします。

また、コンテキスト連携は特定のタイミングでのみ操作されるため、エンティティ連結とは違い、連携元のコンテキストで値が修正されても、連携先のコンテキストの値には影響がありません。例えば、価格テーブルをもとに転記によって受注伝票を追加した状況で、その後に価格テーブルの値を修正しても、転記先の受注伝票の単価は変わりません。

コンテキストの親子関係とは

コンテキスト連携の限定では、参照先のコンテキストが選択した行によって、限定対象のコンテキストでフィルタされる行が変化します。このような限定の関係を「コンテキストの親子関係」と呼びます。

例えば、伝票と伝票明細の2つコンテキストがあるとします。伝票コンテキストで選択した行に対応する伝票明細コンテキストの行だけを表示させる場合は「伝票」が親コンテキストで「伝票明細」が子コンテキストになります。限定を定義するときは、行が限定される限定対象に子コンテキストを指定し、参照先に親コンテキストを指定します。

兄弟コンテキストとは

ある1つのエンティティが、2つ以上のコンテキストと対応している場合、これらのコンテキストを兄弟コンテキストと呼びます。兄弟コンテキストは、共に同じエンティティを実体としています。兄弟コンテキストの主キーが等しい行は、エンティティの同じ要素を指しています。そのため、兄弟コンテキストの片方で行の値を変更すると、同じ要素に対応する、他方のコンテキストの行にも変更が反映されます。同じように、兄弟コンテキストの片方で行を削除すると、他方のコンテキストからもその行が削除されます。このように兄弟コンテキストでは、エンティティの主キーによって結びつくお互いの行のデータが影響し合います。

エンティティ連結

エンティティ連結を定義すると、エンティティの特定の属性を他のエンティティに依存させられます。

例えば、作業者や機械、作業といった正規化されたエンティティを定義した時、作業エンティティでは、作業日時といった固有の属性に加えて、作業者や使用機械など他の機械エンティティや作業者エンティティの要素から参照したり属性を定義する場合があります。

エンティティ連結を定義することで、このようなエンティティ間の不変的な結びつきを、連結元の属性と連結先の主キーによって関係付けられます。エンティティ連結すると、他のエンティティの属性をあたかも自分の属性として扱えます。

パラメータコンテキスト

パラメータコンテキストは、主に、計算式や限定、転記などで参照する定数値を保持するための特殊なコンテキストです。

パラメータコンテキストの特徴

  • パラメータコンテキストでは1行だけ表示できます
  • すべての項目の値が未入力の場合は未選択と扱われます
  • 1件以上要素を持つエンティティでは最初の要素だけが表示されます。フィルタや限定が指定されている場合には、合致する最初の要素が表示されます。

パラメータコンテキストに限定を定義することで状況に応じてパラメータを変化させる使い方もできます。

2021年10月2日 更新

ページの先頭へ