読者です 読者をやめる 読者になる 読者になる

WEB+DB PRESS Vol.78に「フロントエンドの国際化」について書いた!

先週発売されたWEB+DB PRESS Vol.78のJavaScript連載にて、「フロントエンドの国際化」をテーマに記事を書きました!

f:id:teppeis:20131230175144j:plain

内容はこんな感じです。

前半ではソフトウェアの国際化で使われる基本概念と、最近のフロントエンド領域で国際化を行うときに課題となるポイントを解説しています。

中盤ではいくつかの定番ライブラリを紹介し、最後にIE11ChromeFirefox Auroraで実装が始まったES6 I18N APIにも触れています。

作ってるサービスが海外展開することになった、または海外展開をにらんで開発を進めたいけどどの辺に気をつければ良い?という人にお役に立てればと思います。

WEB+DB PRESS Vol.78

WEB+DB PRESS Vol.78

オレと国際化

年末なので、こっからポエムです。

自分の最初の「国際化」プロジェクトは2008年ごろ、とある国内向け製品を多言語展開するプロジェクトでした。

まあ文言リソース置き換えるぐらいでしょ、と最初は軽く見ていたのが、当時社内では初めての本格的な国際化プロジェクトだったためノウハウもなく、次々にハマりポイントに遭遇。

  • ブラウザフォント指定の魔窟
    • font-familyのOSやブラウザごとの解釈
    • CJK共通漢字の見え方
    • lang属性の扱い
    • バックスラッシュが「¥」ではなくバクスラで表示される(ある意味正しいのだが)
    • IEはHTMLの文字コードによっても挙動が違う
    • Win用フォントが入ってるMacでおかしいとか
  • PHP4でタイムゾーン扱えないから自前でタイムゾーンロジック実装
  • Windowsサーバーのロガーの文字コードがシステムロケール固定
  • ExcelがUTF-8 BOMなしを扱えない
  • IEのContent-Disposition filenameの文字コードがおかしい
  • Accept-Language, navigator.(language|systemlanguage|browserLanguage)、どれがなに?
  • UI系
    • 文言の長さに依存していたUIが崩れる
    • 矢印とか記号文字でUI作ってたところ崩れまくり
    • 文字入り画像めんどい
    • 各種アイコンや祝日の色のニュアンスが地域によって異なる
    • 振替休日のルールが地域によって異なる
    • 夏時間が45分ずれとかUI破綻するだろ

ざっと思い出しただけでもこんな感じで*1、この時期に文字コードとかCLDRとかタイムゾーンとか、国際化関連の標準や仕組みを一通り調べた思い出があります。

時は流れて2010年、当時社内にいたamachangに誘われて初めて人前で発表をすることになったのがShibuya.js。詳しいこともそんなになかったので、タイムゾーンネタで挑みました。

周りが凄すぎて地味な内容だったのですが、id:t-wadaさんがタイトルで釣られていただいてあったかかったです。

今回のWEB DB PRESSの記事では、このときの発表内容に加えて、その後リリースされたIE10がヒストリカルタイムゾーンに対応してるなどの追加情報も盛り込んでいます。

このShibuya.jsで、ECMAScriptではまともなタイムゾーンの扱い方は議論されてないの?みたいな話をしていたのですが、I18N APIが(まだ完成度は低いけど)ブラウザに載ってくる時代になったということで感慨深いですね。

ということで、それなりに思い入れのある国際化についての記事を2年間やってきた連載の(おそらく)最後の執筆回にを書いたので、よろしければご覧下さいませ。

ある意味、あのときの発表が今回の記事に時を超えてつながっていたわけですね。(別にうまくはない)

*1:この中のいくつかは今回の記事に書きたかったのだけど誌面の都合で泣く泣く削除しました。