投稿記事

無料プランの記事 (21)

BreezeSinfonia 2023/02/05 21:51

めんどすぎる改行の話

突然のクソなぞなぞ!

この2つの文章は違う箇所があります!ど~の改行だ?

正解はこの改行!

「上の文章の改行は\r\nだけど、下の文章は\nだけ!」でした!

バイナリエディタで見ると一目瞭然です。0Dが\rで0Aが\nだ!


本題

(改行文字を知らない人向け)
文字は文字でも、プログラムで扱う文字の中には制御文字と呼ばれる文字があります。
基本的には表示されない、プログラムが制御のための目印として扱う文字です。
さっき上がった\r, \nは改行を表す時に使う制御文字になります。

細かいあれこれはWikipediaを見てくれ!
改行コード - Wikipedia


Langscoreでの話

Langscore イズ 何 → Langscore


文章を扱うツールの性質上、どうしても改行からは逃れられません。

全部の改行が\r\nで表されるなら楽ちんなのですが、\r\nはWindowsの方言みたいなもので、Unix系のOS(Macとか)では\nだけで改行を表します。(超雑な括り)


しかもそれはあくまでOS上の話であって、アプリ毎にも扱いが違います。
Windows上で動いていても\nだけで改行を表せるアプリは当然あります。
メモ帳の改行は\r\n、Excelのセル内改行は\nと、この差もかなり厄介です。


例えば、Langscoreが絶賛対応中のツクールVX Aceでは、表示する文章ごとに改行コードが違っていました。


なんで場所ごとに改行が違うんじゃ、という話ですが、
前者は、説明文全部を1つのデータとして保持しています。
後者は、文章を一行ごとに分けてそれぞれを1つのデータとして保持しています。
そのまま表示するか、一回結合してから表示するかの違いがあり、そういう差から改行文字が違っていると思われます。


この改行がどう問題になるかというと、「2つの文章が完全一致するか調べる時」です。
\r, \nも1文字として扱われるので、当然「から\r\nあげ」と「から\nあげ」では完全一致とはなりません。


Langscoreでは「ツクール側が表示しようとしている文章」と、「翻訳データ内の原文章」を比較して該当の翻訳文章を引っ張り出しています。

そのため翻訳データを作る時に改行の扱いをミスると、それはもう悲惨で厄介なことに……
なっちゃったんですけどね……

上図のような処理を行っているのですが、この場合では結果、翻訳文が見つかりません。
流石にクラッシュはしませんが、英語で表示したいのに何故か日本語でしか表示されない!翻訳されてない!という事になります。


なお、この辺りのバグは当然取り除いています。また幸いにも、VXAceではどのファイルに\r\nが使われているか、というパターンが決まっているので、改行文字がパターンから外れている場合は修正する処理を入れています。


結論

改行はめんどくさい!厳密に改行と向き合う時はちゃんと調べてから処理を組もうね!
ほんとごめんなさい……バグバグでマジでごめんなさい……ホントマジ……



というわけで、バグりがちな箇所の言い訳でした。
またもやキャプチャを使用させて頂いた、同人R-18RPG"Kingexit"はこちら!

でかいサムネ使っておっぱいくらい見えてもええやろとも思いましたが、なんてったって全年齢向け記事なので小さいアイコンです。
めっちゃ良いゲームなので、大人のみんなはぜひ買ってくれな!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

BreezeSinfonia 2023/01/07 02:39

使ってるツールの紹介

急に思い立ったので紹介します。
プログラマ界隈では有名なツール多めです。

VS Code

覇権レベルのテキストエディタ。機能がてんこ盛りすぎなのでテキストエディタと呼べるのか怪しい……
膨大な量の拡張機能で君だけの最強のVSCodeを作ろう!

WinMerge

ファイル同士を比較する、いわゆるDiffツール。
テキストファイルの一致確認や一括コピーなど、ここぞというときに役に立つツールです。

Stirling

バイナリエディタ。サクッとバイナリファイルの差分比較をしたいときに使ってます。

Bz

バイナリエディタ。バイナリファイル内の文字列を確認したいときに使ってます。

PowerToys

ファイル名置換、カラーピッカー、ピクセル定規等の17個の機能を1つにまとめたツール群。
個人的にはUI作るときに重宝する機能が満載って思います。

Fork

Gitクライアントツール。
コマンドでGitを扱えないよわよわなのでお世話になってます。
無料で使用できますが、長期間使う場合は有料になります。

PaperPlane

MacのLaunchpadっぽいランチャーを再現した、Windows用ランチャーアプリ。
こういうMac再現系のアプリはしばらくするとアンインストールしたくなるのですが、これはそうならなかった稀有なアプリでした。便利です。

