InDesignのパス上文字でタイトル付き囲み枠(7)やっと公開しました
昨年から1か月以上にわたって作成していた「タイトル付き囲み枠」ですが、やっと公開しました。設定項目が色々あって説明が長いので別ページにしています。こちらからどうぞ。
以下作成過程に興味がある人向けです。
前回、できたと思ったんですが実は抜けがありまして。それは何かというと、ダイアログの数値入力欄に極端に大きな数値が入力されると予定外の結果になるという、プログラムあるある現象です。それがどうして気づいたかというと、説明ページを作成していた時ですね。説明ページを作成する作業というのは、自分で操作をトレースすることになります。そこで「ダイアログのこの部分には一般的にはこの範囲で入力します」という内容を書いている時に「あれ?」となったわけです。説明書作成は大事。「リリースノートはありません」などと平気で言うどこかの開発チームは論外です。
説明ページを作っている時に気づいたことがもうひとつ。以前のダイアログ(前回ブログを参照)では、タイトル部分の段落スタイルと文字サイズを変更できるようにしていましたが、「タイトルは事前に書式の設定をしておいてね」と書いたことと矛盾しています。ダイアログでもう一回設定できるのは便利かもしれませんが、そうすると使い方があいまいになり(またフォントも指定できるようにしてという要望も来そう。これはリストが長くなりすぎるので却下)かえって混乱すると思ってやめることにしました。
ダイアログの数値チェックですが当初は次のようなフローを考えました。
ダイアログを閉じる→チェック→OKなら次の工程(テキストフレームの加工)へ、NGならダイアログに戻る
これで実装を行っていたんですが(3日間ほど)、次の問題にぶち当たります。
- チェックするためには一度テキストフレームの加工を行う必要がある
- ダイアログを表示するための命令がすでにいくつかあり(選択中の状態によってルートがいくつかある)、そこに新たなルートを設けるとスクリプトの流れが複雑になり、メンテナンスが厳しい(というか、作ってる途中でわからなくなってしまった)
- エラーにならない値を入力するまで終了しないので、それはやはり不親切(適切なエラーメッセージを出せればよいのだが、そうなるとさらに複雑に)
ということで一週間ほどあっちとこっちのコードを入れ替えたり、テスト用のコードを書いてそれに差し替えたりということをやり(そういうことをすると思わぬエラーが出て修正しなければならなくなってまた時間を食う)という試行錯誤を繰り返すことになりました。
最終結論:正確でなくても入力範囲をあらかじめ制限しておき、入力後のチェックはしない
きっちりしたい性格上、「ここが限界値」ということで入力範囲を決めたかったのですが、それをするためにはダイアログを出す前に一度「タイトル付き囲み枠」を作成して限界値を計測しなければならないので、もうあきらめました。寸法だけ取得して机上の計算で入力範囲を決めてます(おかしくならない程度にだいぶゆるくしてあります)。
余談ですけど限界値を調べている過程で、「テキストフレームの線幅の最大値はフレームの幅(高さ)の半分から1.5pt引いたもの」ということをあらためて確認。つまり中心の3pt×3ptは文字が入る領域として確保され、それ以上線の太さを太くすることはできないんですね。
今回のスクリプトを作成する中で、自分のやっていることは文章を推敲して手直しすることと同じ作業だということに改めて気づかされました。短いスクリプトを書いている時はあまり感じませんが。今回は大体次の手順でやっていきました。
- アイディアとそれを実現する小さなスクリプトを作成
- アイディアを膨らませ全体の構想を練る(今回はバリエーションの作成)
- 全体構想に基づき、基本のエラー処理(除外・制限項目)を作成
- 実現するための細部の調査用スクリプトを作成し調査とテスト
- テストしたものを順次本体のスクリプトに組み込む
- その過程でコードの整理と一部処理の関数化
- インターフェイス(ダイアログ)の作成
- 全体テストと修正
- ドキュメントの作成
- エラー処理項目の追加
- 処理全体の流れを見直し、再設計
- 再設計の実施に伴うエラーの修正
- コードの整理
途中で実行順の組替えを行ったので褒められたものではないですが、これを最初から予測して行うのはなかなか難しいですね。参考になれば。
最後に「収益化」について随分と悩みました。これだけの期間と労力を費やしたので(また、収入もない状態なので)何か欲しい。でも、ほとんど需要がないだろう。そして収益化に必要な作業(期間限定だったり機能制限だったりの別バージョンの作成)を考えるとあまり旨味がない。などなど。結局無償で公開しましたが、そういった「稼ぐ」能力が全くないので、お仕事依頼をお待ちしております。特に最近現場能力が失われつつあるので普通のDTPのお仕事でも全然かまいません。よろしくお願いします。