第二回テクニカルDTP勉強会、「InDesign CS5 と Webサービスとの連携デモ」
Adobe Creative Suite 5 では、Flex を使って 拡張機能(Extension)を実装できるようになりました。
CS5 Extensionに関して、 詳しくは、http://www.adobe.com/devnet/creativesuite/sdk/ をご覧ください。
メリット
- Flex に備わっているAPIが使える
- CS5のフローティングパネルをFlexで実装できる
- CS5のExtensionとしてインストールできる(インストールパッケージを作成できる)
- JavaScript だけでなく ActionScript でコードが書ける
これらの結果として...
- デプロイの単純化(作成した拡張機能のインストール、アンインストールが簡単)
- ウェブサービスとの連携が簡単になった
- CS5のパネルをFlexで実装できるので、InDesignでDTPしている作業者との対話機能(GUI)を実装しやすくなった
デモアプリケーション Google Translation API + InDesign CS5
Googleはウェブサービスとして機械翻訳を提供しています。
このサービスをInDesign CS5から利用するデモです。
処理の流れ
作動の説明
InDesignCS5 のドキュメント上にあるテキストフレーム内の日本語テキストを英語に翻訳します。
- テキストフレームを用意
- テキストフレームに日本語を入力
- 拡張パネル(GoogleTransAPI GW2)上の trans(Ja->En)ボタンをクリック
- テキストフレーム内の文字列をGoogle翻訳サーバに問い合わせして、帰ってきた翻訳テキスト(英語)をテキストフレームにセット
翻訳前のInDesign
翻訳後のInDesign
Extension パネルを実装している部分のコード
main.mxml
ActionScriptから直接 Google 翻訳APIを使用しているのではなく、 http://localhost:8080/trans.html を経由している点に注意。
Google AJAX Language API などを使用すれば、ActionScriptから直接翻訳を実行することも可能なのではないかと 思われます。
Google翻訳を中継しているサーブレット(groovlet)
http://localhost:8080/trans.html に配置しているサーブレット(groovlet)
単なるCGI。 query パラメータにセットされてリクエストされてきた値を Google Translation API Java 経由で翻訳して結果を plain/text として出力している(だけ)。
LANG_SRC,LANG_DEST を変更すれば、いろいろな言語からいろいろな言語に翻訳可能。
まとめ
CS5以前は外部サービスとの連携が難しかった(Bridgeを混ぜればできなくはないとは思いますが) のですが、CS5からはこのように簡単に外部サービスが使えるため、夢が広がります。
具体的には、
- jsxやActionScriptでは書きたくないような複雑な処理
- すでに実装があるのでそれを再利用したい場合
- コンテンツが外部にありこちらでなんともならない場合
このような場合に、それらをWebサービスとして利用可能にしておけばよい。 それだけで、InDesign CS5から利用できるようになる。 (もちろん、ExtensionはInDesign以外のCS5製品でも対応している。)
応用例として すぐに思いつくのは、 Yahooのテキスト解析サービス と連携させれば、 InDesign 文書に対して ルビを機械的に振ったり、校正を機械的に行うことが可能になります。
markdownの変換サービスを用意しておけば、 markdown をInDesignのテキストフレームに書いて、 それをワンクリックでレイアウト+スタイル付けすることもできるでしょう。


