OfficeLSTools – Officeアドイン開発 [専用メニューの定義]

専用タブの定義、専用ボタンの設定ができました。
OfficeLSToolsでは、ページスライドボタンをクリックすると登録されたスライドのサムネイル画像が表示されるのですがOfficeアドインでは、MENUプルダウンに画像を表示させることができないようです。

それでOfficeアドインでは、プルダウンにコマンドボタンを表示させるだけにして、サムネイルによる挿入スライドイメージを表示させないようにするか、ページスライドのボタンクリックで作業ウィンドウを表示し、作業ウィンドウ内に登録されているスライドのサムネイルを表示させる方法のどちらかになります。作業ウィンドウの利用は他の機能でも実装することになると思われますので、MENUプルダウンはプルダウンにアイコンと文字列で挿入スライド名をラベル表示する方法にしたいと思います。

Control要素のxsi:type属性にMenuと指定します。そしてControl要素の子要素にプルダウン全体をまとめるItems要素と個々のコマンドを示す。Item要素を定義します。以下のようなソースコードとなります。

<Control xsi:type=”Menu” id=”Contoso.TaskpaneMenu1″>
 <Label resid=”Contoso.TaskpaneButton3.Label” />
 <Supertip>
  <Title resid=”Contoso.TaskpaneButton3.Label” />
  <Description resid=”Contoso.TaskpaneButton.Tooltip” />
 </Supertip>
 <Icon>
  <bt:Image size=”16″ resid=”Contoso.normal_16x16″ />
  <bt:Image size=”32″ resid=”Contoso.normal_32x32″ />
  <bt:Image size=”80″ resid=”Contoso.normal_80x80″ />
 </Icon>
 <Items>
  <Item id=”Contoso.TaskpaneMenu1Item1″>
   <Label resid=”Contoso.TaskpaneMenu1Item1.Label” />
   <Supertip>
    <Title resid=”Contoso.TaskpaneMenu1Item1.Label” />
    <Description resid=”Contoso.TaskpaneButton.Tooltip” />
   </Supertip>
   <Icon>
    <bt:Image size=”16″ resid=”Contoso.tpicon_16x16″ />
    <bt:Image size=”32″ resid=”Contoso.tpicon_32x32″ />
    <bt:Image size=”80″ resid=”Contoso.tpicon_80x80″ />
   </Icon>
   <Action xsi:type=”ExecuteFunction”>
    <FunctionName>writeText</FunctionName>
   </Action>
  </Item>
  <Item id=”Contoso.TaskpaneMenu1Item2″>
   <Label resid=”Contoso.TaskpaneMenu1Item2.Label” />
   <Supertip>
    <Title resid=”Contoso.TaskpaneMenu1Item2.Label” />
    <Description resid=”Contoso.TaskpaneButton.Tooltip” />
   </Supertip>
   <Icon>
    <bt:Image size=”16″ resid=”Contoso.tpicon_80x80″ />
    <bt:Image size=”32″ resid=”Contoso.tpicon_80x80″ />
    <bt:Image size=”80″ resid=”Contoso.tpicon_80x80″ />
   </Icon>
   <Action xsi:type=”ExecuteFunction”>
    <FunctionName>writeText</FunctionName>
   </Action>
  </Item>
 </Items>
</Control>

これで、こんなイメージのメニューを定義できました。

OfficeLSTools – Officeアドイン開発 [専用ボタンの定義]

前回は専用タブの定義を行いましたので、今回は専用ボタンの定義を行いたいと思います。

ボタンの追加ですね。
OfficeLSToolsにあるスライド挿入の表紙スライド、章スライド、ページスライドのボタンを配置してみたいと思います。
ページスライドのボタンはプルダウンなので、プルダウン表示については追って確認してみたいと思います。

タブが設定できましたので、まずタブ内にグループを設定します。
今回はOfficeLSToolsでいうところの「スライドを挿入」のグループを設定します。

CustomTab要素の下にGroup要素を指定しLabel要素を定義すれば良いようです。

<CustomTab id=”OfficeLSTools”>
 <Group id=”Contoso.Group1″>
  <Label resid=”Contoso.Group1Label” />

設定する文字列はResources要素側で対応するresidとして用意しておけばOKです。

<bt:String id=”Contoso.Group1Label” DefaultValue=”スライドを挿入” />

これでグループが設定できました。次にグループ内にボタンを配置します。
ボタンのアイコンにはPNG画像を利用できるようです。
16、32、80のサイズを用意しておくことが必須となっているようです。
ボタン表示には
上記で作成したGroup要素の子要素としてLabel要素の次にControl要素を定義します。

<Control xsi:type=”Button” id=”Contoso.TaskpaneButton1″>
 <Label resid=”Contoso.TaskpaneButton1.Label” />
 <Supertip>
  <Title resid=”Contoso.TaskpaneButton1.Label” />
  <Description resid=”Contoso.TaskpaneButton.Tooltip” />
 </Supertip>
 <Icon>
<bt:Image size=”16″ resid=”Contoso.cover16″ />
<bt:Image size=”32″ resid=”Contoso.cover32″ />
<bt:Image size=”80″ resid=”Contoso.cover80″ />
 </Icon>
 <Action xsi:type=”ExecuteFunction”>
  <FunctionName>ButtonId1</FunctionName>
 </Action>
</Control>

こんな感じですね。他にもボタンを同じようにControl要素を追記して定義します。
また画像を所定の場所に配置しておく必要もありますね。

Control要素のxsi:type属性にはButtonとMenuが設定できるようです。
Supertip要素はヒント情報
Action要素はクリックされたときに実行される内容になるようです。

こんな感じでボタンが配置できました。

