XML 名刺ブラウザ iContact - iアプリによる ContactXML ブラウザ

なんばりょうすけ <rna@horobi.com>
2004-02-14

目次

概要

DoJa 2.0 (iアプリ)環境で動く XML アプリケーションのサンプルとして、ContactXML ブラウザ iContact を作成しました。P504i で動作確認しています。

iContct には以下のような機能があります。

iContact は軽量 XML パーサとして評価の高い kXML2 (バージョンは 2.1.6)を使用しています。iContact の技術的な詳細については JavaWorld 2003年3月号の記事「"ケータイXML"の可能性を探る」を参照してください。

今すぐ試したい場合

まずは実際のアプリケーションを触ってみたいという方は 504i 以降の Docomo 端末の i モードブラウザから http://www.horobi.com/i/contact/ にアクセスしてください。「iContact用」のリンクから筆者の名刺を iContact で開きます。アプリケーションがみつからない、というエラーが出る場合は「iContact ダウンロード」のリンクから iContact 本体をダウンロード・インストールしてから、もう一度試してください。インストール時にネットワーク接続を許可するかをたずねられた場合は許可するように設定します。

プログラムの仕様と構成

XML 名刺の書式

iContact はインターネット上に公開された ContactXML 文書のサブセット(以下 XML 名刺と呼びます)を表示するものです。XML 名刺の書式はリスト1 のようにルート要素 ContactXML の下に ContactXMLItem が一つだけ存在する形式の ContactXML です。

リスト1: XML 名刺の例
<?xml version="1.0" encoding="Shift_JIS"?>
<ContactXML xmlns="http://www.xmlns.org/2002/ContactXML" version="1.1">

<ContactXMLItem>
  <PersonName>
    <PersonNameItem xml:lang="ja-JP">
      <FullName pronunciation="ナンバリョウスケ">難波亮丞</FullName>
      <FirstName pronunciation="リョウスケ">亮丞</FirstName>
      <LastName pronunciation="ナンバ">難波</LastName>
    </PersonNameItem>
  </PersonName>
  <Address>
    <AddressItem locationType="Office">
      <AddressCode codeDomain="Country">JP</AddressCode>
      <AddressCode codeDomain="ZIP7">123-4567</AddressCode>
      <AddressLine addressLineType="Country">日本</AddressLine>
      <AddressLine addressLineType="Prefecture">神奈川県</AddressLine>
      <AddressLine addressLineType="City">横浜市滅区</AddressLine>
      <AddressLine addressLineType="Town">滅町</AddressLine>
      <AddressLine addressLineType="Number">42-4-2</AddressLine>
      <AddressLine addressLineType="Building">HOROBIビル 13F</AddressLine>
    </AddressItem>
  </Address>
  <Occupation>
    <OccupationItem xml:lang="ja-JP">
      <OrganizationName>ホロビ・コム</OrganizationName>
      <Department>開発部</Department>
      <JobTitle>部長</JobTitle>
    </OccupationItem>
  </Occupation>
  <Phone>
    <PhoneItem phoneDevice="Phone" usage="Official">000-000-0000</PhoneItem>
    <PhoneItem phoneDevice="Cellular" usage="Private">090-0000-0000</PhoneItem>
  </Phone>
  <Email>
    <EmailItem emailDevice="PC" usage="Official">rna@horobi.com</EmailItem>
  </Email>
  <Web>
    <WebItem usage="Official">http://www.horobi.com/</WebItem>
  </Web>
  <Image>
    <ImageItem contentType="image/jpeg" imageSemantics="Portrait"
      url="http://www.horobi.com/rna.jpg"/>
  </Image>
</ContactXMLItem>

</ContactXML>

エンコーディングは必ず Shift_JIS である必要があります(iアプリ環境の InputStreamReader 実装の制限のため)。ContactXML の詳細は www.ContactXML.org を参照してください。

XML 名刺の公開

リスト1: XML 名刺の例
<object declare id="iContact" type="application/x-jam"
        data="http://www.horobi.com/i/contact/IContact.jam">
  <param name="url" value="http://www.example.com/rna/contact.xml">
</object>
 ...
<a ista="#iContact" 
   href="http://www.example.com/rna/contact.xml">XML名刺</a>

通常 iContact による XML 名刺の表示は端末の i モードブラウザに表示された XML 名刺へのリンクを選択することで行います。このリンクは i モードブラウザが i アプリを起動できるようにリスト2のような特殊な書式で記述されている必要があります。まず object タグで i アプリと起動パラメータを宣言し、a タグのリンクから ista 属性値によってそれを参照します。

