
自動ルビファイル作成ツール
はじめに
先日リリースしたこれ!
そうです!
ティラノスクリプト用の「自動ルビプラグイン」です。
便利になったなーと思いつつ……
うーん……
やっぱり……
それでも……
めんどっくさい!!!!
ルビファイルなんて作ってられるか!!!!
こんなん、人類には無理!!!!
いや、私には無理!!!!!!!!
ということで、もっとラクするツールを作りました!
たぶん、これで本当にほぼ自動ですw
概要
ティラノスクリプトのシナリオファイルから漢字のみを抽出し
形態素解析で振り仮名を取得して、ルビファイルを自動で作るツールです。
ティラノスクリプトのプラグインではありません。
プラグインで使用するファイルを自動で作るツールになります。
……ええ、何言ってるか分かりませんねw
というこで、とりあえず使ってみた方が早いです!!
まずは使ってみよう
色々説明するより、まずは一度使ってみましょう!
準備としてメモ帳に適当な文章を入力して保存してください。
今回は下記のように、概要の説明をそのまま貼り付けました。

用意ができたら、下記のURLから「自動ルビファイル作成ツール」のページを開きましょう。
GitHub Pagesで無料公開しています。自由に使用して頂いて構いません。
↓
https://kyusu0918.github.io/AutoRubyMaker/

ページが開きましたら、ファイル選択から、先ほどメモ帳で作成した「sample.txt」のファイルを選択します。

そして、このままの状態で「作成」ボタンを押しましょう。
数秒で作成が完了するかと思います。

そうしましたら、ルビファイル行の右端にある矢印をクリックし、作成されたルビファイルの中身を確認しましょう。

先ほどのメモ帳に書いた文章から、漢字部分のみが抽出され、それに対応する振り仮名が設定されていますね!
そして、もう1つ!
タグ付加ファイル行の右端にある矢印をクリックして、作成されたタグ付加ファイルを見てみましょう。

ルビファイルとして抽出された漢字の前後に[srb]と[erb]のタグが付いていますね!
そうです、これで「自動ルビプラグイン」で使用する「ルビファイル」とルビを割り当てる「シナリオファイル」が出来上がりました!!
さて、ここまでで、なんとなく使い方が分かった方は、色々試してみてください。ただし、形態素解析は完璧ではありません。
まれに意図とは別の振り仮名になってしまいますが、その辺はご了承ください。
では、この後は、詳細な説明になります。
使用方法(詳細)
今回は、ティラノスクリプトで、プロジェクトを作成した際に自動で作られる「ティラノスクリプトサンプルゲーム」にルビを組み込むことを想定して説明していきます。
①入力ファイル
「ファイルを選択」ボタンからファイル選択ダイアログを開きます。

OS標準のファイル選択ダイアログが開きますので、ルビを抽出したいファイルを選択します。(今回の説明はWindows11で行います。)
「ティラノスクリプトサンプルゲーム」の「scene1.ks」のファイルを選択します。

基本はティラノスクリプト(ビルダー)のシナリオファイル(.ks)を選択しますが、テキスト形式(.txt)のファイルであれば、シナリオファイル以外でも選択可能です。
ただし、文字コードは、utf-8に限りますのでご注意ください。
②作成条件ー対象品詞
入力ファイルから抽出する品詞を選択します。

