以下のマニフェストは、Extension Builder(2014/12/04)で新規プロジェクトを作成したときに作られるものです。これをもとに変更が必要な箇所を中心に解説します。

 

<manifest.xml>

<?xml version="1.0" encoding="UTF-8"?>
<ExtensionManifest Version="5.0" ExtensionBundleId="com.example.helloworld" ExtensionBundleVersion="1.0.0" ExtensionBundleName="Hello World" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ExtensionList>
    <Extension Id="com.example.helloworld" Version="1.0" />
</ExtensionList>
<ExecutionEnvironment>
    <HostList>
      <!-- Photoshop -->
      <Host Name="PHXS" Version="[15.0,15.9]" />
      <Host Name="PHSP" Version="[15.0,15.9]" />
    </HostList>
    <LocaleList>
      <Locale Code="All" />
    </LocaleList>
    <RequiredRuntimeList>
      <RequiredRuntime Name="CSXS" Version="5.0" />
    </RequiredRuntimeList>
  </ExecutionEnvironment>
  <DispatchInfoList>
    <Extension Id="com.example.helloworld">
      <DispatchInfo>
        <Resources>
          <MainPath>./index.html</MainPath>
          <ScriptPath>./jsx/hostscript.jsx</ScriptPath>
        </Resources>
        <Lifecycle>
          <AutoVisible>true</AutoVisible>
        </Lifecycle>
        <UI>
          <Type>Panel</Type>
          <Menu>Hello World</Menu>
          <Geometry>
            <Size>
             <Height>300</Height>
              <Width>300</Width>
            </Size>
          </Geometry>
          <Icons>
            <Icon Type="Normal">./icons/iconNormal.png</Icon>
            <Icon Type="RollOver">./icons/iconRollover.png</Icon>
            <Icon Type="Disabled">./icons/iconDisabled.png</Icon>
            <Icon Type="DarkNormal">./icons/iconDarkNormal.png</Icon>
            <Icon Type="DarkRollOver">./icons/iconDarkRollover.png</Icon>
          </Icons>
        </UI>
      </DispatchInfo>
    </Extension>
  </DispatchInfoList>
</ExtensionManifest>

 

<ExtensionManifest>

<ExtensionManifest Version="5.0" ExtensionBundleId="com.example.helloworld" ExtensionBundleVersion="1.0.0" ExtensionBundleName="Hello World" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

要素Versionには、動作するCEPランタイムの最下位バージョンを記述します(参考:データ資料)。これは後に出てくる<RequiredRuntimeList>のVersionと同じ値にします。

要素ExtensionBundleIdとExtensionBundleVersionは、Extensionをバンドル化(グループ化)するための設定値です。ただし、これらがトップノードにあるCEPの仕様上、作成するExtensionが単独のものであっても設定する必要があります。

単独のものを作成する場合、ExtensionBundleIdには後に出てくる<DispatchInfoList>内<Extension>のIdと同じものを記述しておきます。ExtensionBundleVersionにはこのExtensionのバージョンを記述すればよいでしょう。

要素ExtensionBundleNameにはバンドル名を記述しますが、バンドル化されていなければ名称はなんでも構いません。後の<Menu>に合わせて、このExtensionの名称を記述するのが無難です。

 

<ExtensionList>

<ExtensionList>
  <Extension Id="com.example.helloworld" Version="1.0" />
</ExtensionList>

Extensionをバンドル化する場合はここに羅列します。単独のものを作成する場合は、前述のExtensionBundleIdと同様、後に出てくる<DispatchInfoList>内<Extension>のIdと同じものを記述しておきます。

 

<HostList>

<HostList>
  <!-- Photoshop -->
  <Host Name="PHXS" Version="[15.0,15.9]" />
  <Host Name="PHSP" Version="[15.0,15.9]" />
  <!-- Illustrator -->
  <!-- <Host Name="ILST" Version="[18.0,18.9]" />-->
</HostList>

対応するCCアプリケーションを<Host>タグに記述します。複数のアプリケーションに対応させる場合、それらを羅列します。このマニフェストではPhotoshopのみに対応させています。なお、Photoshopにはかつて「Extended」というラインナップがあったため、特にその違いを意識するExtensionでなければ、2つのアプリケーションコードを同じバージョンで併記しておくのが無難です。

要素Nameにはあらかじめ決められた4文字のアプリケーションコードを記述します(参考:データ資料)。

