Skip to content

Instantly share code, notes, and snippets.

@nbqx
Created August 26, 2013 01:24
Show Gist options
  • Save nbqx/6337382 to your computer and use it in GitHub Desktop.
Save nbqx/6337382 to your computer and use it in GitHub Desktop.

DTP is NOT Dead

そもそもマシンがさくっとつくったものがヒューマン・ビーイングスが時間をかけてつくるものには勝てないよってことは,どんなものをいつの時代につくろうが必ずあるものです.

それこそ髪の毛が伸びる日本人形的プロダクツだって,(おそらく)つくり手の念がこもってのことなのでホントはホラー的なものではないハズなんですね. 本来であればそれだけつくり手が一生懸命につくったものなのだと思うべきものでしょう. けどそういう話にしないと世知辛い世の中でJunji Inagawa(1947-)とかEdamame Tsumami(1958-)みたいな方々のエンタメにでも思いを馳せられないとアレだし, 世の中にはそっとしておいたほうがいいこともあるってことをぼくらに教えてくれてるわけですね.

さて.どーでもいい前置きはここまで.今回のお話ですが,フィルムだデジタルだwebだとテクノロジーに翻弄されつつも, お金をいただいて脳内イメージを増幅させて植物繊維のかたまりに顔料をブッかけてカタチにするという仕事(三田あたりでは「印刷」と呼ばれる)をするにあたって, どちらかというと「どんなカタチや色の顔料でBukkake」(世田谷あたりでは「DTP」と呼ばれる)するかという仕事寄りになってしまいますが,

あーもっと絞っていいっすか?

Adobe InDesignでのBukkakeに役立つ,役立つというか「どうせ脳内イメージをカタチにするなら,シンセで手を介さず脳からダイレクトに」的なMachine Soul感覚をBukkakeに吹きこもうという魂胆です.アフリカ・バンバータとクラフトワークが出会ったようにね,そうJavascriptでね.

(この内容はInDesignとほんのすこしだけJavascriptの話がご理解いただける方向けです)

AutoDTP - 恋はオートマティズム

「自動なんとか」ってすごく昭和の香りがします.「全自動なんちゃら」になると余計にプンプンです. 昭和の香りはうれしいこともありますが,その個々人のノスタルジーや甘ずっぱい想ひ出がジャマをして余計な妄想を生みだします. そう,これが「自動組版」というコトバが生み出したGenbaへの災禍の源なのです!!

そもそもアプリケーションをプログラミング言語で操作できる拡張は,自動組版をするために生まれたものではないと考えてます.

じぶんはこう思います.

「クリックで選択して情報を確認して,適切な状態にして,またクリックで選択して…」みたいな作業の繰り返しをなんとかするためじゃないかと. こういう「作業」って… そうですいわゆるDTPのことです.念を込めるための便利な道具のひとつがプログラミング言語でのアプリ操作なんじゃないかと. 流し込みってDTPじゃないよ,ページに散らばったものを協調させ意味づくるように組みたてる,それはまさにRitual,けどそれがDTP.

マシンに機械的・データ的にできることをやらせて,ヒューマン・ビーイングスはヒューマン・ビーイングスじゃないと不可能な部分をやる. マシンはヒューマン・ビーイングスにとってはスxレxイxヴであるべき.マシンは道具.マシンがAutoでDTPする. スxレxイxヴと化したシリコン・オペレータにマジに恋をするかもしれないけれど,いまはそういう時じゃない. そんなシリコン・オペレータがBukkakeしたプロダクツ(Bukka-kekka)を他人が見たとしても,スxレxイxブの仕業かどうかはわかんないでしょう,きっと 「先輩のデータってマジでアンドロイドは電気羊の夢を見ちゃってますよねー」 意味不明に聞こえちゃったら映画「ブレードランナー」を参照のこと.InDesignでJavascript書くなら必見!!

と今回はそのJavascriptをつかったAutoDTPってどんなもん? ということをご紹介します.

InDesignの文字列検索をニッチに使う

InDesignのメニューにある「編集 - 検索と置換...」でなにか文字列を検索する.フツーにやりますよね. この機能をもう少しスxレxイxヴなマシンにニッチに使ってもらうサンプルです.

たとえば「あるテキストフレームにある半角パーレンだけを見つけたい」とか. ヒットした結果は配列で戻るのであとはお好きなように…

