《InDesignの逆引きJavaScript本は世界にこれだけしかない》
■まにまにころころ[153]
ふんわり中国の古典(論語・その16)
孔子先生から「仁」認定を受けるのは並大抵のことではない
川合和史@コロ。 Kawai Kazuhito
■クリエイター手抜きプロジェクト[572]InDesign編
便利な機能 コレクションを使う
古籏一浩
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■まにまにころころ[153]
ふんわり中国の古典(論語・その16)
孔子先生から「仁」認定を受けるのは並大抵のことではない
川合和史@コロ。 Kawai Kazuhito
https://bn.dgcr.com/archives/20190225110200.html
───────────────────────────────────
コロこと川合です。NHK大河ドラマ、視聴率低迷がニュースになっていますが、中身はそこそこ面白いんですよ? 配信サービスででも見てみてください。
ただ、これまでの大河ファンが見たがるタイプではないんですよねえ。その分、離脱者が増えて視聴率の低下に繋がってるのかなと。
昨夜は地上波本編終了後に、Twitterのライブ配信で裏話番組が生放送されたんですが、これが面白かった! 大河ドラマ大好きな赤江珠緒さんをナビゲーターに、足袋職人役のピエール瀧さん、天狗倶楽部・吉岡信敬役の満島真之介さん、ディレクターの井上剛さんが語る裏話。
ちょうどこの日は、ストックホルムへと送り出す感動的な回だったのですが、撮影順では最初だったそうで。互いに思い入れもまだ薄い状態での撮影なのに、なみだなみだの壮行シーンだったとのこと。それでも感動させられる役者さん、すごいですよねー。
また、ドラマ中に異彩を放つ天狗倶楽部ですが、メンバーのことを「○○天狗」と呼び合うのも史実通りであるとのことでびっくり。吉岡信敬さんはバンカラスタイルの応援団の祖として、知る人ぞ知る伝説の人物らしいです。
……そういうことを、放送前から広く知ってもらえていたら、視聴率も上がったのに。
出演者でもなければNHKアナウンサーでもない、フリーアナウンサー・赤江珠緒さんが、なぜかナビゲーターでしたが、赤江さんは物心ついて以来かかさず大河ドラマを観ているという大の大河ファンであると同時に、ピエール瀧さんとはTBSラジオ「たまむすび」木曜日で、何年もパートナーを組んできた仲。
タブレット操作にもたつくたまちゃんを瀧さんがサポートする姿は、なんともほほえましかったです。
そう、たまちゃんこと赤江珠緒さん、大好きなんですよ。追っかけてるとか、出演番組を欠かさず見てるとか、そんなことはぜんぜんないんですけども。
私が学生の頃、毎朝のように見ていた大阪の朝の番組で、毎週土曜に出られてて、数年後、東京へ移って全国ネットの朝番組を担当されるようになった時には、娘の栄転を喜ぶ父親のような誇らしい気分でした。赤江さんの方が年上なのに。
そんなこんなで今でも、活躍するたまちゃんを見る度、応援してしまうんです。関東圏のみなさんはぜひ、TBSラジオ「たまむすび」を聴いてみてください。
話が大きく逸れてしまいましたが、えっと、大河ですね大河。昨夜放送の八話は、日本最初のオリンピック選手である金栗四三と三島弥彦を送り出す両家の、感動的なシーンの連続だったそうです。
……だったそうです。ええ、私、昨夜だけ見てなくて。(笑)
よりによってNHKがですよ、Eテレで真裏にやってる日曜美術館で、葛飾北斎をぶつけてきまして。北斎も好きなんですよ……そっち見ちゃいました。
いだてんは土曜に再放送もあるし、なんならU-NEXTで契約してるNHKパックでも見られるしと、つい、ね。視聴率の調査対象にうち入ってたらゴメンナサイ。
一年やってる大河ドラマ、まあそんな日もありますよね。
さ、気を取り直して、本題の論語に移りましょう。
◎──巻第三「公冶長第五」十三
・だいたいの意味
子貢が言うには「孔子先生の普段のお言葉は聞くことができるが、人の性質や天の道理についてのお言葉はなかなか聴くことができなかった」と。
・巻第三「公冶長第五」十三について
正直ちょっと何言ってるのかよく分からないところですが、本質的な、奥深い話題については軽々しくは話されなかったのでしょう。
◎──巻第三「公冶長第五」十四
・だいたいの意味
子路は、教えを聴いてまだそれを十分に実行できていないうちは、さらに教えを聴くことを恐れた。
・巻第三「公冶長第五」十四について
子路はきっちりひとつひとつ実行していくタイプだったんでしょう。ひとつの教えを満足に実行できていないうちにさらに次の教えを聴いては、実行が追いつかなくなるので、それを恐れたと。
子路、真面目というか不器用なタイプで。性格は良くも悪くもとっても素直。最期は、仕える太子に厳しい言葉を投げつけて、怒りを買って殺されます。
『論語』にいちばん多く登場する弟子で、中島敦『弟子』の主人公です。この小説は子路が、孔子の邪魔をしてやれと絡みにいくところから始まります。で、その結果、感化されて弟子に。素直な子なんです。
◎──巻第三「公冶長第五」十五
・だいたいの意味
子貢が孔子先生に尋ねた。「(衛の大夫だった)孔文子はどうして文という名をおくられたのでしょうか」
孔子先生が仰った。「利発で学問好きで、目下の者に質問することも恥じない人だった。だから文とされたのだ」
・巻第三「公冶長第五」十五について
諡(おくり名)は、皇帝や高官など身分の高い人に、その業績や性質に沿って死後につけられる名前です。基本的にはある程度のルールというか慣習があり、ここでは「孔文子は文の名をおくられてるけど、どんな人だったの?」という感じの質問に、「学問好きな人だったんだよ」と答えた、ってとこでしょう。
◎──巻第三「公冶長第五」十六
・書き下し文
子、子産を謂う。君子の道四つ有り。その己を行うや恭、その上に事うるや敬、その民を養うや恵、その民を使うや義。
・だいたいの意味
孔子先生が(鄭の名宰相だった公孫僑)子産を評して言われた。君子の道を四つ備えていた。己の行いは謙虚で、目上には敬意を持って仕え、民を慈しんで養い、民を使役するときは義をもってあたっていた、と。
・巻第三「公冶長第五」十六について
君子が備えておくべき道がいくつあるのかは分かりませんが、ここからはその四つがうかがい知れますね。
◎──巻第三「公冶長第五」十七
・書き下し文
子曰わく、晏平仲善く人と交わる。久しくして之を敬す。
・だいたいの意味
(斉の名宰相だった)晏平仲は、上手に人と交際される方で、長く付き合って親しくなっても相手に敬意を示されていた。
・巻第三「公冶長第五」十七について
仲良くなったらなれなれしくなるような輩じゃなかったと。さっきの子産も、この晏平仲も、孔子からみて少し先輩にあたるくらいの人です。
◎──巻第三「公冶長第五」十八
・だいたいの意味
臧文仲は(大夫の分際で)亀卜の亀甲を蓄え、蔵の柱の上に山の彫刻を施し、梁に水草を描いていた。そのような者が智者であろうか。
・巻第三「公冶長第五」十八について
この手の話はよくでてきますが、天子や貴人にしか許されていない行為というものが当時の礼ではいくつもあって、身分をわきまえず驕ってその行為に及ぶ輩がちょくちょくいるんですね。この臧文仲(ぞうぶんちゅう)もそのひとり。時代的には孔子より少し前の時代の人で、世間の評判としては智者と言われていたようです。
◎──巻第三「公冶長第五」十九
・だいたいの意味
子張が孔子先生にお尋ねした。楚の令尹(宰相)である子文は、三度仕えて令尹となったが喜ぶ様子は見せず、三度辞めさせられても恨む様子はなく、前任の令尹としての政務を後任の令尹にきちんと伝えて引き継いだそうです。いかがでしょうか。
孔子先生が答えられた。忠だね、と。
子張が、仁でしょうか、と尋ねると、孔子先生が仰った。まだ智者とも言えない身であるから、仁とは言えないだろう、と。
崔子が斉君を弑逆した時、陳文子は持っていた馬四十頭の財産を捨て、斉の国を去りました。他国へ着くと、(この国の家臣も)我が国の大夫だった崔子と同様だと去り、また違う国に着くと、(この国の家臣も)我が国の大夫だった崔子と同様だと去ったそうです。これはいかがでしょうか、と子張が尋ねると、孔子先生は、清廉だね、と答えられた。
子張が、仁でしょうか、と尋ねると、孔子先生が仰った。まだ智者とも言えない身であるから、仁とは言えないだろう、と。
・巻第三「公冶長第五」十九について
孔子先生から「仁」認定を受けるのは、並大抵のことではないんです。
子文は忠義の人、陳文子は清廉な人との評価を受けました。確かにそうですが、それではまだまだ仁者とは言えないんですよ。その手前の智者とも認められていない。
判断材料が足りないから認められないというのもありますが、この二人の行動は、これといって世の中の役には立っていないというのも大きいのかなと。
◎──巻第三「公冶長第五」二十
・だいたいの意味
(魯の大夫)季文子は、三度考えてからはじめて行動に移した。孔子先生はこれを聞いて、二度考えればもういいよ、と仰った。
・巻第三「公冶長第五」二十について
ひどい(笑)
まあ、考えすぎるのもよくないよ、ということです。
◎──今回はここまで。
人物評が続きますが、孔子先生の価値観が垣間見えますね。前に読んだ『孫子』に比べて、ふんわりとした話が多くて疲れてきますが、ハッとさせられることがよくあります。反省させられることが多いです。……だから疲れるのかも。
あと二回ほどで、全十巻のうち三巻まで終わりそうです。
まだまだ先は長いですが、お付き合いください。
【川合和史@コロ。】koro@cap-ut.co.jp
合同会社かぷっと代表
https://www.facebook.com/korowan
https://www.facebook.com/caputllc
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■クリエイター手抜きプロジェクト[572]InDesign編
便利な機能 コレクションを使う
古籏一浩
https://bn.dgcr.com/archives/20190225110100.html
───────────────────────────────────
本連載は自動化に関するネタを提供するはずだったのですが、ここ一年以上はそのネタがほぼ皆無という状態でした。ネタ切れというのもなきにしもあらずですが、昨年に作ったInDesignのスクリプトの数は1200以上あります。
ほとんどは些細なものです。ネタに困ったら細かいスクリプトでも載せておけば、連載は続けられるかなと思ってました。ただ、一回の掲載で10個載せても120回。一年では40回ほど掲載回数があるので3年しか持ちません。
InDesign以外にもAdobeのアプリケーションはたくさんありますし、自動化できるものであれば問わないとすれば、まだまだ連載は続けられそうです。IoT関係だと部品が多く、登場するデバイス/シングルボードコンピューターなどが多いため、当面ネタ切れにはならないんじゃないかと。どうにもネタ切れになったら、ゲームを作ってしまえば、どうにかなりそうな気もします。
前ふりが長くなりましたが、今回は久々の(何年かぶりの)InDesignのJavaScriptネタです。InDesign本を作成している時に大量にコードを書いたため、それなりのノウハウが溜まったからという理由はあります。
ただ、細かいプログラムがほとんどなので、実務で使えるかというと、それは厳しいと思います。やはり、実務で使うなら現場の人がプログラムを書くのが一番だと思います。現場のことをよく知っているからです。
InDesignで自動化する場合に、JavaScriptが使われることが多くありますが、結構便利な機能があります。それはコレクションです。コレクションはスウォッチやページ、テキストフレームなど、特定のオブジェクトの集合体です。
InDesignのコレクションは、WebでのjQueryの$()に近いものがあります。JavaScriptネイティブなら、querySelectorAll()といったところでしょうか。
ただし、InDesignのコレクションに用意されているメソッドは、そこまで高機能ではありません。もし、InDesignのコレクションにquerySelectorAll()のような機能があれば、使い勝手はかなり違っていたかもしれません。
InDesignのコレクションを使うと、プログラムを短く簡潔に書くことができます。ここでは、アクティブになっているドキュメントの3~5ページを削除するスクリプトを作ってみます。ドキュメントには少なくとも5ページ以上のページがあるものとします。
まず、コレクションを使わずに書いた場合どうなるかというと伝統的な、というか定番のforを使います。ページはpagesでアクセスし、削除する場合はremove()を使います。
for(var i=5; i>=3; i--){
app.activeDocument.pages[i-1].remove();
}
このような、forを使った場合のメリットは多くの言語で使われているので、JavaScriptを知らなくても分かると思われます。書かれたプログラムを、他の言語に移植しやすいということもあります。
それでは次に、InDesignのコレクションを使った場合のプログラムですが、以下のようになります。
app.activeDocument.pages.itemByRange(2,4).remove();
forによる繰り返しの記述自体がなくなっています。行数も1行でシンプルになりました。itemByRange()メソッドは、コレクションの範囲を指定します。itemByRange(2,4)ならコレクションの2~4(0が最初のなので3番目から5番目)になります。
pagesはページのコレクションなので、ページ3~5までが対象になります。面白いのは、この後に続くメソッドです。通常、メソッドはひとつのオブジェクトに対して処理されますが、コレクションの場合は複数のオブジェクトに対して処理されます。
メソッドに限らずプロパティに対しても、同様の処理が行われます。今度は、アクティブページにあるテキストフレームの内容を消去するスクリプトを見てみましょう。forを使った繰り返しで書くと、以下のようになります。
var aPage=app.activeWindow.activePage;
for(var i=0; i<aPage.textFrames.length; i++){
aPage.textFrames[i].parentStory.contents="";
}
コレクションを使うと、以下のようになります。everyItem()はすべてのコレクションを対象にするメソッドです。これも、一行で書くことができてしまいます。
app.activeWindow.activePage.textFrames.everyItem().contents="";
ただ、これだと表示されている範囲しか文字が消えません。しかし、contentsの部分をparentStory.contentsとしてしまうと機能しません。こうなると、一般的な繰り返し処理のforを使わないといけません。
また、総数を返すコレクションのcount()メソッドも、対象によっては異なる結果を返すこともあります。ここらへんは、多少のノウハウが必要な部分かもしれません。
コレクションは万能ではありませんが、上手に使えば短く簡潔にスクリプトを書くことができます。最後にコレクションのメソッドを載せておきます。(すべてのコレクションに同じメソッドがあるわけではありません)
anyItem() コレクションのオブジェクトのうちどれか(不特定)
count() コレクションの総数(まれに配列を返すものがある)
everyItem() コレクションのすべてのオブジェクト
firstItem() コレクションの最初のオブジェクト
middleItem() コレクションの総数のうち中央に位置するオブジェクト
lastItem() コレクションの最後のオブジェクト
item(位置) コレクションで指定された位置にあるオブジェクト(位置は0から始まる)位置は数値だけでなく名前でも指定することができる場合もある
itemById(id) コレクション内で指定したIDのオブジェクト
itemByName(名前) コレクションにある指定された名前のオブジェクト
itemByRange(開始、終了) コレクションで指定された範囲にあるオブジェクト
previousItem(object) コレクションの指定されたオブジェクトのひとつ前にあるオブジェクト
nextItem(object) コレクションの指定されたオブジェクトの次にあるオブジェクト
【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/
ようやくInDesignのJavaScript自動化本が発売になりました。なんですが、元々一冊の本だったものがページ数の関係などで入らず、全体の2/3ほど(章としては半分)を先に出版するという具合になりました。なので、入門っぽいような部分は最初に少しあるだけです。
さらに、ビジュアルリファレンスもあったんですが、量が多く入れることができず、ダウンロードページにてPDFで用意してあります。(ビジュアルリファレンスだけで400ページほど)InDesignの逆引きJavaScript本は世界にこれだけしかないので是非(^^)/
・InDesign自動化サンプルプログラム逆引きリファレンス上/下
https://www.amazon.co.jp/dp/4844396846/
https://www.amazon.co.jp/dp/4844396854/
・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram
・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936
[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/
・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591
https://www.amazon.co.jp/dp/4844397605
・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP
http://digiconcart.com/dccartstore/cart/info/2561/218591
・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/
・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/
・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/
・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/
・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
編集後記(02/25)
●偏屈映画案内:「15時17分、パリ行き」
90歳も間近なクリント・イーストウッド監督作品。2015年8月21日、パリ行きの特急列車内で起きた、イスラム過激派による無差別テロ襲撃事件、通称「タリス銃乱射事件」をリアルに再現したものだ。居あわせた3人の若者らが犯人を取り押さえ、殺人を防いだ話である(重傷者あり)。この映画が注目された理由の一つは、主演の若者たちを本人=素人が演じたというところにある。
始まってから一時間少々は、彼らの子供の頃から現在に至るまでの話。だが数回、唐突に何の説明もなく列車のシーンが何秒か入る。前知識なかったら、何だ? これは、となるが、ほとんどの観客は察しているから、期待を煽る仕掛けなのだろう。残りの約25分間が列車内の出来事、およびその後の話である。
この有名な事件は後に本になり、イーストウッドがそれを読んだことから映画化の企画は始まった。彼が気に入ったのは3人のキャラクターにある。スペンサーは勇敢、アンソニーは陽気、アレクは真面目、メリハリがある。企画決定後は、他の映画と同様にオーディションを行い、3人を演ずる俳優が決まった。
ところが、監督は最終的にそれを破棄し、本人が演じるという案を突然提示した。「うまくいくと確信はなかった。でも、何年も映画を撮ってきて、今回は大胆に行こうと思った」「演技は本能的なもので、特別な知識は必要ない。我々が雰囲気をつくれば演者は集中できるし、奇跡も起きる」と語っている。実際、彼らは自然な演技をしていて、わたしはまったく違和感を覚えなかった。
列車のシーンはすべて本物である。時速250〜280キロで走行しているときに、車内の撮影を行った。時刻表を変えずに撮影したから、駅のシーンを撮れるのは停車している間だけだ。数分間のときも30分間のときもある。その度にカメラを積んだりおろしたりしている。この監督は車内でも照明を使わない。驚いたことに、すべての乗客が事件を再体験していたという。乗客も本人だった。
すべてありのままだ。もちろんテロリストは俳優だが。それにしても、大量殺人を目指すテロリストなら、銃でなく爆薬で走行中の車輌を破壊すれば能率がよかっただろう。一番活躍し負傷したスペンサーが主役とも見える。子供の頃からの成長ぶりは、他の二人より丹念に描かれている。「善行の機会を与えられたんだと思っている。神が見守っていてくれた」と、信心深いのは良い。
「事件の日と同じ状況が作り出されているから、撮影だということを忘れていた」と、彼は言う。「何があったかやってみてくれ、と彼らに言った。彼らは話し合いながら、一生懸命、起こったことを再現しようとした。私たちは、彼らを撮っただけさ」と、ほとんど演技指導をしないことで有名な監督は言う。
「主人公はアメリカの若者だ。進んで行動を起こすことのないミレニアム世代のね。でも、彼らは動いた。最初は知らなかったが、3人は8歳の頃からの幼馴染みだった。とくに優秀だったわけではない。学校ではいつも問題を起こしていた。こんな未来は誰も想像していなかった」。正直、男の子の成長物語は見飽きた。ヨーロッパ観光シーンなど相当に退屈、最大の山場は短い。(柴田)
「15時17分、パリ行き」2018 アメリカ
http://www.amazon.co.jp/exec/obidos/ASIN/B07JF2YTYT/dgcrcom-22/
●MacBook Pro続き。Mid2012と2018の差は、大きなファイルを扱うとよくわかる。ベンチマークの比較では、シングルコア3377が5136に。マルチコアだと6592が17735スコアと約3倍。
Webサイト用の画像を扱う時には感じないが、Photoshopでポスター画像をレイヤー100枚ぐらい重ねて作業をしていると、保存スピードが体感で3倍どころか、10倍以上違うように思う。
そういや、Photoshopの動作が終わったらメールやスマホに通知が行くようなアプリを入れていたこともあったわ。OSのバージョンアップに伴い、動作しなくなったけど。(hammer.mule)
ベンチマーク比較
https://browser.geekbench.com/macs/283