Illustrator CCにおける「変数」でつまらないところでハマった話

幸か不幸か、今やIllustratorは印刷物を作るのに欠かせない存在であるわけですが(アイサツ)。

お客さんが、運営しているイベントで出演者のリストを集めた冊子をいつも作っておられまして、いつも大勢の出演者さんの名前やプロフィールをひたすらIllustratorにコピペして紙面を作っておられるんですけども、これがなかなか大変であると。

今のIllustratorには「変数」という機能があって、そいつを駆使することで労力を省けるのではないかと思ったので、そいつを使うお手伝いをさせてもらうことになりました。

…というところで無駄にハマった話です。

「変数」とは

Illustratorの変数機能についてはここらをご覧ください。要はワープロソフトで言う差し込み印刷にあたる機能です。

https://helpx.adobe.com/jp/illustrator/using/data-driven-graphics-templates-variables.html

https://blogs.adobe.com/japan/dtp-illustrator-kihon-tips-10/

「変数」用のデータセットを作る…が、エラーが出て読み込まない?

Illustratorの「変数」機能では、1行目に列名を書いて、2行目からデータという形のCSVXMLを作って食わせます。

今回はだいたい1ページに6組程度のグループ名、出演時間、メンバー名、プロフィールを載せますので、1ページ分を1行、30カラムくらいのCSVにデータを整形しました。

 

列名は、出演順の番号を頭に付けて、1name,1time,1member,1profile,2name,2time,2member,2profile,3name,3time,… という風にしました。

これを読み込ませて、テキストオブジェクトにバインドします。これによって、データセットを選ぶだけでテキスト枠などに一気に値がはめ込まれますので、手間の削減になる…んですが、何をどうやっても読み込み時にエラー。

文字コードUTF-8で間違いないはず。BOMはない方がいいらしい。

CSVとはコンマ記号で区切った表形式のデータですが、思わぬところに余計なコンマが紛れ込んだりしてデータとしておかしくなるのはよくあることです。が、どう見ても正しいデータ。

念のため、1name,1time,1memberだけの3列1件のシンプルなデータにしてもエラーになります。

Adobeのサポートに投げてみる

手詰まりになったのでAdobeのサポートに問い合わせてみました。

こっちのCSVも送ってあっちで再現するか試してもらいました。するとあちらでもエラーに。

しかもAdobeでもなぜエラーになるのか原因がわからないとのこと。なんでや。

サポート側で適当に作ったデータはちゃんと通るとのこと。

「お客さんのほうで作ったデータに見えない不正なデータが紛れ込んでいる可能性が高いが、それが何かはわからない。」とのこと。秀丸エディタVisual Studio Codeでちゃんと読めるテキストファイルなのでそんなはずはないと思うんですが。

 

あちらで適当に作ったデータを送ってもらってこっちで開いたところ、エラーは起こらず開くことができました。なんでや。

原因判明

まあともかく、データに何らかの問題があるのは間違いないので引き続き原因を検討してますと、ある一つの原因に思い至ります。

巷にあるプログラム言語でも今回の「変数」機能とは異なりますが「変数」という概念があります。わりと変数名はアルファベットで始まらなければならない言語が多いです。数字や記号で始めると怒られます。JavaScriptとか。

もしかしてそういう制限に引っかかっているのでは? いやでもプログラムの変数じゃなくてこれはただのデータのラベルでっせ? まあ一度やってみよう…と1行目の各データの先頭の1を削除。

通 り ま し た。

制限があるならドキュメントに書いとけやヽ(`Д´)ノ

というわけで、Illustratorの変数機能で原因不明のエラーに困っている方は列名の頭に数字が紛れ込んでいないかどうか確認しましょう。

Adobeのサポートには、それが仕様ならドキュメントに追記してほしいし、そうでないならとっとと直すようにお願いしておきました。(未だ追記されず)

データセットを作るときの注意点まとめ

  • 1行目の列名の先頭が数字で始まっていないか
  • UTF-8でBOMなしが正式らしい
  • データの中にコンマが紛れ込んでいないか
  • データの中にダブルクオーテーションが紛れ込んでいないか
  • 上記の記事には画像リンクのパスに空白があるとダメとあるけど、入ってても通りました(Windowsだけかも)