製造業や設計分野における製品データの標準化規格であるSTEP(ISO 10303)において、データの操作性を担保するために定義されているのがSDAI(Standard Data Access Interface)です。正式にはISO 10303-22として規定されており、アプリケーションがデータモデルにアクセスするための抽象的なAPI(アプリケーション・プログラミング・インターフェース)を提供します。
SDAIの核心は、EXPRESSというデータモデリング言語で定義されたモデルに基づき、特定のプログラミング言語に依存せずにアプリケーションデータを操作できる仕組みを構築することにあります。
Key Facts
- 定義: ISO 10303-22で規定される、STEPデータの操作のための抽象的なAPI。
- 基盤: EXPRESSデータモデルに基づいたデータの読み書きや検証を行う。
- 言語対応: C++ (Part 23)、C (Part 24)、Java (Part 27) の言語バインディングが存在する。
- 目的: 本来は実装間のソフトウェア移植性を高めるために設計された。
- 適合性: ISO 10303-35により、実装がSDAI規格に準拠しているかを証明するテスト手法が定義されている。
SDAIの構造と主要コンポーネント
SDAIは、データの管理を行う「管理オブジェクト」と、それらを操作する「オペレーション」の2つの側面から構成されています。
管理オブジェクト
SDAI環境を制御し、データを保持するための論理的な枠組みです。以下の要素で構成されます。
- SDAIディクショナリスキーマ: EXPRESSスキーマ自体を記述するためのメタレベルのスキーマです。
- SDAIセッション: 単一のユーザーやスレッドにおける環境全体を制御し、必要に応じてトランザクション管理を行います。
- SDAIリポジトリ: データベースなどの物理的なコンテナであり、SDAIモデルやスキーマインスタンスを格納します。
- SDAIモデル: リポジトリ内の細分化された単位で、特定のEXPRESSスキーマに従ったエンティティインスタンスを保持します。
- スキーマインスタンス: 1つまたは複数のSDAIモデルを論理的にグループ化したもので、特定のEXPRESSスキーマに対する有効なデータ集団を形成します。
実行されるオペレーション
これらの管理オブジェクトを通じて、以下のような操作が可能になります。
- 管理オブジェクト自体の制御。
- アプリケーションデータ(エンティティインスタンス、属性値、集約およびそのメンバー)の作成、削除、変更。
- EXPRESSで規定された制約やルールに基づいた、アプリケーションデータの妥当性検証。
言語バインディングと現状の利用形態
SDAIは言語に依存しない抽象的な定義ですが、実際に開発で利用するために特定の言語へ適応させた「言語バインディング」が提供されています。具体的には、C++(Part 23)、C(Part 24)、およびインターネット/イントラネット拡張を含むJava(Part 27)が定義されています。なお、かつて検討されていたFORTRANやCORBAのIDL(インターフェース定義言語)向けのバインディング開発は中止されました。
当初の設計意図は、異なる実装間でのソフトウェアの移植性を実現することにありましたが、商用実装の少なさとAPIの詳細な仕様差により、この目標は事実上放棄されました。現在では、厳格なISO 10303-22の機能に完全準拠していなくても、STEPをサポートするAPI全般を指して「SDAI」と呼称されるケースが多く見られます。
| 規格番号 | 内容 | 役割 |
|---|---|---|
| ISO 10303-22 | SDAI本体 | 抽象的なデータアクセスAPIの定義 |
| ISO 10303-23 | C++バインディング | C++言語への実装定義 |
| ISO 10303-24 | Cバインディング | C言語への実装定義 |
| ISO 10303-27 | Javaバインディング | Java言語への実装定義(ネットワーク拡張含む) |
| ISO 10303-35 | 抽象テストメソッド | SDAI実装の適合性証明 |
Frequently Asked Questions
SDAIとは具体的に何を目的とした規格ですか?
EXPRESSで定義されたデータモデルに基づき、アプリケーションがSTEPデータにアクセスし、操作するための共通のインターフェース(API)を提供することを目的としています。
どのプログラミング言語でSDAIを利用できますか?
標準的な言語バインディングとして、C++、C、およびJavaが提供されています。
SDAIリポジトリとSDAIモデルの違いは何ですか?
リポジトリはデータベースのような物理的な格納容器であり、モデルはその内部で特定のスキーマに従ってデータを保持する論理的な分割単位を指します。
SDAIの適合性はどのように確認しますか?
ISO 10303-35で定義されている抽象テストメソッドを用いることで、その実装がSDAI規格に準拠しているかを正式に証明することが可能です。
現在でもSDAIの移植性は重視されていますか?
当初は実装間の移植性を目指していましたが、商用実装間の差異が大きかったため、現在はその目的はほぼ放棄されています。現在は広義の意味でSTEPサポートAPIを指して使われることが多い状況です。