2011年12月25日日曜日

福島原発事故

TBSテレビで「福島原発事故発生5日間~官邸緊迫の舞台ウラ~菅氏枝野氏斑目氏が新証言」を見た。
東電と官邸の言っている事実がこの期に及んでも違っている。そして何よりも以下の事実が語られていなかった。

毎日新聞の記者の目:福島第1原発の「収束宣言」を読んだ時、背筋がゾッとした。今でもそう。
 「第1原発も深刻だが、同様に深刻だった第2原発は奇跡的に冷却できたと認識できた」。5月下旬、現地視察した国際原子力機関(IAEA)調査団は、経済産業省幹部に対し「奇跡」という言葉を持ち出してねぎらった。

 津波後も一部電源が残った第2原発では、仮設ケーブルを柏崎刈羽原発(新潟県)などから集め、電気を通して4基の原子炉を冷却することが急務だった。作業員を大量投入して敷地の野球場フェンスを徹夜で撤去し、ヘリポートに改造、ケーブルを積んだヘリを社員の車20台のヘッドライトで誘導した。総延長9キロのケーブルを2日で敷設し、ぎりぎり冷却が間に合った。通常20日かかる作業だった。

 人海戦術ができたのは、地震発生が金曜日の午後で、協力企業の作業員数千人がたまたま施設内にいたためだ。「もし発生が翌日の土曜日だったらと思うとぞっとする」。IAEAに、第2原発の増田尚宏所長は証言した。

 そのころ第1原発では1~4号機が電源喪失で冷却機能を失った。最多の1535本(460トン)を保管する4号機の使用済み核燃料プールは沸騰。溶融すれば最悪の場合、首都圏の3000万人が避難を強いられる事態が目前だった。だが空だき直前、4号機内で起きた水素爆発の衝撃で核燃料プール横の別なプールの水が偶然、核燃料プールに流れ込み危機を免れた。

 2号機では、原子炉建屋の窓が、隣接する1号機の水素爆発の衝撃でたまたま開き、水素が排気されて建屋内の爆発が回避された。もし4号機プールが空だきとなり2号機も爆発したら、放射性物質の汚染は今の比ではなかった。

偶然、たまたまが重なって最悪の事態は免れたが、当時、この事実は知らされていなかった。事故直後、日本から逃げ出す外国駐在員のニュースを見て(大袈裟だな)と思っていたが、今となっては彼らの対応は間違っていなかった。国民をパニックに陥れないために政府官邸は「大丈夫」だという発表を繰り返していたが、どこまで正確に状況を把握していたのか疑問が残る。

今回の「収束宣言」にしても多分、再度、東日本大震災が起きないことを前提にしたものではないかと思う。同程度の地震が起きた場合、どうなるか? 
池田信夫先生は合理的意思決定の限界
東日本大震災のような巨大地震が近いうちに再発する確率はほぼゼロであり、それが原発のある地域で起こって大津波で(すでに耐震工事の終わった)予備電源装置を破壊する確率は、おそらく100万年に1度以下だろう。

オイオイ、耐震工事の終わったのは予備電源装置であって原子炉本体ではないでしょ。何より巨大地震が連動することは過去の歴史から学んでいるはず。スマトラ島沖地震はどうなるの? 

で、ググると「巨大地震活動期ってあるのか?また今回の東日本大地震の連動は?」にヒット
04年と05年のスマトラ島沖地震の関係を当てはめると、南なら房総沖、北なら津軽海峡や北海道のあったりでしょうか

海外に逃げる当てのない方は、政府発表を信じて次なる偶然、たまたまを期待するしかないでしょうね。

2011年12月12日月曜日

正規表現の復習 3

久~しぶりに正規表現を復習して理解してねぇーなと感じたのが?。

サルにもわかる正規表現入門
Windows?だと WindowsとWindow にマッチ
Windows ?98だと Windows98とWindows 98 にマッチ
が頭から抜け落ちてました。
? の場合は、直前の文字がまったくないか、1つだけあるという意味

吉田印刷所さんのアンケートを例に
»概要
このページではIllustrator(イラストレーター)・Photoshop(フォトショップ)・InDesign(インデザイン)・Acrobat(アクロバット)のソフトウェアにおいて、DTPでよく使用するバージョンのアンケートを行っております。

このアンケートは以下のアンケートの2011年冬版です。

(.+)で検索すると行の最後に出現する閉じ括弧までマッチします。


で、(.+?)で検索すると最初に出現した閉じ括弧でマッチ。
以下、以降の出現箇所でマッチ。


馬鹿の一つ覚えで、これのみ覚えてました(;´▽`A`` 

ですから、直前の文字がまったくないか、1つだけあるという意味が頭から抜け落ちて、この用法の?が出現すると頭が??だったんです。サル以下です。。。orz

とはいえ、正規表現はフリーのエディタで学べますんで、お金のないアチキにはピッタリ。


で、注意したいのがエディタ選び。人様のつぶやきを見て知ったのですが、エディタによっては以下の文字が
à è ì ò ù  á é í ó ú ý  â ê î ô û  ã ñ õ  ä ë ï ö ü ÿ   ç Ç ¿ ¡ © ® ™
こんな風に変わりますので注意してください。
a e i o u  a e i o u y  a e i o u  a n o  a e i o u y   c C ソ
いくつかのフリーエディタを入れていたのですが、この症状の出たエディタは全て削除しました(さくらエディタはユニコード対応版ならOKだということは後で知った)


話は替わって、webからテキストをエディタにコピペしますと以下のような文に出くわします。
井伊直政〔中名格:次鋒〕:3,600 ← “本能寺の変“後、武田領を侵食した際、召抱えた武田家遺臣〔”赤備え“の井伊隊として名を馳せる〕
~ココまでの主要7将で、”61,000“人

小早川秀秋〔大名格:右翼主力軍〕:15,000 ← この”小早川の寝返り“が戦況を一変させたことはあまりにも有名!!
長宗我部盛親〔大名格:最右翼挟撃軍〕:6,600
大谷吉継〔中名格:後詰〕:4,100 ← “らい病患者“であったにも関わらず、石田三成への”友愛“精神から西軍へ参戦!!
小西行長〔中名格:左翼主力軍〕:4,100
吉川広家〔中名格:右翼先鋒〕:4,000 ← 当初から、”東軍への内応組“であり、結果的に、毛利軍本隊の参戦を食い止めたことで有名!!
~ココまでの主要7将で、”70,700“人
ダブルクォーテーションがバラバラです===≡≡≡。゚┌(゚´Д`゚)┘゚。

正規表現で一度に置換するには?と考えていたのですが、アチキの頭では3段階かかりました。エディタでやるとマクロになります。
1. 正規表現[“”]で検索→"に置換
2. ".+?"で検索→“$&”に置換(さくらエディタのユニコード対応版)
3. “"と"”から"を削除

流星さんから回答をいただきました^^

app.selection[0].contents = app.selection[0].contents.replace(/[“”]([^“”]+?)[“”]/g,"“$1”");

正規表現とjavascriptの合わせ技ですので、アチキにとってはD難度なのですが、まずは読み解きからはじめさせていただきます<(_ _)>

2011年12月10日土曜日

正規表現の復習 2

指定文字のセルにセルスタイルを割り当てるを読んで思い出したのが、せうぞーさんの傑作

正規表現にマッチしたら、指定のセルスタイルを適用する「regex_cellstyle 0.2」

これっ、最初に見たとき「凄げぇツールだな」と感嘆したのですが、いかんせん正規表現が自在に使えないと使いこなせないツールなのです。使用ユーザーを選ぶレベルの高いツールです。そんな理由で(アチキには無理、無理!)とスルーしてきたのですが、最近また「正規表現熱」が復活してきたので、これを機に復習。
YouTubeからスクリーンショットを撮らせていただきました^^

1. マイナス数値のあるセル選択


文章中にあるマイナスを含んだ小数点のある数値を正規表現で選択となると大変なのですが、ここは行頭にマイナスがあるセルを選択するので「^-」だけでOK。以前、勉強したJavaScriptだと