Screenpresso

キャプチャソフト。サクッと撮ってサクッと文字入れが出来るので重宝しています。
無料版もありますが、有料版を使ってます。


以上、いきなりツール紹介でした。
Langscoreが公開された際はWinMergeがあると、なにかと便利にかもです。
ゲーム制作する方だとPowerToysもおすすめかも……?

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

BreezeSinfonia 2023/01/04 22:43

新年のご挨拶(遅)

明けました。
先月の半ばに開設したので全然節目の挨拶という気がしませんが、本年もよろしくお願いします。

今年はプログラミング系の作業に注力しようかな~と思っています。
Langscoreの無料公開もそうですが、もう一つくらい何かツールが作れればいいですね。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

BreezeSinfonia 2022/12/26 20:58

DLsiteで過去作の販売を開始しました。

Ci-en使っているのにDLsiteにアルバム置いてないのもなんだかな~ということで、直近の新譜含む過去作5作品を登録しました。
最後に作品を登録してから……9年越し……?

画像のクリックで商品ページに飛べます。

裁継シリーズ

異世界放浪記シリーズ


既に販売している内容から何も手を加えてませんが、よろしければどうぞ。

楽曲+小説という形態が殆どなのですが、zipを解凍せずにブラウザ上で簡単に見聴き出来るのは良いですね。

また折角なのでフォロワー方向けとして、作品ごとの一言紹介を書いていこうと思います。
詳解という訳じゃないので身にも販促にもならない内容ですが、よかったら見てやってください。
こういう内容じゃないと、この機能を使う場面が無さそう。

フォロワー以上限定無料

作品紹介

無料

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

BreezeSinfonia 2022/12/24 21:13

制作中ツール紹介 翻訳支援ツール"Langscore"

全てはここから始まった

https://twitter.com/akaimato/status/1516723568222302219

僕「あんな超大作作ってる人の募集……きっと倍率高いだろうしダメ元で出してみるか……」

まとさん「ではよろしくお願いします!」

僕「?!」


かくして翻訳支援ツール"Langscore"が制作開始となりました。



見た目

プラグインだけでは完結できないので、外部ツールを用意しています。オタクなので見た目は黒いです。
翻訳する言語の指定や、翻訳文の一覧、翻訳するかの選択をこのツールで行います。


出来ること

  • 翻訳が必要なテキストの抽出
  • CSVファイルとして書き出し
    • Excelなどで編集できます
  • ゲーム内での言語切り替え
  • 言語に応じた画像の表示
  • 言語に応じたフォントの割当
  • 翻訳漏れ、制御文字漏れのチェック


CSVで書き出しできる、の図。(ツールはVSCodeの拡張です。)

実演

Kingexitの使用に当たって許可を頂いています。本当にありがとうございます。

キャプチャどころか、うん十万文字からなる超大作でデバッグできるのも本当にありがたく……お陰で想定漏れしていたケースのバグをかなりの数見つけることが出来ました。


と、良い面だけつらつら書くことも出来るのですが、開発中のアプリなので改善点とかも書いていきます。


スクリプト内の翻訳がムズい

ツクールだけでゲームが完結する場合、翻訳がスクリプトに絡むことはありません。
VX Aceの場合はVocabというスクリプトに基本的なテキストが入っていますが、内容は固定なので予め対応することが出来ます。

しかし現実はそんな甘くなく、外観・演出・機能等をカスタマイズしようとなると一気にスクリプトが絡んできます。

もちろん対応自体は可能ですが、それにはスクリプトの中を書き加える必要があります。

Rubyもjavascriptもマジよゆ~って方は大丈夫だと思いますが、読み解くのが存外面倒くさい……


スクリプト内の文字を調べる処理(字句解析)からもう一歩踏み込んで、文字の意味合いまで調べる処理(構文解析)で対応できるかなあと考えていますが、作業量が多くなりそうなので保留中です。でも対応はしたい。


現在はVXAceのみの対応ですが、絶賛MV/MZ対応中です。
一般公開はMV/MZを対応しきってからかな~と思っています。
多分この調子だと2月末くらいかも……?


というわけでツールの紹介でした。
今回紹介の際に使用させて頂いた同人R-18RPG"Kingexit"はこちら!

アフィリンクもどうぞ!と仰っていただいたので、せっかくなのでパチリ。
紹介画像リンクじゃないけどね!だって全年齢記事だから!

本当なら先週中に記事を公開する予定でしたが、ぎっくり腰からの胃腸炎コンボを食らって寝込んでいました。
年の瀬で冷え込んでますので皆様も体調にはお気をつけをば……

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

1 2 3 4 5

限定特典から探す

月別アーカイブ

記事を検索