新年一発目のエントリーですが、いきなりテクニカルな内容で行ってみたいと思います。
ミッション:
イベントの招待チケットとしてそれぞれの招待者の名前が入った100枚の画像を作成せよ。ファイル名は各ユーザーのメールアドレスを用いることとする。また、ユーザー名とメールアドレスのデータはCSV形式で提供される。
回答例1:
手動でコピペして作成。1枚あたり2分弱と考えれば3時間強で完了。
…、ではちょっと切なすぎます。
っていうか、それ1000枚だったらどうするのよ?テンプレートの画像の変更があったら、やり直しで同じだけ時間がかかりますね。コピペのミスも発生しがちです。
回答例2:
FireWorksのグラフィックウィザードを使用。
この機能、FireWorksMX(2002年発売)から搭載されている機能なのですが、意外と使いこなしている人が少ないのですよねぇ。
概要を説明すると、これはテンプレート画像内で{varTitle}のように定義された変数に対し、外部のXMLファイルから読み込んだデータをはめ込み、画像を一括生成する機能なのです。文字の置き換えだけでなく、内部の画像を置き換えたり、ファイル名を設定することもできます。
詳しい使い方はこの辺りを読んでいただくとして、僕がハマった部分をメモしておきます。
・XMLの文字コードはUTF-8
ISO-8859-1でも良いのですが、日本語が使えないので。Shift-JISはNGです。
・MACだと変数名がうまく認識してくれないときがある。
これ、かなりやられまくりです。正しく(も何も大括弧でくくるだけなのですが…)変数を定義しているのにグラフィックウィザードに「変数が定義されていません」と言われてしまう。Windowsならすんなり通ってしまう分、かなり謎です。そんなときは、FireWorksのサンプルフォルダからきちんと動く変数のオブジェクトを持ってきて、それにスタイリングをしてしまいましょう。
・ファイル名は最上位のノードを使用。
<record>
<hoge>ほげ</hoge>
<foo>ふー</foo>
<bar>ばー</bar>
</record>
こんな感じでXMLが定義されている場合、ファイル名に<foo><bar>の部分を使おうとするとエラーが発生する場合があります。最上位の<hoge>ならばまず確実に出力されます。(原因不明ですが、僕はこれで4時間近く検証に追われました)
ちなみに、この機能を使用する上での一番の障害はXMLの生成だったりします。数十枚レベルなら手書きでも一応対応はできますが、こちらも自動生成できるにこしたことは無いでしょう。個人的にはFileMakerにデータを読み込みXSLTを介して出力という方法をよく取りますが、エクセルやPHPなどを利用する人もいるようです。
こんなところでしょうか。地雷さえ踏まなければ、テンプレートとXMLの作成を行うだけですから、1時間程度あれば準備は余裕で整います。あとは、コマンド一発で画像が生成できます。拷問のようなコピペの作業も必要ありませんし、ちょっとした修正にも柔軟に対応できます。
覚えておいて損は無い機能だと思いますよ。
