国際化プログラミングにおける一般的な注意点
サーバーサイドプログラミング

国際化されたサーバーサイドプログラミング(多くの場合、Webプログラミング)はクライアントプログラミングとは異なる注意が必要です。それはサーバー側(サーバーOS、Webサーバーアプリケーションなど)とクライアント側(クライアントOS、Webブラウザなど)の'2'つのプラットフォームを気にしなければならないためです。
重要なポイントは、サーバーは処理を中立にする必要があり、クライアントはデータをローカライズする必要があるということです。
  1. ユーザーロケールの認識

    メッセージ、ラベル、日付、通貨、その他の文化に関連する情報は、サーバーでなくユーザーの言語(ロケール)に沿って表示されるべきです。
    ユーザーロケールは各ブラウザからHTTPリクエストとしてサーバーへ送られるので、それらをサーバーの処理へ適用させる必要があります。 忘れてならないのは、通常のプログラミングは実行プラットフォーム(サーバーOS)のロケールをアプリケーションへ適用させるということです。
    以下は各言語のサーバー処理のサンプルコードです。

  2. UTF-8エンコーディング

    Web UI(HTML)を書くにはUTF-8を使うことが推奨されます
    Webブラウザの殆どはUTF-8をサポートしており、全ての言語は1つのエンコーディングで出力することができます。
    以下は各言語のサーバー処理のサンプルコードです。

  3. データ記憶のための中立フォーマット

    日付、通貨、その他の書式データはストレージ(データベースなど)に記憶される時、'何らかの書式'を必要としますが、その時'文化固有'の書式を使った場合、それはそのデータが1つの文化に依存していることを意味します。(例:MySQLに、日付カラムがいつも日本語書式である前堤で日付の値を記憶するコードを書いた場合、アプリケーションは英語設定のMySQLでは動作しないでしょう。)
    データの記憶には、言語設定に関係なく扱えるISO標準書式を使うことが推奨されます。
    以下は各言語のサーバー処理のサンプルコードです。

  4. UTCとローカル時間

    プログラミング言語から取得するサーバー上の現在日付は、サーバーのタイムゾーンに従った時間となります。
    この時間をそのまま使ってしまうと、サーバーのタイムゾーンと異なるタイムゾーンを使うユーザーには、正しい時間として扱われなくなります
    (例えば、日本にサーバーのあるシステムで、日本の朝9時に更新されたデータの日付は、アメリカのユーザーには前日の夜8時ぐらいに更新されたデータとして表示されなければなりません。その時のアメリカの朝9時は日本のおよそ夜10時ぐらいだからです)

    この問題を解決するには、サーバーで扱う時間を世界標準時(UTC)に設定して、ユーザーのタイムゾーンごとに時差計算をして処理する必要があります。

    以下は、サーバー上で現在時刻をUTCとして取得し、特定のローカル時間へ変換するサンプルコードです。

国際化プログラミングトップへ


Copyright (C) 2012 Kokusaika JP, Inc.
本ドキュメントを無断で転載および引用することを禁じます。