object タグの data 属性には iContact の jam ファイルのアドレスを記述します。param タグの value には表示したい XML 名刺の URL を記述します。この URL は絶対 URL (http://... で始まるURL)である必要があります(これは i アプリから起動元の URL を知る手段がないという制限があるため)。a タグの href 属性は iContact とは関係ありません。単に一般のブラウザやiアプリ非対応の端末からアクセスした場合のフォールバックとして機能します。

サーバとクライアント

iアプリにはアプリケーションをダウンロードしたホストとしか通信できないという制限があるため、iアプリ単体では汎用的に使えるブラウザにはなりません。

そこで iContact を設置するサーバに一種のプロクシとして機能する CGI プログラムを利用します。ソースコードの cgi ディレクトリにある小さな Perl CGI プログラム get.cgi がそれです。このプログラムは携帯電話上で起動した iContact 本体と以下のような手順で通信します。

  1. iContact は get.cgi に名刺の URL を送信。
  2. get.cgi は受け取った URL から接続先のウェブサーバを認識。
  3. get.cgi はウェブサーバにソケット接続し GET メソッドで名刺を取得。
  4. get.cgi はウェブサーバからのレスポンスを名刺ブラウザに転送する。

基本動作は単純なプロクシもどきですが、以下のような処理も行います。

ビルドと配備

クライアントとなるiアプリはソースコードの iapp ディレクトリ内に Docomo 公式エミュレータ iαppliTool のプロジェクトフォルダの形で含まれます。プロジェクトフォルダ(IContact)を、iαppliTool のインストール先にある apps フォルダの下に丸ごとコピーして、iαppliTool でビルドしてください。なお、プロジェクトフォルダの下の bin フォルダにはビルド済みの jar ファイルと設定済みの jam ファイルが含まれているので、現バージョンのバイナリを使用するだけならリビルドは不要です。

サーバに iContact を配備するには、まずソースコードの cgi ディレクトリにある get.cgi (プロクシ CGI)を設置します。設置方法は一般的な CGI プログラムと同様で、perl のパスと実行パーミッションを配備するサーバに合わせて適切に設定してください。なお、perl 5.0 以降で動作するはずですが、サーバによっては(特に無料サーバ) CGI プログラムからのソケット接続を制限している場合があります。そのようなサーバでは get.cgi は動作しないので注意して下さい。

次に get.cgi と同じディレクトリに IContact.jam と IContact.jar をアップロードします。iContact は自分のダウンロード元から get.cgi を探すので必ず同じフォルダに置きます。

アプリケーションの使用法

XML 名刺の表示と操作

画面1: XML名刺の表示例

XML 名刺は画面1のように表示されます。表示項目は上から顔写真、名前、名前の読み、所属、電話番号リスト、ウェブサイトリスト、E-Mailリスト、住所です。

このうち電話番号リストとウェブサイトリストが操作可能です。電話番号リストを選択してリスト内の電話番号を選択・確定するとその番号に電話をかけることができます。ウェブサイトリストを選択してリスト内のURLを選択・確定するとiモードブラウザでそのサイトを表示できます。どちらの場合もアプリケーションは終了してしまい、iContact の表示画面に戻れませんが、これは i アプリの仕様上の制限です。E-Mail リストからメールが送れないのも i アプリの仕様上の制限で i アプリからメーラを起動できないためです。

XML 名刺表示画面では、右アプリケーションボタンで名刺のリロード、左アプリケーションボタンでコンタクトリスト画面に戻ります。

ブックマークの操作

名刺表示画面から戻るボタンで戻るとコンタクトリスト画面が表示されます。i モードブラウザからではなく単体で iContact を起動した場合の初期画面もこの画面です。この画面には XML 名刺のブックマークのリストが表示されます。ブックマークは i モードブラウザから XML 名刺を開いた時に自動的に追加されます。ブックマークの見出しには XML 名刺の名前の項目(FullName 要素)の内容が設定されます。

コンタクトリストからブックマークを選択・確定するとその XML 名刺が表示されます。右アプリケーションボタンを押すと削除モードになります。ここでリストからブックマークを選択・確定するとそのブックマークが削除されます。左アプリケーションボタンを押すと iContact を終了します。

なお、ブックマークの保存のために iContact はスクラッチパッドを使用しています。ブックマークに登録可能な最大件数は端末毎のスクラッチパッドの容量に依存します。



モバイル XML 関係リソース に戻る