if(cellObj.characters[0].contents=="-"){ です。
characters[0]でセル内文字の先頭を表します。


2. 小数点を含んだ0-5数値のあるセル選択


これは^[0-5]\.と入力されてます。行頭(^)が0~5範囲のどれか([ ])の後に小数点(\.)にマッチ。


3. 小数点を含んだ6-10数値のあるセル選択


これは^([6-9]|10)\.と入力されてます。6~9もしくは10のいずれか(|)の後の小数点にマッチ。


4. 小数点を含んだ2桁数値(16-20)のあるセル選択


これは^(1[6-9]|20)\.と入力されてます。11-15の場合は1[1-5]\.です。後はこれの繰り返しです。

で、文中でマッチさせる正規表現に挑戦してみます。
全国平年値(1971~2000年)・月別最高気温の表をエディタにコピペ。
ググると1~20の数字を表す正規表現は(?<!\d)([1-9]|1[0-9]|20)(?!\d)なのですが、せうぞーさんの正規表現で数字の桁数を表すによりますと
「1.234」とか「1,234」なんていう小数点やカンマがあると「.」「,」の手前が単語境界になるから。残念。切腹(古い...
実際、EMエディタでやってみますと↓になってしまいます。


解決法も記されてました。
ですから、上記のように1桁だけの数字を検索したいなら
(?<![\d,\.])\d(?![\d,\.])
とすればいいでしょう。

で、まず「正規表現 小数点」でググると
正の整数と小数にマッチする正規表現にたどり着く。

([1-9]\d*|0)(\.\d+)?

でやってみると見事にマッチ!↓


これをベースに1-5の小数点を含んだ数値の正規表現をいろいろ弄り、
(?<![\d,\.])[0-9](\.\d+)でいけるかと思ったが、整数にマッチしない↓(マイナスは後でやるのでここでは無視)。


試行錯誤の挙句

(?<![\d,\.])[0-5](\.\d+)?(?![\d,\.])

でゴールに達するε~( ̄、 ̄;)ゞフー. 
? の場合は、直前の文字がまったくないか、1つだけあるという意味だったんだよな。

追記
マイナス数値は、-(?<![\d,\.])[0-5](\.\d+)?(?![\d,\.])
0-5は、(?<![\d,\.-])[0-5](\.\d+)?(?![\d,\.])
6-10は、(?<![\d,\.-])([6-9]|10)(\.\d+)?(?![\d,\.])
16-20は、(?<![\d,\.-])(1[6-9]|20)(\.\d+)?(?![\d,\.])

2011年12月4日日曜日

今年の10大ニュース

順不同で過去ログを読みつつ

1. 日記に過去ログ○月分まとめを掲載

2. パソ編の購入。しかしISAで12/20まで
通信講座1講座+Adobe CS5.5 Design Standard (Adobe Store 製品版 198,450円)
キャンペーン価格 64,100円
でやるのが分かっていればこっちを買ったよな。実際、パソ編を使ってみるとInDesignの優秀さがよく分かる。結構アバウトなんだよなパソ編、感覚的にはPageMakerに近い。

3. DTPとは直接、関係はないが3.11大震災。MM岩手さんがご無事と知り何より。
  せうぞーさんが東日本大震災を忘れない_botを設置。

4. 一時的にDTP業界復帰、でもすぐにダメ

5. 正規表現のDTP適用事例

6. DTP要員の実態
  DTPを生業にしている人には是非とも読んでもらいたい。

7. DTPの勉強会 特別編・第2回
  この勉強会のおかげで充実した夏が送れました。ホント感謝! 
  課題のある勉強会がこんなに面白いものだとは体感した人でなければ分からない。

8. 「イライラ・ストレス」掲示板OFF会 への出席
  敬愛する掲示板の運営者、亭主こと雄さんはDTP業界とは無縁の方。
  掲示板を通して育った自分は掲示板を通して関わっていくんだろうな。
  参加者の平均年齢が高く、一番落ち着くオフ会です^^

と、ここまで挙げて9と10は何にするか悩む。

9. 愛用機がアボ~ン。
  そのため、その前に使っていたスペックの低いPCでこのblogを書いてます。

10. blogを公開するのは今年が最後。
  いや、blogは書き続けますけどね^^ 
  ただ、googleの検索に引っ掛からない設定にします。

DTP備忘録として書いてきましたが、過去ログを読み直して(現場を離れるとこんなにも違うのか)と思った次第。実際、復帰も難しいのが現実。
で、愛読しているMacでお仕事?のようにどこまでがホントでどこからが虚構なのかのblogを書こうかな^^ って感じ。内容について真に受けられても困りますので(^^;A

Macでお仕事?のblogを読んでいつも感じるのは、blogに書くようなネタってそうそうないんです。まして登場人物を「ハゲ」だの「デブ」だのって、実際、いくら仲が良くてもblogには書けんでしょう。

まぁ、そんな理由でアチキ版虚構日記を書こうと思ってるのです。

2011年11月30日水曜日

正規表現の復習 1

忘れてしまったので復習のためのメモ。
例えばOpenOffice等で作った履歴書(下図)をコピーして



エディターにペーストすると↓になるので困った。


web履歴書に書くために○○年○○月 ○○入学などとやりたい。
そこで正規表現ですよ、奥さん!
で、記憶を頼りに\d\n\dで検索して\d年\dに置換したら↓になってダメ~。


改行に対して先読み、後読みができるのかのテストも兼ねてやってみました。

(?<=\d)\n(?=\d)で検索し、(?<=\d)年(?=\d)で置換すると。。。


行末と行頭に数字がある改行のみにマッチしているのですから置換は「年」だけで良かったんですね(汗

2011年11月23日水曜日

無題(強いて付けるなら思い出とか片思い)

twitterが苦手なんです。でもやってます。TLを読んでると発狂しそうになるので1つだけ残して全て外しました(フォローしてくださっている方々、ゴメンなさい)。でも便利なことに人様の作った「リスト」というのがあります。まぁ、そのリストを登録して、こちらのペースで読んでます。
でもやはり昔の「寺」の掲示板のようでTLで流れてますので、状況がつかめません。頓珍漢なレスを付けたりする事が度々(^^A

掲示板や人様のblogを読んで育った世代ですので、愛着があります。
blogを読んでて感じるのは、仕事のことをblogに載せている方々は、いい加減な気持ちでやっているんじゃない。ということ。仕事を超えた「道」を歩んでいるのではないかということです。そういったblogを読む度、勉強や刺激になるというよりも同じ道を歩んでいる仲間がいる。といった一方的な思いを持ってました(相手に嫌われていたとしても)。そういった方々とのファーストコンタクトが掲示板でした。そして、その世界に引き込まれ、自分でもblogを書くようになりました。「茶尾」はダサいHNですけど、奥底世界の住人ですので本名以上に愛着があります。

かなりブルーな気分で書いてます。

昔、お世話になった掲示板が閉鎖される度にかなり凹みました。そしてまたひとり「仲間」が離れていくことを知り。。。

2011年11月11日金曜日

PDFだとでるバグ

あかねさんの出力の手引き15版 ついにPSがっ…………!!!
具体的に説明すると、たとえばAdobe社のアプリ。Adobeさんは新しいバージョンがでると(場合によってはでなくても)古いバージョンのバグを治さないことで有名ですが、そうやって放置されたバグのなかには「PDFだとでるバグ」ってのがある。
記述がありまして(はて? どんなバグだっけ?)と思った次第。2年半以上もブランクがありますと忘却のスピードが速く、メモったことさえ忘れてしまいますので復習。

いや、そもそもPDF運用してなかったんですね。APPEがあったところでもPS運用でしたので、PDF運用は未経験なのです。PDFデータもRIPに投げてOutlineEPSにして貼ってましたから(OutlinePDFにしなかったのは初期のRIPだったので不具合があったからと記憶)

で、そのPDFなんですけど、アプリからPDF保存するやり方とPSに書き出してからDistillerでPDFにするやり方があります。

アプリからPDF保存したPDFは吉田印刷所さんのError[エラー]-PDFのエントリー一覧にあるように様々なトラブルが発生するので、Distillerを通してのPDFをどこも推奨してます。でも、これってPDF運用ではなくPS運用だよなぁ~。一旦、PSに書き出してるんだから。。。

ただこのDistiller運用も【DTPの勉強会 第1回】の感想で引用した下図のようにCS2までの話であってCS3以降は、概ね大丈夫のよう(CS3が広まる前に業界を離れたのでよく分からんのです)。



で、あかねさんのいうPDFとはPDF/X-4であってPDF/X-1aではない。
インフォルムさんのあらためて考えるPDF/Xの出力より引用。
透明効果を許容するPDF/X-4は、透明効果がサポートされていないPostScriptとは相容れません。そのため、PDF/X-4を書き出す際は、PostScriptを書き出してDistillerでPDFに変換するという方法は使えず、必ずアプリケーションから直接書き出さなければなりません。
CS3以降はアプリからのPDF/X-4書き出しがベターみたいです。

で、EPS形式はもう古い。を読み直してます。

当たり前のように使っていたeps形式で画像リンクさせることはNGですね。

で、epsがなぜダメなのかはアンテナハウスさんのEPS(Encapsulated PostScript)に詳しく記されているので再読。

んっ? タイトルから出た疑問は解けないままだけど、まぁ宿題ということで。


追記
全部に目を通したわけではないのだが、「PDFだとでるバグ」のひとつに

Illustrator 10でPDF変換するとグレースケールがオーバープリントにならない現象について

がある。このデータをaiでinDesignに貼りPDF/x-4にしても発生するのだろうか? 確認する術がないのだが。。。まぁIllustratorから直接PDFにしたことはなかったのでこの現象に遭遇しなかっただけなのだが。

CMYKのK版≒グレースケールという運用はアプリ側でそのようにされてもいるのだが、グレースケールは本来、輝度だということを認識し、K版に変換する図式をアプリ初期の頃からやっていれば。。。とも思った。

2011年11月6日日曜日

過去ログ11月分のまとめ

2007年11月分(25投稿)
2008年11月分(17投稿)
2009年11月分(6投稿)
2010年11月分(9投稿)

2010年11月のはてなブックマークよりいくつか

[4010] #InDesign 誤ってレジストレーションのカラーを設定してしまったオブジェクトを検索する方法
CS5で互換ファイルを書き出してCS4で開くとK100がCMYK掛け合わせになったデータを簡単にチェックする方法はないものなのか?
関連:CS4とCS5は互換ではない。
   イラストレーターCS3でスウォッチが大変な事に…
   緊急避難的に危険なバージョンダウン保存するケース。CS5で作業するのが吉。 

【Illustrator】画像をパスに沿って変形する。

PDFを手軽に閲覧できるWebカタログに変換してくれるWebサービス

Mac OS X 10.6(Snow Leopard)でIllustrator、InDesignを使う際のHelvetica問題
関連:CS5 InDesignが起動しない件

【Illustrator】「形状に変換」適用中のテキストをアウトラインすると…
[2096][Illustrator]文字数が増減しても背景の塗りのサイズが自動的に変更するための設定(アピアランスの機能利用
Illustrator(イラストレーター)でアピアランスを使って窪んだテキストにする方法
文字にアピアランスを設定する前に、塗りと線をなしにしておく理由(1)
なんかこの月はやたらアピアランスをブックマしてた

/RegEx/ - 便利な正規表現、みんなで共有

なぜCMYKにプロファイルを埋め込んではいけないか
関連:Photoshopでのカラーマネージメント
   ICCプロファイルについて←こいつは良エントリーだった

赤字Quest(答):角丸の統一
関連:[2105] #Illustrator で角丸の四角形を作るときの基本的な作法

手放せないユーティリティ10個


近況報告
引き篭もりモードに入ってます。誰か、遊んでください。ってか、DTPのアルバイトすら見つからない現状はどうにかならんのかね。フェードアウトで消えそうな今日この頃。

2011年10月18日火曜日

【習作】ラジオボタン

ドキュメント全体のテキストフレーム処理をラジオボタンにしてみた。



var d_Obj=app.dialogs.add({name:"テキストフレーム処理"});
var d_Column=d_Obj.dialogColumns.add();
var rbg=d_Column.radiobuttonGroups.add();
rbg.radiobuttonControls.add({staticLabel:"テキストをBlackに"});
rbg.radiobuttonControls.add({staticLabel:"テキストを正体に"});
rbg.radiobuttonControls.add({staticLabel:"フレームをフィット"});
rbg.radiobuttonControls.add({staticLabel:"テキストBlack&正体に"});
rbg.radiobuttonControls.add({staticLabel:"テキストBlack&フレームフィット"});
rbg.radiobuttonControls.add({staticLabel:"テキスト正体&フレームフィット"});
rbg.radiobuttonControls.add({staticLabel:"全て処理",checkState:false});
d_Obj.show();

var inObj = app.activeDocument;
for(var i=0 ; i<inObj.allPageItems.length; i++) {
if(inObj.allPageItems[i].constructor.name =="TextFrame") {
switch(rbg.selectedButton) {
case 0 : inObj.allPageItems[i].parentStory.fillColor="Black"; break ;
case 1 : inObj.allPageItems[i].parentStory.horizontalScale=100;
inObj.allPageItems[i].parentStory.verticalScale=100; break ;
case 2 : inObj.allPageItems[i].fit(FitOptions.FRAME_TO_CONTENT); break ;
case 3 : inObj.allPageItems[i].parentStory.fillColor="Black";
inObj.allPageItems[i].parentStory.horizontalScale=100;
inObj.allPageItems[i].parentStory.verticalScale=100; break ;
case 4 : inObj.allPageItems[i].parentStory.fillColor="Black";
inObj.allPageItems[i].fit(FitOptions.FRAME_TO_CONTENT); break ;
case 5 : inObj.allPageItems[i].parentStory.horizontalScale=100;
inObj.allPageItems[i].parentStory.verticalScale=100;
inObj.allPageItems[i].fit(FitOptions.FRAME_TO_CONTENT); break ;
case 6 : inObj.allPageItems[i].parentStory.fillColor="Black";
inObj.allPageItems[i].parentStory.horizontalScale=100;
inObj.allPageItems[i].parentStory.verticalScale=100;
inObj.allPageItems[i].fit(FitOptions.FRAME_TO_CONTENT); break ;
default : break ;
}
}
}


で、選択アイテムだけを処理するとなると結構ムズイ。
カネムーさんのpageItemsとallPageItemsをパクらせていただきました。
パクっただけで読み解けてません(^^;

var d_Obj=app.dialogs.add({name:"選択テキストフレーム処理"});
var d_Column=d_Obj.dialogColumns.add();
var rbg=d_Column.radiobuttonGroups.add();
rbg.radiobuttonControls.add({staticLabel:"テキストをBlackに"});
rbg.radiobuttonControls.add({staticLabel:"テキストを正体に"});
rbg.radiobuttonControls.add({staticLabel:"フレームをフィット"});
rbg.radiobuttonControls.add({staticLabel:"テキストBlack&正体に"});
rbg.radiobuttonControls.add({staticLabel:"テキストBlack&フレームフィット"});
rbg.radiobuttonControls.add({staticLabel:"テキスト正体&フレームフィット"});
rbg.radiobuttonControls.add({staticLabel:"全て処理",checkState:false});
d_Obj.show();

selObjs=app.activeDocument.selection;
groupLoop=function(objs){
for(var i=0; i<objs.length; i++){
var obj=objs[i].getElements()[0];
if(obj.constructor.name=="Group"){
var groupObjs=obj.pageItems;
arguments.callee(groupObjs);
}else{
if(obj.constructor.name=="TextFrame"){
switch(rbg.selectedButton) {
case 0 : obj.parentStory.fillColor="Black"; break ;
case 1 : obj.parentStory.horizontalScale=100;
obj.parentStory.verticalScale=100; break ;
case 2 : obj.fit(FitOptions.FRAME_TO_CONTENT); break ;
case 3 : obj.parentStory.fillColor="Black";
obj.parentStory.horizontalScale=100;
obj.parentStory.verticalScale=100; break ;
case 4 : obj.parentStory.fillColor="Black";
obj.fit(FitOptions.FRAME_TO_CONTENT); break ;
case 5 : obj.parentStory.horizontalScale=100;
obj.parentStory.verticalScale=100;
obj.fit(FitOptions.FRAME_TO_CONTENT); break ;
case 6 : obj.parentStory.fillColor="Black";
obj.parentStory.horizontalScale=100;
obj.parentStory.verticalScale=100;
obj.fit(FitOptions.FRAME_TO_CONTENT); break ;
default : break ;
}
}
}
}
}

groupLoop(selObjs);

2011年10月10日月曜日

【習作】テキストフレームを内容に合わせる

ドキュメント上の全てのテキストフレームがフィットします。
グループ化されたテキストフレームも含む。
var tfObj=app.activeDocument.textFrames;
for(var i=0; i<tfObj.length; i++){
tfObj[i].fit(FitOptions.FRAME_TO_CONTENT);
}

var grObj = app.activeDocument.allPageItems;
for (var i=0; i<grObj.length;i++){
var grTF = grObj[i].textFrames;
for (var j=0; j<grTF.length; j++){
grTF[j].fit(FitOptions.FRAME_TO_CONTENT);
}
}



複数選択した場合(どんな時に使うのか分かりません)
var selObj = app.activeDocument.selection;
for(var s =0 ; s<selObj.length; s++) {
if(selObj[s].constructor.name =="TextFrame") {
selObj[s].fit(FitOptions.FRAME_TO_CONTENT);
}
}

for (var i=0; i<selObj.length;i++){
var grObj=selObj[i].allPageItems;
for (var g=0; g<grObj.length; g++){
if(grObj[g].constructor.name =="TextFrame") {
grObj[g].fit(FitOptions.FRAME_TO_CONTENT);
}
}
}

太字部分を変えればいろいろできる^^ 例えば、
**Obj[*].parentStory.verticalScale = 100;
**Obj[*].parentStory.horizontalScale = 100;
にすればテキストが正体に戻せる。
**Obj[*].parentStory.fillColor = "Black";
にすればテキストがBlackに。

追記:ラジオボタンなら上記の3つ(合わせ処理で計6つ)選べたら便利^^ と思いチャレンジしたが、やり方が悪いのか知らんが、グループテキストフレームと普通のテキストフレーム処理の2つを処理することができなかった。スクリプトで出来るのだからラジオボタンを使ってもできるはずだと思ってる。

再追記:ひとつにまとめられた!
var selObj = app.activeDocument;
for(var s =0 ; s<selObj.allPageItems.length; s++) {
if(selObj.allPageItems[s].constructor.name =="TextFrame") {
selObj.allPageItems[s].fit(FitOptions.FRAME_TO_CONTENT);
}
}

2011年10月8日土曜日

過去ログ10月分のまとめ

2007年10月分(15投稿)
2008年10月分(14投稿)
2009年10月分(6投稿)
2010年10月分(9投稿)

2010年10月のはてなブックマークよりいくつか

Unicode正規化
Safely Composite「文字の濁点や半濁点などがバラバラになっているのを修正する」

ConvertX
ドラッグ&ドロップでファイルの拡張子を一括変更

画像から使用フォントを検索してくれるWEBサービス「myfonts」

Mac OS X 10.6(Snow Leopard)でIllustrator、InDesignを使う際のHelvetica問題
Mac使ってないから、この問題はすぐ忘れる。

正規表現を使ってテキストをいじる3.0

フォントの文字のGIDやUIDを確認する
winにこのようなツールがないのが残念。ちなみにGIDの説明

単位変換
おっと、こいつで思い出した。下記のwebサービスは便利^^
HTMLタグ文字実体参照(文字参照)変換ツール
文字列を数値文字参照に変換
異体字検索
CMYKをDICに変換

[ppi]ブラウザ印刷とスクリーン解像度の不思議な関係
もう一度、読み直す。

フォントインストーラー SAKURA

Tutorial_ハートのパターンを作る

DTPToolBox

まとめてマスク。

ESTKのデータブラウザでプロパティを探す

イラストレーター、InDesign の使い方 - 入門編ガイド

Everything
驚くほど早くファイル検索してくれる。お勧め^^ 以前にもblogにメモしていた気がするがもう一度。

2011年9月17日土曜日

DTPの勉強会 特別編・第2回

いや~、素ん晴らしいセミナーでした(ひたすら絶賛!

ググって人様のスクリプトをほんのちょこっと弄って参加したアチキには、非常~~に勉強になりました。特に感動したのが「総当たり」。この考え方は初心者にとって非常に勉強になりますですです。

お題のヒント2で「総あたり」の言葉を見ましたけど、(総当たりって何?)状態だったんです。ググって見つかった答え以外にやり方の知らないアチキには目からウロコ。

このやり方というか考え方はあまりwebで見かけることのなかった基本なんですね。検索でヒットするのはどうしても上級者の高度なやり方。順を追って解きほぐすこのやり方は、頭を整理して問題をひとつひとつ解いていく。初心者にとって非常に理解しやすいやり方で頭がスッキリします。

課題4は古旗さんの文章中の価格に消費税を加算する (Adobe InDesign & Illustrator CS3/CS4編)を99%流用して終えましたが、前々日あたりになって「1,000円」が「1,10円」になることに気づく。致命的な欠陥。でもどうにもならない。

セミナーでは古旗さんやり方では価格の前にインライングラフィックがあった場合、消えることを理論的に説明、かつ実演されました。ここのところをもっと詳しく聴きたかった。

というのも古旗さん方式では全差し替えなのでテキストの装飾やインラインは消える可能性がある(というより見事に消えた)とレジュメに書いてありましたが、初心者はどういう記述だからそうなるのか分からんのです。
急ぎ足で終わってしまったことが残念でならない。進め方として質問は最後にまとめてが良かったんじゃないかなぁ~。

とはいえ、足りない部分は写経で追っかけていくか。せうぞーさんの名言
絵描きになるための最初の練習が模写であるように、プログラミングの最初の練習は写経だと思う。コードを眺めてわかったような気になる人はずっと書けないままだ。よい教科書を選んでひたすら打つべし、打つべし!
この意味がやっと分かってきた。打つことによって自分がどこにいて、何をしたいのかが分かってくる。頭の中のモヤモヤが整理されてくる。手本コードを見ないで打つにはそれが必要となってくる。

課題4のレジュメにはカル姫様の書き方の他にNAOIさんのも紹介されてた。他の人の書き方を模写することも大事。その意味でkmutoさんの回答リンクが404 Not Foundなのが残念でならない。一度、blogに上げたものは消さないで欲しいなぁ~

翌日追記;twitterにて連絡いただきました。見事復活しました(バンザ~イ
@zi_chao 自分の課題回答のリンクが壊れていたのは事故です! 課題2の修正も含めて直しておきました。d.kmuto.jp/20110820.html#… #dtpstudySP2


セミナーの休憩時間、macneko_ayuさんに「お~まちさんのObject Model図の読み方教えてよ~」とお願いして家に着いたら早速blogに「オブジェクトモデルビューアってわかんないよね」がupされてました。ありがとね~^^ でもやっぱよく分かんない(^^;A

最後に主催者のあかつきさん、ありがとね~。ホントいい企画でした^^ 講師のたけうちとおるさん、ホント勉強になりました。もっとお話ししたかったんですけど、金欠のため懇親会は遠慮させていただきました<(_ _)> この企画で充実の夏が送れました^^ もっとお題を出して欲しいですw

2011年9月6日火曜日

過去ログ9月分のまとめ

2007年9月分(20投稿)
2008年9月分(8投稿)
2009年9月分(3投稿)
2010年9月分(8投稿)

2010年9月のはてなブックマークよりいくつか

JavaScript初級者から中級者になろう
 チェックしたけどまだ読んでなかったのだ(^^;

背幅換算表
 ページ数と背幅の厚さは、中綴じの時に内側に食い込む数値に近似してる。
関連:私が InDesign CS5 を勧める最大の理由

「仮想ボディの高さ」に直すスクリプト
QuarkXPress→InDesignコンバートは済んでるだろうけど、javascriptの勉強用に。

画像を綺麗に拡大するフリーソフト「SmillaEnlarger」がすごい
 無料ですから^^

ピクセルグリッドちゃん気をつけて
 Illustrator CS5から付いた「ピクセルグリッドに整合」という余計な機能

Mac・PCのトラブルやデータ復旧などのサポートもトクプレ.にお任せ!
 印刷用のトラブルデータの修復がないのが惜しい!

用紙・規格サイズ

標準案内用図記号

Mac OS Xの定期的なメンテナンス方法

続・8Q70%(+スクリーニング)
 文字だけじゃないんだよね。0.1mmの罫線、角度40°、網50%を175線で出力したらどうなるか。デザイナーは特に知って欲しい。

PDFのフォント環境
 エンコーディングが「ビルトイン」になっている場合、文字化け発生比率が高い。ビルトインになる原因が分からない。受け取っていた側だから。

効率化のヒント5
 javascriptでルビ振りが出来るんだから化学式の数字の下付きも出来るよな。

Illustratorのスポイトツールオプションはデフォルトでアピアランスがオフになっている
 忘れそうなので再度、メモ。

2011年8月30日火曜日

見えてきた自分の課題

せめてグループルビだけは自分で何とかなるだろうと、お~まちさんのInDesign Object Model CS-CS5.5を参考にやってみました。


app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = "作成方法";
var inObj = app.activeDocument.findGrep();
for (var i = inObj.length - 1; i > -1; i--) {
try {
inObj[i].rubyFlag = true;
inObj[i].characters[0].rubyFlag = true;
inObj[i].characters[0].rubyType=GROUP_RUBY;
inObj[i].characters[0].rubyString = "さくせいほうほう";
;
} catch(inObj) {}
}
はい、当然のごとく動きません。
rubyType = RubyTypes.GROUP_RUBY;でなければならんみたいです。で、
inObj[i].characters[0].rubyFlag = true;
inObj[i].characters[0].rubyType=RubyTypes.GROUP_RUBY;
inObj[i].characters[0].rubyString = "さくせいほうほう";
だと「作」にグループルビが付いてしまいます。またググる。寺の「ルビについて」に辿り着きました。characters[0]が余計だったんですね。お~まちさん、ありがとうございます。でも、どうしてそうなるのか分かるような分からんような。。。
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = "作成方法";
var inObj = app.activeDocument.findGrep();
for (var i = inObj.length - 1; i > -1; i--) {
try {
inObj[i].rubyFlag = true;

//↓GROUP_RUBYにしても動く。
inObj[i].rubyType = RubyTypes.groupRuby;
inObj[i].rubyString = "さくせいほうほう";
inObj[i].rubyAlignment = RubyAlignments.rubyFullJustify;

} catch(inObj) {}
}

と、まぁ他人の褌で相撲を取る以前のレベルで課題を終えたのだが、一からやるとなるとひとつの課題さえ終わらなかったことは間違いない。数学に公式、英語に単語、基本文法。これが叩き込まれて「打つべし、打つべし!」の段階に入るのだが、それすら入っていない。Object Model図の読み方、使い方さえ分からないまま。

今まで自分がやっていたことはwebにある人様のスクリプトを眺めていただけ。しかし、それは応用問題の解であって、公式が頭の中に入っていれば、整理でき、どの公式を使っているのか分かる。入っていないと分からない。なにが公式、文法なのかさえ分かっていない、それが今の自分。自分自身の至らなさを知るにいい機会となった。と、同時に先駆者の凄さが改めて分かる。

今回の大きな収穫は公式となるサイトに出会えたことだろう。
さて、頭の中を空にしてもう一度、一からやるか、終わらないだろうけど。。。


2011年8月28日日曜日

お題3に燃料投下されて

8月18日、#dtpstudySP2にNAOIさんが燃料投下
8月20日、続けてkmutoさんが燃料投下

ひと通り課題を終えて安心しきっていたアチキは自分の大きな勘違いに気づく。
お題3って人様の作ったスクリプトを使ってはダメなんだ~。コメント欄を読むと
「ドキュメントの文字すべてを対象にして、指定した文字にルビをつける」というテーマでしょうか? ものすごく難易度が高いっすね! 宿題の想定レベルをはるかに超えてます!
kmutoさんは
「楽しく」の「楽」だけを正規表現で取り出すのはちょっとコツがある。それが後方肯定「(?=STRING)」。これで、文字列としては「楽しく」に一致するけれども「マッチした文字列」として返されるのが「楽」だけ、という挙動を実現できる。
ということは「楽チンな楽曲を選んで楽しく演奏♪」の楽しく部分にだけルビを振るというお題だったのかぁ~~~(絶叫 しかも「ドキュメントの文字すべてを対象にして、指定した文字にルビをつける」というテーマなら、もう無理、無理。古旗サイトや本を参考にしたけど全滅。
実際、選択された文字が特定の文字の場合のみルビを振るを正規表現を使って書き換えてみたけど動作しない。↓
sel = app.activeDocument.selection;
chr = sel[0].characters[0];
if (chr.contents == "楽(?=しく)" )
{
chr.rubyFlag = true;
chr.rubyString = "たの";
}

以下は失敗例のひとつ
var txtObj=app.activeDocument.selection[0];
str = "楽しく";
chr = str.charAt(0);
txtObj.contents = "楽";
txtObj.characters[0].rubyFlag = true;
txtObj.characters[0].rubyString = "たの";
//↑これだとテキストフレーム内の文字が楽(たの)に替わってしまい、他部分が削除されてしまう。裏づけ理論無しに適当に探して弄ったからどうしてそうなるのか分からない。


んで、困っていた。
NAOIさんのコメント欄を見るとカル様のライブラリのアイテムを自動で配置する(InDesign CS3~)が紹介されていた。正規表現を使ってテキストをライブラリアイテムに検索・置換するものだから、応用できそう(^^

ふむ、正規表現を使う場合は

app.findGrepPreferences = NothingEnum.nothing;

と宣言する必要があるようだ。Adobe InDesign CS4 Scripting Guideのp90にも載っている。でもどう書き換えたらいいか分からない。。。orz

そこでapp.findGrepPreferences = NothingEnum.nothing;でググる。

インライングラフィックをファイル名に置き換える

に辿り着く。

こっ、これはカル様の逆パターンなのでは。で、構文が短い^^ これは試す価値はある。
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = "~a";
var inObj = app.activeDocument.findGrep();
for (var i = inObj.length - 1; i > -1; i--) {
try {
inObj[i].contents = inObj[i].allGraphics[0].itemLink.name;
} catch(inObj) {}
}
赤字部分に検索文字、青字部分をルビ付きに置き換えた。
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
//9/11追記:以下は正規表現が違ってました。
app.findGrepPreferences.findWhat = "楽(=?しく)";

//9/11追記:こちらが正解(^^;
app.findGrepPreferences.findWhat = "楽(?=しく)";
var inObj = app.activeDocument.findGrep();
for (var i = inObj.length - 1; i > -1; i--) {
try {
inObj[i].characters[0].rubyFlag = true;
inObj[i].characters[0].rubyString = "たの"
;
} catch(inObj) {}
}
で動いた。ヾ(〃^∇^)ノわぁい♪

でもどうしてそうなるのか分からない。分からないがこの構文は暗記するに値するものだということは分かる。かなり応用の利きそうな素敵なスクリプトです^^

ps. 余談です。楽(=?しく)をエディタの正規表現で検索すると楽しくにマッチするのはどうしてでしょう? 正規表現を正確に反映してくれるエディタを探してます。

9/11自分で気付く:正規表現が間違っていたから。。。orz 楽(=?しく)は間違い楽(?=しく)が正解。それでもJavaScriptでマッチするのはど~ゆ~理由???

8/31追記:フレーム選択で置換したい時は4行目を
var inObj = app.activeDocument.selection[0].findGrep();
にする。

さらに追記:ドキュメント全体、1つのテキストフレームの処理は上記でOKだが、複数選択された場合は[InDesign][JavaScript]【改変】テキストを正体に戻すを参考に冒頭に以下を加え
var selObj = app.activeDocument.selection;
var textFrameCount = 0 ;
for (s = 0 ; s < selObj.length ; s++) {
if (selObj[s].constructor.name =="TextFrame") {
textFrameCount ++ ;
var inObj = app.activeDocument.findGrep(); を
var inObj = selObj[s].findGrep(); に書き換える。

2011年8月27日土曜日

JavaScriptが分からなくともお題は解ける

麻雀に先付け、後付けがあるように、勉強法にも演繹的勉強法、帰納法的勉強法があります。愛だって、とりあえずやってから愛が生まれることもあります。まずはやっちゃいましょう^^

アチキの場合、Scriptに関しては「ど素人状態」。それでも何とか終えました。
やり方はただひとつ。ひたすらググる。ググりさえすれば答えが見つかるいい時代^^
スクリプトの緑部分はアチキの弄ったとこです。

お題1 ・テキストフレームの中のテキストを上下センターにする
古旗さんのテキストフレーム内の文字を天地中央に配置する段落の位置揃えを指定するを合体してみる。
pageObj = app.documents.add();
txtObj = pageObj.textFrames.add();
txtObj.visibleBounds = ["2cm","1cm","4cm","10cm"];
txtObj.contents = "天地中央に自動的にレイアウトします。";
txtObj.textFramePreferences.verticalJustification = VerticalJustification.centerAlign;
txtObj.paragraphs[0].justification = Justification.centerAlign;
これだと新規にドキュメントが作成され、左上2cm、1cmに高さ4cm、幅10cm(x=10, y=20)、右下(x=100, y=40)のテキストフレームが作られ「天地中央に自動的にレイアウトします。」の文字が天地左右のセンターになる。

ちと余計だな。。。意図は選択されたテキストフレーム内の文字を天地左右センターにしたいのだから、、、
txtObj = app.activeDocument.selection;
txtObj.textFramePreferences.verticalJustification = VerticalJustification.centerAlign;
txtObj.paragraphs[0].justification = Justification.centerAlign;
としてみる。こんなに簡単ではないはず。案の定、エラー発生。

ならばとテキストフレームのみ選択するに書き足してもエラー。

どうする?? しばらく考える。



とりあえず選択されたフレーム内のテキストを左右センターするに絞ってやってみる。

txtObj = app.activeDocument.selection;
txtObj.paragraphs[0].justification = Justification.centerAlign;

だとエラーになるので「Justification.centerAlign」でググる

はいさい!の画像フレームのフィットオプションがhit! で、弄った!
var frame = app.activeDocument.selection[0];
frame.parentStory.justification = Justification.centerAlign ;
で動作します^^
なんでparagraphsはダメでparentStoryならOKなのか分かりませんです。
続行、最後に天地センターを加えて
var frame = app.activeDocument.selection[0];
frame.parentStory.justification = Justification.centerAlign ;
frame.textFramePreferences.verticalJustification = VerticalJustification.centerAlign;
で完成^^

8/28追記:合体したスクリプトが動かなかった原因はtxtObj = app.activeDocument.selection;がだったから。
txtObj = app.activeDocument.selection[0]; で動きます。で、txtObj.paragraphs[0].justification = Justification.centerAlign;は単数行ならOKなのですが、複数行ですとparentStoryでないとダメみたいです。

8/31追記:上級編は公式を使った。
var frame = app.activeDocument. textFrames;
for (var i = frame. length - 1; i > -1; i--) {
try {

frame[i].parentStory.justification = Justification.centerAlign ;
frame[i].textFramePreferences.verticalJustification = VerticalJustification.centerAlign;
} catch(frame) {}
}


お題2の1 ・1つのテキストフレームを右へ10mm移動
はいさい! フレームサイズの取得に辿り着けばお題は終わり。
var frame = app.activeDocument.selection[0];
var y = frame.visibleBounds[0];
//左上
var x = frame.visibleBounds[1];
//左上
var y1 = frame.visibleBounds[2];
//左下
var x1 = frame.visibleBounds[3];
//左下 x1
frame.visibleBounds = [ frame.visibleBounds[0], frame.visibleBounds[1]+10, frame.visibleBounds[2], frame.visibleBounds[3]+10];
ちと弄って出来ました^^ ただ単位がmmになってるので出来たわけでして、単位がptだと10ptになってしまいます。アチコチ弄りましたが結局ダメ。
Adobe InDesign スクリプティングチュートリアルを読むと、最初に
app.activeDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.millimeters;
app.activeDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.millimeters;
と宣言するみたいです。で、このたった2行で動作するのは感動ものです。

8/31追記:varで宣言しているのだから、frame.visibleBounds=[y, x+10, y1, x1+10];とするべきだな。

再追記(重要):InDesignでJavaScript その7を参考に
var frame = app.activeDocument.selection[0];
frame.move("by",["10mm","0mm"]);
の2行だけで移動できた^^ 


お題2の2 ・2つのテキストフレームの間隔を3mmにする
ここまでくるとお題ははいさい!から出されているんだなとアチキでも気付きます^^ で、こいつは選択しているアイテムを整列させる(等間隔に分布編)
app. activeDocument. distribute (app. activeDocument. selection, DistributeOptions. HORIZONTAL_SPACE, AlignDistributeBounds. MARGIN_BOUNDS, false) ;
を弄ってみます。
app. activeDocument. distribute (app. activeDocument. selection, DistributeOptions. VERTICAL_SPACE, AlignDistributeBounds. ITEM_BOUNDS, false) ;
にすると垂直方向に等間隔に分布されます。
app. activeDocument. distribute (app. activeDocument. selection, DistributeOptions. VERTICAL_SPACE, AlignDistributeBounds. ITEM_BOUNDS, true, absoluteDistributeMeasurement=3) ;
にして垂直方向間隔3mmが完成。
ここは=3) ;を="3mm") ;にすると数値がpt表示でも問題なく動作。


お題3 ・テキストフレーム内の文字「楽しく」にルビをふる
     ・「作成方法」にルビをふる(グループルビ)
こいつは設問の意図を読み間違え、たけうちとおるさんのruby.zipでワ~イ、動いた^^ と喜んでいた。そんなに簡単なわけがない。結構、探すのに難儀したので、後日、書きます。


お題4 ・テキストの中の値段をすべて10円アップする
このお題を見てパッと浮かんだのが消費税。消費税込みの価格は価格*1.05だから*1.05を+10にすればいいだけなのでは? 
「InDesign javaScript 消費税」でググれば古旗さんの

文章中の価格に消費税を加算する (Adobe InDesign & Illustrator CS3/CS4編)がヒットします。
var selObj = app.activeDocument.selection[0]; // 最初に選択した数値のみ処理
var txt = selObj.contents;
selObj.contents = txt.replace(/\d+円/g, repFunc);

function repFunc(n){
n = parseInt(n);
n = n * 1.05; // 消費税5%を乗算する
n = Math.round(n);
return n+"円";
}
n = n * 1.05; をn = n + 10; に書き換えて完成~^^

追記:実際に動かしてみると「1,000円」は「1,10円」になってしまう。

で、先頭に円マークのある価格は
var selObj = app.activeDocument.selection[0]; // 最初に選択した数値のみ処理
var txt = selObj.contents;
selObj.contents = txt.replace(/\\d+/g, repFunc);

function repFunc(n){
n = parseInt(n.substring(1,9999));
n = n * 1.05; // 消費税5%を乗算する
n = Math.round(n);
return "\"+n;
}
なのでひとつにまとめてみようと思ったが、return "\"+n;で

エラー番号:4、終了していない文字列型の定数です

のアラートが出る。まぁバックスラッシュと円マーク絡みだし、こちとらWinXP環境だし。。。そんなわけで終了。

あとは、どうしてこうなるのかの理解なのだが、とりあえずやってしまうと気が抜けていまいち勉強する気にならんのがアチキの欠点。体目当てでやるのが目的ではないのだが(オイ

2011年8月21日日曜日

ルビ振りwebサービスのメモ

お題の3をやってる時に辿り着いたルビ振りwebサービス。

ふりふり

win版InDesignを前提にしてるためヘッダ部分が
<UNICODE-WIN>
<Version:5><FeatureSet:InDesign-Japanese><ColorTable:=<Black:COLOR:CMYK:Process:0,0,0,1>>
<pstyle:>
になってますがMac用に書き換えれば使えると思います。
ルビはグループルビになります。こんな感じ↓


ZERO MEGA
http://www.0mega.jp/demo/sample001.php

ルビタグが付けられるものの、そのまま取り込んでも反映されません。
ヘッダを付けるだけでなく、エンコードも指定しなければなりません。こんな感じ↓


で、この特徴はモノルビで取り込まれます。
ただし、区切り位置を判断できないため、最初の一文字の漢字にルビが付きます。
個人的にはこれがお薦めです。
一般向け。常用漢字にはふりがなをつけません。の設定がありますから。
何よりもモノルビで取り込まれますから、スペースを入れるべき不自然な箇所が一目瞭然。校正しつつスペース入力、グループルビに変更したりするのがベターなのでは?

2011年8月17日水曜日

日本語として通じないダミーテキストの重要性

以前、ダミーテキストとして使用するには和欧混の 組見本用創作文『問わずがたりの洋酒外史』 がいいんじゃないかと思っていたんです。

しかし、第10回 カンプ用のダミーテキストを用意する を読みまして考え方が変わりました。
デザインカンプ用として作ったInDesignデータが,そのまま印刷用のデザインデータとして使われることも多いはずです。パンフレットのデザインなどでは,テキストフレームの数も多く,ダミーテキストを実際のテキストへと差し替えないまま,ダミーテキストの状態で出校するような手違いも起こりがちです。
[サンプルテキストの割り付け]で流し込むダミーテキストを,通常は,使うことのないような文章にしておけば,ダミーテキストのセンテンスを使って検索し,点検ができ,ダミーテキストの「置き忘れ」のようなトラブルを防止することができます。
実際、「ダミーテキスト」と入力されたまま、印刷された例をtwitterで見かけたこともあります。原因はダミーテキストが日本語として意味が通ってしまい、スルーしてしまうことにあったのではないでしょうか? 逆に意味不明の言葉であったならスルーすることなく、的確な赤字が入ったと思います。

で、思い出したのが
たけうちさんの10)文字を適当に置き換え(危)

最初、これを見た時、暗号ゴッコの遊びにしか使えず実用性ゼロと思っていたのですが、ダミーテキスト作成に使えます。というか、それ目的だったのでは?

他にもmilligramme 3ccさんが [InDesign]文字コードをずらすScriptUIパレット を出されてます。こちらは
ダミーテキストをつくったりくらいには使えるかもしれません。
と発言されてますので、ダミーテキストは意味不明でなければならないと知ってのことだと思います。

人間心理に基づいたデータ作成の重要性を知らされました。


追記:たけうちさんのとこにも「ダミー文字作成にどうぞ。」って書いてありました(^^;

2011年8月16日火曜日

竹とんぼを改変

勉強会に向けて良質な勉強用のサンプルスクリプトが見つからなかった。
そういえば、せうぞーさんが最初に作ったスクリプトは「糸トンボ」だった(本人談)話を思い出し、たけうちさんの30)InDesignトンボ(別名:竹とんぼ)を見て改変(改竄?)した記録。読み解けなかったところが多々あったけど、とりあえず動いたからOKか?

読んでて思ったのはもの凄い高度なことをしてトンボを作成してるなってこと。ほとんどガクブルの世界です。それでも、塗り足しを含んだ絵柄にトンボを付ける時はどうするの? 当然、縮小して貼るわけだからトンボの数値は3ミリじゃないよね。なんてことを思いまして、ドブを含んだ絵柄にトンボを付けて見ました。

緑部分は変えたとこ。最初にミリ設定をしてるのは、ポイント設定の画面だとポイント数値で作成されてしまうから。またセンタートンボのサークルは塗りが反映されるため削除しました。


//########################
//塗り足しを含んだ選択ボックスにトンボをつける
//塗りたし数値は可変のため入力
//たけうちとおるさんのスクリプトの改変
//########################

//環境設定の単位をミリにする
app.activeDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.millimeters;
app.activeDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.millimeters;

//ドブの数値
var dobu = prompt("塗り足しの数値を入力するのだ","");


lineW=0.05;
var myAry=new Array();
selObj = app.activeDocument.selection;
//var myspread = app.activeWindow.activeSpread;
if(selObj.length < 1){
alert("オブジェクトを選択してください。");
}else{
var myRegistrationColor = app.activeDocument.colors.item("Registration");

X1 = selObj[0].geometricBounds[1];
Y1 = selObj[0].geometricBounds[0];
X2 = selObj[0].geometricBounds[3];
Y2 = selObj[0].geometricBounds[2];
W=X2-X1;
H=Y2-Y1;

//左上横トンボ
myAry[0]=drowLine(X1,X1-10,Y1,Y1,lineW,myRegistrationColor);

//線の複製
myAry[1]=myAry[0].duplicate(undefined,[0,(dobu) ]);

//左上縦トンボ
myAry[2]=drowLine(X1,X1,Y1-10,Y1,lineW,myRegistrationColor);
myAry[3]=myAry[2].duplicate(undefined,[(dobu),0 ]);

//上センター
myAry[4]=drowLine(X1+W/2,X1+W/2,Y1-10,Y1,lineW,myRegistrationColor);
myAry[5]=drowLine(X1+W/2-5,X1+W/2+5,Y1-4,Y1-4,lineW,myRegistrationColor);

//右上
myAry[6]=drowLine(X2,X2+10,Y1,Y1,lineW,myRegistrationColor);
myAry[7]=myAry[6].duplicate(undefined,[0,(dobu) ]);
myAry[8]=drowLine(X2,X2,Y1-10,Y1,lineW,myRegistrationColor);
myAry[9]=myAry[8].duplicate(undefined,[-(dobu),0 ]);
//左センター
myAry[10]=drowLine(X1-10,X1,Y1+H/2,Y1+H/2,lineW,myRegistrationColor);
myAry[11]=drowLine(X1-4,X1-4,Y1+H/2-5,Y1+H/2+5,lineW,myRegistrationColor);
//右センター
myAry[12]=drowLine(X2,X2+10,Y1+H/2,Y1+H/2,lineW,myRegistrationColor);
myAry[13]=drowLine(X2+4,X2+4,Y1+H/2-5,Y1+H/2+5,lineW,myRegistrationColor);
//左下
myAry[14]=drowLine(X1-10,X1,Y2,Y2,lineW,myRegistrationColor);
myAry[15]=myAry[14].duplicate(undefined,[0,-(dobu) ]);
myAry[16]=drowLine(X1,X1,Y2+10,Y2,lineW,myRegistrationColor);
myAry[17]=myAry[16].duplicate(undefined,[(dobu),0 ]);

//下センター
myAry[18]=drowLine(X1+W/2,X1+W/2,Y2+10,Y2,lineW,myRegistrationColor);
myAry[19]=drowLine(X1+W/2-5,X1+W/2+5,Y2+4,Y2+4,lineW,myRegistrationColor);
//右下
myAry[20]=drowLine(X2,X2+10,Y2,Y2,lineW,myRegistrationColor);
myAry[21]=myAry[20].duplicate(undefined,[0,-(dobu) ]);
myAry[22]=drowLine(X2,X2,Y2+10,Y2,lineW,myRegistrationColor);
myAry[23]=myAry[22].duplicate(undefined,[-(dobu),0 ]);

app.activeWindow.activeSpread.groups.add(myAry);
}
function drowLine(X1,X2,Y1,Y2,lineW,myRegistrationColor){
myLine=app.activeWindow.activeSpread.rectangles.add();
myLine.paths.item(0).entirePath=[[X1,Y1],[X2,Y2]];
//myLine.filled=false;//CS2未サポート
//myLine.stroked=true;//CS2未サポート
myLine.strokeWeight=lineW;
myLine.strokeColor=myRegistrationColor;
return myLine;
}

2011年8月7日日曜日

サンプルスクリプトの整理

ガイドを引くAdobeのスクリプトはCS1からあるよー。たしか別のCD-ROMの中にサンプルとして入ってたような。
なんて発言を目にしまして、確認しました(^^;
今までネットに上がっているスクリプトは知っていたのですが、アプリに添付されてるスクリプトには目もくれてませんでした。そんなわけで一覧作成。

AddGuides.jsx選択したフレームにガイドライン作成
AddPoints.jsxパスのほぼ中間点にポイントを追加


AdjustLayout.jsx偶数ページ、奇数ページ内の全アイテムを指定数値分、移動
Even Pagesは偶数ページ、Odd Pagesは奇数ページ




AlignToPage.jsxアイテムをページの指定場所に揃える
BreakFrame.jsxストーリー内のテキストフレームの全てを分割とあるが
CornerEffects.jsx四角形の2点を角丸にできる
CreateCharacterStyle.jsx選択文字を文字スタイル登録
CropMarks.jsxアイテムにトンボ作成
ExportAllStories.jsx全てのテキストフレーム内のテキストを書き出す
FindChangeByList.jsx空白タブ削除、--を―に置換
ImageCatalog.jsx選択フォルダにある画像全てをファイル名と一緒に配置
LabelGraphicMenu.jsx右クリックメニューにLabelGraphicが追加される
LabelGraphics.jsx画像下にファイル名などが作成される
MakeGrid.jsxフレームを分割
Neon.jsxグラデションのフレーム枠作成
PathEffects.jsxパスの変形
PlaceMultipagePDF.jsxエラーのため試せず
SavePDF_PS_Package.jsxPS、PDF、パッケージ保存(遅い)


SelectObjects.jsxチェックされた項目を選択


Rectangles(長方形)、Ellipses(楕円)、Polygons(多角形及びベジェ曲線)、Graphic Lines(直線)他は省略。



SortParagraphs.jsx段落を逆順に
SplitStory.jsxバラ行にしてくれるのかと思ったが動作せず
TabUtilities.jsxタブの位置をどうにかしてくれるらしい


読み解けばカスタマイズできそうな気にもなるが、いかんせんコードが長すぎて読む気になれない。
 
 

過去ログ8月分のまとめ

2007年8月分(25投稿)
2008年8月分(5投稿)
2009年8月分(7投稿)
2010年8月分(2投稿)

2010年8月のはてなブックマークよりいくつか

[AppleScript]フォルダのアクセス権を変更する
【まとめ】MacOSXのデフォルト・アクセス権を変更する。

Mac OSX用の正規表現確認ツール「Reginald RegEx explorer」

校正用のプリント、PDF作成をする際に、仕上がり線と「初校」等のスタンプを付加するPlug-in

Photoshop:EPS ファイルを開くと発生するエラー「書類を開くことができません...」

美女応援 -美女があなたを応援
しばらくやってなかったけどこれは最高!

間違えて消してしまったので再掲載。

2011年7月27日水曜日

失敗ログ その1

古旗本に載っている「空のテキストフレームを削除する」は難しすぎて理解できなかったので、骨子部分を抜き出して自分なりに肉付けする履歴。

if構文はif (条件) {処理}で成立している。
選択した空テキストフレームは↓で削除できる。
var selObj = app. activeDocument. selection [0] ;
if (selObj. contents == "")
{
selObj. remove() ;
};

選択した3つのテキストフレームの中に空白テキストフレームがある場合、↓で処理される。
var selObj = app. activeDocument. selection [0] ;
if (selObj. contents == "")
{
selObj. remove() ;
};

selObj = app. activeDocument. selection[1];
if (selObj. contents == "")
{
selObj. remove() ;
};

selObj = app. activeDocument. selection[2];
if (selObj. contents == "")
{
selObj. remove() ;
};
原始的な力技だがselection[100]まで作って置けば実際の仕事で使えるかも知れない。急いで対応しなければならない時に慣れないfunctionやforで時間を費やすよりこちらの方が初心者にはいいかもしれない。とはいえ自分の勉強のためにfunction成立の流れで作ってみる。

流れ1
selObj = app. activeDocument. selection [0];
kara();
selObj = app. activeDocument. selection [1];
kara();
selObj = app. activeDocument. selection [2];
kara();

function kara (){
if (selObj. contents == "")
{
selObj. remove() ;
}
};

流れ2
kara(0);
kara(1);
kara(2);

function kara (No){
selObj = app. activeDocument. selection [No];
if (selObj. contents == "")
{
selObj. remove(No) ;
}
};

流れ3
var selObj = app. activeDocument. selection ;
for (i =0; i<selObj. length; i++)
{
kara (i);
}

function kara (No){
if (selObj [No]. contents == "")
{
selObj [No]. remove() ;
}
};

流れ4
(function (){
var selObj = app. activeDocument. selection;
for (var i =0; i<selObj. length; i++)
{
if (selObj[i]. contents == "")
{
selObj[i]. remove() ;
}
}
})();

ここまできて気づく。
流れ3と4は選択数の制限無く処理されるものの、テキストフレームに色が付けられている空のテキストフレームを選択するとエラーになってしまう。最初の簡単な文からしてそうだ。検証が甘かった。。。

2011年7月25日月曜日

functionから(function( ){ })( ) へ

function(変数){動作処理}とは別に(function(){})()があります。これは古旗さんの「InDesign自動処理実例集」から引用しますと
各プログラム中でしようされている変数名などで共通のものがあるために、同時にサンプルプログラムを利用する際に干渉しないようにするためのものです。
初心者にとっては分かったような分からんような説明です。

(function( ){ })( ) と function( ){ }( )には 
function( ) { } が式ではなく、文として解釈されてしまう。
(function( ){ })( ) だと式になる。

var b = function() { } ()な記述も可能。
だとありますが、イマイチよく分かりません。

で、JavaScriptの先人たちのScriptを見ますと function と書いている人もいれば (function(){})() と書いている人もいます。functionと記述されたスクリプトは (function(){})() と書くこともできそうな予感。とりあえずチャレンジ。
var selObj = app. activeDocument. selection;

for (var i =0; i<selObj. length; i++)
{
KozG (i) ;
}

function KozG (No){
var tObj = app. activeDocument. selection[No];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";
}
functionとforを流れで理解するに出てくる変数の前にvarを付けてませんでしたので修正。

varははじめて登場する変数の前につける約束事です。


とりあえず適当にやってみる^^
(function (){
var selObj = app. activeDocument. selection;
for (var i =0; i<selObj. length; i++)
{
var tObj = app. activeDocument. selection[i];
{
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";
}
}
})();
げっ、動いちまったぜ。。。思ったよりも簡単なのかもしれない。


(function( ){ })( )を分解してみる。

(function( ){処理リストの取得 {処理リスト {処理}} })( )
引数や関数が苦手な自分は function ⇔ (function( ){ })( ) にすることで慣れた方がいいのかもしれない。

人様の書いたスクリプトを読んでもfunctionやforが使われていると7-8行で頭が痛くなり、それ以上読めない。webや本に載っているものはfunctionやforが使われている。前回の日記にある
//テキストフレームの最初の段落書体を小塚ゴシックに変更する
var tObj = app. activeDocument. selection[0];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";

tObj = app. activeDocument. selection[1];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";

tObj = app. activeDocument. selection[2];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";

tObj = app. activeDocument. selection[3];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";
はお目にかかったことがない。しかし、ここが原点。


要は何をしたいか(ここではtObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";)。しかし、そこに辿り付くまでにエラー処理文などが入ってくると読んでいる途中で投げ出してしまう。

思い出すとアチキが最初に作ったperlはPDFに埋め込むことの出来ないATM版Dynaフォントが使われているデータを書き出したpsにPerlでCID版Dynaに置き換えて埋め込むようにしたものだった。

で、最初はs/ATM版Dynafont名/CID版Dyna名/g;とやり、正規表現が分からなかったので100書体以上のPS書体名を書いた。上の文でいえばtObj = app. activeDocument. selection[100];まで書いたと同じ。

var tObj = app. activeDocument. selection[0];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";


が骨格、あとは肉付け。骨格をしっかり掴みさえすれば、肉付けは当人のレベルにあったやりかた(functionやforを使わない)から入ってもいいんじゃないかと思う。

2011年7月24日日曜日

functionとforを流れで理解する

functionだのforだの連続処理の成り立ちがよく理解できないまま今日に至ったアチキの復習の備忘録。←およそまともな日本語になっていないことは承知。
//テキストフレームの最初の段落書体を小塚ゴシックに変更する
tObj = app. activeDocument. selection[0];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";
ドキュメント内の複数のテキストフレームを選択しても、これだと最後に作成されたテキストフレームにのみ動作します。

選択した4つのテキストフレームの最初の段落を小塚ゴシックにしたい場合、
//テキストフレームの最初の段落書体を小塚ゴシックに変更する
tObj = app. activeDocument. selection[0];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";

tObj = app. activeDocument. selection[1];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";

tObj = app. activeDocument. selection[2];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";

tObj = app. activeDocument. selection[3];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";
これで動作します。

tObj = app. activeDocument. selection[0];の [ ] 内の数値が替わっただけなので共通部分をfunctionでまとめます。
function KozG (){
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";
}
KozGは任意名の関数。
これを実行させるにはKozG();を呼び出したい回数分書く。
tObj = app. activeDocument. selection[0];
KozG ();
tObj = app. activeDocument. selection[1];
KozG ();
tObj = app. activeDocument. selection[2];
KozG ();
tObj = app. activeDocument. selection[3];
KozG ();

function KozG (){
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";
}
しかしこれだと手間は対して変わらない。で、パラメーター(引数)を用いる。ちなみに、この引数というやつが苦手だ。
KozG ();の()内に数値を入力すると関数に数値が渡される。
KozG(0);
KozG(1);
KozG(2);

この値を受け取るためにfunction内の()を(No)、[0]を[No]にすると変数Noに渡された値が入る。
KozG(0);
KozG(1);
KozG(2);
KozG(3);

function KozG (No){
tObj = app. activeDocument. selection[No];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";
}

テキストフレーム数を調べてその数を渡すのがfor文。

for(変数名=0; 変数名<繰り返す回数; 変数名++)
{
繰り返す処理
}
ドキュメント内の全てのテキストフレームの数は
app. activeDocument. textFrames. lengthで求められます。

for (i =0; i<app. activeDocument. textFrames. length; i++)
{
KozG (i) ;
}

function KozG (No){
tObj = app. activeDocument. selection[No];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";
}
変な文だけどctrl+Aで実行するととりあえず動作する。


選択したテキストフレームの数を求めるには

selObj = app. activeDocument. selection;

for (i =0; i<selObj. length; i++)


なので
selObj = app. activeDocument. selection;

for (i =0; i<selObj. length; i++)
{
KozG (i) ;
}

function KozG (No){
tObj = app. activeDocument. selection[No];
tObj. paragraphs [0]. appliedFont = "小塚ゴシック Pro";
}
で完成^^ とりあえず今日はここまで。

2011年7月9日土曜日

データチェックの復習

久しぶりに派遣案件の紹介がありやした。仕事内容はデータチェック&修正。
2年の警備業務の間にほとんど忘れました(^^;

恐怖の白オーバープリ、ヘアライン、塗り足し、TrueTypeとType1...
他にもまだまだあったような気がしますが思い出せません。

イラレの白オーバープリはWhite Overprint Detector CS345で解決。
InDesignの白オーバープリはCS4からライブプリフライトで桶。
イラレの白オーバープリのチェックもできるからこれだけでもいいか。

で、思い出したのがQuark。昔はAppleScriptがあったのだが、ほとんどのサイトが消えている。それでも掲示板に難波さんが
tell document 1 of application "QuarkXPress 3.3 Demo" to set background trap of picture boxes whose color = "白" to knockout
を残していたのでメモ。XP環境のため検証できないのだが、弄れば4以上のバージョンの文字ボックスも含めた背景 "白"をノックアウトにしてくれそうだが、どうだろう。。。んっ? 何かメモった記憶があるな。。。と思い過去blogを見たらQuark4のクリッピングパスの続きにメモっていた。
tell application “QuarkXPress”
 tell picture boxes of pages of document 1 whose color is “白”
  set background trap to knockout
 end tell
end tell


てとこ。generic boxesなら尚良し。
picture boxesをgeneric boxesに変えればtext boxにも適用されるんだろうな。にしてもASの過去資産が消えてQuark8を使うのはかなりきついよな。


次にヘアライン
これもよくお目にかかった。というかデザイナーの方はヘアラインというものが分かってないのではないか?と思ったくらい。
ヘアラインは最小デバイスピクセルで出力機の解像度に依存します。
600dpiのプリンタの場合、ヘアラインは
1インチ(25.4mm)を600で割った数値=0.0423mm
まぁプリンタでそれなりに見えます。

しかし、このデータを印刷会社に渡しますとRIPの解像度は2400dpiなので
1インチ(25.4mm)を2400で割った数値=0.0106mm

1/100ミリです!

単位変換で確認してください。


で、以前はどうやってチェックしていたかというと、、、

目でチェックしてました。。。orz

0.1ミリと0.04ですと流石に見た目で分かりましたので(^^;;; 恥!

しかし今ではヘアラインレタッチ(version 1.3.3)でイラレとInDesignはチェックできます。まぁこれとてInDesign CS4のプリフライトプロファイル設定でチェックできるわけです。

で、またしても思い出したのがQuark。まぁPDFで修正する手もあるのだが、元データから直すのが筋。

ver4からヘアラインが出てきたから対応のAppleScriptがあるはず!と調べても消えている。寺の掲示板過去ログに難波さんの罫線の太さをいっぺんに変えるスクリプトが残っているのみ。
tell document 1 of application "QuarkXPress"
try
set ll to object reference of line boxes whose selected = true
if class of ll = list then error
on error
display dialog "選ぶラインは一本だけ" buttons "キャンセル" default
button 1
end try
set {spref, lw} to {object reference of spread 1 of page 1 of ll, width
of ll}
set {text returned:new_width} to ▲
display dialog ▲
"変更後の線幅(単位はドキュメントのデフォルト(単位は入れない、入力は
半角数字のみ))" default answer ▲
lw buttons {"キャンセル", "OK"} default button 2
set width of line boxes of spref whose width = lw to new_width
end tell

※▲は取って、一行にして欲しい部分です。


日本がダメでも海外のPubli-Script Forumsにありました(^^
tell application "QuarkXPress"
activate
if not (exists document 1) then error "No document is open."
tell document 1
set HL_Boxes to every graphic box whose box type is line box type and width is "0 pt"
repeat with i from 1 to count of HL_Boxes
set width of item i of HL_Boxes to "0.25 pt"
end repeat
end tell
end tell


TrueTypeとType1はさすがに忘れた。
TrueTypeのImpactを使われた場合、そのまま出すとType1に置き換わり、文字幅が露骨に違っていたことだけ覚えている。対処法もあったのだが忘れた。d-fontのHelveticaでも騒がれていたな。あとで調べるべ。

2011年7月1日金曜日

過去ログ7月分のまとめ

2007年7月分(5投稿)
2008年7月分(14投稿)
2009年7月分(9投稿)
2010年7月分(9投稿)

2010年7月のはてなブックマークよりいくつか

指定したファイルやフォルダのアクセス権と所有権を変更『BatChmod』

target="_blank" を使わないで新しいウィンドウでリンクを開く方法
  target="_blankは XHTML 1.1 や XHTML Basic では採用されてない

PDF互換AIの配置
  CS3ならpdf形式でトンボと裁ち落とし>裁ち落としに裁ち落とし幅を入力
  CS4だと、ファイルメニュー>ドキュメント設定で裁ち落とし幅を指定することによって、アートボード(=仕上がりサイズ)に対して付加する裁ち落とし幅を調整でき、PDF互換.ai形式にもBleedBox情報を含ませることができる

というか去年の7/5のブックマはやたらPDFトラブルのチェックが多いだけにまとめて読む。
ちなみに昨年、ダイナコムから3,676書体を収録した10周年記念パッケージが発売されたのだがトラブルは解決されたのか?

7/9のブックマはUTF-8(Mac)の NFD(Normalization Form Decomposition)に関連がある。

他にもあるけどFORCEさんから
[ISBN]バーコード添字
[JeditX]base64でエンコードされた文字列をデコードする

Leopard以降の標準アーカイブフォーマット「XAR」
  使ったことも受け取ったこともないが文字化けは大丈夫?

保存出来ない
  「PDF互換ファイルを作成」のチェックをハズして保存

OSは?ブラウザのバージョンは?といちいち聞かなくてもすむようになる『Support Details』
  凄いサービスなだけにDTPの受け渡し用にカスタマイズできないのか?
  例えばInstFontを組み込むとか。

DTPToolBox
  バーコード作成サービス、デジタル検版ソフト

2011年6月28日火曜日

気分的にJavaScriptバージョンの違い

古旗さんのJavaScriptで遊んでいた時、やはりというかCS3のものは上位バージョンで動作しないものがいくつかありやした。まぁそこで深く突っ込んで調べることの出来ないのがアチキの弱さ、というより英語苦手なんだよねぇ~。だから未だにモノにならない。

誰かがCS3用のJavaScriptを4や5用に改変してくれるのを待ってました。
やはりせうぞーさんですよ^^

数字を丸数字などに変換「round_num 0.2」(CS3)
丸数字などを簡単に変換できる「round_num 0.3」(CS4)
丸数字などを簡単に変換できる「round_num 0.4」(CS5)

これらをDiffで差分を比較すれば、各バージョンごとの記述の違いが具体的に分かるわけでして、英語が苦手な人はこんな方法しか取れんのだろうなぁ~。

で、早速ダウンロード。拡張子をtxtに替えて開くと文字化け。
RTFコンバータで文字コードをUTF-8からシフトJISに変更。

で、フリーウエアのDFで比較してみる。

0.2と0.3
CS4から正規表現が使えることになったため、0.3にその記述がある。
選択文字列の変換と字形検索置換の記述は全く違う。

0.3と0.4
if (i == 0) {
if (i === 0) {
同様に
if (my_dialog.show() == true) {
if (my_dialog.show() === {
全て == は === に替わっている。

var my_doc = app.activeDocument;
var my_doc = app.documents[0];
   ここは書き方が違うだけのような希ガス。。。後で確認

というのも窓の外でごにょごにょ
activeDocument よりは documents[0] の方が確実?
なんて記事がある。

my_class = "Text, TextColumn, Story, Paragraph, Line, Word, Character, TextStyleRange".match(my_class);
my_class = "Text, TextColumn, Story, Paragraph, Line, Word, Character, TextStyleRange, Table, Cell".match(my_class);
   こいつは表組みも検索・置換に含めるということだよな(多分)

0.4(CS5)には合成フォントへの対応記述がある。

その関係からか字形検索置換の } catch(e) の前後に
//if ( f_atc ) {target_obj[i].appliedFont = my_font_org; }//合成フォントのフラグが立っていたら、フォントを元の合成フォントに戻す。★overwriteしないとエラーになる(保留)
} catch(e) {
$.writeln(e);

で、資料を探しました。
Adobe スクリプティング入門.pdf(日本語)
InDesignCS3_ScriptingGuide_JS.pdf(英語)
InDesignCS4_ScriptingGuide_JS.pdf(英語)
InDesignCS5_ScriptingGuide_JS.pdf(英語)

InDesignCS5_ScriptingTutorial_JP.pdfで日本語版は見つかったけど、CS3&4はweb上で見つからなんだ。DVDの中にあるんだろうね。
で、pdfをテキストにしてからDiffで比較しようかな^^と思った初日。
というか何やってんだろ、自分。。。

2011年6月22日水曜日

DTP要員の実態

妻の知人の口利きで配送センターの仕分けのアルバイトに就いてます。
DTPに未練を残さないようRSSを全て削除、Twitterもフォロー無しにしました。
けれどメルマガを解除するのを忘れてました。
宣伝ばかりなので届いても即ゴミ箱行きでしたが、今回何気なく見てやはりというか、これが現実というのを感じましたので

●270号  超DTPで稼ぐ10
より一部抜粋。
DTPの基本は、100時間の練習により学ぶことはできます。
手作業で、何をどうするかこのレベルの仕事は、それこそ中学生ででも習得可能なことになってしまっています。
中学生に教えるところがないだけで、教えればできるはずです。
その程度の知識が、一生の仕事として通用する? 
文字入力・イラスト作成・写真処理の技能取得は、可能です。
いわれたことを、忠実に作業するオペレータの誕生です。
組版の印刷業界では、DTP要員は、技術職ではありません。
一般素養に属します。できて当たり前の操作(オペレータ)なのです。

DTP作業は、コピペが基本。同じ操作を、半日もやると、指がおかしくなりませんか。
純粋のオペレータではないので、入力は遅いは、マウスの操作は腱鞘炎で痛いわと、集中して繰り返し作業をすると、肉体的疲労を伴います。

その繰り返し作業を、そのまま受け入れて、淡々とこなす。これがDTPオペレータです。それが、仕事です。いや、そういわれてきただけです。

DTP作業は、若い人にはいい。何も知らない人には、まず覚えなさいという技能です。デジタル印刷技術の入門です。

もし、同じDTPオペレータを10年やるとすれば、その間に使うDTPは、どんどん進化するはず。覚えなくてはならないことは、決して減らない。

では、DTPを職業としてきた人たちのスキルアップは、どうなるの。それで終わりかよ。60過ぎまでDTPで飯が食える?。ありえない。
20台の若い人と、同じレベルで60歳までやる。ありえない。給与は、40で頭打ち。それをづーっと続けることは、企業側として、なにもメリットはない。当然リストラの対象になる。

DTPという若者向けの表現でこの手作業の現実をお話しましたが、彼らと同じレベルの仕事をしていたら、給料は、そんな多くは望めない。つまり若いときはいいが、中堅になっても同じでは、こまる。

これが、DTP要員の実態です。問題は、その先です。自分が経営者になるか、何か手を打たないと、存在価値は、ありません。

20代30代は、若さで徹夜してでも、仕上げてきた馬力が頼りの仕事。
同じ事を50過ぎてやるのはきつい。そして給料は、変わらない。
伝統技能でもないから、死ぬまで続けてどうのでもない。

ほんとうにそれだけか
単能職としてDTPを考えるとき、デザイナーは完結です。デザインの表現の道具としてDTPがあるからです。
組版要員としてのDTPオペレータは、はっきりいって使い捨てです。
派遣で募集すれば集まります。日々の組版で、デザイン力をそんなに必要としない仕事であれば、だれでもできることになります。
ルーチンワークで、作業する人にとって、素人よりは、高い給料で、働けます。
しかし、10年も続けるうちに、派遣社員より正社員になりたいといっても、雇ってくれるところが少なくなります。
大手の印刷会社での派遣DTP要員の作業は、全体の仕事の流れの一部だけ、黙々とこなす。これだけです。時間の切り売りです。
派遣をやって鬱になったのはこれを感じてたからなんだよな。
現在、配送センターで仕分けしてるけど、仕事内容の単調さは派遣の時や大手印刷会社の孫請けの時と大差ない。
むしろ仕事に対する熱い思いが無い分だけ気が楽というか、それでいいのか自分?

2011年6月12日日曜日

A4サイズは行政基準

礼拝後、教会で雑談中に出てきたお話し。
A4は国が定めた行政基準。なのにB5にこだわっているのは印刷会社と同盟キリスト教団くらいなもの。官公庁の文章はA4に統一されている。
これは土光臨調の際、民間が出したレポートはA4、国の文章はB5。これではいかん、ここから統一しなくては。という話になり、A4を基準にするということになったのです。
の主旨の話をされた。ホンマかいな?と家に帰ってググると確かにあった
官庁では、長い間B判の使用を原則としてきましたが、92年11月の各省庁事務連絡会議の申合せ(「行政文書の用紙規格 のA判化に係る実施方針について」)に基づき、93年4月から行政文書のA 判化を計画的に推進し、97年には、行政文書の100%がA判化したとしています。
なんでこんな話しが出てきたかと言いますと、教会でHPを作ることになり、オブザーバーとして参加したアチキが「印刷することも考慮してA4に収まるサイズで作成する方がいい」と発言したから。

教会50周年記念誌はB5で作るよう強~く主張し、その意見が通ったわけなのですが、A4を主張していたのはその方。ちなみにその方に教会月報の原稿をお願いすると必ずExcelで原稿を下さる(^^;

そんな経緯もあり他の人を尻目にA4にこだわるか、こだわるべきでないかと侃々諤々とやりあっていたわけです。で、思ったのはA4がスタンダードになったってことは、多くの人が知らず知らずのうちにA4が読み易いと摺り込まれるのだよなぁ~、それが良い悪いは別にして。

2011年6月10日金曜日

DTP作業のプリフライト

以前、ブックマークした記事を読み直し、頭を思いっきり殴られ、改めて自分の薄っぺらな意識に深~く落ち込む初夏の夕暮れ。

【InDesign javascript】 通常のプリフライト以上の項目を調べるスクリプト

試せないので試してないけど、これ凄いです。何が凄いって「プリフライト」は印刷データとして問題ないかどうかのチェックだと考えていた自分の常識を打ち崩してくれたんです。全チェック項目の画像をよく見てください。

全チェック項目にDTP作業ルールがチェックされているんです。
なんでこんなものまでいちいち警告するんだ?というものまでいちいち調べていますが、もともと新人教育のために作りました。
(新人さんが組版したドキュメントをいちいちチェックするのがメンドウだったのです…)
ただ今となってはライブプリフライトというすばらしい機能もありますので使用用途はあまりないかもしれません。
とコメントされてますが、ライブプリフライトでもここまではチェックできません。


・環境設定:強調色表示オプション:カスタマイズされた字送り/カーニングはチェックが付いているか?
  スミマセン、今の今までデフォルト設定のまま作業してました。
No.63 強調色表示オプションは読んだ記憶はあったのですが、その時は仕事で使ってなかったので。。。(言い訳
しかし、、、ここにチェックが入っていると流し込んだ後、どこを調整したか分かるだけに便利だよな。

・欧文合字のチェックがはずれているか?
  スミマセン、こいつもデフォルト設定のままでした(^^; 
でもでも、今が旬の欧文合字(リガチャ)のようにトラッキング等をかけると自動的にリガチャは解除されるから、ねっねっ。

・「OpenTypeProのルビ字形を使用」のチェックがはずれているか?
  そこにチェックが入っているとどんな問題が発生するか勉強不足です。

・「分離禁止処理」のチェックがはずれているか?
  No.17 分離禁止処理と分割禁止を読み直すきっかけを与えてくれました。


これの凄いところはカスタマイズすればハウスルールに沿ってデータが作成されているかのチェックができるということなんです。CS3だけで終わらせるのでなく、上位バージョン、win版も含め、作れる方はどんどん作成して公開していただきたい逸品なのです。

こちらはカスタマイズできるように勉強しますので(^^;;

2011年6月5日日曜日

正規表現のDTP適用事例

正規表現を学習してもリアルに役立つ事例がないと今ひとつやる気が起きません。
で、ネットをウロウロしてたら

InDesignの正規表現スタイルは魔法

CS4:正規表現を使ってみる

を見つけました。お薦めです^^ リンク先が消えては大変なのでPDF保存しました。
CubePDF、Web2PDF、Screen Maltistudio等でPDF変換しましたが文字化けするとこがありましたので、久しぶりにSave As PDFを試したらグッド、グッド^^ これからはこれでいきます。webサービスのPDF作成の良いとこはURLリンクが保持されることなんです。便利、便利。

これから正規表現を学ぼうとする人はリアルに役立つ事例から入った方がいいよなぁ~(自分の場合)。

2011年6月4日土曜日

自問自答の正規表現をダラダラと

以前、あかつきさんが
【InDesign CS4/5】任意の区切り文字を指定してスタイルを変更する
を上げてまして、後で自分でやってみようと思いつつ今日まで。。。

チラッと見た後、自分なりに四苦八苦しようと思い
InDesign:1,1.5,2,CS,CS2,CS3,CS4,CS5
Illustrator:8,9,10,CS,CS,CS3,CS4,CS5
Photoshop:7,CS2,CS,CS3,CS4,CS5
Acrobat:4,5,6,7,8,9
アプリ名は行頭から『:』まで。行頭はキャロット『^』。文字の連続は『.*』。
で、この文字の連続がどこまでつながるかは『.*』の後に:コロンを入れればよいから
『^.*:』が正解なのでは?とサクラエディタでやってみた。ここまでは基本中の基本。


んっ? 違う。。。コロンの前までだった。となるとあの高度な「先読み」とか「後読み」の出番になってくる。calcedonyさんの
正規表現の先読みと後読みはどっちがどっちだかわかりにくいんだよ!(追記あり)
にあるように後読みがマッチパターンより前、先読みがマッチパターンより後なので混乱します^^
で、先読みの肯定は(?=)、否定は(?!)をパクります。『^.*(?=:)』が正解かな?


OK!と思ったが行中に複数のコロンがあると、そこまでマッチしてしまう。
最短マッチはアスタリスクの後、?を入れるんでしたね。
^.*?(?=:)』でOKでした^^ 嫌らしい書き方として否定の否定があります。
『^.*?(?![^:])』はコロン以外の文字でマッチさせない(コロンでマッチさせる)先読みです。 ちなみにパーレンはグループ化、ブラケットは指定した文字のどれかの意。ブラケット内のキャロットは除外の意。


さて次、バージョン名は: , で挟まれるか行の最後にあります。
これは先読み、後読みの両方を使うしかないよなぁ~。
後読みの肯定は(?<=)、否定は(?<!)なので、肯定のみ使用して作ってみた。
『(?<=[:,]).+?(?=[,$])』


行末にあるバージョンにマッチしません。。。ならば行末の$の替わりに改行を使えば、、、と思ったのですが、MacとWinでは改行コードが違うんでした。正規表現の概要に\sなら空白文字(スペース、タブ、改行)にマッチしますありますので『(?<=[:,]).+?(?=[,\s])』行けそう。。。エラーでダメでした。しかし\sで検索すると


改行にマッチしてますので書き方が悪いのでしょう。で『[^,]』で検索すると



改行文字も含まれてますので、何とかなるんでないかい^^
後読みだけにして『(?<=[:,])[^,]*』だとOK


正解を見ます。

アチキあかつきさんせうぞーさん
アプリ名^.*?(?=:).+?(?=:)^[^:]+
バージョン(?<=[:,])[^,]*(?<=,|:).+?(?=,|\r)(?<=[:,])[^,]+

結果は同じでも書き方が三者三様で面白い^^ 後で読み解きましょう。で、初心者は+を使わずに*(アスタリスク)を使うのですね(^^:A

テーブルタグ作成ツールを使って表組みを作成しました^^