見出し画像

How to 日本語化~序章

今回は日本語化に使うテキストエディタやバイナリエディタを少しだけ紹介します。

文字コード(エンコード)

その前に文字コード(エンコード)について少しだけ説明します。

文字コード(エンコード)とは文字に割り当てられているバイト表現です。つまりバイナリエディタでみなければその実態はわかりません。

アプリにより様々な書き方がされているため、個別には紹介できませんが、基本的にANSI、SHIFT-JIS、UTF-8、UTF-16LE/BE(Unicode)が主に日本語化で見かける文字コードだと思ってください。

ANSIやNotepad++やメモ帳、SHIFT-JISは海外アプリであっても対応はしていると思いますが、ほぼ使うことはありません(とはいえ、たまにSHIFT-JISでないとダメなものもあります)。
UTF-8、UTF-16LE/BE(Unicode)は対応していないアプリを探す方が難しいぐらいにはなっているでしょう。また日本語化で使用する文字コードはほとんどにおいてUTF-8となっていることを覚えておいてください。

最初に書いたバイト表現をここで説明すると、バイナリエディタで見た場合、UTF-8は日本語などの文字を1文字を3バイト、英数字を1バイトで表現します。UTF-16LE/BE(Unicode)は全ての文字が2バイトで表現されます。

※バイナリエディタでは右側にエンコードに合わせてテキスト表示されるものが多いです(テキスト表示できない数値は空白や記号で表示されます)。このテキストもエンコードがあっていなければきちんと表示できません。バイナリエディタで開いてBOMがついていなければエンコードもわかりませんのでエンコードを変更して確認する必要があります。

UTF-8 BOM付き
UTF-16LE BOM付き
UTF-16BE BOM付き

BOMというのはバイトオーダーマークというもので、テキストデータをバイナリエディタで見た場合にファイルの最初にUTF-8であれば「x0EFBBBF」、Unicodeは「LEなら0xFFFE、BEなら0xFEFF」というシグネチャ(ヘッダ)がそれに値します。一部のアプリではBOMがあるかないかでテキストのエンコードを判断しているものもあります。

LEとBEはリトルエンディアン(LE)とビッグエンディアン(BE)の略でテキストデータをバイナリエディタで見た場合に1文字の文字コードの並び方の違いになります。例えば「あ」という文字はLEでは「0x4230」、BEでは「0x3042」となります。一般的にLEのほうが使われますが中にはBEもあるということを覚えておくといいでしょう(0xは16進数を表すものです。BASICであれば&Hですね。0xと書かれていれば16進数なんだなと覚えておきましょう)。

翻訳においてはゲーム内文章がどの文字コード(エンコード)で保存されているかが重要になります。文字コードはテキストエディタで開いた際にステータスバー(ウィンドウの一番下に表示される部分のこと)に表示されていることが多いです。
バイナリ型テキストの場合はほとんどがUTF-8となっていますが、外部ファイルのテキストファイルの場合はANSIの場合もあります。仮にUTF-8などになっていてもプログラム側でマルチバイト言語(日本語や韓国、中国語など)に対応していなければ日本語化はできません。

テキストエディタ

翻訳していくだけであればWindows標準のメモ帳でもいいのかもしれませんが、私は正規表現での検索置換なども使う場合もあるので別途テキストエディタを用意しています。結構多くのテキストエディタがありますが、UTF-8やUnicode(ユニコード)に対応したものを用意しましょう。

Windows標準のメモ帳

文字コードはANSI、UTF-8(BOM付)、Unicode、Unicode(big endian)に対応しています。

ANSIで保存した場合にはSHIFT-JISというエンコードで保存されます。厳密にいえばANSIとSHIFT-JISは違う(Notepadd++でANSIにすると文字化けします)ため、メモ帳以外を使う方は注意してください。
SHIFT-JISでは表現できない文字もあるため、メモ帳にハングル文字などを入力してANSIで保存しようとすると警告が表示されます。まず使わない形式ですので選ばないようにしましょう。またメモ帳ではこのUTF-8とUnicodeは基本BOM付きとなります。

Notepad++

Windowsのメモ帳(Notepad)と同じ名前を持ったテキストエディタですが、様々な機能を持ったエディタとなっています。海外アプリですが日本語にも対応しています(メニュー内のSettings → Preferencesでウィンドウを開き、General内のLocalizationから「日本語」を選択)。
全ての機能を記載するのはできませんが、検索置換で正規表現に対応していたり、ファイル内検索ができるので個人的にはかなり便利だと思っています。

ダウンロード:https://notepad-plus-plus.org/

Notepad++

また左右でファイルを見比べながら作業ができるのも使い勝手がいいと思います(上図)。しかもスクロールを同期できるので大変便利です。CSVやTSVなどのように1つのファイルに全ての言語が入っている場合は不要ですが、各言語でファイルが分かれている場合には重宝する機能です。エンコードも多くに対応していますのでテキストエディタで悩んだら候補の1つにしてもいいと思います。

Merry

国産のテキストエディタです。様々なエディタを経由して現在ではこのMerryをメインに使用していますが、軽くて非常に使いやすいエディタだと個人的には思っています。
検索置換における正規表現やファイル検索も可能ですし、こまめにアップデートもされていますのでお勧めのエディタの1つです。

Merry

ダウンロード:https://www.haijin-boys.com/software/mery