形態素解析は、文章を「意味を持つ最小単位(形態素)」に分割し、品詞を判別してくれます。
自動ルビ作成ツールは、この機能を利用していますので、抽出したい品詞を選択することが可能です。
全てをチェックすると、品詞に関係なく、全ての漢字が対象となります。
今回は名詞のみを抽出したサンプルを作成します。
対象が名詞なので、「簡単」「誰」「私」の部分が抽出されています。
逆に動詞の「作れる」「来て」などは、対象外となっています。
[
{ "ruby": "簡単", "text": "かんたん" },
{ "ruby": "誰", "text": "だれ" },
{ "ruby": "私", "text": "わたし" },
さて、ゲームが[srb]簡単[erb]に作れるというから、来てみたものの[p] [srb]誰[erb]もいねぇじゃねぇか。[p]
③作成条件ールビファイル形式
作成する「ルビファイル」の形式を選択します。

自動ルビプラグインの[arb_json]タグで読み込めるJSON形式にするか
[arb]タグを列挙したシナリオ形式のファイルにするか選択します。
[
{ "ruby": "簡単", "text": "かんたん" },
{ "ruby": "誰", "text": "だれ" },
{ "ruby": "私", "text": "わたし" },
[arb ruby="簡単" text="かんたん"]
[arb ruby="誰" text="だれ"]
[arb ruby="私" text="わたし"]
作成されるファイル名は、入力したファイル名に「_ruby_store」が付加されたものになります。
また、拡張子は、ルビファイル形式で選択したものになります。
例)入力ファイルが「scene1.ks」で、JSON形式の場合
scene1.ks ⇒ scene1_ruby_store.json
④作成条件ータグ付加ファイル
ルビ対象となった漢字の前後に[srb]と[erb]のタグを付加したファイルを作成するか選択します。
作成する場合はチェックしてください。
チェックを外すとファイルは作られません。

入力ファイルであるオリジナルのシナリオファイルを変更することなく、タグが付加された新しいシナリオファイルを作成します。
#
さて、ゲームが[srb]簡単[erb]に作れるというから、来てみたものの[p]
[srb]誰[erb]もいねぇじゃねぇか。[p]
……[p] 帰るか。。。[p]
作成されるファイル名は、入力したファイル名に「_ruby_tag」が付加されたものになります。
また、拡張子は入力ファイルのものが使用されます。
例)入力ファイルが「scene1.ks」の場合
scene1.ks ⇒ scene1_ruby_tag.ks
⑤作成
作成ボタンを押すと、入力ファイルと作成条件により、「ルビファイル」と「タグ付加ファイル」を作成します。

