第2章:ソフトウェアの国際化
さて、第二回目はソフトウェアの国際化についてお話をしたいと思います。
そもそもコンピューターシステムは、アメリカやイギリスで最初に発明されたので、ASCII文字とよばれる7bitのコード体系で表される94文字の英語、数字、特殊な文字を表示することが出来ればよかったのですが、日本語や中国は扱うべき文字数が数千、数万とあります。幸いなことに、先代方の努力によってコンピュータ上にこうした日本語や中国語を表示できる仕組みは整えられています。しかし、ソフトウェアのデザインや開発、コーディングの段階で一定の注意を払わなければ、様々な問題が生じる可能性があります。
シリコンバレーで働くエンジニアの多くはインド人と中国人です。彼らは、元々英語を母国語とはしてないはずなので、日本語のデータがハンドリング出来ないソフトウェアの問題など、こちらが言わずに判ってくれるだろうと考えがちですが、実は全くの正反対です。ほとんどのエンジニアが、どんなに優秀であったとしても、全くわからないか、興味がありません。ですから、まず相手にことの重大性を理解させることが先決となります。
そのために、いくつか覚えておくべき用語などを簡単に整理しておきたいと思います。(なお、会社によって細かい言葉の定義が違う可能性がありますので、大枠を掴んで頂ければここでは結構です。)
まずは、「I18N」と「L10N」と「T9N」の区別からはじめましょう。
「I18N」とは、Internationalization(国際化)の略で、「I」と「N」の間に18文字あるからこう略します。発音をカタカナで書くと、「アイ・エイティーン・エヌ」(日本語だと「アイ・ジュウハチ・エヌ」と言ったりするようです。)となります。なんだか舌を噛みそうな発音なので、その日の舌の調子を見て、「インターナショナリゼーション」と好きな方どちらかを使えばよいと思います。同じように、「L10N」は Localization(ローカリゼーション・現地化)の略、「T9N」はTranslation(翻訳)の略となりますが、こちらは元々の単語をそのまま発音することが多いようです。ちなみに、「G11N」、Globalization、「M17N」、Multilingualization(多言語化)という言葉も使われることがあるようです。
ソフトウェアの国際化とは、どんな国や地域のプラットフォーム上でも、ソフトウェアの同様な動作・機能を保障することを指しします。例えば、米国で開発されたソフトウェアを日本語で使う場合だけではなく、日本で開発されたソフトウェアを中国で同様の動きを実現することも国際化と言います。ソフトウェアの国際化の範囲は幅広く、ロケール単位でのリソース情報を外部ファイル化することや、ユニコードやネイティブキャラクタセットなど異なるコードセットでのデータ表示、日付、時間、通貨などのフォーマット、各言語による並び替えや検索、フォントの取り扱い、データベースなどへのデータの格納方法、異なるキャラクタセットのコード変換、などなど多岐に渡ります。アプリケーション開発におけるソフトウェアの国際化の例をいくつかピックアップして、次回にご紹介したいと思います。
ソフトウェアのローカリゼーションとは、国や地域などの法律や、税金、商習慣にあわせた「機能」や「仕組み」をソフトウェアに拡張することを指します。例えば、日本企業では従業員の給与や賞与を振り込む時に、全銀フォーマットとよばれるデータ形式が使われることがあります。このデータ形式は日本でのみ使用されるものですが、日本でパッケージを販売する外資系ソフトウェアベンダーは、この機能をローカリゼーション機能として提供します。(結果的に、パッケージ内で共有可能なローカリゼーション機能は、あらかじめくみこまれることにより標準機能となることもあります。)外資系のERPパッケージをインプリメンテーションされた経験のあるエンジニアの方ですと、人事給与管理システムで多くのローカリゼーションが必要になることはご存知だと思います。話はずれますが、ローカリゼーションの開発も日本人エンジニアが開発を担当します。本社の開発フレームワークを使って開発を進めますが、長期出張であったり、海外で働くチャンスがめぐってくるチャンスが多くある部隊だと思います。
ソフトウェアの翻訳とは、その名の通り、ソフトウェアで予め使用されるユーザインターフェース、メニュー、メッセージや、出力されるエラーメッセージなどを翻訳して提供することを指します。ソフトウェアベンダーは各言語に対応したデータベースを持ち、あらかじめ決まったフォーマットのファイル形式で文字データを受け取り、機械を使って翻訳をします。ソフトウェアの翻訳を行う段階で、あらかじめソフトウェアの国際化を意識してデザイン・開発を行うが大変重要なこととなります。例えば、文字列データ、アイコン、グラフィックスなどはハードコードせず、会社内で決められた翻訳フォーマット(最近は、XLIFF という翻訳標準フォーマットがあるようです。)として外部ファイル化しておく必要があります。ソフトウェアの国際化をしないと翻訳作業が出来ないことは、現地のエンジニアに何度も説明する必要がありました。翻訳作業そのもので、日本人エンジニアの力が必要になるかというとそうでもありません。翻訳の品質チェックなどで多少ニーズがあるかもしれませんが、全体的には翻訳の仕事で、海外で働くチャンスというのはあまりないのかもしれません。
次回は、ソフトウェア国際化の具体例として「文字化け」を取り上げ、その対策についてお話したいと思います。