AIプログラミング日記:illustratorで割注ルビを入れるスクリプト1(開発中)
日本語縦書き、和欧文のアキ調整、縦中横、といった日本語独自のルールに対応しているillustratorですが、なぜか「ルビ」に対応していないことに今さら気が付きました。ルビ機能がないってマジかー! マジだなー。でも、これは欲しいなー。自分用に作っておけないかなー!!
出来るからヤレるという訳じゃない!
ネット検索してみたところ、苦肉の策として「割注(ワリチュー)」って機能を使うと、それっぽいことができるらしいことがわかりました。これを便宜上ここでは割注ルビと呼称します。
そもそも割注は、注釈のために行を割る機能ですね。これを使うと、1つのテキストオブジェクトで本文と注釈文をまとめておけるのが便利です。使ったことないですけどねー(笑)。
で、「割注ルビ=割注をルビっぽく使う」というのはどういうことかというと、下段の文字を本文サイズにして、上段の文字を小さくすれば、なるほどルビに見えるということです。
後で解説しますが、この割注ルビの指定、簡単かと思いきや、とんでもなく超面倒くさいです。なので手作業であれば、見出しの中だけとか、せいぜい本文の中の数か所くらいでしょう。長文の大量の漢字に割注ルビをつけるなんて、ほぼほぼ不可能・・・
てかムリー!!
そのような理由から、何らかのツールなどを駆使して、もうちょっと効率よく、長文であっても割注ルビをいれられるようにしたい、というのが今回のの目標となります。
読みの入力はAIで克服できるんじゃね?
割注ルビを入れるにあたり、最初の問題となるのが、
"よみ"を入れるのがメンドクセー
ってことですね。「一攫千金を夢見た若者は、古文書を求めて村々を訪ね歩いた。」という文章にルビを入れるとなると「一攫千金(いっかくせんきん)を夢見(ゆめみ)た若者(わかもの)は、古文書(こもんじょ)を求(もと)めて村々(むらむら)を訪(たず)ね歩(ある)いた。」なんて感じの原稿を用意する必要があります。こういう無駄な作業は極力減らしたいものです。
そこで役立つのがAIです。AIのすごいところは、ちゃんと日本語を解釈しているので、漢字のよみもほぼ正しく表現できます。次は、そのためのプロンプトとなります。今回はChatGPTを使用しています。
👦日本語の漢字にルビを振るためにオリジナル原稿を次のように変換してください。
#サンプル原稿
今日も明日もいっぱいお掃除します
#変換後テキスト
[きょう今日]も[あす明日]もいっぱいお[そうじ掃除]します
#ルール
##漢字を[ ]でくくる
##漢字が連続していたらまとめて[ ]でくくってください(正解:2[文字分]。誤り:2[文字][分])
##ルビにする「よみ」を、漢字の前に追加する(例:2[もじぶん文字分])
##漢字の送りは入れないこと(正解:[うたが疑]。誤り:[うたが疑い]
##カタカナは漢字ではないので対象にしないこと
##漢字の連続は必ずひとまとまりでくくること(正解:[しゅくはくりよう宿泊利用]。誤り:[しゅくはく宿泊][りよう利用]
#本番テキスト
一攫千金を夢見た若者は、古文書を求めて村々を訪ね歩いた。
上記の結果次の解答が得られました。
💻以下のように変換します。
#本番テキスト (変換後)
[いっかくせんきん一攫千金]を[ゆめ見]た[わかもの若者]は、[こもんじょ古文書]を[もと求]めて[むらむら村々]を[たず歩]ね[ある歩]いた。
お、完璧だー! と思ってよく見たら、一部おかしい!
本来[ゆめみ夢見]となっていなければならないところが[ゆめ見]になってますし、[たず訪]となっていなければならないところが[たず歩]になってます。こういうところ、AIを100%信じちゃいけないところですね。とはいえ、それでも作業的にはだいぶ楽なので、これくらいのミスはOK牧場!
ちなみに、"よみ"を漢字よりも前に入れているのは、割注では前半が上段に、後半が下段に配置されるためです。また、全体を[ ]で括っているのはスクリプトで割注の範囲を指示するためです。
メチャメチャ面倒な割注ルビの指定フロー
お膳立て(割注ルビ指示入りのオリジナル原稿)はそろったので、次はスクリプトの開発です。
その前に、割注ルビを整えるためのフローについて確認します。手作業で割注ルビを指定する際は、このようにします。
ルビとなる文字を入力して、割注を指定する
ルビとなる文字のサイズを半分程度にする
ルビの行揃え(中央)を指定。上段と下段の行の間隔を指定
本文位置と合わせるためにベースラインシフトを指定
つまりは、これをコード化すれば効率が上がるってわけです。ちなみに私はノーコーディングスタイルでやってますので、開発はすべてAIに頑張ってもらっています。
割注ルビ用スクリプトによる変換フロー
現状どこまでできたかというと、まずツールは「割注ルビ用スクリプト」と「 [ ] 削除スクリプト」の2つがセットになっています。これらを使用した結果が次です。
AIで出力したオリジナルの原稿
割注ルビ用スクリプトを実行(カッコ内が割注ルビ化される)
[ ]削除スクリプトを実行(割注ルビ完成)
おお、そこそこ自動化できている。あとは、フォントを変えたときに崩れないかの確認とか(ある程度は目をつぶるしかないのですが…)、割注ルビ化された後にベースラインシフトを調整したいとか、エラー処理とか、そういった対応が必要かもですね。
まとめ
それにしても割注をルビに使うなんてかなり無茶なこと、よく考えつくもんですねー。確かにできるし、見えるし、管理する上でも便利なのかもしれませんが、まーそのアイデアに感心しました。
そいういう種類のものなので、ツールとしても自分用なので、あまり突き詰めるのもどうかなーとは思うのですが、どこまでブラッシュアップするかなー、みたいな葛藤が生まれます(笑)
というわけで、
今回は、データ処理にコード生成とAIの活躍っぷりがスゴかったYO!