入力ファイルがシナリオファイルの場合、先頭行がコメント(;)もしくはタグ開始([)の場合、その行は無視されます。
所謂テキストの内容だけが対象となります。
また、作成が完了すると、作成ボタンの脇に「ルビ対象数」と「作成ルビ数」が表示されます。
「ルビ対象数」は、条件に当てはまった漢字の数になります。
タグ付加ファイルを作成している場合は、タグが付加された漢字の数と一致します。
「作成ルビ数」は、作成されたルビデータの数になります。
文章の中で同じ漢字があった場合、ルビデータとしては1つになります。
即ち、重複したルビデータは作成されません。
⑥結果行
作成が正常に完了すると、「ルビファイル」と「タグ付加ファイル(チェックした場合)」の結果行が表示されます。

結果行には、ファイル名、コピーアイコン、ダウンロードアイコン、展開アイコンがそれぞれ表示されます。
まずは、確認のため右端の展開アイコンをクリックします。

作成された「ルビファイル」の内容を確認できます。
今回はJSON形式で作成しました。

同様に作成された「タグ付加ファイル」の内容も確認できます。
今回は名詞で作成したので、名詞部分のみタグが付加されています。
内容が確認できたら、クリップボードのアイコンからコピーするか
ダウンロードのアイコンからファイルをダウンロードしましょう。

今回は、「ティラノスクリプトサンプルゲーム」に含めたいので、ダウンロードを行います。
以上で「自動ルビファイル作成ツール」の使用方法の説明は完了となりますが、引き続き、今回作成した「ルビファイル」と「タグ付加ファイル」を「ティラノスクリプトサンプルゲーム」に組み込んでいこうと思います。
ティラノスクリプトへの組み込み
ここからは、「自動ルビプラグイン」が導入されていることが前提となります。
「自動ルビプラグイン」に関しては、下記を参照してください。
①ダウンロードファイルの配置
「自動ルビファイル作成ツール」からダウンロードした「ルビファイル」と「タグ付加ファイル」をそれぞれの場所に移動します。
「ルビファイル」はプラグインの導入されたフォルダに移動しましょう。
初期段階で「auto_ruby.json」の入っているフォルダです。

「タグ付加ファイル」は通常のシナリオファイルが配置されているフォルダへ移動しましょう。

②タグ付加ファイルを呼び出すよう変更
「title.ks」から、「タグ付加ファイル」を呼び出すよう変更します。
具体的には下記のようになります。
[cm]
@clearstack
@bg storage ="title.jpg" time=100
@wait time = 200
*start
[button x=135 y=230 graphic="title/button_start.png" enterimg="title/button_start2.png" target="gamestart" keyfocus="1"]
[button x=135 y=320 graphic="title/button_load.png" enterimg="title/button_load2.png" role="load" keyfocus="2"]
[button x=135 y=410 graphic="title/button_cg.png" enterimg="title/button_cg2.png" storage="cg.ks" keyfocus="3"]
[button x=135 y=500 graphic="title/button_replay.png" enterimg="title/button_replay2.png" storage="replay.ks" keyfocus="4"]
[button x=135 y=590 graphic="title/button_config.png" enterimg="title/button_config2.png" role="sleepgame" storage="config.ks" keyfocus="5"]
[s]
*gamestart
;一番最初のシナリオファイルへジャンプする
;@jump storage="scene1.ks"
@jump storage="scene1_ruby_tag.ks"
「;一番最初のシナリオファイルへジャンプする」の個所で
初期状態の「scene1.ks」をコメントアウトし、「タグ付加ファイル」の「scene1.ks_ruby_tag.ks」を呼び出すよう追加します。
③ルビファイル読み込み
「scene1_ruby_tag.ks」の最初の方で、「ルビファイル」を読込みましょう。
具体的には下記のようになります。
;ティラノスクリプトサンプルゲーム
*start
; ルビファイル読み込み
[arb_json file="./data/others/plugin/auto_ruby/scene1_ruby_store.json"]
[cm ]
[clearfix]
[start_keyconfig]
[bg storage="room.jpg" time="100"]
「*start」の下に、ルビファイル読み込み用の[arb_json]を追加します。
これで組み込みは完了です。
では、実際に動かして確認してみましょう!

大丈夫ですですね!
これで、このシナリオで使われている名詞の漢字部分には全てルビが振られました!!
④ちょっと注意!!
上記で組み込みは完了しているのですが、「タグ付加ファイル」は、オリジナルを破壊しないように、「_ruby_tag」をファイル名に付けたコピーです。
なので、このまま使用すると、ちょっと問題になる部分があります。
[jump]や[glink]などで、storageを指定している部分が、オリジナルのシナリオファイル名になっているからです。
例えば、今回のシナリオですと、下記のglinkにあたります。
#あかね
もしかして、ノベルゲームの[srb]開発[erb]に[srb]興味[erb]があるの?[p]
[glink color="blue" storage="scene1.ks" size="28" x="360" width="500" y="150" text="はい。興味あります" target="*selectinterest" ]
[glink color="blue" storage="scene1.ks" size="28" x="360" width="500" y="250" text="興味あります!" target="*selectinterest" ]
[glink color="blue" storage="scene1.ks" size="28" x="360" width="500" y="350" text="どちらかと言うと興味あり" target="*selectinterest" ]
[s ]
*selectinterest
このシナリオのファイル名は「scene1_ruby_tag.ks」です。
ですが、オリジナルのファイル名は「scene1.ks」です。
なので、この部分でオリジナルのシナリオへジャンプしてしまうので、シナリオを最後までルビを確認する場合は、このようなジャンプ先を一時的に調整する必要があります。
#あかね
もしかして、ノベルゲームの[srb]開発[erb]に[srb]興味[erb]があるの?[p]
[glink color="blue" storage="scene1_ruby_tag.ks" size="28" x="360" width="500" y="150" text="はい。興味あります" target="*selectinterest" ]
[glink color="blue" storage="scene1_ruby_tag.ks" size="28" x="360" width="500" y="250" text="興味あります!" target="*selectinterest" ]
[glink color="blue" storage="scene1_ruby_tag.ks" size="28" x="360" width="500" y="350" text="どちらかと言うと興味あり" target="*selectinterest" ]
[s ]
*selectinterest
storageを「scene1_ruby_tag.ks」に変更しました。
これで、別のシナリオへジャンプしてしまうことがなくなりました。

大丈夫そうですね!
コツとしては、オリジナルのシナリオファイルの方を、別の名前に変えておいて、ツールで作成された「scene1_ruby_tag.ks」のファイル名から「_ruby_tag」の部分を削除して確認した方がラクかもしれません。
免責
形態素解析を利用して、漢字を抽出していますが、これは完璧ではありません。まれに意図しない振り仮名が振られる可能性があります。
この辺りはご了承頂けると助かります。
また、当ツールの使用よって発生するいかなる損害について、制作者は一切責任を負いません。
おわりに
長くなってしまいましたが、これで本当にほぼ自動ルビ振りツールになったかと思います。
ただし、突貫で作った感は否めませんので、何か不具合や要望等ありましたら、ご連絡ください。
ここのコメントに書いて頂いても構いません。
また、自身で使っていく過程で、ちょいちょい機能を追加するかもしれませんw
その辺もご了承頂けると助かります!
最後にもう一度URLを貼っておきますね。
GitHub Pagesで無料公開しています。自由に使用して頂いて構いません。
↓
https://kyusu0918.github.io/AutoRubyMaker/

また、GitHubにソースも公開していますので、興味があるようでしたらどうぞ。