| 6 |
<subtitle></subtitle> |
<subtitle></subtitle> |
| 7 |
<author>Atsushi Konno</author> |
<author>Atsushi Konno</author> |
| 8 |
<date>29 Mar 2005</date> |
<date>29 Mar 2005</date> |
| 9 |
<date>Last modified: Wed, 13 Feb 2008 18:35:16 +0900</date> |
<date>Last modified: Tue, 5 Feb 2008 13:20:28 +0900</date> |
| 10 |
</head> |
</head> |
| 11 |
<body> |
<body> |
| 12 |
<section title="Overview"> |
<section title="Overview"> |
| 13 |
|
|
| 14 |
mod_chxjはオープンソースの携帯向けコンテンツ変換Apache2.x用モジュールであり、 |
mod_chxjはオープンソースの携帯向けコンテンツ変換Apache2.0用モジュールであり、 |
| 15 |
CHTML(DoCoMo i-Mode用 CHTML3.0)で記述された文書や通常のHTMLで記述された文書を、アクセスに来た端末のUser-Agentヘッダを見て、それぞれの端末にあった形式に変換します。 |
CHTML(DoCoMo i-Mode用 CHTML3.0)で記述された文書や通常のHTMLで記述された文書を、アクセスに来た端末のUser-Agentヘッダを見て、それぞれの端末にあった形式に変換します。 |
| 16 |
HTML文書に限らず、画像(jpg、gif、png)、絵文字についても、定義ファイルに従ってそれぞれのキャリアにあった絵文字に変換します。 |
HTML文書に限らず、画像(jpg、gif、png)、絵文字についても、定義ファイルに従ってそれぞれのキャリアにあった絵文字に変換します。 |
| 17 |
Cookie非対応端末、Refer非対応端末のために、Set-Cookie、CookieヘッダやRefererヘッダをシミュレートすることもできます(EXPERIMENTAL)。 |
Cookie非対応端末、Refer非対応端末のために、Set-Cookie、CookieヘッダやRefererヘッダをシミュレートすることもできます(EXPERIMENTAL)。 |
| 22 |
<subsection title="準備"> |
<subsection title="準備"> |
| 23 |
mod_chxjをインストールする前に、下記のものを用意する必要があります。 |
mod_chxjをインストールする前に、下記のものを用意する必要があります。 |
| 24 |
<ol> |
<ol> |
| 25 |
<li>Apache2.xのヘッダーファイル群</li> |
<li>Apache2.0のヘッダーファイル群</li> |
| 26 |
<li>Apache2.x用のapxs</li> |
<li>Apache2.0用のapxs</li> |
| 27 |
<li>apr(Apache Portable Runtime)ライブラリとそのヘッダファイル郡(apu含む)</li> |
<li>apr(Apache Portable Runtime)ライブラリとそのヘッダファイル郡(apu含む)</li> |
| 28 |
<li>automake、autoconf、libtool1.3.X</li> |
<li>automake、autoconf、libtool1.3.X</li> |
| 29 |
<li>ImageMagick(MagickWand)</li> |
<li>ImageMagick(MagickWand)</li> |
| 36 |
<subsection title="インストール"> |
<subsection title="インストール"> |
| 37 |
以下にmod_chxjインストール手順を示します。 |
以下にmod_chxjインストール手順を示します。 |
| 38 |
<ol> |
<ol> |
| 39 |
<li>Configure スクリプトを生成します(必須ではない)<program title="Configure スクリプトの生成"> |
<li>Configure スクリプトを生成します<program title="Configure スクリプトの生成"> |
| 40 |
$ ./buildconf.sh |
$ ./buildconf.sh |
| 41 |
</program> |
</program> |
| 42 |
<note>"$"はプロンプトをあらわします。</note> |
<note>"$"はプロンプトをあらわします。</note> |
| 43 |
</li> |
</li> |
| 44 |
<li>Configure |
<li>Configure |
| 45 |
|
|
| 46 |
|
以下は、/usr/include/apache2.0に、Apache2.0のヘッダーファイルが存在する場合です。 |
| 47 |
<program title="Configure"> |
<program title="Configure"> |
| 48 |
$ ./configure |
$ ./configure |
| 49 |
</program> |
</program> |
| 50 |
<note>場合によっては--with-apr-configや--with-apu-configも必要です。</note> |
<note>場合によっては--with-apr-configや--with-apu-config、--with-pcre-configも必要です。</note> |
|
<note>0.8.6以下の場合には--with-apache-headerが必須です</note> |
|
| 51 |
</li> |
</li> |
| 52 |
<li>mod_chxj.soを生成します |
<li>mod_chxj.soを生成します |
| 53 |
<program title="make"> |
<program title="make"> |
| 62 |
<li>データの設置 |
<li>データの設置 |
| 63 |
etcディレクトリは以下のdevice_data.xmlとemoji.xmlをApache |
etcディレクトリは以下のdevice_data.xmlとemoji.xmlをApache |
| 64 |
からアクセスできるところに配置します。 |
からアクセスできるところに配置します。 |
|
<note>0.9.0からemoji.xml、device_data.xmlの定義フォーマットを変更しましたのでバージョンをあわせてください</note> |
|
| 65 |
|
|
| 66 |
以下、/etc/apache2/chxjディレクトリにchxj用設定ファイルを用意する場合 |
以下、/etc/apache2/chxjディレクトリにchxj用設定ファイルを用意する場合 |
| 67 |
|
|
| 120 |
|
|
| 121 |
<program title="httpd.conf"> |
<program title="httpd.conf"> |
| 122 |
#==================================================================================== |
#==================================================================================== |
| 123 |
# モジュールをApache2.xにロード |
# モジュールをApache2.0にロード |
| 124 |
#==================================================================================== |
#==================================================================================== |
| 125 |
LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so |
LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so |
| 126 |
|
|
| 156 |
|
|
| 157 |
<program title="httpd.conf"> |
<program title="httpd.conf"> |
| 158 |
#==================================================================================== |
#==================================================================================== |
| 159 |
# モジュールをApache2.xにロード |
# モジュールをApache2.0にロード |
| 160 |
#==================================================================================== |
#==================================================================================== |
| 161 |
LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so |
LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so |
| 162 |
|
|
| 236 |
ChxjImageEngine On |
ChxjImageEngine On |
| 237 |
ChxjImageCacheDir /tmp |
ChxjImageCacheDir /tmp |
| 238 |
ChxjImageCopyright "A.Konno" |
ChxjImageCopyright "A.Konno" |
|
ChxjImageCacheLimit 10485760 |
|
| 239 |
</Location> |
</Location> |
| 240 |
</program> |
</program> |
| 241 |
|
|
| 264 |
<br /> |
<br /> |
| 265 |
</li> |
</li> |
| 266 |
|
|
| 267 |
|
<li>ChxjImageCacheLimit<br /> |
| 268 |
|
mod_chxj画像変換ハンドラが使用する変換後の画像をおいておくディレクトリの許容量を指定します。 |
| 269 |
|
単位はbyte。 |
| 270 |
|
|
| 271 |
|
<program title="ChxjImageCacheLimit"> |
| 272 |
|
ChxjImageCacheLimit 1024 |
| 273 |
|
</program> |
| 274 |
|
|
| 275 |
|
mod_chxjに画像変換キャッシュ最大サイズとして1kbyteと指定。 |
| 276 |
|
※このとき変換結果が1kbyte以上あるような場合にはINTERNAL_SERVER_ERRORを返します。 |
| 277 |
|
十分な領域を確保するか、画像サイズを小さくしてください。 |
| 278 |
|
<br /> |
| 279 |
|
<br /> |
| 280 |
|
</li> |
| 281 |
|
|
| 282 |
|
|
| 283 |
<li>ChxjImageCopyright<br /> |
<li>ChxjImageCopyright<br /> |
| 310 |
を埋め込みます。 |
を埋め込みます。 |
| 311 |
<note>SoftBank/Vodafoneの場合は、リクエストURLの最後が.pnzか、.jpzで終わるようにダミーを付けなければなりません。</note> |
<note>SoftBank/Vodafoneの場合は、リクエストURLの最後が.pnzか、.jpzで終わるようにダミーを付けなければなりません。</note> |
| 312 |
</li> |
</li> |
|
|
|
|
<li>ChxjImageCacheLimit<br /> |
|
|
mod_chxj画像変換ハンドラが使用する変換後の画像をおいておくディレクトリの許容量を指定します。 |
|
|
単位はbyte。 |
|
|
|
|
|
<program title="ChxjImageCacheLimit"> |
|
|
ChxjImageCacheLimit 1024 |
|
|
</program> |
|
|
|
|
|
mod_chxjに画像変換キャッシュ最大サイズとして1kbyteと指定。 |
|
|
※このとき変換結果が1kbyte以上あるような場合にはINTERNAL_SERVER_ERRORを返します。 |
|
|
十分な領域を確保するか、画像サイズを小さくしてください。 |
|
|
<br /> |
|
|
<br /> |
|
|
</li> |
|
| 313 |
</ol> |
</ol> |
| 314 |
</li> |
</li> |
| 315 |
</ol> |
</ol> |
| 316 |
</subsection> |
</subsection> |
| 317 |
|
|
| 318 |
<subsection title="文字コードを変換したい場合"> |
<subsection title="文字コードを変換したい場合(EXPERIMENTAL)"> |
| 319 |
<ol> |
<ol> |
| 320 |
<li>httpd.confに以下を追加します。 |
<li>httpd.confに以下を追加します。 |
| 321 |
下記は、URIが/chxjで始まる全てのコンテンツに対して動作するようmod_chxjに指示しています。 |
下記は、URIが/chxjで始まる全てのコンテンツに対して動作するようmod_chxjに指示しています。 |
| 341 |
EngineOn ==> 変換エンジンを動作させる指示。動作させたく無い場合は"EngineOff"<br /> |
EngineOn ==> 変換エンジンを動作させる指示。動作させたく無い場合は"EngineOff"<br /> |
| 342 |
EUC-JP ==> サーバ側の文字コード。(NONEを指定した場合は文字コード変換しない)<br /> |
EUC-JP ==> サーバ側の文字コード。(NONEを指定した場合は文字コード変換しない)<br /> |
| 343 |
<br /> |
<br /> |
| 344 |
EUC-JPからCP932に文字コード変換します。(libiconvに依存します)<br/> |
EUC-JPからCP932に文字コード変換します。(glibc/iconvに依存します)<br/> |
| 345 |
</li> |
</li> |
| 346 |
</ol> |
</ol> |
| 347 |
|
|
| 606 |
<td align="center">○</td> |
<td align="center">○</td> |
| 607 |
<td align="center">○</td> |
<td align="center">○</td> |
| 608 |
<td align="center">○</td> |
<td align="center">○</td> |
| 609 |
<td align="left"><note>SoftBankの予約クエリ名は内部で変換するので指定しても良い</note></td> |
<td align="left"> </td> |
| 610 |
</tr> |
</tr> |
| 611 |
<tr> |
<tr> |
| 612 |
<td> </td> |
<td> </td> |
| 636 |
<td align="left"> </td> |
<td align="left"> </td> |
| 637 |
</tr> |
</tr> |
| 638 |
<tr> |
<tr> |
| 639 |
<td><SELECT></td> |
<td><SELECT<</td> |
| 640 |
<td align="center">name</td> |
<td align="center">name</td> |
| 641 |
<td align="center">○</td> |
<td align="center">○</td> |
| 642 |
<td align="center">○</td> |
<td align="center">○</td> |
| 643 |
<td align="center">○</td> |
<td align="center">○</td> |
| 644 |
<td align="center">○</td> |
<td align="center">○</td> |
| 645 |
<td align="left"> </td> |
<td align="left"> </td> |
| 646 |
</tr> |
</tr> |
| 647 |
<tr> |
<tr> |
| 648 |
<td> </td> |
<td> </td> |
| 708 |
<td align="left"> </td> |
<td align="left"> </td> |
| 709 |
</tr> |
</tr> |
| 710 |
<tr> |
<tr> |
|
<td><DL></td> |
|
|
<td align="center"> </td> |
|
|
<td align="center">○</td> |
|
|
<td align="center">×</td> |
|
|
<td align="center">○</td> |
|
|
<td align="center">○</td> |
|
|
<td align="left"> </td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td><DT></td> |
|
|
<td align="center"> </td> |
|
|
<td align="center">○</td> |
|
|
<td align="center">○</td> |
|
|
<td align="center">○</td> |
|
|
<td align="center">○</td> |
|
|
<td align="left"><note>必ず閉じてください。そのうち対応します。</note></td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td><DD></td> |
|
|
<td align="center"> </td> |
|
|
<td align="center">○</td> |
|
|
<td align="center">○</td> |
|
|
<td align="center">○</td> |
|
|
<td align="center">○</td> |
|
|
<td align="left"><note>必ず閉じてください。そのうち対応します。</note></td> |
|
|
</tr> |
|
|
<tr> |
|
| 711 |
<td><CHXJ:IF></td> |
<td><CHXJ:IF></td> |
| 712 |
<td align="center">lang</td> |
<td align="center">lang</td> |
| 713 |
<td align="center">○</td> |
<td align="center">○</td> |
| 759 |
</ol> |
</ol> |
| 760 |
</section> |
</section> |
| 761 |
|
|
|
|
|
|
|
|
|
|
|
|
<section title="文字コードについて"> |
|
|
サーバサイドコンテンツについてはShift_JIS(CP932)、EUCJP-WIN(Win外字対応のEUCJP)、UTF-8のどれかで記述することが可能です。 |
|
|
Shift_JISで記述した場合は絵文字についてもShift_JISで、EUCJP-WINで記述した場合は絵文字についてもEUCJP-WINで、UTF-8で記述した場合は絵文字についてもUTF-8で |
|
|
記述します。<note>詳細は「絵文字について」の項を参照のこと</note> |
|
|
クライアントサイド(端末側)に送信する文字コードはShift_JISまたはUTF-8を指定することが可能です。<note>指定方法については「デバイス定義」の項を参照のこと。</note> |
|
|
mod_chxjによりサーバサイドコンテンツの文字コードから端末に送信する文字コードへと絵文字も含めて変換します。 |
|
|
POST/GET中のデータについても端末側文字コードからサーバサイドコンテンツの文字コードへと絵文字も含めて変換します。 |
|
|
|
|
|
|
|
|
<ol> |
|
|
<li>注意: Shift_JISでサーバサイドコンテンツを記述した場合はPOST/GETデータもShift_JISでサーバサイドコンテンツに渡されます。</li> |
|
|
<li>注意: EUCJP-WINでサーバサイドコンテンツを記述した場合はPOST/GETデータもEUCJP-WINでサーバサイドコンテンツに渡されます。</li> |
|
|
<li>注意: UTF-8でサーバサイドコンテンツを記述した場合はPOST/GETデータもUTF-8でサーバサイドコンテンツに渡されます。</li> |
|
|
<li>注意: 本変換機能は1.0.0以降から</li> |
|
|
</ol> |
|
|
|
|
|
サーバサイドコンテンツの文字コードはChxjConvRuleディレクティブで指定した文字コードになります。 |
|
|
ChxjConvRuleにて矛盾が生じない限り、文字コードの混在も可能です。 |
|
|
|
|
|
</section> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- ================================================================================ --> |
|
|
<!-- --> |
|
|
<!-- 絵文字について --> |
|
|
<!-- --> |
|
|
<!-- ================================================================================ --> |
|
| 762 |
<section title="絵文字について"> |
<section title="絵文字について"> |
| 763 |
i-Mode用の絵文字を書いておけば、アクセスしたキャリアによって、mod_chxjが対応の絵文字に自動変換します。 |
i-Mode用の絵文字を書いておけば、アクセスしたキャリアによって、mod_chxjが対応の絵文字に自動変換します。 |
| 764 |
ソースに2byteのバイナリコードを直接書いても、10進参照文字列(&#XXX;の形)、16進参照文字列(&#xXXX;の形)で書いても、変換対象になります。 |
ソースに2byteのバイナリコードを直接書いても、10進参照文字列<note>16進参照文字列には対応していません</note>(&#XXX;の形)で書いても、どちらでも変換対象になります。 |
| 765 |
10進参照文字列、16進参照文字列はmod_chxjにより自動で2バイトコードに変換されます。 |
10進参照文字列で書いた場合は、mod_chxjにより、自動で2バイトコードに変換します。 |
|
<note>コンテンツをSJISで記述する場合には絵文字もSJISで、コンテンツをEUCJP-WINで記述する場合には絵文字もEUCJP-WINで、UTF-8で記述する場合には絵文字もUTF-8で記述する必要があります</note> |
|
|
|
|
| 766 |
<subsection title="絵文字変換定義"> |
<subsection title="絵文字変換定義"> |
| 767 |
絵文字の変換に関する動作を変えたい場合(例えば「ハートがあったら、AUの場合はスペードに」とか、「変換定義がおかしい」といった場合)は、 |
絵文字の変換に関する動作を変えたい場合(例えば「ハートがあったら、AUの場合はスペードに」とか、「変換定義がおかしい」といった場合)は、 |
| 768 |
emoji.xmlファイルを直接編集することによって定義を変更することが可能です。emoji.xmlはXMLファイルとなっていますので、人によってはvi等で簡単に定義を |
emoji.xmlファイルを直接編集することによって定義を変更することが可能です。emoji.xmlはXMLファイルとなっていますので、vi等で簡単に定義を |
| 769 |
変更することができるかもしれません。 |
変更することができます<note>厳密にはXMLになっていないので、日本語の記述はSJISでお願いします。</note>。 |
|
|
|
|
emoji.xmlは3つのパートに分かれています。1つ目はDoCoMo→DoCoMo/au/SoftBankの変換定義部。 |
|
|
2つ目はau→DoCoMoの変換定義部。3つ目はSoftBank→DoCoMoの変換定義部。 |
|
|
1つ目はサーバサイドコンテンから各キャリアの絵文字に変換する際に使用されます。 |
|
|
2つ目と3つ目はPOST/GETデータの変換に使用されます。 |
|
|
|
|
| 770 |
|
|
| 771 |
<br /> |
<br /> |
| 772 |
<!-- ================================================================================ --> |
以下に、emoji.xmlファイルの一部を記します。 |
|
<!-- DoCoMo->DoCoMo/au/SoftBank変換定義 --> |
|
|
<!-- ================================================================================ --> |
|
|
<subsection title="DoCoMo→DoCoMo/au/SoftBank変換定義"> |
|
|
以下に、emoji.xmlファイルの1つ目のパート、DoCoMo→DoCoMo/au/SoftBankの変換定義部を記します。 |
|
| 773 |
<program title="emoji.xml"> |
<program title="emoji.xml"> |
| 774 |
|
<?xml encoding="Shift_JIS" > |
| 775 |
|
|
| 776 |
<emoji> |
<emoji> |
| 777 |
<set> |
<set> |
| 778 |
<no>1</no> |
<no>1</no> |
| 779 |
<imode> |
<imode> |
| 780 |
<sjis-hex>f89f</sjis-hex> |
<hex1>f8</hex1> |
| 781 |
<sjis-dec>63647</sjis-dec> |
<hex2>9f</hex2> |
| 782 |
<eucjp-hex>8ffca1</eucjp-hex> |
<string>&#63647;</string> |
| 783 |
<eucjp-dec>9436321</eucjp-dec> |
<description></description> |
|
<unicode-hex>e63e</unicode-hex> |
|
|
<unicode-dec>58942</unicode-dec> |
|
|
<utf8-hex>ee98be</utf8-hex> |
|
|
<utf8-dec>15636670</utf-dec> |
|
|
<description>晴れ</description> |
|
| 784 |
</imode> |
</imode> |
| 785 |
<ezweb> |
<ezweb> |
| 786 |
<A> |
<A>44</A> |
| 787 |
<no>44</no> |
<B>44</B> |
| 788 |
<sjis-hex>f660</sjis-hex> |
<C>44</C> |
| 789 |
<sjis-dec>63072</sjis-dec> |
<D>44</D> |
|
<unicode-hex>e488</unicode-hex> |
|
|
<unicode-dec>58504</unicode-dec> |
|
|
<utf8-hex>eebda0</utf8-hex> |
|
|
<utf8-dec>15646112</utf-dec> |
|
|
</A> |
|
|
<B> |
|
|
<no>44</no> |
|
|
<sjis-hex>f660</sjis-hex> |
|
|
<sjis-dec>63072</sjis-dec> |
|
|
<unicode-hex>e488</unicode-hex> |
|
|
<unicode-dec>58504</unicode-dec> |
|
|
<utf8-hex>eebda0</utf8-hex> |
|
|
<utf8-dec>15646112</utf-dec> |
|
|
</B> |
|
|
<C> |
|
|
<no>44</no> |
|
|
<sjis-hex>f660</sjis-hex> |
|
|
<sjis-dec>63072</sjis-dec> |
|
|
<unicode-hex>e488</unicode-hex> |
|
|
<unicode-dec>58504</unicode-dec> |
|
|
<utf8-hex>eebda0</utf8-hex> |
|
|
<utf8-dec>15646112</utf-dec> |
|
|
</C> |
|
|
<D> |
|
|
<no>44</no> |
|
|
<sjis-hex>f660</sjis-hex> |
|
|
<sjis-dec>63072</sjis-dec> |
|
|
<unicode-hex>e488</unicode-hex> |
|
|
<unicode-dec>58504</unicode-dec> |
|
|
<utf8-hex>eebda0</utf8-hex> |
|
|
<utf8-dec>15646112</utf-dec> |
|
|
</D> |
|
| 790 |
</ezweb> |
</ezweb> |
| 791 |
<softbank> |
<jphone> |
| 792 |
<no>74</no> |
<string>$Gj</string> |
| 793 |
<sjis-hex>476a</sjis-hex> |
</jphone> |
|
<sjis-dec>116572776975</sjis-dec> |
|
|
<unicode-hex>e04a</unicode-hex> |
|
|
<unicode-dec>57418</unicode-dec> |
|
|
<utf8-hex>ee818a</utf8-hex> |
|
|
<utf8-dec>15630730</utf-dec> |
|
|
</softbank> |
|
| 794 |
</set> |
</set> |
|
・ |
|
|
・ |
|
|
・ |
|
|
・ |
|
|
</emoji> |
|
| 795 |
</program> |
</program> |
| 796 |
|
|
| 797 |
絵文字の定義は、<emoji>タグから</emoji>タグまでの間にあります。その中の要素を説明します。 |
絵文字の定義は、<emoji>タグから</emoji>タグまでの間にあります。その中の要素を説明します。 |
| 798 |
1つの絵文字につき、1つのセット(<set>タグから</set>タグまで)とし、キャリア毎の絵文字を定義しています。 |
1つの絵文字につき、1つのセット(<set>タグから</set>タグまで)とし、キャリア毎の絵文字を定義しています。 |
|
合計176セットあります。 |
|
| 799 |
|
|
| 800 |
<ol> |
<ol> |
| 801 |
<li><imode>要素<br /> |
<li><imode>要素<br /> |
| 802 |
まず、元となるi-Mode用の絵文字は、<imode>タグにはさまれた間に定義されています。 |
まず、元となるi-Mode用の絵文字は、<imode>タグにはさまれた間に定義されています。 |
| 803 |
<imode>要素は子にsjis、eucjp、utf8、unicodeのそれぞれ16進と10進表記データを保持します。 |
<imode>要素は、2バイトコード要素(<hex1><hex2>)と、 |
| 804 |
sjis-hexはShift_JISコードの16進表記、sjis-decはShift_JISコードの10進表記、eucjp-hexはEUCJP-WINの16進表記、eucjp-decはEUCJP-WINの10進表記、utf8-hexはUTF-8の16進表記、utf8-decはUTF-8の10進表記、unicode-hexはUNICODEの16進表記、unicode-decはUNICODEの10進表記となります。 |
10進参照文字列要素(<string>)を保持していて、この2つの要素を変換元の値として使用します。 |
| 805 |
サーバサイドコンテンツがSJISで記述されている場合はimode要素のsjis-hex、sjis-decを参照します。 |
アクセスしてきた端末が、i-Mode機であった場合で、かつCHTML中に10進参照文字列が絵文字として書かれている場合には、 |
| 806 |
同様にがEUCJP-WINで記述されている場合はimode要素のeucjp-hex、eucjp-decを参照します。 |
<hex1><hex2>要素に定義されている値に置換します。 |
|
UTF-8で記述されている場合はimode要素のutf8-hex、utf8-decを参照します。<br /> |
|
|
サーバサイドコンテンツのマッチするコードがimode要素の中に存在すれば、変換は同一set内のデータを使用して行われます。 |
|
| 807 |
</li> |
</li> |
| 808 |
<br /> |
<br /> |
| 809 |
<br /> |
<br /> |
| 810 |
<li><ezweb>要素<br /> |
<li><ezweb>要素<br /> |
| 811 |
アクセスしてきた端末が、AU機であった場合、<ezweb>要素に定義されている値に変換します。 |
アクセスしてきた端末が、AU機であった場合、<ezweb>要素に定義されている値に変換します。 |
| 812 |
<ezweb>要素は、<A>〜<D>要素を持っていて、それぞれAUの絵文字タイプA〜Dに対応していますので、 |
<ezweb>要素は、<A>〜<D>要素を持っていて、それぞれAUの絵文字タイプA〜Dに対応していますので、 |
| 813 |
もし、Dタイプの絵文字端末であったなら、<D>要素の<no>に定義されている値に変換します。ここで定義されている値は、 |
もし、Dタイプの絵文字端末であったなら、<D>要素に定義されている値に変換します。ここで定義されている値は、 |
| 814 |
HDML機の場合は、<b><IMG ICON="XX"></b>の"XX"の部分に当てはめられて、置換されます。 |
HDML機の場合は、<b><IMG ICON="XX"></b>の"XX"の部分に当てはめられて、置換されます。 |
| 815 |
XHTML機の場合は、<b><IMG LOCALSRC="XX"></b>の"XX"の部分に当てはめられて、置換されます。 |
XHTML機の場合は、<b><IMG LOCALSRC="XX"></b>の"XX"の部分に当てはめられて、置換されます。 |
|
同要素にはsjis-hex、sjis-dec、unicode-hex、unicode-dec、utf8-hex、utf8-decが有りますが、今のところ使用していません。 |
|
| 816 |
</li> |
</li> |
| 817 |
<br /> |
<br /> |
| 818 |
<br /> |
<br /> |
| 819 |
<li><softbank>要素<br /> |
<li><jphone>要素<br /> |
| 820 |
アクセスしてきた端末が、SoftBank/Vodafone/J-Phone端末であった場合、<softbank>要素に定義されている値に変換します。 |
アクセスしてきた端末が、SoftBank/Vodafone/J-Phone端末であった場合、<jphone>要素に定義されている値に変換します。 |
| 821 |
<softbank>要素は、上記要素と同様にsjis-hex、sjis-dec、unicode-hex、unicode-dec、utf8-hex、utf8-decを保持しています。 |
<jphone>要素は、<string>要素を保持していて、ここで定義されている値を直接使用します。 |
|
アクセスしてきた端末にはsjisを返す場合はsjis-hex、sjis-decの値を使用します。utf8を返す場合にはutf8-hex、utf8-decでは無くunicode-hex、unicode-decを返します。 |
|
|
SoftBank端末の場合は3G端末は基本的にUTF8を返すようにデバイス定義にて定義されています。UTF8で定義された場合でSoftBankの場合はUNICODEの参照文字列を返すように |
|
|
なっています。(問題回避のため) |
|
| 822 |
</li> |
</li> |
| 823 |
</ol><br /> |
</ol><br /> |
| 824 |
emoji.xmlに定義されていない絵文字で、変換したい絵文字がある場合には、このファイルに新たな定義を足せば、 |
emoji.xmlに定義されていない絵文字で、変換したい絵文字がある場合には、このファイルに新たな定義を足せば、 |
| 825 |
変換するようになります。<note>同一コード領域に割り当てる必要があるかもしれません</note> |
変換するようになります。 |
|
</subsection> |
|
|
|
|
|
|
|
|
<!-- ================================================================================ --> |
|
|
<!-- au->DoCoMo変換定義 --> |
|
|
<!-- ================================================================================ --> |
|
|
<subsection title="au→DoCoMo変換定義"> |
|
|
au->DoCoMo変換の定義は主にau端末からサーバサイドへのPOST/GETデータの変換に使用されます。 |
|
|
定義はemoji.xmlファイルの<ezweb2imode>タグではさまれたところに定義してあります。 |
|
|
<set>から</set>までの間が1絵文字を表現する部分になります。 |
|
|
<br /> |
|
|
以下に、emoji.xmlファイルの2つ目のパート、au→DoCoMo変換定義を以下に記します。 |
|
|
<program title="emoji.xml"> |
|
|
<ezweb2imode> |
|
|
<set> |
|
|
<no>1</no> |
|
|
<ezweb> |
|
|
<sjis-hex>F659</sjis-hex> |
|
|
<utf8-hex>eebd99</utf8-hex> |
|
|
</ezweb> |
|
|
<imode> |
|
|
<no>220</no> |
|
|
</imode> |
|
|
</set> |
|
|
・ |
|
|
・ |
|
|
・ |
|
|
</ezweb2imode> |
|
|
</program> |
|
|
<br /> |
|
|
<ol> |
|
|
<li><no>要素<br /> |
|
|
auで定義されている絵文字番号を保持します。 |
|
|
</li> |
|
|
<br /> |
|
|
<br /> |
|
|
<li><ezweb>要素<br /> |
|
|
<no>で定義された絵文字番号の実際にPOST/GETされてくる値を保持します。sjis-hexは端末がShift_JISの場合のPOST/GETデータ、utf8-hexは端末がUTF-8の場合のPOST/GETデータになっています。 |
|
|
POST/GETされたデータはこの要素に記述されたコードとマッチングされ、マッチした場合絵文字を特定します。 |
|
|
</li> |
|
|
<br /> |
|
|
<br /> |
|
|
<li><imode>要素<br /> |
|
|
<ezweb>要素でマッチした場合に参照されるEzWeb絵文字に対応するDoCoMo絵文字番号を保持します。mod_chxjによりDoCoMo絵文字に変換する場合に使用されます。 |
|
|
</li> |
|
|
<br /> |
|
|
<br /> |
|
|
</ol> |
|
|
</subsection> |
|
|
|
|
|
|
|
|
<!-- ================================================================================ --> |
|
|
<!-- SoftBank->DoCoMo変換定義 --> |
|
|
<!-- ================================================================================ --> |
|
|
<subsection title="SoftBank→DoCoMo変換定義"> |
|
|
SoftBank->DoCoMo変換の定義は主にSoftBank端末からサーバサイドへのPOST/GETデータの変換に使用されます。 |
|
|
定義はemoji.xmlファイルの<softbank2imode>タグではさまれたところに定義してあります。 |
|
|
<set>から</set>までの間が1絵文字を表現する部分になります。 |
|
|
<br /> |
|
|
以下に、emoji.xmlファイルの3つ目のパート、SoftBank→DoCoMo変換定義を以下に記します。 |
|
|
<program title="emoji.xml"> |
|
|
<softbank2imode> |
|
|
<set> |
|
|
<no> |
|
|
1 |
|
|
</no> |
|
|
<softbank> |
|
|
<webcode> |
|
|
4721 |
|
|
</webcode> |
|
|
<sjis-hex> |
|
|
f941 |
|
|
</sjis-hex> |
|
|
<utf8-hex> |
|
|
ee8081 |
|
|
</utf8-hex> |
|
|
</softbank> |
|
|
<imode> |
|
|
<no> |
|
|
140 |
|
|
</no> |
|
|
</imode> |
|
|
</set> |
|
|
・ |
|
|
・ |
|
|
・ |
|
|
・ |
|
|
</softbank2imode> |
|
|
</program> |
|
|
<br /> |
|
|
<ol> |
|
|
<li><no>要素<br /> |
|
|
SoftBankで定義されている絵文字番号を保持します。 |
|
|
</li> |
|
|
<br /> |
|
|
<br /> |
|
|
<li><softbank>要素<br /> |
|
|
<no>で定義された絵文字番号の実際にPOST/GETされてくる値を保持します。webcodeは端末がShift_JISの場合でウェブコードを送信してくる場合のPOST/GETデータ、sjis-hexは端末がShift_JISの場合のPOST/GETデータ、utf8-hexは端末がUTF-8の場合のPOST/GETデータになっています。 |
|
|
POST/GETされたデータはこの要素に記述されたコードとマッチングされ、マッチした場合絵文字を特定します。 |
|
|
</li> |
|
|
<br /> |
|
|
<br /> |
|
|
<li><imode>要素<br /> |
|
|
<ezweb>要素でマッチした場合に参照されるSoftBank絵文字に対応するDoCoMo絵文字番号を保持します。mod_chxjによりDoCoMo絵文字に変換する場合に使用されます。 |
|
|
</li> |
|
|
<br /> |
|
|
<br /> |
|
|
</ol> |
|
|
</subsection> |
|
|
|
|
|
|
|
| 826 |
</subsection> |
</subsection> |
| 827 |
</section> |
</section> |
| 828 |
|
|
|
<br /> |
|
|
<br /> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 829 |
|
|
|
<!-- ================================================================================ --> |
|
|
<!-- --> |
|
|
<!-- デバイス定義 --> |
|
|
<!-- --> |
|
|
<!-- ================================================================================ --> |
|
| 830 |
<section title="デバイス定義 device_data.xml"> |
<section title="デバイス定義 device_data.xml"> |
| 831 |
mod_chxjの動作を決定付ける重要な定義です。変換対象の端末は全て、device_data.xmlファイルに定義される必要があります。 |
mod_chxjの動作を決定付ける重要な定義です。変換対象の端末は全て、device_data.xmlファイルに定義される必要があります。 |
| 832 |
定義されていない端末は、mod_chxjとしては、認識することができません。認識できない場合には、変換せずにそのまま出力します。ただし、Perl互換の正規表現によって定義できるため、正規表現の書き方によっては全ての機種に対応させることも可能です。 |
定義されていない端末は、mod_chxjとしては、認識することができません。認識できない場合には、変換せずにそのまま出力します。ただし、Perl互換の正規表現によって定義できるため、正規表現の書き方によっては全ての機種に対応させることも可能です。 |
|
|
|
|
<br /> |
|
|
<subsection title="デバイス定義の要素"> |
|
|
まず以下にデバイス定義を記します。 |
|
|
<program title="device_data.xml"> |
|
|
<devices> |
|
|
<user_agent pattern="^KDDI-([^ ]+) UP.Browser/[^ ]+ .+"> |
|
|
<device> |
|
|
<device_id>HI21</device_id> |
|
|
<device_name>C3001H</device_name> |
|
|
<html_spec_type>XHTML_MOBILE_1_0</html_spec_type> |
|
|
<width>120</width> |
|
|
<heigh>130</heigh> |
|
|
<gif>true</gif> |
|
|
<jpeg>true</jpeg> |
|
|
<png>true</png> |
|
|
<bmp2>false</bmp2> |
|
|
<bmp4>false</bmp4> |
|
|
<color>4096</color> |
|
|
<emoji_type>C</emoji_type> |
|
|
<wp_width>120</wp_width> |
|
|
<wp_heigh>116</wp_heigh> |
|
|
<cache>9740</cache> |
|
|
<dpi_width>72</dpi_width> |
|
|
<dpi_heigh>72</dpi_heigh> |
|
|
<charset>SJIS</charset> |
|
|
</device> |
|
|
・ |
|
|
・ |
|
|
・ |
|
|
</user_agent> |
|
|
<user_agent> |
|
|
・ |
|
|
・ |
|
|
・ |
|
|
</user_agent> |
|
|
・ |
|
|
・ |
|
|
・ |
|
|
</devices> |
|
|
</program> |
|
|
デバイス定義は<devices>タグに囲まれた中に記述します。 |
|
|
devicesタグはuser_agentタグを子に持ちます。user_agentはpattern属性を保持し、端末のUser-Agentヘッダとマッチングされます。user_agentタグのpattern属性とマッチした場合には、そのuser_agentタグの子ノードであるdevice要素を1つづつ見に行きます。user_agentタグのpattern属性は正規表現となっていて、$1がデバイス識別IDになるように定義されていますので、$1とdevice_idタグの要素をマッチングします。マッチしたdeviceを該当端末とし、mod_chxjは該当端末用の変換処理を行います。 |
|
|
|
|
|
<br /> |
|
|
以下に各タグについての説明を記します。 |
|
|
<ol> |
|
|
<li><b>devicesタグ</b><br /> |
|
|
全ての要素は一組のdevicesタグに囲まれます。この中に存在する要素がデバイス定義になります。 |
|
|
<br /> |
|
|
<br /> |
|
|
</li> |
|
|
<li><b>user_agentタグ</b><br /> |
|
|
User-Agentのパターンとそのパターンにマッチするdeviceを子ノードに持ちます。<br /> |
|
|
pattern属性にはUser-AgentとマッチさせるPerl互換の正規表現を指定します<br /> |
|
|
仮に"KDDI-CA31 UP.Browser/・・・"というUser-Agentを保持する端末からのアクセスがあった場合は、 |
|
|
<user_agent pattern="^KDDI-([^ ]+) UP.Browser/[^ ]+ .+">にマッチしますが、<user_agent pattern="^UP.Browser/[^\-]+-([^ ]+) .+" > |
|
|
にはマッチしません。 |
|
|
よってmod_chxjは<user_agent pattern="^KDDI-([^ ]+) UP.Browser/[^ ]+ .+">の子ノードを処理対象と判断します。<br /> |
|
|
pattern属性の要素である正規表現には必ず$1で後方参照できるようグルーピングが必要です。$1で後方参照する値は以下に記すdevice_idタグの値と比較されます。 |
|
|
device_idとの比較の結果、等しい値であればそのdevice_idを保持するdeviceタグが該当端末として選択されます。<br /> |
|
|
user_agentタグレベルではマッチしているもののdevice_idが期待する値を持っていない場合は、user_agentタグ中の最後のdeviceが選択されます。 |
|
|
<br /> |
|
|
<br /> |
|
|
</li> |
|
|
<li><b>deviceタグ</b><br /> |
|
|
一台の端末を表現します。<br /> |
|
|
子ノードとして以下を保持します。<br /> |
|
|
<ol> |
|
|
<li>device_id</li> |
|
|
<li>device_name</li> |
|
|
<li>html_spec_type</li> |
|
|
<li>width</li> |
|
|
<li>height</li> |
|
|
<li>gif</li> |
|
|
<li>jpeg</li> |
|
|
<li>png</li> |
|
|
<li>bmp2</li> |
|
|
<li>bmp4</li> |
|
|
<li>color</li> |
|
|
<li>emoji_type</li> |
|
|
<li>wp_width</li> |
|
|
<li>wp_height</li> |
|
|
<li>cache</li> |
|
|
<li>dpi_width</li> |
|
|
<li>dpi_height</li> |
|
|
<li>charset</li> |
|
|
</ol> |
|
|
<br /><br /> |
|
|
</li> |
|
|
<li><b>device_idタグ</b><br /> |
|
|
user_agentタグのpattern属性により生成された$1により後方参照される値と比較される値を保持します。通常DoCoMoであればUser-Agentの「機種名」部、 |
|
|
auであればUser-Agentの「デバイスID」部、 SoftBankであれば、User-Agentの「機種名」部を記述します。 |
|
|
<program title="例"> |
|
|
<!-- DoCoMo F905iの場合 --> |
|
|
<device_id>F905i</device_id> |
|
|
|
|
|
<!-- au W54Tの場合 --> |
|
|
<device_id>TS3E</device_id> |
|
|
|
|
|
<!-- SoftBank 822SHの場合 --> |
|
|
<device_id>822SH</device_id> |
|
|
</program> |
|
|
</li> |
|
|
<li><b>device_nameタグ</b><br /> |
|
|
mod_chxjでは本値をデバッグログ出力時にのみ使用します、人が見てわかりやすい名前を入力しておきます。 |
|
|
device_idと混同しないように注意します。 |
|
|
<program title="au W21CAの例"> |
|
|
<device_name>W21CA</device_name> |
|
|
</program> |
|
|
</li> |
|
|
<li><b>html_spec_typeタグ</b><br /> |
|
|
端末のサポートするHTMLタイプを指定します。本タグの値によりHTML変換結果が変わります。 |
|
|
指定できる値は以下のとおりです。大文字、小文字は区別しません。 |
|
|
<table title="対応HTMLタイプ一覧"> |
|
|
<thead> |
|
|
<tr> |
|
|
<td>値</td> |
|
|
<td>意味</td> |
|
|
</tr> |
|
|
</thead> |
|
|
<tbody> |
|
|
<tr> |
|
|
<td>CHTML_1_0</td> |
|
|
<td>CHTML1.0対応機種の場合記述します。HTML変換結果はCHTML1.0になります。</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td>CHTML_2_0</td> |
|
|
<td>CHTML2.0対応機種の場合記述します。HTML変換結果はCHTML2.0になります。</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td>CHTML_3_0</td> |
|
|
<td>CHTML3.0対応機種の場合記述します。HTML変換結果はCHTML3.0になります。</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td>CHTML_4_0</td> |
|
|
<td>CHTML4.0対応機種の場合記述します。HTML変換結果はCHTML4.0になります。(0.9.0時点ではCHTML3.0と同じ)</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td>CHTML_5_0</td> |
|
|
<td>CHTML5.0対応機種の場合記述します。HTML変換結果はCHTML5.0になります。(0.9.0時点ではCHTML3.0と同じ)</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td>CHTML_6_0</td> |
|
|
<td>CHTML6.0対応機種の場合記述します。HTML変換結果はCHTML6.0になります。(0.9.0時点ではCHTML3.0と同じ)</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td>CHTML_7_0</td> |
|
|
<td>CHTML7.0対応機種の場合記述します。HTML変換結果はCHTML7.0になります。(0.9.0時点ではCHTML3.0と同じ)</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td>XHTML_MOBILE_1_0</td> |
|
|
<td>auのXHTML対応機種の場合に記述します。HTML変換結果はXHTMLになります。</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td>HDML</td> |
|
|
<td>auのHDML対応機種の場合に記述します。HTML変換結果はHDMLになります。</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td>JHTML</td> |
|
|
<td>SoftBankの端末の場合に記述します。HTML変換結果はSoftBank用HTMLになります。</td> |
|
|
</tr> |
|
|
</tbody> |
|
|
</table> |
|
|
</li> |
|
|
<li><b>widthタグ</b><br /> |
|
|
端末の横幅を指定します。 |
|
|
</li> |
|
|
<li><b>heightタグ</b><br /> |
|
|
端末の縦幅を指定します。 |
|
|
</li> |
|
|
<li><b>gifタグ</b><br /> |
|
|
端末がgif画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない)場合はfalseを指定します。<note>大文字、小文字の区別なし</note> |
|
|
</li> |
|
|
<li><b>jpegタグ</b><br /> |
|
|
端末がjpeg画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない)場合はfalseを指定します。<note>大文字、小文字の区別なし</note> |
|
|
</li> |
|
|
<li><b>pngタグ</b><br /> |
|
|
端末がpng画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない)場合はfalseを指定します。<note>大文字、小文字の区別なし</note> |
|
|
</li> |
|
|
<li><b>bmp2タグ</b><br /> |
|
|
端末がbmp2画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない)場合はfalseを指定します。<note>大文字、小文字の区別なし</note> |
|
|
通常はfalse。 |
|
|
</li> |
|
|
<li><b>bmp4タグ</b><br /> |
|
|
端末がbmp4画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない)場合はfalseを指定します。<note>大文字、小文字の区別なし</note> |
|
|
通常はfalse。 |
|
|
</li> |
|
|
<li><b>colorタグ</b><br /> |
|
|
端末の表示可能色数。 |
|
|
</li> |
|
|
<li><b>emoji_typeタグ</b><br /> |
|
|
auの場合に指定します。au以外の場合は指定しても意味はありません。<br /> |
|
|
設定できる値は以下のとおり。 |
|
|
<table title="emoji_typeに設定できる値"> |
|
|
<thead> |
|
|
<tr> |
|
|
<td>値</td> |
|
|
<td>意味</td> |
|
|
</tr> |
|
|
</thead> |
|
|
<tbody> |
|
|
<tr> |
|
|
<td>A</td> |
|
|
<td>図柄タイプAをサポートしている場合に指定します。</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td>B</td> |
|
|
<td>図柄タイプBをサポートしている場合に指定します。</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td>C</td> |
|
|
<td>図柄タイプCをサポートしている場合に指定します。</td> |
|
|
</tr> |
|
|
<tr> |
|
|
<td>D</td> |
|
|
<td>図柄タイプDをサポートしている場合に指定します。</td> |
|
|
</tr> |
|
|
</tbody> |
|
|
</table> |
|
|
<note>大文字、小文字の区別なし</note> |
|
|
</li> |
|
|
<li><b>wp_widthタグ</b><br /> |
|
|
壁紙の横幅を指定します。Mode=WPで画像生成する場合、この値が使用されます。 |
|
|
</li> |
|
|
<li><b>wp_heightタグ</b><br /> |
|
|
壁紙の縦幅を指定します。Mode=WPで画像生成する場合、この値が使用されます。 |
|
|
</li> |
|
|
<li><b>cacheタグ</b><br /> |
|
|
ブラウザのキャッシュサイズを指定します。 |
|
|
</li> |
|
|
<li><b>dpi_widthタグ</b><br /> |
|
|
端末の解像度。 |
|
|
</li> |
|
|
<li><b>dpi_heightタグ</b><br /> |
|
|
端末の解像度。 |
|
|
</li> |
|
|
<li><b>charsetタグ(0.9.0にて追加)</b><br /> |
|
|
端末に送信する文字コードを指定します。指定できる値はSJISかUTF-8のみ。 |
|
|
</li> |
|
|
</ol> |
|
|
<br /> |
|
|
</subsection> |
|
|
<br /> |
|
| 833 |
</section> |
</section> |
| 834 |
|
|
| 835 |
|
|
| 993 |
本機能は、Cookieシミュレート機能を有効にすると、自動で有効になります(将来的には変更予定)。 |
本機能は、Cookieシミュレート機能を有効にすると、自動で有効になります(将来的には変更予定)。 |
| 994 |
</subsection> |
</subsection> |
| 995 |
</section> |
</section> |
|
|
|
|
|
|
|
|
|
| 996 |
</body> |
</body> |
| 997 |
</doc> |
</doc> |