OfficeLSTools – Officeアドイン開発 [専用タブの定義]

弊社で開発したOfficeLSToolsはVSTOを利用したアドインのため、MacやWEB版でも利用可能なOfficeアドインを開発していきたいと考えています。
Officeアドインプラットフォーム(https://docs.microsoft.com/ja-jp/office/dev/add-ins/overview/office-add-ins)を利用して少しずつブログにて情報を展開してみたいと思います。

まずは環境構築です。
https://docs.microsoft.com/ja-jp/office/dev/add-ins/tutorials/powerpoint-tutorial
こちらのページにあるようにVisualStdioを利用してプロジェクトを追加→ビルドまで進めます。

サンプルデータではアドインの表示がホームタブに表示されるようになっているので
HelloWorldプロジェクトのHelloWorld.xmlのOfficeTabをCustomTabに変更しIDを採番し
CustomTabの子要素であるGroup要素の後ろにLabel要素を設定すれば任意のタブ名を
設定できるようです。

<label resid=”Contoso.TabLabel”></label>

こんな感じでLabel要素を定義し
Resources要素内で

<bt:string id=”Contoso.TabLabel” DefaultValue=”OfficeLSTools”></bt:string>

などと定義しておけば任意のタブ名に変更できるようです。
ここではOfficeLSToolsをタブ名にしています。

Officeアドインタブ

これから少しずつ対応していきたいと思います。
どこまで移植できるか…。

OfficeLSTools(PowerPoint/Excelアドイン開発 VSTO)

PowerPoint/Excelのアドイン開発、サービス展開を検討中です。

用意されたテンプレートや設定ファイルがあれば、誰でも一定品質のドキュメントを仕上げることができます。
詳しくはOfficeLSTools紹介ページをご覧ください。紹介ドキュメントや動画などで動作イメージができます。

PowerPointアドインではあらかじめ定義されたページを読み込ませて、部分的なテキストを差し替えるだけで目的の資料を作成できます。また読み込ませたオブジェクトをあらかじめ定義しておきボタン1つで読み込ませることができます。その他企業カラーに合わせた編集がしやすいように支援機能が用意されています。

Excelアドインでも企業カラーに合わせた表レイアウト、グラフレイアウトを実現できます。
他にも便利な機能がありますので一度お試しいただければと思います。

OfficeLSTools

よろしくお願いいたします。

MA-CREATE 佐藤

SVG編集 D3.js

SVGデータを利用した回路図、艤装図、コネクタを
WEBブラウザ上で情報確認したり、操作確認できると非常に便利です。

SVG加工調整用に公開されているライブラリは多数あります。
弊社ではD3.jsを利用しています。
WEBに情報も多数転がっているので実装しやすいです。

WEB上での図形の描画やグラフ描画にも非常に有効ですね。

自然言語処理 janome, word2vec

コンテンツ管理システムにおいて、各種データにメタ情報を設定するのは非常に手のかかることです。
大量のデータを非構造から、構造化データに変換したことによって、大きなメリットがありますが
構造化された各トピックデータに対して適切なメタ情報を設定することはなかなか大変なものです。

janome, mecabといった形態素解析モジュールを利用して文章を解析し、各データにどのような
メタデータを設定するかの候補を自動的に設定する(候補としてあげる)ことができます。

また形態素解析の結果データを管理しておけば、word2vecといったモジュールを利用して
このいわば辞書データを利用し文章や単語の類似語や文章を要約するよな情報を抽出することができます。
単語や文章の類似度なども評価することができます。

蓄積されている大量のデータを利用し、的確な情報管理のために有用なツールとなります。

ご興味のある方はお気軽にご連絡下さい。

Confluenceプラグイン開発

コンテンツコラボレーションツールとして有名なConfluenceのプラグイン開発を経験しました。
非常に拡張性のあるツールなので、スモールスタートから必要に応じたカスタマイズをすることが
可能ですね。
大企業からベンチャー企業に導入されているという意味での安心感と安定感があります。
今後も機会があれば開発をすすめていきたい。

株式会社MA-CREATE 佐藤

FrameMaker2019

  • 5th 10月 2018
  • DITA

FrameMaker2019がリリースされましたね。
https://www.adobe.com/jp/products/framemaker/features.html

今までも64bit環境で動作していましたが、内部的な処理をすべて64bit対応したことで
かなりスピードアップしているようです。参照画像などによりパフォーマンスは
異なると思いますが、1000ページ単位のデータでも2,3分でPDFに変換できるとのこと。
「PDFやResponsive HTML5のパブリッシュ速度が最大65%向上します。」
要チェックですね。

MA-CREATE 佐藤

WORD VSTO

WORDプラグインをVSTOで対応しています。
ExcelやPowerPointと同じような感覚で触れます。

ほぼ、毎日使うWORD、Excel、PowerPointを使いやすいようにカスタマイズするのは有用です。
社内でのドキュメント運用において、統一感、同レベルの品質を実現できます。

DITAデータを Congility – IdXMLを利用したInDesign自動組版

  • 5th 7月 2018
  • DITA

Congility社のIdXMLを利用したInDesign自動組版を手がけました。
DITAはOxygenを利用して生成されます。

このDITAデータを入力データとしてIdXMLで変換を掛けます。
IdXML(http://congility.com/idxml/)ではかなり幅広い設定があり、
InDesignへの入力データとして適切な形へと変換してくれます。

今回はIdXMLを一部カスタマイズしましたが、なるだけカスタマイズしないで
IdXMLの仕様に細々合わせていくことで、余計な工数を削減し
シンプルなXMLファイルへと変換できると感じます。

今回は、IdXMLの処理直前にXSLT変換、処理後にもXSLT変換させて
InDesignのプラグインへと連携させました。