発表・掲載日:2004/02/19

リナックスソフトの多言語化をオープンソースで実現

-多言語対応を容易にし、言語による情報格差の解消へ-

ポイント

  • 多言語の正しい表示、入力、編集操作を可能にするライブラリをオープンソースとして公開
  • 本ライブラリによって、多言語に対応したアプリケーション開発を容易にし、開発コストの削減、使用言語の違いによる情報環境の格差解消を加速
  • 各国電子政府のオープンソース採用には、自国語対応が必須である。本ライブラリによって、日本語対応・多言語対応が容易になり、オープンソース化が推進される
  • オープンソースソフトウェアの標準化を推進する非営利団体Free Standards Groupとの協力を通じ、国際標準としての普及を目指す


概要

 独立行政法人 産業技術総合研究所【理事長 吉川 弘之】(以下「産総研」という)情報処理研究部門【部門長 大蒔 和仁】は、リナックス上のアプリケーションを多言語化するライブラリthe m17n library』(多言語を取り扱うアプリケーションを作成するための部品集)を開発し、2004年3月1日よりGNU Lesser General Public License (LGPL)に基づくオープンソースでの公開を行なう。また、産総研はFree Standards GroupExecutive Director Scott McNeil】のワーキンググループの一つである Open Internationalization Initiative(OpenI18N)Chairperson Hideki Hiura】と協力し、その中のサブコミッティとして活動することにより、オープンソースソフトウェアの国際標準としての『the m17n library』の普及を図る。

 産総研は、世界中で利用されている多言語エディタ『Mule』など、多言語ソフトウェア開発の豊富な経験がある。今回の『the m17n library』はこの経験に基づいて開発され、多言語での正しい表示、入力、編集操作を可能にする機能が集められている。多言語化とは複数の言語を同時に混在させて使用できる環境にすることであり、翻訳機能は含まれない。

 本ライブラリによって、リナックス環境下でのアプリケーションを多言語対応させることが容易になり、この結果として、使用する言語によって利用可能な情報や情報処理環境が大きく違うという、言語による格差の解消につながると確信している。また、各国で活発になりつつある電子政府のオープンソース化においても、本ライブラリを利用することによってそれぞれの国の自国語対応を容易に短期間に実現することが可能となる。

Free Standards Group および Open Internationalization Initiativeについて
Free Standards Group(米国)は標準を開発し普及することによって、フリーソフトウェア、オープンソースソフトウェア利用の促進を図る、独立の非営利団体(NPO)である。Open Internationalization Initiativeは、Free Standards Group のワーキンググループのひとつであり、リナックスの国際化に焦点を置いた活動を行っている。
参考URL:http://www.freestandards.org/
      http://www.openi18n.org/

 

『the m17n library』の利用例の図

the m17n library』の利用例
-23言語の同時表示-


研究の背景

問題点1
 現在の計算機の利用状況では、書類を作成したりメールをやりとりしたりすること、すなわち書き言葉を用いて情報を交換するという作業が大きな部分を占める。しかし世界のすべての書き言葉に対して平等なサポートが行なわれているわけではない。利用者の多い言語ほど充実した機能を安価に利用できるのが実情であり、情報や情報処理環境について言語による格差が存在している。

問題点2
 現在開発されているほとんどのアプリケーションでは、ユーザとの情報のやり取りに書き言葉を必要とはしていても、書き言葉の処理が主目的ではない。それにもかかわらず、個々のアプリケーション開発者が必要に迫られて、それぞれ独自に多言語対応を行なっている。これはソフトウェア開発の人的、時間的資源の浪費に他ならない。

研究の経緯

 産総研には多言語エディタMule(後にGNU Emacsに統合。Emacsはリナックスの各種のディストリビューションに含まれている。)などの開発実績があり、多言語情報処理においては豊富な経験をもっている。『the m17n library』の開発にあたっては、独立行政法人 情報処理推進機構(IPA)【理事長 藤原 武平太】の情報技術開発支援事業「Unix/Linux汎用多言語処理機能ライブラリの開発」、Free Software FoundationPresident Richard Stallman】の「フリーソフトウェア開発に対する寄付金」などの支援を受けて、研究を行った。

研究の内容

〔多言語の入力・編集・表示における問題〕

 『the m17n library』は、複数の言語が混在する文書を入力し、編集し、表示するためのソフトウェアである。一見あたりまえに見えるこの処理にも、さまざまな言語を扱うことを考慮するとたくさんの問題が存在する。アプリケーション開発者は、新たな言語のサポートを始めようとするまで問題の存在自体に気が付かない場合さえあり、問題点を洗い出し整理された処理方法を提示しておくことに大きな意味がある。

入力
 普通のキーボードのキーを一度押して入力できる文字の種類には限りがある。このような文字だけで入力がすむ言語は、英語やオランダ語などごく少数に過ぎない。
 ほとんどの言語では、キーボードからの入力を別の文字として読み替えたり、複数のキーボード入力によって一つの文字が入力されたとして取り扱ったりすることによって、入力を行なう。たとえば、ギリシャ語入力の際には“a”を“α”に、“b”を“β”にといったような読み替えを行ない、タイ語入力では一つのキー入力を一つの子音か母音、声調記号などに読み替える。ヨーロッパの多くの言語では、 “ ’” と “a”を続けて受け取ると“á”に読み替えるなどによって、アクセント付の文字を入力する。
 日本語のように必要な文字の種類が多い言語の場合には、さらに複雑である。キーボード上には40ほどのキーしかないため、まずはキー入力の組み合わせによって入力したい文字の読みだけを指定し、次にその読みを元に辞書を参照して文字を選択してもらうという2段階入力(いわゆる「かな漢字変換方式」)が利用される。日本語と同様漢字を用いたくさんの文字を必要とする中国語の場合も同様の状況である。

編集
 文書の編集は、カーソルの移動、文字の挿入、削除、検索、置換、行の送りなどから構成される。このすべてについて、扱っている言語に応じた処理が必要となる。たとえば、右から左へ書かれる言語では「次の文字」はすぐ左側の文字のことであるし、アラビア語の文章中で空白を削除すれば前後の文字の形を変えなくてはならない。日本語では単語の途中で改行してもかまわないが、多くの言語ではハイフンを使って単語がつながっていることを示すなどの特別な処理が必要である。

表示
 計算機のメモリの中で、文字の情報はほぼ読まれる順に一列に並べて記憶されている。したがって日本語や英語などでは、メモリ中の文字をそのまま、左から右へ、前の文字の幅だけずらしながら表示していけばすむ。
 イスラエルで使われているヘブライ語などは、左から右ではなく右から左へ書かれる。このような言語でも、文中に現れる数字は左から右に書く習慣があるため、単にメモリの内容を右から左へ表示していけばいいというわけではない。もちろんヘブライ語の文の中に英語の人名が現れればその部分は左から右へ書かれるわけであり、左書きと右書きの混在を扱うことは多言語処理の基本である。
 またタイ語やヒンディー語では、母音や声調(イントネーション)を表す記号が子音の上下に表記されたり、子音に続いて発音される母音が子音の前に表記されたりする。このため、メモリ中の文字を一つずつ順に配置するのではなく、前後の文字とのつながりを調べながら2次元的に配置していかなくてはならない。
 さらにアラビア語などのように文字を続けて書く習慣のある言語では、文字の形自体がその文字が語中でどの位置に現れるかによって変化する。つまり、一文字だけであらわれるか、語の先頭、中間、最後のいずれかの位置に現れるかによって、違った形をとる。このような言語では、一文字だけ入力された時点では一文字だけで現れた時用の形で表示しておき、次の文字が入力された時点で前の文字を語の先頭用の形に変えてから次の文字を語の中間の形で表示する、などの複雑な処理が要求される。
 

〔ライブラリ〕

 ソフトウェアにおけるライブラリとは、特定の目的に添ったプログラム部品集のようなものである。アプリケーション開発者は、もちろんすべてのプログラムを自分でゼロから書くこともできるが、適当なライブラリを選んでそこに含まれる部品を使うことによって、時間と手間を節約することができる。
 『the m17n library』は、アプリケーションではなく、ライブラリである。すなわちこのライブラリ単体で利用するものではない。『the m17n library』は、部品集であり、その中には多言語を自由に取り扱うアプリケーションを簡単に書くための部品が詰まっている。例をあげれば、このライブラリには「タイ語でもアラビア語でも他の言語でも正しく表示できる」という部品が入っており、アプリケーション開発者がその部品を使ってプログラムを書くことによって、そのアプリケーションは正しい表示を行なうことができる。開発されるアプリケーションがワードプロセッサであろうと、自動翻訳システムであろうと、「正しい表示用」の部品は同じように必要であり、同じ部品がいろいろなアプリケーションで利用できる。
 「研究の背景」でも述べたように、現状ではそれぞれのアプリケーション開発者が何もないところから独自の方式で多言語対応を行なっている。しかし各アプリケーションにおいて、ユーザとの書き文字によるやりとりの部分(ユーザインターフェース)はアプリケーション本体から比較的独立している。一方、多言語ユーザインターフェースに要求される機能はアプリケーションにかかわらず共通している部分が大きい。すなわちライブラリとして提供することによる効用は大きいと考えられる。

ライブラリの説明図

色々なライブラリ内の部品を使って、アプリケーションを書くことができる。


the m17n libraryの特長〕

 『the m17n library』は、C言語というアプリケーション開発言語を用いる際に利用できるライブラリであり、書き文字によるユーザインターフェースを多言語化するという目的に沿ったプログラム部品が集められている。C言語はリナックスでのオペレーティングシステム等の基盤ソフトウェアを実現するために広く用いられているので、このライブラリによってリナックス上のソフトウェアを多言語対応させることが容易になる。
 世界中のユーザを対象とするアプリケーションにとっては、多言語対応は当然の要素であり、本来ならば開発の最初から考慮されるべきである。しかしたいていの場合、開発者は英語やせいぜい自分が使う言語を念頭に設計を始める。そしてアプリケーションの形がある程度固まってから、それを多言語対応させる必要に気付く。
 このような開発者にも多言語化ライブラリを使ってもらうためには、一般によく用いられているライブラリを、プログラム部品の利用方法があまり変わらない形で多言語化したものを提供すればよい。こうすることによって、利用するライブラリの切替えが簡単になり、ひいては多言語対応の敷居を低くすることになる。C言語でのアプリケーション開発においては、基本的な処理機能を与えるライブラリ libcXウィンドウシステムが非常に普及している。そこで『the m17n library』は、これらに含まれている文字処理機能と概念的に同等なものを提供するように設計した。
 C言語では、文字はいわゆるアルファベットだけであることを想定している。アルファベットの各文字は固有の数値に置き換えられ、それ以外の文字はC言語の世界では存在しない。したがって多言語処理を行なうためには「文字」とは何であるかという点にさかのぼって設計を変更しなくてはならない。『the m17n library』では特別なデータ構造(特定の情報を表す枠組み)を設計し、それを用いて文字の列を表すことにした。『the m17n library』ではこのデータ構造をM-textと呼んでいる。M-textには各文字に固有の数値以外にもさまざまな情報を付け加えることができる。その文字がどのような言語に属すのかに始まり、どちら向きにかかれるのか、何色で表示されるのかに至るまで、必要な情報はM-textにすべて含まれる。何が「必要な情報」であるのかはその文字がどのように使われるのかによって決まる。たとえば、ある漢字を表すM-textが読み上げソフトで使われるのであれば、その漢字の読みは「必要な情報」であるが、印刷にしか使われないのであれば必要ではない。
the m17n library』はこのM-textで表現された文字を適切に処理するためのプログラム部品集である。処理機能の設計にあたっては、前述の方針に沿って、ライブラリlibcやXウィンドウシステムの文字や文字列処理機能の自然な拡張としてM-textを取り扱う機能が実現されるように配慮している。たとえば、アルファベットからなる文字列をコピーするプログラム部品がライブラリlibcにあるので、M-textをコピーするプログラム部品が『the m17n library』に存在し、文字列を単純に横に並べて表示するプログラム部品がXウィンドウシステムにあるため、複雑な処理を必要とする多言語文字列をウィンドウに表示するプログラム部品を『the m17n library』に含めている。もちろん『the m17n library』全体には、このような既存のライブラリに相当する機能のほか、多くの新規の機能が追加された形になっている。

the m17n libraryの特長の図

一部のライブラリを切替えることによって、簡単に多言語対応させることができる。

the m17n library利用の一例:表示〕

 世界中の文字に対応するために『the m17n library』では、複数回変換を行なう表示の機構を使っている。たとえばアラビア語のように、前後に他の文字があると文字の形が変わり、かつリガチャ(合字:特定の複数の文字を表示や印刷の際特殊な文字に置き換えること)が存在する言語の場合は、まずリガチャを処理し、次いで前後の文字による影響を処理することによって、簡単に正確な表示を行なわせることができる。

the m17n library を利用した表示の図


the m17n library を利用した表示
the m17n library では、アラビア語などの正しく表示するのが難しい言語を、複数回フィルタを通すというやり方で表示している。

今後の予定

 オープンソースソフトウェアの国際標準化を行なっているFree Standards Groupとの協力関係に基づき、『m17n library』の国際的な普及と改善を図っていく。


用語の説明

◆リナックス
Linux。オープンソース版のUnix系基本ソフトであり、1991年フィンランド Helsinki 大学の Linus Torvalds によって作成され、多くのプログラマの助力により、 インターネットを通して発展してきた。現在サーバ市場においては Microsoft Windowsを脅かす存在となっている。本来リナックスとは基本ソフトの核となる部分のみを指す言葉だったが、リナックス上で動作するシステム全体を指す言葉としても用いられることが多い。通常、システムの構築・運用に必要なソフトウェア群とともに配布される。[参照元へ戻る]
◆多言語化
一つのソフトウェアの上で、複数の文字、言語などの文化的慣習を一度に混在させて使えるようにすること。多言語化と対比して述べる場合、「国際化」はたくさんの言語の中から切替えて一度には一つだけを使えるようにすることを指す。
外国語の辞書では最低2つの言語を、それぞれの言語の正しい書き方で混在させる必要がある。またグローバルな組織では、顧客や職員のデータが特定の言語で書かれることは想定できない。名前や住所は各人各国の習慣にそってそのまま記録し利用することが最も便利であり、ローマ字などでの表記に無理やり変更してしまうと問題が起こりやすい。このような状況では、どのような言語の文字でも統一的に扱うことのできる多言語対応のソフトが必須となる。[参照元へ戻る]
◆ライブラリ(ソフトウェア、プログラミング関連での用法)
ある程度汎用性のあるプログラムを、部品化して他のプログラムから利用できるようにし、一定の目的(グラフィック処理、数値計算、画面の制御、多言語化、などなど)のもとに集めたもの。ソフトウェア開発者は、ライブラリに含まれている部品プログラムを自分のアプリケーションを実現するための一部分として使うことができる。
アプリケーションを料理に例えると、アプリケーション開発者は料理人に、ライブラリは下ごしらえ済みの食材に相当する。料理人は下ごしらえ済みの食材を利用することによって、作業を効率化することができる。同じように、開発者もライブラリを利用することで作業を効率化することができる。ライブラリを使わずにアプリケーションを書くことも可能ではあるが、それは料理を作る際に畑から作物を収穫することから始めるようなものである。[参照元へ戻る]
◆m17n
多言語化を意味する英語 multilingualization のうち、語頭のmと語末のnだけを残して間の17文字を省略した記法。[参照元へ戻る]
◆LGPL
Lesser General Public Licenseの略。GNUプロジェクトが提唱する、主にライブラリソフトウェアを対象とするフリーソフトウェアのライセンス。ソフトウェアを使用するユーザに、使用、複製、変更、再頒布などの自由を与える。
参考URL:http://www.opensource.jp/lesser/lgpl.ja.html [参照元へ戻る]
◆オープンソース
ソフトウェアの元になるソースコードを、自由に入手、使用、改良、再頒布できるソフトウェア。
Open Source initiativeによる定義では、以下の条件を満たすプログラム。
1. 再頒布の自由
2. ソースコードの頒布
3. 派生ソフトウェアの同一条件での頒布
4. 作者のソースコードの完全性
5. 個人やグループに対する差別の禁止
6. 使用する分野に対する差別の禁止
7. ライセンスの分配
8. 特定製品でのみ有効なライセンスの禁止
9. 他のソフトウェアに干渉するライセンスの禁止
10.ライセンスは技術的に中立であること
参考URL:http://www.opensource.org/ [参照元へ戻る]
◆独立行政法人 情報処理推進機構
IPA(Information-technology Promotion Agency, Japan)。ソフトウェア及び情報処理システムが21世紀の知識経済を支える基盤となることに鑑み、技術・人材の両面から、ソフトウェア及び情報処理システムの健全な発展を支える戦略的なインフラ機能を提供するプロフェッショナル集団として、日本経済の発展に貢献することをミッションとする独立行政法人。
参考URL:http://www.ipa.go.jp [参照元へ戻る]
Free Software Foundation
コンピュータプログラムの複製や再配布、研究と理解、変更に関する制限の撤廃を目的として活動する団体。コンピュータ利用の全領域におけるフリーソフトウェアの開発と使用の促進、とりわけGNU オペレーティングシステムの開発を支援することによって目標の達成を目指している。
参考URL:http://www.gnu.org/fsf/fsf.ja.html [参照元へ戻る]
◆C言語
1972年にアメリカAT&T社のベル研究所でD. M. RitchieB. W. Kernighanによって開発されたプログラミング言語(ソフトウェアの設計図に当たるソースコードを記述するための言語)。C言語の拡張版であるC++言語とともに、現在もっとも普及しているプログラミング言語である。[参照元へ戻る]
libc
C言語において標準的に用意されている関数をまとめて提供するライブラリ。このライブラリには、たとえばファイルを開いたり、文字を表示したりするための関数などの基本的な機能が含まれる。[参照元へ戻る]
◆Xウィンドウシステム
リナックスなどの基本ソフトで利用される、グラフィックを多用したユーザとのやり取り(ユーザインターフェース)を実現する環境。マサチューセッツ工科大学(MIT)のAthena Widget Projectが中心となって開発された。[参照元へ戻る]


お問い合わせ

お問い合わせフォーム