1. 主要ページへ移動
  2. メニューへ移動
  3. ページ下へ移動

三栄Navi

記事公開日

生成AIで宛名レイアウトスクリプトを作らした。

  • このエントリーをはてなブックマークに追加

最近、Geminiの画像生成・動画生成の機能を試して見ましたが、その素晴らしさに圧倒されました。
この三栄NAVIのブログの中でも幾つか紹介してます。
また、Web上では、画像に引けを取らず、プログラムのコーディング力も相当進化してるらしい。
と言う事で、プログラムコーディングに挑戦しました。
今迄も、実験的ではありますが、簡単なスクリプトのコーディングの経験はあります。
今回は、本格的なものを最後までやり遂げようと開始しました。
弊社では、宛名レイアウトの自動化は、ある程度形にはなっており、運用しています。
したがって、宛名レイアウトのスクリプトをコーディングしてもらい、それを現在のシステムに近いところまで、作り上げる事を目標にしました。

最終的には、プロに近いものが出来上がったと思います。

出来上がった所で、Geminiに、まとめの紹介記事を生成してもらいました。


はじめに:なぜ開発したのか

DTPの現場において、宛名印刷は単純作業に見えて実は奥が深い業務です。 InDesign標準の「データ結合」機能などは便利ですが、以下のような課題がありました。

  • 長い会社名や部署名が入るとレイアウトが崩れる

  • 名前の文字数(2文字、3文字など)によって文字間隔のバランスが悪くなる

  • 「御中」の位置が固定だと、宛名がない場合に間が抜けて見える

  • 縦書きと横書きでルールが全く異なる

これらを解決し、*「プロが手作業で調整したような美しい文字組み」*をボタン一つで実現するために、Excel VBAからInDesignを制御する専用システムを構築しました。

システムの概要

このシステムは、Excel(データ管理・操作画面)Adobe InDesign(レイアウト・出力) を連携させて動作します。

  1. データ管理: Excelに入稿データ(CSV/XLSX)を取り込み。

  2. レイアウト設定: フォント、文字サイズ、座標、行間などをExcel上で細かく数値指定。

  3. 自動組版: VBAがInDesignを操作し、1件ずつ最適なレイアウトで配置。

  4. 出力: InDesignファイル(.indd)とPDF(.pdf)を自動保存。

縦書き用と横書き用で処理系を最適化し、メモリ不足を回避するためにモジュールを分割運用する設計にしています。

こだわりの機能ハイライト

1. 「文字数」に応じた究極のバランス調整

単に流し込むのではなく、人名の文字数に応じてスペース(アキ)を自動調整するロジックを組み込みました。

  • 1文字・2文字の名字: 間に半角スペースを2つ入れる。

  • 2文字姓・3文字名: 姓の文字間に半角スペースを入れてバランスを取る。

  • 連名時: 独自の「7文字取り」ルールを適用し、姓名の間に全角スペースを入れるなど、単独宛名とは異なるロジックで美しく揃えます。

これにより、「田中 宏」さんも「佐々木 健太郎」さんも、見た目の重心が整った状態で出力されます。

2. 「御中」配置のインテリジェント制御

宛名(個人名)がない場合、会社名や部署名の後に付く「御中」の位置は非常に重要です。

  • 右端合わせ(横書き): 会社名、部署名の中で「一番右に来ている行」を検出し、その少し後ろに配置します。

  • はみ出し防止: 用紙サイズギリギリになる場合は、自動的に会社名の幅を縮めて(長体をかけて)スペースを確保します。

  • 敬称の自動判定: データに指定があればそれを優先し、なければ自動で「様/御中」を振り分けます。既製ハガキ(「様」印刷済み)用に印字をスキップする機能も搭載しました。

3. フォントサイズの「階層ルール」と自動長体

長い部署名が入ってもデザインを破綻させないため、以下のルールを自動適用します。

  • 階層ルール: 「会社名 ≧ 部署1 ≧ 部署2 ≧ 肩書」というサイズ関係を維持。下位の要素が上位より大きくならないよう自動縮小します。

  • FitText機能: 指定した枠幅に収まりきらない場合は、文字を変形(長体)させて枠内に押し込みます。

4. 実務に即した細かい気配り

  • 郵便番号: 「〒」マークの有無やハイフンの除去をフラグ一つで切り替え可能。

  • 部署名のスペース処理: 部署名に含まれる全角スペースを自動で半角に変換し、間延びを防ぐ。

  • 拡張性: QRコードや連番を後から追加するための「カスタム処理フック」を用意。

開発の裏話・苦労した点

縦書きと横書きの違い

縦書きと横書きでは、座標の考え方や文字の詰め方が根本的に異なります。最初は一つのプログラムで対応しようとしましたが、コードが複雑化しすぎたため、モジュール(ファイル)を分割するという決断をしました。これにより、メンテナンス性と安定性が飛躍的に向上しました。

「戻らない」ための工夫

機能を追加していくと、以前動いていた機能が動かなくなる(デグレード)ことがありました。 これを防ぐために、「あらゆるパターンの名前・会社名が入ったテストデータ」を用意し、修正のたびに全パターンでの出力テストを行うフローを確立しました。地味ですが、品質担保にはこれが一番効きました。

まとめ

このシステムのおかげで、これまで手作業で微調整していた宛名組版の時間をほぼゼロにすることができました。 Excel VBAは古い技術と思われがちですが、InDesignのようなDTPソフトと組み合わせることで、業務効率化の強力な武器になります。

もし同様の自動化に興味がある方がいれば、ぜひ挑戦してみてください!



Aiにまとめた記事まで作ってもらいましたが、補足しておきます。

一番苦労した部分は、

コーディングに関しては、生成したものをコピー&ペースト のみの作業です。
コピペ後の実行で、プログラムのエラーもあり、再コーディングしてもらい少しづつ進めました。
仕様書が有るわけでは無く、今迄の経験をもとに、頭で都度仕様を考え、文書で知らせる。
この仕様を指示文にまとめ入力するのは、結構大変でした。

複雑になっていくと、AIにかみ砕いて伝える、場合によっては、あなたならどうする・・・・なって感じでアイデアを出してもらう。
このアイデアが、結構よかったりしたりする。
それでも、どうしてもかみ合わない時があり、試行錯誤、どうにかして私の意図を伝えようとしたが、らちが明かず、ストップした事もある。

コーディングの項目ステップを紹介します。

1,お客様の住所リストの読み込むスクリプト
2,項目の並び順を既定の順にするスクリプト
3,データの正規化(縦組、横組)するスクリプト
4,自動組版のスクリプト
   縦組コーディング
    郵便番号
    住所
    会社
    部署
    肩書
    名前
    連名処理

   横組みコーディング
    縦組みと同じステップで行ったが、メモリ不足
    縦組み、横組みを分離した。

郵便番号から始まって、1項目づつ、レイアウトのバランスを見ながら、訂正し確認し進めていった。
しかし、気が付いたら、OKになっていた項目が、訂正する前に戻って居たりする。
Aiのまとめの中にもあったが、「戻らないための工夫」・・・重要です。

次回に、プログラムの概要を紹介します。



  • このエントリーをはてなブックマークに追加

Contact

お問い合わせ

三栄ぷりんとは、印刷に関する多彩なサービスを提供しています。
お客様のご要望にできるだけお応えします。お気軽にご相談ください。

お電話でのお問い合わせ

03-3785-4402

9:00~18:00 ※土日・祝日除く