要素Versionには対応する最下位バージョンと最上位バージョンを、配列式にカンマ区切りで記述します。

 

<LocaleList>

<LocaleList>
<Locale Code="All" />
</LocaleList>

対応する国・言語版を指定します。このサンプルでは制限なしである「All」が指定されていますが、読み込み可能な言語版を制限することも可能です。例えば日本語版のみに制限する場合は<Locale Code="ja_JP" />とします。複数の言語に対応する場合はそれらを羅列します(参照:Adobe 国・言語コード)。

 

<RequiredRuntimeList>

<RequiredRuntimeList>
<RequiredRuntime Name="CSXS" Version="5.0" />
</RequiredRuntimeList>

要素Nameには「CSXS」、要素Versionには動作するCEPランタイムの最下位バージョンを記述します(参考:データ資料)。

 

<Extension>

<Extension Id="com.example.helloworld">

<DispatchInfoList>タグ内にある<Extension>タグのIdには、このExtension固有のIdをドメイン形式で記述します。「com」+「製作者名」+「エクステンション名」という構成一般的です。

 

<MainPath>

<MainPath>./index.html</MainPath>

パネルのUIとなるHTMLファイルの場所を記述します。テンプレートではマニフェストから見た相対パスで「./index.html」となっていますが、ファイル名も含めて任意に指定することができます。

 

<ScriptPath>

<ScriptPath>./jsx/hostscript.jsx</ScriptPath>

実際にCCアプリケーションのオブジェクトを操作する、ExtendScriptが書かれたファイルの場所を記述します。これも任意のファイル名と場所を指定することができます。

 

<Type>

<Type>Panel</Type>

パネルウィンドウにする場合は「Panel」と記述します。パネル以外のウィンドウも作成することが出来るようですが、まだ情報が少なく、うまくいかないことがあるようです。

 

<Menu>

<Menu>Hello World</Menu>

このExtensionがメニューに表示されるときの名称を記述します。

 

<Geometry>

<Size>
  <Height>300</Height> <Width>300</Width>
</Size>
<!--
<MinSize>
<Height>550</Height> <Width>400</Width>
</MinSize>
<MaxSize>
<Height>550</Height> <Width>400</Width>
</MaxSize>
-->

パネルの大きさを記述します。<Height>と<Width>がデフォルトの大きさになります。オプションとして、<MinSize>と<MaxSize>で最小・最大の大きさを指定することもできます。

 

<Icons>

<Icon Type="Normal">./icons/iconNormal.png</Icon>
<Icon Type="RollOver">./icons/iconRollover.png</Icon>
<Icon Type="Disabled">./icons/iconDisabled.png</Icon>
<Icon Type="DarkNormal">./icons/iconDarkNormal.png</Icon>
<Icon Type="DarkRollOver">./icons/iconDarkRollover.png</Icon>

パネルをツールバーへ接続したときに表示されるアイコン画像の場所を記述します。UIのテーマとアプリケーションの状況に対応した4種類を用意します。要素Typeと状況の対応は以下の通りです。

  • Normal ライト系テーマ/デフォルトの状態
  • RollOver ライト系テーマ/カーソルが重なっているとき
  • DarkNormal ダーク系テーマ/デフォルトの状態
  • DarkRollOver ダーク系テーマ/カーソルが重なっているとき

 ……と、CEP SDKのドキュメントには書いてあるのですが、実際のUIではRollOverが機能していません(純正パネルも)。なので、NormalとRollOverは同じものを指定しておけばよいでしょう。

また、このサンプルでは「Disabled」というTypeが記述されていますが、アプリケーション側がそういう状況を作り出すことはないので不要です(SDKのドキュメントにこのTypeの記述はありません)。よって、ライト系 テーマとダーク系テーマに対応する2種類のアイコンを用意すれば事足ります。

ツールバーのアイコン表示領域は23px×23pxです。ただし、ツールバーはハイライトされたときにボタン化されるので、そのときのエンボス部分を考慮し、実際に絵柄を収める領域は縦横19~21px程度に収めるのが無難です。

一見すると左側に余裕があるので「横長のスペースなのでは?」と思ってしまいますが、表示領域はあくまで正方形です。

なお、高解像度UIにも対応するために、アイコンは大きな画像で用意しておくのがよいとされています。大きな画像は適宜縮小して表示されるので、画面解像度に合わせて複数用意する必要はありません。整数倍である46px×46pxで作っておけばよいでしょう。

 

Joomla templates by a4joomla