DTPab

印刷やデザイン、アドビ製アプリやスクリプトなど、雑多な技術ブログ

DTPerのスクリプトもくもく会#25 オンライン を開催しました

f:id:uske_S:20200721144609p:plain

恒例のもくもく会開催報告エントリーです。

オンライン開催ツールを変えました

Google MeetがGoogle Workspaceのサービスのひとつになり、実質的に有料化されました。前回のもくもく会#24はそれでも(課金して)Google Meetで開催したのですが、来年から値上げ(というかトライアル終了)されることもあり別のツールを検討しました。
共同主催者であるこうちゃん(id:macneko-ayu)氏とテストして、最終的にNeWorkというサービスを利用することにしました。

nework.app

みんな初めてだったこともあって最初は慣れずにあたふたしましたが、終わる頃にはみんなで画面共有しあって、これまでと変わらないもくもく会を開催できたと思います。

話題や質問等

Yahoo! APIがV2になった

ルビ振りAPIなどでお世話になっているYahoo! デベロッパーネットワークのAPIが、実はV2になっていました。

developer.yahoo.co.jp

対応期限:2022年4月27日(水)
※期限までに切替が完了しない場合、Yahoo! ID連携 v1を利用できなくなります。

ということなので、僕の同人誌「InDesign × Google Apps Script ― ルビ振りAPI編」は改訂を余儀なくされそうです。ただもうGASの仕様も変わっているため、今回の改訂はよほど時間的猶予ができない限り諦めようと思っています。
というのもこの同人誌はInDesignからExtendScriptだけでどうGASと連携させるかというチャレンジの体験記であって、ルビ振りスクリプトを提供するために書いたものではないからです。そのためにInDesignのExtendScript側の記述は大幅に割愛していました。
もし同様の機能を実装するなら間違いなくCEPのほうが有用です。わざわざExtendScriptで作るのはいろいろ大変*1なのでおすすめしません。

で、実際これまでのV1を利用したスクリプトから何を変えなくてはいけないか? リクエスト側はこれだけの変更がありそうです。

  • リクエストURLが変更
    • V1:https://jlp.yahooapis.jp/FuriganaService/V1/furigana → V2:https://jlp.yahooapis.jp/FuriganaService/V2/furigana
  • GETリクエスト廃止(POSTリクエストのみに)
  • パラメータの変更
    • appid(V1)→ id(V2)
    • jsonrpc (新規追加):'2.0' (固定)
    • method (新規追加):'jlp.furiganaservice.furigana' (固定)
    • sentence (V1)→ q (V2)
    • grade (V1ではString型)→ V2は Integer

さらっと書いてますがGETリクエストが使えなくなってPOSTリクエストになった、というのが大きな変更です。セキュリティ的観点からすると当然の流れですけどね。僕の同人誌でもGETリクエストを送っていました。

僕の同人誌よ……… R.I.P.

CEPの配布方法

上記の流れで、じゃぁCEPにするにしたって配布しにくいよね、という話に。

uske-s.hatenablog.com

過去こんな記事を書いていたのですが、要するにZXPインストーラも終わります(した)。UXPに関してはこの先パッケージファイルをダブルクリックでインストールできるようになるみたいですが、CEPについては(記事にも言及がある通り)サードパーティ製のアプリをAdobeが公式に推しています。

install.anastasiy.com

絶賛過渡期という感じ。たぶんコロコロと状況が変わるでしょうから、公式アナウンスを追いかけないとすぐ情報が陳腐化しそうです。

ExtendScriptでJSONを扱えるようにする

ExtendScriptはES3準拠なのでES5で追加されたJSONが使えません、というのは周知のことかと思います。
そこでパブリックドメインとして公開されているライブラリを使えば、JSON.stringify()JSON.parse()メソッドが使えるようになります。
詳しくは過去の記事を参照。

uske-s.hatenablog.com

まぁ、JSON.parse()に関してはeval( "(" + JSON + ")" )とかってやれば実質同じですが。

また、VSCodeではlintで#includeが怒られるはずなので、//@includeとしてあげるとよいです。

最後に

次回は11月開催の予定で、2021年最後の回になります。
もし日曜開催がいいなどのご要望があれば早めにお知らせください。候補日をアンケート採ったりもできますので。

それではまた!

*1:ExtendScriptと言いつつ内部的にはAppleScriptからシェルを叩くためMac専用でした。また、叩いたcurlコマンドからGASにアクセスし、GASからYahooのAPIにアクセスし、得られた値をGASでパースしてcurlコマンドの戻り値として返すという手法を採っていました。なのでもしスクリプトがエラーで動かなくなったとき、ExtendScriptの不具合なのか、GASか、YahooのAPIか、といった全面調査が必要になります。GASの仕様が変わったときに大変な思いをしたので、サービスをいくつも横断するこうした方法は推奨しません。 作るならOSに関係なく動作するCEPで、直接HTTPリクエストしてYahooのAPIを叩いたほうがスマートです