特集
» 2013年03月04日 16時32分 公開

特集:Officeストアで世界に飛び出そう! 最新Office 2013アプリ開発入門(後編):「Officeアドイン」の作り方と、できること/できないこと (4/4)

[国分すばる,著]
前のページへ 1|2|3|4       

世界へ飛び出そう ! ―― 国際化(多言語)への対応

 本稿の執筆時点(2013年1月)では、提供されているOfficeストアは英語版のみであり、日本語版のOfficeストアは将来のリリースを待つ必要がある。しかし日本のプログラマーは、それまで指をくわえて見ている必要はない。

 そもそも、前編でも紹介したように、日本語版のOffice 2013(Excel 2013や、Word 2013、Outlook 2013など)を使用していても、英語圏のOfficeアドインは問題なく使うことができる。また、アプリのユーザー・インターフェイス(UI)を国際化(多言語)対応で動作させれば、日本の利用者は、現在の英語版のOfficeストアからOfficeアドインを挿入し、日本語を使って快適にOfficeアドインを使うことができるだろう。つまり、英語環境のユーザーには英語で表示し、日本語環境のユーザーには日本語で表示すればよいだけだ。

 そこで、最後に、Officeアドインを国際化対応させる手法について簡単に解説しておきたい。まずOfficeアドインのプログラマーは、「Webブラウザのロケール」と「Officeが要求するロケール」の違いを理解しておこう。

 通常のWebアプリにおける国際化対応(Globalization)では、ユーザーが使用しているブラウザの言語プリファレンス(=言語設定)をWebブラウザのヘッダ(Accept-Languageヘッダ)から取得して、それに基づき、ユーザーの環境に合わせた適切な言語や書式(通貨表示など)で情報を表示する。ASP.NET(ASP.NET MVCを含む)でも、こうした国際化対応のWebアプリを構築するための手法が提供されている。

 しかしOfficeアドインでは、Webブラウザが渡すこうしたロケール情報(=言語プリファレンス)以外に、Office(のExcel 2013やWord 2013など)が要求するロケールがあり、プログラミング次第で、双方を扱うことができる。実際、まれかもしれないが、例えばInternet Explorerで日本語の言語プリファレンスを設定しているユーザーが、英語版のExcel 2013を使ってOfficeアドインを表示した場合、Officeアドインの作り方次第では、双方の言語が混ざって表示されるようなプログラミングも可能だ。このため、ユーザーに混乱を与えないよう、Officeアドインにおいては可能な限りOfficeが要求するロケールに統一しておくのがよいだろう。

 では、Officeが要求する言語プリファレンスは、Officeアドインのプログラムの中でどのように扱えるのかを見てみよう。

 Officeアドインに要求される言語プリファレンスは、マニフェスト(.xmlファイル)を使って処理できる。以下のマニフェストを見ていただきたい。

<?xml version="1.0" encoding="utf-8"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="TaskPaneApp">
  <Id>efe632b5-3e23-4cf5-bd0d-5323ce5177db</Id>
  <Version>1.0</Version>
  <ProviderName>Subaru Kokubun</ProviderName>

  <DefaultLocale>en-US</DefaultLocale>
  <DisplayName DefaultValue="Test App">
    <Override Locale="ja-jp" Value="テスト アプリ" />
  </DisplayName>

  <Description DefaultValue="This is apps for test.">
    <Override Locale="ja-jp" Value="これは、テスト用アプリです" />
  </Description>

  <Hosts>
    <Host Name="Workbook" />
    <Host Name="Document" />
  </Hosts>

  <DefaultSettings>
    <SourceLocation DefaultValue="http://multilingualapps.azurewebsites.net/Pages/MultilingualAppTest.aspx">
      <Override Locale="ja-jp" Value="http://multilingualapps.azurewebsites.net/Pages/MultilingualAppTest.aspx?lang=ja" />
    </SourceLocation>
  </DefaultSettings>


  <Permissions>ReadWriteDocument</Permissions>
</OfficeApp>

多言語対応のマニフェストXMLファイルのサンプル
(1) (2) など、背景に色が付いている部分は、以下の本文で説明する。

 まず、 (1) に注目していただきたい。ここでは、既定の言語を「en-US」(つまり、米国圏の英語)としながらも、日本語(ja-JP)の要求があった場合には、日本語でタイトルや説明文を表記するように定義している。このOfficeアドインを参照すると、次の画面のとおり、英語版のOfficeと日本語版のOfficeで異なって表示される。

英語環境の表示(上)と日本語環境の表示(下)

 国際化対応のプログラミングを行ううえで特に重要な要素は、上記のマニフェストの (2) の箇所だ。このように、英語環境と日本語環境でOfficeアドイン自体のURLを変更することができるのである。例えば、クエリ文字列(上記のマニフェストのサンプルでは、「lang」というクエリ文字列を使用)などを見てプログラムでカルチャ設定を動的に変更することで、ASP.NET(ASP.NET MVCを含む)などのWebアプリが持つ一般的な国際化対応のプログラミング手法(例えば、リソース・ファイルを使い、カルチャごとに表示を分離する手法)を再利用して、Officeアドインの国際化対応が実現できる。

 また、ユーザー・インターフェイス(UI)やサーバサイド処理だけでなく、JavaScriptの中でこの言語プリファレンスを取得することもできる。例えば下記のコードは、言語プリファレンスによってラベルに表示する文字列を変更するサンプル・コードだ。

var lang = Office.context.displayLanguage;
switch (lang) {
  case 'en-US':
    $('#label1').val('Hello World !');
    break;
  case 'ja-JP':
    $('#label1').val('こんにちは、皆さん!');
    break;
  default:
    $('#label1').val('unknown locale');
    break;
}

言語プリファレンス(en-US|ja-JP|そのほか)によってラベルに表示する文字列を変更するサンプル・コード

 なお、Officeストアの検証ポリシー(Validation policies)に記載されているとおり、国際化対応を偽ってアプリを提示した場合は、審査で不合格となるので注意していただきたい。

 将来、日本語のOfficeストアが開始されると、日本で作ったOfficeアドインを英語圏のユーザーに提供することだけでなく、その逆も可能となるだろう。実際、現在リリースされている「Windowsストア」においても複数の国のマーケットを対象に多言語対応アプリを出品できるため、海外のアプリが日本のWindowsストアでもいくつか出品されている。つまり、国境を超えたOfficeアドインの覇権争いは、すでに始まっていると考えてよいだろう。

 例えば、鉄道の経路検索アプリのような文化的依存の高いアプリを除き、現時点でもOfficeストアに出品し、英語圏のマーケットを対象にビジネスを展開する意義は十分にあるだろう。

「特集:Officeストアで世界に飛び出そう! 最新Office 2013アプリ開発入門」のインデックス

特集:Officeストアで世界に飛び出そう! 最新Office 2013アプリ開発入門

前のページへ 1|2|3|4       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。