HOME / LEARN / LESSON 03

Aras InnovatorのItemType・Property・Relationshipを、最初に正しく設計する

Aras InnovatorのItemTypeを1つ作ると、SQL Serverにテーブルが1つできます。ItemTypeの設計はそのままデータベース設計です。Property・DataTypeの選び方、Relationshipとforeign Propertyの使い分け、Reverse Relationshipの位置づけを、開発者向けに整理します。

2026-09-21読了 約8分Aras InnovatorItemTypeRelationshipPLM開発
動画は準備中です。公開までは、この記事だけで完結するように書いています。

Aras Innovatorでは、ItemTypeを1つ作ると、その裏でSQL Serverのテーブルが1つできます。つまりItemTypeの設計は、そのままデータベース設計です。あとから直すのが最も高くつくのがここで、作り直しになった案件の原因をさかのぼると、たいてい最初の数時間の判断に戻ってきます。

この記事は、当社がAras開発メンバーを育てるときの3回目の内容から、設計に関わる部分をまとめたものです。Aras公式のマニュアルを読む前に、あるいは読みながら、頭の地図として使ってください。

1. Arasの世界では、すべてがItemです

最初に覚えることは1つだけです。ItemTypeが設計図、Itemがその実体。そしてItemType自身もまたItemです(「ItemType」というItemTypeのインスタンス)。画面からItemTypeを作る操作と、コードからItemTypeを作る操作が同じAPIの上にあるのは、このためです。

.NETの開発者であれば、次の対応で入ると早いです。

Aras.NETでいうと
ItemTypeclass の定義
Propertyfield / property
Itemそのクラスのインスタンス(=1行のレコード)
AMLクエリとDTOを兼ねたXML
Methodそのクラスに紐づくメソッド(C# または JavaScript)

この対応が頭に入っていると、あとで出てくるAMLが「見たことのない独自言語」ではなく、「SELECTとINSERTとオブジェクトを1つのXMLで表したもの」に見えてきます。

2. Property と DataType — あとで効いてくる3つの判断

stringの長さは、最初に余裕を持たせる

string型には長さの指定が必要です。ここを詰めすぎると、あとで必ず当たります。日本語の品名や備考は、想定の倍を見ておいてください。運用が始まってから長さを縮める変更は、既存データの移行を伴います。広げるほうはまだしも、縮めるほうは事故になります。

item型は、外部キーそのもの

item型のPropertyは、別のItemTypeへの参照です。値として入るのは参照先のIDで、画面には参照先のkeyed_nameが表示されます。1件だけを指すならitem型、複数件を持つならRelationship。この線引きが最初の分かれ道です。

foreign型を使えば、Relationshipを張らずに他のItemの値が読める

ここが、実務でいちばん効きます。item型のPropertyでつながっているなら、foreign(Foreign Property)を定義することで、参照先のPropertyをそのまま自分のPropertyのように扱えます。一覧にもフォームにも出せますし、検索条件にも使えます。

一覧画面が重い、という相談を受けて中を見ると、foreignで足りるところをすべてRelationshipにしていた、という例が本当に多いです。

予約語に気をつける

Arasには、すべてのItemTypeが最初から持っているシステムPropertyがあります。次の名前は自分で作らないでください。

id config_id generation is_current is_released state keyed_name major_rev locked_by_id created_on created_by_id modified_on modified_by_id permission_id

特に state は、LifeCycleを使うときにArasが管理します。自分で同名のPropertyを作ると、あとでLifeCycleを入れる段階で詰みます。

3. Relationship — 「関係」もまたItemTypeです

RelationshipTypeは、source_idrelated_id を持つ特別なItemTypeです。ここで大事なのは、関係そのものがPropertyを持てるということです。数量、順番、有効期間、備考。これらは関係側に置きます。

related_id を持たない形(null relationship)も作れます。この場合、そのRelationshipType自身が子データの入れ物になります。親に完全に従属し、単独では存在しない明細行は、この形が合います。

判断の順番は、こう整理すると迷いません。

やりたいこと使うもの
1件だけを指したいitem型のProperty
参照先の値を表示・検索したいだけforeign型のProperty
複数件をぶら下げたいRelationship
関係そのものに属性を持たせたいRelationship(件数によらず)
親なしでは存在しない明細related_idなしのRelationship

4. Reverse Relationship — 逆から見たいときだけ

通常、親から子はたどれますが、子から「自分を参照している親の一覧」は見えません。Reverse Relationshipは、その逆方向を定義するものです。related側のフォームに、自分を指しているsourceの一覧を出せるようになります。

実際に使うのは、TreeGridViewやQuery Definitionで階層を組み立てるときです。そこは次の記事で扱います。

5. 現場で実際に起きた失敗

都合の悪い話も書いておきます。以下は、当社が実際にやった、あるいは引き継いだ案件で見た失敗です。

  • 何でもRelationshipにして、一覧が重くなった。 表示したいだけの項目は、foreign Propertyで足りました。作り直しではなく、Property追加とビュー修正で解決しています。
  • string(32)で切ったら、日本語の品名が入らなかった。 英数字の想定のまま定義していました。運用開始後だったため、移行作業が発生しています。
  • データが入ってからバージョン管理を有効にした。 既存データの世代が揃わず、あとから整合を取る作業が必要になりました。バージョン管理の要否は、最初に決めてください。
  • Permissionを最後に設計した。 ItemTypeとRelationshipをすべて作り終えてから権限を考え始め、結果としてItemTypeの分割からやり直しになりました。権限の単位は、データ構造の設計と同時に決めるものです。

共通しているのは、どれもコードの問題ではないということです。設計の失敗は、あとからコードでは取り戻せません。

FAQ

この回で、よく聞かれること。

ItemTypeを作ると、データベースには何ができますか。

SQL Server上に、そのItemTypeに対応するテーブルが1つ作られます。Propertyを1つ追加すると列が1つ増えます。つまりItemTypeの設計は、そのままテーブル設計です。運用が始まってからの変更は、既存データの移行を伴います。

RelationshipとItem型のPropertyは、どう使い分けますか。

1件だけを指すならItem型のProperty、複数件を持つならRelationshipです。加えて、関係そのものに属性(数量、順番、有効期間など)を持たせたい場合は、件数にかかわらずRelationshipにします。

他のItemの値を一覧に出したいだけですが、Relationshipは必要ですか。

多くの場合は不要です。Item型のPropertyでつながっているなら、foreign(Foreign Property)を使うことで、Relationshipを張らずに参照先の値を表示・検索できます。一覧が重い原因の多くは、ここでRelationshipを増やしすぎていることです。

あとからPropertyの型や長さを変更できますか。

技術的には変更できますが、既存データがあると失敗します。特にstringの長さを縮める場合と、DataTypeそのものを変える場合は、データ移行を前提にしてください。最初に余裕を持った長さで定義しておくほうが、結果的に安く済みます。

Aras Innovatorの開発に、PLMの業務知識は必要ですか。

設計を決める立場であれば必要です。実装だけを担当する場合は、最初はなくても入れます。当社では、ItemTypeとRelationshipの回のあとにPLMの基礎を置いています。仕組みを先に触ってからのほうが、業務側の話が入りやすいためです。

Arasの案件で、人が足りていないのであれば。

今動いている案件の状況をお聞かせいただければ、どの工程から入れるか、何名でどのくらいかかるかを1〜2週間でお出しします。ここまで費用はいただきません。

エスケージージャパン株式会社 東京都渋谷区代々木1-32-11 Kビル7F 080-6653-3473 sales@skg.com.vn