はじめに
師走になって日に日に寒くなってきたような気がしますが、昨日12/1(土)、DTPerのスクリプトもくもく会#10を開催しました。今回は特別にアナウンスしたり宣伝したりしたわけではなかったのですが、なんと14人の方にご参加いただきました(当もくもく会史上最大)。これでもお一人がお仕事でキャンセルとなったのですが、それにしても14人というのは普段のもくもく会からすると倍近い人数です。
テーブルの配置の都合でちょっと狭かったかもしれませんが、特に大きな問題もなく無事開催できました(参加者の方にはメールをお送りしましたが、遺失物がありましたので、改めてお心あたりのある方はご連絡ください)。
第10回目という節目の開催で、2018年最後の「DTPerのスクリプトもくもく会」となりました。言うまでもないことですが、当もくもく会に参加していただく皆さまのご協力がなくては10回も続きませんでした。このもくもく会は細く長くやっていきたいと考えていますので、引き続き、よろしくお願いします。
開催報告
さて、今回のもくもく会で発表された内容の振り返りをしつつ、いただいたいくつかの質問への返答を改めて。
発表について
今回もプロジェクターを借り、4名の方に発表していただきました。聞いて理解することに頭を使ってしまい、きちんとした要約になっていませんが覚えている範囲で書きたいと思います。
スクリーンショットからOCRでテキスト化する(FileMaker経由)
GoogleのクラウドサービスであるGCPの中に、画像に関するAPIがあります。
これに登録するにはクレジットカード情報を指定したりする必要があり、各APIサービスが一定以上のユニット(リクエスト)を行うと有料になる仕組みのようです。料金表は以下の通り。
ご覧の通り、1ヶ月1,000ユニット以内なら無料です。すごいですね。
コードについてはこちらを参照してください。Google側で形態素解析も使われているようで、APIを利用する側は難しいことを考えずに結構正確な文字情報を取得できるようです。
InDesignで特定のフォントを使って書体見本を一括書き出し
マシンにインストールされているフォントの中から検索条件にマッチしたものを抽出し、InDesignのドキュメントにある文字列をPDFとPNGで書き出すというスクリプト。もはや多くは語るまい。作った本人がブログに公開していらっしゃるのでそちらをどうぞ。
VSCodeとVimについて
発表時間的には短かったのですが、それでも内容がけっこうぎっしり詰まっていたので箇条書きで。
- VSCodeはいいぞ
- ファイルを同時に開いているだけでお互いの関数やJSDocを表示して入力補完することが可能
- JSDocはnpmからインストールできる
sudo npm install -g jsdoc
- Document ThisというプラグインでJSDocを書く手間が激減
- VSCodeのウィンドウに標準でターミナルを表示させることができる(もちろんそのままターミナルとしてコマンドの実行ができる)
VSCodeでターミナルを使うのは標準機能!便利すぎやろ。 #dtpscriptmkmk10 pic.twitter.com/VJh2bWK23Y
— Yusuke S. (@Uske_S) December 1, 2018
- スクリプトを書いて人に渡す/複数人で開発するならきちんとJSDocを書こう
- その他(以下のツイート参照)
VSCodeのオススメ機能拡張(Unityまわりは除外してます)
— めんたいこ JET CITY (@kickbase) December 1, 2018
Bracket Pair Colorizer
Classy Naming
Clipboard Ring
Document This
indent-rainbow
Markdown PDF
Python
Python-autopep8
TextTransform
#dtpscriptmkmk10
- zshellはいいぞ
zshellの基本的な設定だけど、ホントおすすめ。cd書かなくていいのは革命。
— めんたいこ JET CITY (@kickbase) December 1, 2018
setopt auto_cd
alias ...='cd ../..'
alias ....='cd ../../..'#dtpscriptmkmk10
- gitを使え!
- tig最強!
ぼくの.gitconfigの設定(抜粋)
— めんたいこ JET CITY (@kickbase) December 1, 2018
shift+cでコミットIDをコピーするのが地味に便利
[alias]
co = checkout
ci = commit
st = status
br = branch
pbcopy = !printf "$1" | pbcopy
[tig "bind"]
main = C !@git pbcopy %(commit)
#dtpscriptmkmk10
- tigはhomebrewからインストールできる
brew install tig
ひとまずこんなところか。漏れや間違いありそうで怪しいけど(あればご指摘ください)。vimについてはどちらかというともくもく会あとの懇親会兼忘年会?で詳しく聞きました。
vimについては、探したら日本語のヘルプドキュメントがあったので一応貼っておきます。
青空文庫のテキストデータを自動組版
XMLを利用してInDesignに青空文庫のテキストデータを自動で流し込むデモ。Windowsで.NETという技術で作られたものでした。もうちょっと技術的な部分を掘り下げて見たかったですね。
質問について
今回はあまり質問らしい質問がなく、雑談の中で質問のようなものをいただいたという感じです。
ESTKで完結するスクリプトだがクリップボードに情報を送りたい
.shファイルや.appファイルを用意しておき、ESTKからFile.execute
メソッドを利用してシェルスクリプトなどを動かす、という方法で実装。うーん、なかなかw
ファイルにpbcopyコマンドごと書き出して無理矢理コピーってのはありますが、これもあらかじめファイルとか作っておかないといけないので難しいかも。 pic.twitter.com/FvVscp05X2
— 古籏一浩 (@openspc) December 1, 2018
Ten_Aさん、古籏さん、omotiさん、情報Thxでした!
ちなみにMac版InDesignだとApplication.doScript
メソッドでApplescriptを実行できるのでワンライナーです。
app.doScript('set the clipboard to "ほげー"', ScriptLanguage.APPLESCRIPT_LANGUAGE);
Mac版ESTKでデバッグできない(例の不具合)
自前の記事ではここです。
手作業でESTKのパッケージ内のコードを修正しない(ものかのさんのアプリを利用する)場合、アプリを実行後に出るダイアログは「quit」ボタンを押して終了した上で、ExtendScriptToolkit.appをドラッグしてくださいね。アプリがビジー状態になっている(ダイアログがモーダルダイアログのため)ので動作しません。
スクリプトの勉強は何から始めたらいいですか?
定期的にこういう質問をいただけるので嬉しいです。
先に申し上げておきますが、Adobe公式の「スクリプティングガイド」なるものがあるのですが、コードが間違っていたり、説明が非常にわかりにくいこともあり、あまりお勧めできません*2。
ESTKの使い方
まずは開発ツールであるESTKの使い方を覚えましょう。
僕が読んだ中でもっとも分かりやすいESTKの導入本です。これは1冊手許にあると良いと思います。
ExtendScriptについて
InDesign向けではありますが、対応バージョンが新しく、リファレンスとして懐が広く、読み物としての情報量が圧倒的なお〜まちさんのこちら。
これは教科書で、ほかに問題集などもあります(ページ内にリンクがあります)。
オブジェクトモデルについて
現時点で(そしておそらくこれから先も含めて)日本語でDOMを参照できるのはここしかありません。
その他情報
以前、DTP-Discourseに書かせてもらったこちらなど、参照ください。
あと、過去のもくもく会でも同様の質問が出てますので、こちらなど。
こんなところでしょうか。
おわりに
以上、2018年最後のDTPerのスクリプトもくもく会の開催報告でした。
今年1年のもくもく会を振り返ると、、、まぁいろいろあったわけですが、それでも続けてきて良かったと思えることのほうが多かったので、それは良かったかなと思っています。
もともとこの会は「ひとりでスクリプトの勉強/開発ってモチベーション維持が大変」「正しい情報はどこにあるの…」「仕事の合間にスクリプト書く時間が取りにくい」みたいなものが少しでも解消できれば…ということで始まった割と緩い会だったのですが、いつの間にかconnpassのメンバーは80人を超えました。本当にありがとうございます。
勉強会というのとはまた違ったこの「もくもく会」という存在が、僕はけっこう気に入っています。「誰かに何かを教わろう!」と集まるのではなく、あくまで「自分で自分の作業をしよう!」という気持ちで集まるのが面白い。そこには同じような悩みを持つ仲間がいたり、知見の豊富な方がいて教わることができたり、仕事がつながったり。スクリプトというものを通して、主催者を含めて参加した人たち同士で新しい線がつながっていくというのが、また非常に面白い。
また、このもくもく会がなければ、こんなにいろんなことを知る機会もなかっただろうと思っています。ひょっとしたらGitだって使っていなかったかもしれない。やっぱり休みの日にわざわざスクリプトやろうぜって人たちが集まるわけですから、それが「時間を無駄にする会」になるわけないんですよね。目的意識や課題を持って来る人が多ければ、会話は少なくてもそれだけ熱気のある会になるんじゃないかと思います。
僕もまた「スクリプトを作ろう」「CEP勉強して作れるようになろう」「やりたいと思っていた技術をまたちゃんと勉強しよう」というモチベーションが出てきました。割とメキメキと。だからやっぱりこの会は続けていきたいですね。来年もよろしくお願いします。
それでは、今年の総括的な話はまた別の記事にしたいと思いますので、ひとまず今回はこのへんで!