また、WikiもありFAQやマクロリファレンス、プラグインライブラリ、構文ファイルなども公開されています。

ここでは紹介しませんが、TeraPad秀丸エディタなどといったものもあります。前者は更新が止まっているのが残念。後者は有料なのでお好みで。

バイナリエディタ

バイナリデータは0~255(0x00~0xFF)で表現されたものをいいます。テキストエディタで開けば変な記号で表示されたりします。バイナリエディタを使う理由は独自エンジンやUnityEXなどでエクスポートしたデータを確認したり解析したりするためです。日本語化では避けて通れないツールの1つとなります。

2つしか紹介しませんが、他にも色々あります。ご自身が使い勝手のいいもので構わないと思います。

Stirling

すでに開発が終了しているバイナリエディタです。Win95/98のころのソフトですがWin7でも普通に動作し動作も軽快ですので単純にファイルを確認した際に重宝しています。画面左にはバイナリデータ、右にはテキスト表示がされます。ただテキスト表示はUnicodeには対応していますが、UTF-8に対応していないのが残念なところ。

検索も16進数と文字列で検索できますが、UTF-8に対応していないためUTF-8で保存されたものは文字列で検索できないのが残念な部分です。

ダウンロード:https://www.vector.co.jp/soft/win95/util/se079072.html

FavBinEdit / FavBinGrep

前者はバイナリエディタ、後者はファイルを10進数、16進数、文字列でファイル検索のできるツールです。バイナリエディタのほうは多数の文字エンコードに対応し、4GBを超えるような大きなファイルにも対応しています。

ダウンロード:https://www.wabiapp.com/FavBinEdit/

FavBinEdit

またデータ解析をする場合はウォッチデータを別途追加できるため重宝しています。このウォッチデータは別データとして保存できます。
ウォッチデータというのは上記のようなデータ解析に使用しています。サンプルは9th Dawn IIというゲームのDAT.datです。このデータはかなり素直な作りとなっています。このウォッチデータは非常に便利なので覚えておくといいでしょう。

その他のツール

データの解析に役立つものとしてDataCutter、WinMergeなどもそろえておくといいでしょう。

DataCutter

DataCutter(9th Dawn IIのDATA.datを開いた状態)

データが生データ(圧縮されていない)でパックされているものであればそのデータをアドレス、サイズ、そしてプレビューとともに表示してくれる非常に便利なツールです。またデータは抽出することもできます(リパックはできません)。

ただし、対応フォーマットはBMP(DIB), JPEG, PNG, MAG, ICO, CUR, ANI, WAVE, MIDI, MP3, AVIとなっています。ただDDSなどゲームでよく使用されるフォーマットには対応していないため、使いどころが難しいかもしれません。
主に開発者独自のゲームエンジンで作成された場合などに役立つツールの1つです。

WinMerge

WinMerge

テキストの差分を事細かに表示してくれるツールですが、フォルダを見比べ違いのあるファイルを表示することも可能なツールです。
使い道としてはアップデートなどでファイルが変更された場合にデータを見比べるために使います(このような見比べをするためにアップデート前のオリジナルファイルを保存しておくことも重要になります)。
※テキストエディタにも同じような機能があるものもありますが、私はこちらのほうが分かりやすく表示してくれるので愛用しています。

プログラミング言語

上記の9th Dawn IIのDATA.datを始め多くのゲームでは小さなファイルを1つのファイルにパックしてあります。一種の圧縮ファイルのようなものですが、フォーマットは開発者のオリジナルだったりすることもあります。

ZIPやRAR、7zのようにツールが存在するわけでもありませんし、添付されていることもほとんどないため独自に作る必要があります。またバイナリ型テキストの場合にも必要な場合があります(UABEのDumpでも構いませんが、複数人で作業する場合はTSV、CSVなどに変換しGoogleスプレッドシートに取り込めるようにするため)。つまりデータのアンパッカー、リパッカーを作るためにはどうしてもプログラミング言語が必要となるわけです。

私はAutoItというものを使っています。GUIの作成もできますが少しクセがあります。日本語の情報が少ないためプログラミングをしたことがない人にはあまりお勧めできません(個人的には手軽なので好きです)。

フリー(無料)で入手でき、難易度が低いのはVisual Basicになるのでしょうか。情報も比較的多いと思いますし、簡単なものであればExcelVBAでもなんとか出来るかもしれませんがおススメはしません。
その他Python、Cなどでしょうか。私はVBとVBAはちょっとしたものならプログラムが組めますがPython、Cなどは勉強をしていないため使い勝手などはわかりません。

プログラミング言語は単純作業の繰り返しや高度なことをしようと思えば必要になってくると思いますので、少しずつでも覚えていくことをお勧めします。

最後に

ここで挙げたツール群は私個人が使用しているものです。現在使用されているもので日本語化を行うための機能(というか文字エンコード、正規表現による検索置換)があれば、何を使っていただければ問題ありません。

特にプログラミング言語は情報量の多いものを選択することを強くお勧めします。私のようにAutoitを選択すると情報の少なさや出来ることが制限される可能性もあります。

海外ゲームの日本語化は最終的に翻訳が重要視されていますが、実際には上記や初級篇に記載しているツール群を使って解析することが前提になっています。これから有志日本語化を始めようと思っている方は初級篇以降をしっかりと読み自分の力にしていただければと思います。

内容が気になりましたらぜひサポートをお願いします。そのサポートが継続の力になります。よろしくお願いします。