用語

アプリ開発で使用する用語について説明します。

マップ

Inkpodの編集するものがマップであり、そのメモリ上でのモデルが、マップ・モデルです。ファイルに保存したものが、拡張子zmpのマップファイルになります。

アプリからは、PMapModelインターフェース経由でアクセスします。

マップ上に配置されるものをマップ・オブジェクトと呼びます。

マップ・オブジェクトは、PMapObjectオブジェクトとして表されます。マップ上に配置されている全マップ・オブジェクトは、PMapModelオブジェクトのobjectListプロパティから、PMapObjectの配列として読むことができます。

マップのモデルを構成する要素の関係図を以下に示します。


jp.carabiner.inkpod.pi.model.PMapModel

マップ・オブジェクト

マップ・オブジェクトはマップの構成要素です。(オブジェクト指向プログラミング上の「オブジェクト」と紛らわしくない場合は、単にオブジェクトと呼ぶこともあります)

マップ・オブジェクトには、「ノード・オブジェクト」、「関連・オブジェクト」、「グループ化・オブジェクト」の3種類があります。

「ノード・オブジェクト」は、「関連・オブジェクト」によって、結ばれるオブジェクトです。外観は後述するシェイプによって変わりますが、もっとも単純な形は矩形です。

「関連・オブジェクト」は、「ノード・オブジェクト」同士を結びつける、一般的に線の形をしたマップ・オブジェクトです。「関連・オブジェクト」オブジェクトは、startObject と endObjectというプロパティを持ち、それぞれ始点側、終点側のノード・オブジェクトを意味します。

「グループ化・オブジェクト」は、他のマップ・オブジェクトをグループ化、つまり、ひとかたまりにして扱うオブジェクトです。グループ化・オブジェクトもグループ化できます。

シェイプ

シェイプは、マップ・オブジェクトの形や外観を表現するものです。マップ・オブジェクトを、マップ上にどのように描画するかは、シェイプによって決まります。

シェイプには、いくつかの種類があり、それぞれ異なる外観を持ちます。

アプリからは、PObjectShape インタフェースで取り扱います。また、シェイプの種類毎に専用のインタフェースがあります。

シェイプは、大まか「ノード・オブジェクト」用のシェイプである「ノード・シェイプ」、「関連・オブジェクト」用のシェイプである「関連・シェイプ」の2つに分かれます。

ノード・シェイプは、矩形、角丸矩形、楕円、菱形など、関連・シェイプには、直線、かぎ型線、曲線といった様々な形のものがありますが、それぞれが独自のインタフェースを持ちます。

多くのプロパティは共通していますが独自のプロパティもあり、例えば、角丸矩形シェイプは、角の半径のプロパティを持っています。


ノードとエッジ

ノードとエッジは、マップ・オブジェクトの接続関係のネットワーク構造に着目し、それを有向グラフとして見たときに、ノード・オブジェクト、関連・オブジェクトに対応する概念です。

マップ・オブジェクトのデータ構造は、関連オブジェクトをたどって、隣のノード・オブジェクトを探す目的に向いていません。PRelationObjectインタフェースからは、始点と終点のPNodeObject オブジェクトを得られますが、PNodeObjectからは、そこに接続している関連オブジェクト(PRelationObject) を得ることができないためです。

マップをネットワーク構造のデータとして取り扱いたい場合は、PNodeObjectオブジェクトのnodeプロパティで得られる、PNetworkNodeオブジェクトを使います。PNetworkNodeはノード・オブジェクトの、「ノード」としての表現です。

PNetworkNodeオブジェクトからは、それに接続しているエッジ(PNetworkEdge)や、もう一方のノード(PNetworkNodeオブジェクト)を得ることができます。


ノードオブジェクト、関連オブジェクトに設定できる、そのノードや関連オブジェクトの意味を表現する文字列です。PNodeObject, PRelationObjectのtypeプロパティで読み書きできます。

バリデータが使用するもので、どんな型が使用できるかも、バリデータによって決まります。バリデータを有効にしていないマップでは、型は使用できません。

フレーム

Inkpodのウインドウです。PInkpodFrameインタフェースでアクセスします。

フレームは複数開くことができます。

グローバル変数の inkpod から、inkpod.frames で、PInkpodFrameオブジェクトの配列が得られます。

タブ

1つのフレームで同時に複数のマップを編集できます。それら1つ1つに対応するのがタブです。

PInkpodFrameオブジェクトのmodelsプロパティから、タブに対応するマップ・モデルをPMapModelの配列として得ることができます。

メニュー

メニューには、フレーム上部(MacOSの場合はスクリーン上部)にあるメインメニューバーと、コンテキストメニューがあります。単にメニューと言った場合は、フレーム上部のメインメニューバーを指します。

コンテキストメニューには、オブジェクトを右クリックするとポップアップするメニューと、背景を右クリックするとポップアップするメニューがあります。

それぞれ、以下のプロパティと対応します。

アクション

Inkpodに登録する、アプリの機能です。メニューやコンテキストメニューの項目と結びつけることができます。

状態を持つことができ、例えば、無効状態にすると結びついたメニュー項目が無効になります。