// TextFrameのなかを文字列検索してHitした結果を返す
// arguments: o => TextFrameオブジェクトなど, str => 検索する文字列(配列も可)
// 戻るのはText, Word, Characterなど
var filter = function(o,str){
    var ret = [];
    var tgt = o;
    var text = (str instanceof Array)? str : [str];

    for(var i=0; i<text.length; i++){
	    app.findTextPreferences.findWhat = text[i];
	    var hits = tgt.findText();
	    
	    for(var j=0; j<hits.length; j++){
		    ret.push(hits[j]);
	    }

	    app.findTextPreferences = NothingEnum.nothing;
    }
	
    return ret
}
 
var ret1 = filter(app.activeDocument.selection[0], "(");
var ret2 = filter(app.activeDocument.selection[0], ["(", ")"]);

ただヒットした結果だけを戻すだけだとアレなので,このfilterって関数をつかってその結果におなじ処理をあてるようなかんじにもできるよ.

// TextFrameのなかを文字列検索してHitしたものにfunctionを適用
// arguments: o => TextFrameオブジェクトなど(Paragraphとかでもいいよ), str => 検索する文字列, fn => ヒットしたものにあてるfunc
var map = function(obj,str,fn){
    var tgt = obj;
    var text = str;
    var func = function(o){return o};
    if(fn){ func = fn; };
    var hits = filter(tgt,text);

    try{
	    for(var i=0; i<hits.length; i++){
		    var hit = hits[i];
		    func(hit);
	    }
    }catch(e){
	    alert(e);
	    exit();
    }
 }

 map(app.activeDocument.selection[0], ["(", ")"], function(o){o.horizontalScale = 80;});

この関数の引数objにあるテキストフレーム,strに半角パーレン,fnに「80%の長体をかける」みたいな処理をつっこめば, 該当するテキストフレームのなかの半角パーレンに80%の長体をかけるという処理ができるようになります.

これってつまりAutoDTP, Say, AutoDTP!!

コピペではじめるInDesign自動組版システム

おそらくDTPに限らず地球上のパーソナルコンプータで最も多く行なわれているであろう手作業「コピー&ペースト」. Javascriptを使ってヒューマン・ビーイングスのスxレxイxヴと化したInDesignでも同じことをやらせてみます.

//コピペする関数
//arguments: src => コピーするオブジェクト, dest => はりつけるオブジェクト(Characterとか)
var copyAndPaste = function(src,dest){
    src.select();
    app.copy();
    dest.select();
    app.paste();
}

たとえばJavascriptからオブジェクトを生成してグループ化して,決められた位置にインラインで配置するとなるとかなり面倒/できればやりたくない. じゃあってんでパーツ格納用のレイヤーにあらかじめグループ化したパーツ素材を準備しておいて,実際に入れこむ位置にはマーカみたいなものを置いておき, そこにコピペしてしまおう的な発想で使えそうなものですよ.

がんばればコピペだけで自動組版システムが構築できるかもしれないですよ!!

ノンノンノン,それが目的じゃーないですよね,ん? なんでしたっけ? AutoDTPですってよ.

Silicon Operator Lover

今回ご紹介したものはあくまでもJavascriptのパーツにしかすぎません.

つまりこれだけどこかに貼っつけたとしても時短やらにはならないものです. 時短やらにつなげるためにはこういうパーツを作り,ググり,調整して組みあわせなければなんの意味もありません.これをどう使うか,どう組みたてるかが大事. もちろんこういうパーツがどんな用途にもつかえて,どんな処理も可能だということもありません.つくるモノによってはまったく意味のなさないものをあります. あくまでヒューマン・ビーイングスにしかできないことに時間を集中するための道具にすぎないということをくれぐれもお忘れなく.

それとInDesignでJavascriptをつかいたい,これ読んだけどなんのことやらさっぱりわからないという方.ご心配は無用です. 今どーにかしたいという目の前の問題をすべて「はい」と「いいえ」のようなナントカ診断風に分けられるように問題をIsolation(分解)してください. それをほかのひとに読んでもらい,その意味が通じるようだったらもうプログラムの70%は書けています.あとはどういう単語で書くかだけですよ. ざっくりですみませんがそういうことになると個人的には思います.

あなたのシリコン・オペレータがシリコン・ラヴァーになりますように…

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment