TOP書籍連動> 検索
Webアプリケーションの国際化
PHPコードを利用してWebアプリケーションを国際化する

第2回:Webアプリケーションの国際化でデバッグ作業のリスクを減らすポイント

著者:Carl McDade   2006/5/25
前のページ  1  2
検索

   アプリケーションに検索機能を備えたい場合、データの保存方法が重要になります。なぜならば、すべての検索は、おそらくSQLステートメントに基づいており、そのSQLステートメントは使われている言語とカレンダーシステムに影響されるからです。データベース情報のソートやオーダーも、国際化されなければなりません。

   国際化されていない場合、検索によって得られた検索結果は、不正確で無意味なものとなるでしょう。検索を国際化する際、認められているユニコード文字列でPHPをコーディングする必要があることに注意してください。PHPコードがユニコード形式のリソースを挿入したり取り出したりする時、ユニコードが使用できるデータベースに対応するSQLステートメントを準備する必要があります。


PHP言語

   Javaとは異なり、PHPにはネイティブなマルチバイト文字(もっと簡単にいえばユニコード)のサポートがまだありません。PHPでは、文字は1バイトで表されます。つまり、256個の異なる認められた文字があります。

   文字列は文字の並びなので、文字列を解釈する方法には限界があります。認められた256文字の組み合わせで文字列が構成されている場合には、問題は生じません。しかし、言語の中には、256文字より多くの文字が含まれているものも存在します。日本語は、この典型的な例です。

   日本語には、漢字、ひらがな、カタカナを含め何万もの文字があります。この解決方法として、文字列をUTF-8やユニコードへエンコードし、これらからデコードするという方法をとることができます。ユニコードはさらに多くの文字を認めています。PHPのutf8_encode()関数とutf8_decode()関数は、文字列の文字をマルチバイトで保存します。

   マルチバイト文字を使うことで発生する問題を解決するために、変換ルーチンも多数存在します。utf8_encode()関数のようなルーチンを使えば、PHPのデフォルトである1バイト文字列のハンドラーに文字列の操作を任せることはありません。

   ここでmbstringエクステンションが効果を発揮します。mbstringエクステンションは、文字列を分割、結合、検索し、他の地域の文字列を処理できるマルチバイト・エンコーディングに対応した関数を持っています。しかし、PHPのデフォルト・インストールでは、ここに書いてあるようなmbstringエクステンションは使えません。mbsring_*()関数を必要とするソフトウェアを使用する場合は、開発者とエンド・ユーザはPHP con.gurationをチェックする必要があります。

   しかし、アルファベットを母国語としている多くの国では、mbstringエクステンションの重要性に気付いていない共有ホスティング会社やサーバ管理者が大多数を占めているのも事実です。


オープンソース・アプリケーションの利用

   新しいPHPアプリケーションを一から作成しない場合、オープンソース・アプリケーションを利用することで、ほとんどの国際化ステップを行うことができます。Webサイトを構築する場合にも、オープンソース・アプリケーションを利用してます。

   有名なコンテンツ管理システム(content management systems、CMS)にも、次の段落に示した国際化に使われる、有名な3つのテクニックの中の1つを使っています。コンテンツ管理システムで、i18nサポートを使っていることに、ユーザは気付いていないかも知れません。

   しかし、開発者側からすると、アプリケーションで使われている内部テクニックを理解することは重要なことです。国際化のためにCMSで使われているテクニックにあわせて、どの共有ホストを選択すればよいか、ソフトウェアをサポートする際に自分自身のサーバへ何をインストールすべきかを決定します。

前のページ  1  2


Carl McDade
著者プロフィール
Carl McDade
スェーデンに住むフリーランスのWeb開発者、兼プログラマー。Microsoftデータベース管理者の資格を持っており、1997年からWeb開発を行っています。開発期間のほとんどをドキュメント作成、コード作成、PHPコンテンツ管理システムの勉強に費やしています。Webサイト(http://www.hivemindz.com)で彼とコンタクトをとることができます。

INDEX
第2回:Webアプリケーションの国際化でデバッグ作業のリスクを減らすポイント
  Webアプリケーションの国際化
検索