Develop and Download Open Source Software

Browse CVS Repository

Contents of /modchxj/mod_chxj/doc/modchxj.sdoc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.32 - (show annotations) (download)
Wed Mar 19 06:17:37 2008 UTC (16 years, 1 month ago) by konn
Branch: MAIN
Changes since 1.31: +29 -2 lines
  * Added dl dt dd tags.

1 <?xml version='1.0' encoding="EUC-JP" ?>
2
3 <doc xml:lang="ja">
4 <head>
5 <title>mod_chxj</title>
6 <subtitle></subtitle>
7 <author>Atsushi Konno</author>
8 <date>29 Mar 2005</date>
9 <date>Last modified: Wed, 13 Feb 2008 18:35:16 +0900</date>
10 </head>
11 <body>
12 <section title="Overview">
13
14 mod_chxjはオープンソースの携帯向けコンテンツ変換Apache2.x用モジュールであり、
15 CHTML(DoCoMo i-Mode用 CHTML3.0)で記述された文書や通常のHTMLで記述された文書を、アクセスに来た端末のUser-Agentヘッダを見て、それぞれの端末にあった形式に変換します。
16 HTML文書に限らず、画像(jpg、gif、png)、絵文字についても、定義ファイルに従ってそれぞれのキャリアにあった絵文字に変換します。
17 Cookie非対応端末、Refer非対応端末のために、Set-Cookie、CookieヘッダやRefererヘッダをシミュレートすることもできます(EXPERIMENTAL)。
18
19
20 </section>
21 <section title="インストール">
22 <subsection title="準備">
23 mod_chxjをインストールする前に、下記のものを用意する必要があります。
24 <ol>
25 <li>Apache2.xのヘッダーファイル群</li>
26 <li>Apache2.x用のapxs</li>
27 <li>apr(Apache Portable Runtime)ライブラリとそのヘッダファイル郡(apu含む)</li>
28 <li>automake、autoconf、libtool1.3.X</li>
29 <li>ImageMagick(MagickWand)</li>
30 <li>Linux</li>
31 </ol>
32 </subsection>
33 <subsection title="mod_chxjの入手">
34 mod_chxjは<a href="http://sourceforge.jp/projects/modchxj/">こちら</a>からダウンロードすることができます。
35 </subsection>
36 <subsection title="インストール">
37 以下にmod_chxjインストール手順を示します。
38 <ol>
39 <li>Configure スクリプトを生成します(必須ではない)<program title="Configure スクリプトの生成">
40 $ ./buildconf.sh
41 </program>
42 <note>"$"はプロンプトをあらわします。</note>
43 </li>
44 <li>Configure
45
46 <program title="Configure">
47 $ ./configure
48 </program>
49 <note>場合によっては--with-apr-configや--with-apu-configも必要です。</note>
50 <note>0.8.6以下の場合には--with-apache-headerが必須です</note>
51 </li>
52 <li>mod_chxj.soを生成します
53 <program title="make">
54 $ make
55 </program>
56 </li>
57 <li>apacheにインストールします
58 <program title="install">
59 $ make install
60 </program>
61 </li>
62 <li>データの設置
63 etcディレクトリは以下のdevice_data.xmlとemoji.xmlをApache
64 からアクセスできるところに配置します。
65 <note>0.9.0からemoji.xml、device_data.xmlの定義フォーマットを変更しましたのでバージョンをあわせてください</note>
66
67 以下、/etc/apache2/chxjディレクトリにchxj用設定ファイルを用意する場合
68
69 <program title="データの設置">
70 $ mkdir -p /etc/apache2/chxj
71 $ cp etc/device_data.xml /etc/apache2/chxj
72 $ cp etc/emoji.xml /etc/apache2/chxj
73 </program>
74 </li>
75 </ol>
76 </subsection>
77 </section>
78 <section title="Configuration">
79 以下はmod_chxjが/usr/lib/apache2/modulesディレクトリ配下に設置されたものとしています
80
81 <subsection title="htmlファイルが変換対象の場合">
82
83 例として、Locationが"/chxj"以下のものは全て変換する場合を説明します。
84
85 <ol>
86 <li>httpd.confに以下を追加します。
87
88 <program title="httpd.conf">
89 #====================================================================================
90 # モジュールをApache2.0にロード
91 #====================================================================================
92 LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so
93
94 #====================================================================================
95 # デバイスデータファイルの設定
96 #====================================================================================
97 ChxjLoadDeviceData /etc/apache2/chxj/device_data.xml
98
99 #====================================================================================
100 # 絵文字データファイルの設定
101 #====================================================================================
102 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
103
104 #====================================================================================
105 # 変換エンジン動作指示命令
106 # ChxjConvRule ==> ディレクティブ
107 # "^/chxj.+$" ==> Perl互換のURIパターン
108 # EngineOn ==> 変換エンジンを動作させる指示
109 # NONE ==> サーバ側の文字コード。(NONEを指定した場合は文字コード変換しない)
110 #====================================================================================
111 ChxjConvertRule "^/chxj.+$" "EngineOn" "NONE"
112
113 </program>
114 </li>
115 <li>apacheの再起動。</li>
116 </ol>
117 </subsection>
118 <subsection title="php等の出力結果が変換対象の場合">
119 <ol>
120 <li>httpd.confに以下を追加します
121
122 <program title="httpd.conf">
123 #====================================================================================
124 # モジュールをApache2.xにロード
125 #====================================================================================
126 LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so
127
128 #====================================================================================
129 # デバイスデータの設定
130 #====================================================================================
131 ChxjLoadDeviceData /etc/apache2/chxj/device_data.xml
132
133 #====================================================================================
134 # 絵文字データの設定
135 #====================================================================================
136 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
137
138 #====================================================================================
139 # 変換エンジン動作指示命令
140 # ChxjConvRule ==> ディレクティブ
141 # "^/chxj.+$" ==> Perl互換のURIパターン
142 # EngineOn ==> 変換エンジンを動作させる指示。動作させたく無い場合は"EngineOff"
143 # EUC-JP ==> サーバ側の文字コード。(NONEを指定した場合は文字コード変換しない)
144 # EUC-JPからCP932に文字コード変換します。
145 #====================================================================================
146 ChxjConvertRule "^/chxj.+$" "EngineOn" "EUC-JP"
147
148 </program>
149 </li>
150 <li>apacheの再起動。</li>
151 </ol>
152 </subsection>
153
154 <subsection title="xoopsを使用し、且つwordpress、bwikiを使用している場合">
155 <ol>
156 <li>httpd.confに以下を追加します
157
158 <program title="httpd.conf">
159 #====================================================================================
160 # モジュールをApache2.xにロード
161 #====================================================================================
162 LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so
163
164 #====================================================================================
165 # デバイスデータの設定
166 #====================================================================================
167 ChxjLoadDeviceData /etc/apache2/chxj/device_data.xml
168
169 #====================================================================================
170 # 絵文字データの設定
171 #====================================================================================
172 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
173
174 #====================================================================================
175 # 変換エンジン動作指示命令
176 #====================================================================================
177 #====================================================================================
178 # bwikiの設定をします。bwikiではどうもxoopsヘッダの文字コードとbwiki内での携帯スキン
179 # の文字コードが一致していないようなので、bwiki内で文字コードを変換させないように
180 # 修正後、以下のルールを記述します。
181 #
182 # ChxjConvRule ディレクティブ
183 # "^/modules/bwiki.+$" このルールを適用したいURIパターン
184 # "EngineOn" 変換エンジンを有効にします。
185 # "EUC-JP" 出力時にEUC-JPからCP932に変換させます。
186 # "PC" 変換元HTMLはPCサイト用HTMLです。
187 # "DoCoMo/1.0/D501i" DoCoMo端末としてbwikiにアクセスさせます。
188 #
189 #====================================================================================
190 ChxjConvertRule "^/modules/bwiki.+$" "EngineOn" "EUC-JP" "PC" "DoCoMo/1.0/D501i"
191
192 #====================================================================================
193 # wordpressの設定をします。
194 #
195 # ChxjConvRule ディレクティブ
196 # "^/modules/wordpress.+$" このルールを適用したいURIパターン
197 # "EngineOn" 変換エンジンを有効にします。
198 # "NONE" 出力時に文字コード変換をさせません。
199 # "NONE" 変換元HTMLはPCサイト用HTMLではありません。
200 # "DoCoMo/1.0/D501i" DoCoMo端末としてwordpressにアクセスさせます。
201 #
202 #====================================================================================
203 ChxjConvertRule "^/modules/wordpress/.*$" "EngineOn" "NONE" "PC" "DoCoMo/1.0/D501i"
204
205 #====================================================================================
206 # その他の設定をします。
207 #
208 # ChxjConvRule ディレクティブ
209 # "^/.+$" このルールを適用したいURIパターン
210 # "EngineOn" 変換エンジンを有効にします。
211 # "EUC-JP" 出力時にEUC-JPからCP932に文字コード変換をさせます。
212 #
213 #====================================================================================
214 ChxjConvertRule "^/.+$" "EngineOn" "EUC-JP"
215
216
217 &lt;Location /&gt;
218 ChxjImageEngine On
219 AllowOverride All
220 &lt;/Location&gt;
221 </program>
222 </li>
223 <li>apacheの再起動。</li>
224 </ol>
225 </subsection>
226
227
228
229
230 <subsection title="画像自動変換機能を使用する場合">
231 <ol>
232 <li>httpd.confに以下を追加します。
233 下記は、URIが/imgで始まる全ての画像に対して動作するようmod_chxjに指示しています。
234
235 <program title="httpd.conf">
236 &lt;Location /img&gt;
237 ChxjImageEngine On
238 ChxjImageCacheDir /tmp
239 ChxjImageCopyright "A.Konno"
240 ChxjImageCacheLimit 10485760
241 &lt;/Location&gt;
242 </program>
243
244 上記の説明を以下に示します。
245
246 <ol>
247 <li>ChxjImageEngine<br />
248 mod_chxjの画像変換ハンドラを起動するよう指示しています。
249 DefaultはOff
250
251 <br />
252 <br />
253 </li>
254
255
256 <li>ChxjImageCacheDir<br />
257 mod_chxj画像変換ハンドラが使用する変換後の画像をおいておくディレクトリを指定します。
258 デフォルトは/tmp。
259
260 <program title="ChxjImageCacheDir">
261 ChxjImageCacheDir /tmp
262 </program>
263
264 mod_chxjに画像変換キャッシュとして/tmpを使用するよう指示します。
265 <br />
266 <br />
267 </li>
268
269
270
271 <li>ChxjImageCopyright<br />
272 mod_chxjの画像変換ハンドラに、転送禁止設定を行うよう指示します。
273 パラメータとして任意の文字列をとります。
274 ChxjImageCopyrightディレクティブで指定された文字列は、それぞれのイメージの
275 コメント部に埋め込まれます。
276
277 <program title="ChxjImageCopyright">
278 ChxjImageCopyright "A.Konno"
279 </program>
280
281 mod_chxjに転送禁止設定を行うよう指示しています。
282 変換後イメージのコメント部分には、キャリア毎に以下の文字列を埋め込みます。
283
284 <b>AU の場合</b>
285 <program title="AU">
286 kddi_copyright=on,A.Konno
287 </program>
288
289 <b>DoCoMoの場合</b>
290 <program title="DoCoMo">copy="NO",A.Konno</program>
291
292 <b>SoftBank/Vodafone</b>の場合は、レスポンスヘッダに
293
294 <program title="SoftBank/Vodafone/J-PHONE">
295 x-jphone-copyright:no-transfer
296 </program>
297
298 を埋め込みます。
299 <note>SoftBank/Vodafoneの場合は、リクエストURLの最後が.pnzか、.jpzで終わるようにダミーを付けなければなりません。</note>
300 </li>
301
302 <li>ChxjImageCacheLimit<br />
303 mod_chxj画像変換ハンドラが使用する変換後の画像をおいておくディレクトリの許容量を指定します。
304 単位はbyte。
305
306 <program title="ChxjImageCacheLimit">
307 ChxjImageCacheLimit 1024
308 </program>
309
310 mod_chxjに画像変換キャッシュ最大サイズとして1kbyteと指定。
311 ※このとき変換結果が1kbyte以上あるような場合にはINTERNAL_SERVER_ERRORを返します。
312 十分な領域を確保するか、画像サイズを小さくしてください。
313 <br />
314 <br />
315 </li>
316 </ol>
317 </li>
318 </ol>
319 </subsection>
320
321 <subsection title="文字コードを変換したい場合">
322 <ol>
323 <li>httpd.confに以下を追加します。
324 下記は、URIが/chxjで始まる全てのコンテンツに対して動作するようmod_chxjに指示しています。
325 サーバ側はEUC-JPであった場合の例です。mod_chxjによってSJISに変換するように指示しています。
326 サーバ側がShift_JISで無い場合は、Shift_JISコードの10進参照文字列表記を記述することによって
327 Shift_JISコードの絵文字2バイトコードに変換しクライアントへ返します。
328
329 <program title="httpd.conf">
330 ChxjConvRule "^/chxj.+$" "EngineOn" "EUC-JP"
331 </program>
332
333 上記の説明を以下に示します。
334
335 <ol>
336 <li>ChxjConvertRule<br />
337 サーバサイドの文字コードを指定します。ここに、EUC-JPと指定してあった場合は、
338 EUC-JPからCP932に変換後、クライアントに出力されます。
339 省略した場合はNONE
340 <ol>
341 <li>変換エンジン動作指示命令<br />
342 ChxjConvertRule ==> ディレクティブ<br />
343 "^/chxj.+$" ==> Perl互換のURIパターン<br />
344 EngineOn ==> 変換エンジンを動作させる指示。動作させたく無い場合は"EngineOff"<br />
345 EUC-JP ==> サーバ側の文字コード。(NONEを指定した場合は文字コード変換しない)<br />
346 <br />
347 EUC-JPからCP932に文字コード変換します。(libiconvに依存します)<br/>
348 </li>
349 </ol>
350
351 <br />
352 <br />
353 </li>
354 </ol>
355 </li>
356 </ol>
357 </subsection>
358 <subsection title="ディレクティブ">
359 <ol>
360 <li>ChxjLoadDeviceData<br />
361 デバイス定義ファイルを指定します。
362 <program title="ex)">
363 ChxjLoadDeviceData /etc/apache2/device.xml
364 </program>
365 </li>
366 <li>ChxjLoadEmojiData<br />
367 絵文字変換定義ファイルを指定します。
368 <program title="ex)">
369 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
370 </program>
371 </li>
372 <li>ChxjImageEngine<br />
373 画像変換エンジンを有効にします。
374 パラメータとしてOnとOffを指定できます。
375 DefaultはOffです。
376 <program title="ex)">
377 ChxjImageEngine On
378 </program>
379 </li>
380 <li>ChxjImageCacheDir<br />
381 イメージの一時ファイル保存場所を指定します。
382 <program title="ex)">
383 ChxjImageCacheDir /tmp
384 </program>
385 </li>
386 <li>ChxjImageCacheLimit<br />
387 イメージの一時ファイル保存許容量を指定します。
388 下記は1MByteの例。
389 <program title="ex)">
390 ChxjImageCacheLimit 1048576
391 </program>
392 </li>
393 <li>ChxjImageCopyright<br />
394 イメージに著作権情報を付与します。
395 <program title="ex)">
396 ChxjImageCopyright "chosakuken jyoho"
397 </program>
398 </li>
399 <li>ChxjConvertRule<br />
400 HTML変換エンジンの適用ルールを記述します。
401 本ディレクティブを使用し、変換エンジンのOn|Offを指定します。
402 DefaultはOFFです。
403 また、ルールは記述された順番に評価し、マッチするものがあれば、その時点で対象ルールを適用します。
404 パラメータは3つ必要です。下記にパラメータを記します。
405 <table title="パラメータ">
406 <tbody>
407 <tr>
408 <td>第1パラメータ</td><td>URIを評価するPerl互換の正規表現を指定します</td>
409 </tr>
410
411 <tr>
412 <td>第2パラメータ</td><td>HTML変換エンジンのOn|Offを指定します。Onの場合は"EngineOn"。Offの場合は"EngineOff"を指定します。"EngineOn|EngineOff"の他に"CookieOn|CookieOff"を指定することもできます。複数指定する場合は","で区切って指定します。</td>
413 </tr>
414 <tr>
415 <td>第3パラメータ</td><td>文字コードを指定します。ここで指定した文字コードから"CP932"に変換します。指定できる文字コードはiconv -lコマンドによって確認することができます。変換しなくて良い場合はNONEを指定してください。</td>
416 </tr>
417 <tr>
418 <td>第4パラメータ</td><td>省略した場合は、携帯ページからの変換を意味します。PC用ページからの変換を行う場合は"PC"を第四パラメータに指定します。</td>
419 </tr>
420 <tr>
421 <td>第5パラメータ</td><td>サーバサイドアプリケーションに渡すUser-Agentを指定します。
422 例えば、wordpress等のようにCHTMLを出力するアプリケーションがある場合は、"DoCoMo/1.0/N501i"等適当なUser-Agentを指定することによって、アプリケーションにCHTMLを出力するように指示することができます。
423 ここで指定したUser-AgentはHTML出力時には評価されません。</td>
424 </tr>
425 </tbody>
426 </table>
427 <program title="ex)">
428 ChxjConvertRule "^/chxj.+$/" EngineOn EUC-JP
429 </program>
430 </li>
431 <li>ChxjCookieDir<br />
432 クッキーを使用する場合に指定します。クッキーの内容を保存するディレクトリを指定します。
433 指定しない場合は/tmpに保存されます。
434 <program title="ex)">
435 &lt;Location /&gt;
436 ChxjCookieDir /tmp
437 &lt;/Location&gt;
438 </program>
439 詳細は「Cookieシミュレート機能」の項を参照ください。
440 </li>
441 <li>ChxjCookieTimeout<br />
442 クッキーを使用する場合に指定します。クッキーの保持期間を秒単位で指定します。
443 指定しない場合は、1800秒でクッキーデータを破棄します。
444 <program title="ex)">
445 &lt;Location /&gt;
446 ChxjCookieTimeout 10
447 &lt;/Location&gt;
448 </program>
449 詳細は「Cookieシミュレート機能」の項を参照ください。
450 </li>
451 </ol>
452 </subsection>
453 </section>
454 <section title="対応するCHTMLタグ">
455 変換可能なCHTMLタグは以下のとおりです。
456
457 <table title="対応タグ一覧">
458 <thead>
459 <tr>
460 <td>タグ</td>
461 <td>属性</td>
462 <td>CHTML</td>
463 <td>HDML</td>
464 <td>XHTML</td>
465 <td>JHTML</td>
466 <td>備考</td>
467 </tr>
468 </thead>
469 <tbody>
470 <tr>
471 <td>&lt;HTML&gt;</td>
472 <td align="center"> </td>
473 <td align="center"></td>
474 <td align="center"></td>
475 <td align="center"></td>
476 <td align="center"></td>
477 <td align="left">属性を指定した場合は無視します</td>
478 </tr>
479 <tr>
480 <td>&lt;META&gt;</td>
481 <td align="center">http-equiv</td>
482 <td align="center"></td>
483 <td align="center">×</td>
484 <td align="center"></td>
485 <td align="center"></td>
486 <td align="left">CHTML1.0、HDMLでは無視します</td>
487 </tr>
488 <tr>
489 <td> </td>
490 <td align="center">content</td>
491 <td align="center"></td>
492 <td align="center">×</td>
493 <td align="center"></td>
494 <td align="center"></td>
495 <td align="left">CHTML1.0、HDMLでは無視します</td>
496 </tr>
497 <tr>
498 <td>&lt;HEAD&gt;</td>
499 <td align="center"> </td>
500 <td align="center"></td>
501 <td align="center"></td>
502 <td align="center"></td>
503 <td align="center"></td>
504 <td align="left">属性を指定した場合は無視します</td>
505 </tr>
506 <tr>
507 <td>&lt;TITLE&gt;</td>
508 <td align="center"> </td>
509 <td align="center"></td>
510 <td align="center"></td>
511 <td align="center"></td>
512 <td align="center"></td>
513 <td align="left">属性を指定した場合は無視します</td>
514 </tr>
515 <tr>
516 <td>&lt;BASE&gt;</td>
517 <td align="center"> </td>
518 <td align="center"></td>
519 <td align="center">×</td>
520 <td align="center"></td>
521 <td align="center"></td>
522 <td align="left">HDMLでは無視します</td>
523 </tr>
524 <tr>
525 <td>&lt;BODY&gt;</td>
526 <td align="center">bgcolor</td>
527 <td align="center"></td>
528 <td align="center">×</td>
529 <td align="center"></td>
530 <td align="center"></td>
531 <td align="left">HDML、CHTML1.0、CHTML2.0では無視します</td>
532 </tr>
533 <tr>
534 <td> </td>
535 <td align="center">text</td>
536 <td align="center"></td>
537 <td align="center">×</td>
538 <td align="center"></td>
539 <td align="center"></td>
540 <td align="left">HDML、CHTML1.0、CHTML2.0では無視します</td>
541 </tr>
542 <tr>
543 <td> </td>
544 <td align="center">link</td>
545 <td align="center"></td>
546 <td align="center">×</td>
547 <td align="center"></td>
548 <td align="center"></td>
549 <td align="left">HDML、CHTML1.0、CHTML2.0では無視します</td>
550 </tr>
551 <tr>
552 <td>&lt;A&gt;</td>
553 <td align="center">href</td>
554 <td align="center"></td>
555 <td align="center"></td>
556 <td align="center"></td>
557 <td align="center"></td>
558 <td align="left"> </td>
559 </tr>
560 <tr>
561 <td> </td>
562 <td align="center">accesskey</td>
563 <td align="center"></td>
564 <td align="center"></td>
565 <td align="center"></td>
566 <td align="center"></td>
567 <td align="left"> </td>
568 </tr>
569 <tr>
570 <td>&lt;BR&gt;</td>
571 <td align="center"> </td>
572 <td align="center"></td>
573 <td align="center"></td>
574 <td align="center"></td>
575 <td align="center"></td>
576 <td align="left"> </td>
577 </tr>
578 <tr>
579 <td>&lt;FONT&gt;</td>
580 <td align="center">color</td>
581 <td align="center"></td>
582 <td align="center">×</td>
583 <td align="center"></td>
584 <td align="center"></td>
585 <td align="left">HDML,CHTML1.0では無視します</td>
586 </tr>
587 <tr>
588 <td>&lt;FORM&gt;</td>
589 <td align="center">action</td>
590 <td align="center"></td>
591 <td align="center"></td>
592 <td align="center"></td>
593 <td align="center"></td>
594 <td align="left"> </td>
595 </tr>
596 <tr>
597 <td> </td>
598 <td align="center">method</td>
599 <td align="center"></td>
600 <td align="center">×</td>
601 <td align="center"></td>
602 <td align="center"></td>
603 <td align="left">HDMLでは無視します</td>
604 </tr>
605 <tr>
606 <td>&lt;INPUT&gt;</td>
607 <td align="center">name</td>
608 <td align="center"></td>
609 <td align="center"></td>
610 <td align="center"></td>
611 <td align="center"></td>
612 <td align="left"> </td>
613 </tr>
614 <tr>
615 <td> </td>
616 <td align="center">type</td>
617 <td align="center"></td>
618 <td align="center"></td>
619 <td align="center"></td>
620 <td align="center"></td>
621 <td align="left">text,password,hidden,radio,checkbox,submitに対応</td>
622 </tr>
623 <tr>
624 <td> </td>
625 <td align="center">value</td>
626 <td align="center"></td>
627 <td align="center"></td>
628 <td align="center"></td>
629 <td align="center"></td>
630 <td align="left"></td>
631 </tr>
632 <tr>
633 <td> </td>
634 <td align="center">istyle</td>
635 <td align="center"></td>
636 <td align="center"></td>
637 <td align="center"></td>
638 <td align="center"></td>
639 <td align="left"> </td>
640 </tr>
641 <tr>
642 <td>&lt;SELECT&lt;</td>
643 <td align="center">name</td>
644 <td align="center"></td>
645 <td align="center"></td>
646 <td align="center"></td>
647 <td align="center"></td>
648 <td align="left"> </td>
649 </tr>
650 <tr>
651 <td> </td>
652 <td align="center">size</td>
653 <td align="center"></td>
654 <td align="center">×</td>
655 <td align="center"></td>
656 <td align="center"></td>
657 <td align="left">HDMLでは無視します</td>
658 </tr>
659 <tr>
660 <td>&lt;OPTION&gt;</td>
661 <td align="center">value</td>
662 <td align="center"></td>
663 <td align="center"></td>
664 <td align="center"></td>
665 <td align="center"></td>
666 <td align="left"><note>必ず閉じてください。そのうち対応します。</note></td>
667 </tr>
668 <tr>
669 <td> </td>
670 <td align="center">checked</td>
671 <td align="center"></td>
672 <td align="center"></td>
673 <td align="center"></td>
674 <td align="center"></td>
675 <td align="left"> </td>
676 </tr>
677 <tr>
678 <td>&lt;DIV&gt;</td>
679 <td align="center">align</td>
680 <td align="center"></td>
681 <td align="center"></td>
682 <td align="center"></td>
683 <td align="center"></td>
684 <td align="left"> </td>
685 </tr>
686 <tr>
687 <td>&lt;HR&gt;</td>
688 <td align="center"> </td>
689 <td align="center"></td>
690 <td align="center"></td>
691 <td align="center"></td>
692 <td align="center"></td>
693 <td align="left"> </td>
694 </tr>
695 <tr>
696 <td>&lt;CENTER&gt;</td>
697 <td align="center"> </td>
698 <td align="center"></td>
699 <td align="center"></td>
700 <td align="center"></td>
701 <td align="center"></td>
702 <td align="left"> </td>
703 </tr>
704 <tr>
705 <td>&lt;IMG&gt;</td>
706 <td align="center">src</td>
707 <td align="center"></td>
708 <td align="center"></td>
709 <td align="center"></td>
710 <td align="center"></td>
711 <td align="left"> </td>
712 </tr>
713 <tr>
714 <td>&lt;DL&gt;</td>
715 <td align="center"> </td>
716 <td align="center"></td>
717 <td align="center">×</td>
718 <td align="center"></td>
719 <td align="center"></td>
720 <td align="left"> </td>
721 </tr>
722 <tr>
723 <td>&lt;DT&gt;</td>
724 <td align="center"> </td>
725 <td align="center"></td>
726 <td align="center"></td>
727 <td align="center"></td>
728 <td align="center"></td>
729 <td align="left"><note>必ず閉じてください。そのうち対応します。</note></td>
730 </tr>
731 <tr>
732 <td>&lt;DD&gt;</td>
733 <td align="center"> </td>
734 <td align="center"></td>
735 <td align="center"></td>
736 <td align="center"></td>
737 <td align="center"></td>
738 <td align="left"><note>必ず閉じてください。そのうち対応します。</note></td>
739 </tr>
740 <tr>
741 <td>&lt;CHXJ:IF&gt;</td>
742 <td align="center">lang</td>
743 <td align="center"></td>
744 <td align="center"></td>
745 <td align="center"></td>
746 <td align="center"></td>
747 <td align="left">lang="chtml" lang="xhtml" lang="hdml" lang="jhtml"が指定できます</td>
748 </tr>
749 </tbody>
750
751 上記以外のタグは全て無視されます。
752
753 </table>
754
755 </section>
756 <section title="独自拡張タグ">
757 <ol>
758 <li>&lt;CHXJ:IF&gt;<br />
759
760 &lt;CHXJ:IF&gt;タグと&lt;/CHXJ:IF&gt;タグではさまれたタグやテキストは、
761 変換せずに<b>そのまま</b><note>変換しませんので注意が必要です</note>出力します。必須の属性としてlangがあります。lang属性を指定することによって、
762 例えば、<b>「HDML機の場合のみ出力させる」</b>といったことを可能にします。<br />
763 <br />
764 ex)
765 <program title="HTML文書中にHDML機の場合のみ有効にしたいタグ、または文書がある場合">
766 &lt;CHXJ:IF lang="HDML" &gt;
767 &lt;NODISPLAY&gt;
768 &lt;ACTION TYPE=ACCEPT TASK=GOSUB DEST='device:data/dnld?url=abc&amp;name=abc.jpg&amp;size=100&amp;disposition=devjaww&amp;title=test'&gt;
769 &lt;/NODISPLAY&gt;
770 &lt;/CHXJ:IF&gt;
771 </program><br />
772
773 ex)
774 <program title="i-Modeのみ出力したい文書がある場合">
775 &lt;CHXJ:IF lang="chtml" &gt;
776 シークレットコードがどーのこーの。
777 &lt;/CHXJ:IF&gt;
778 </program><br />
779
780 また、lang属性は、複数指定することも可能です。<br />
781
782 <program title="HDML機,J-PHONE機は以下を出力します">
783 &lt;CHXJ:IF lang="chtml" lang="jhtml"&gt;
784 あなたの携帯は、HDML機かJ-HTML機です。
785 &lt;/CHXJ:IF&gt;
786 </program><br />
787
788 </li>
789 </ol>
790 </section>
791
792
793
794
795 <section title="文字コードについて">
796 サーバサイドコンテンツについてはShift_JIS(CP932)、EUCJP-WIN(Win外字対応のEUCJP)、UTF-8のどれかで記述することが可能です。
797 Shift_JISで記述した場合は絵文字についてもShift_JISで、EUCJP-WINで記述した場合は絵文字についてもEUCJP-WINで、UTF-8で記述した場合は絵文字についてもUTF-8で
798 記述します。<note>詳細は「絵文字について」の項を参照のこと</note>
799 クライアントサイド(端末側)に送信する文字コードはShift_JISまたはUTF-8を指定することが可能です。<note>指定方法については「デバイス定義」の項を参照のこと。</note>
800 mod_chxjによりサーバサイドコンテンツの文字コードから端末に送信する文字コードへと絵文字も含めて変換します。
801 POST/GET中のデータについても端末側文字コードからサーバサイドコンテンツの文字コードへと絵文字も含めて変換します。
802
803
804 <ol>
805 <li>注意: Shift_JISでサーバサイドコンテンツを記述した場合はPOST/GETデータもShift_JISでサーバサイドコンテンツに渡されます。</li>
806 <li>注意: EUCJP-WINでサーバサイドコンテンツを記述した場合はPOST/GETデータもEUCJP-WINでサーバサイドコンテンツに渡されます。</li>
807 <li>注意: UTF-8でサーバサイドコンテンツを記述した場合はPOST/GETデータもEUCJP-WINでサーバサイドコンテンツに渡されます。</li>
808 </ol>
809
810 サーバサイドコンテンツの文字コードはChxjConvRuleディレクティブで指定した文字コードになります。
811 ChxjConvRuleにて矛盾が生じない限り、文字コードの混在も可能です。
812
813 </section>
814
815
816
817
818 <!-- ================================================================================ -->
819 <!-- -->
820 <!-- 絵文字について -->
821 <!-- -->
822 <!-- ================================================================================ -->
823 <section title="絵文字について">
824 i-Mode用の絵文字を書いておけば、アクセスしたキャリアによって、mod_chxjが対応の絵文字に自動変換します。
825 ソースに2byteのバイナリコードを直接書いても、10進参照文字列(&amp;#XXX;の形)、16進参照文字列(&amp;#xXXX;の形)で書いても、変換対象になります。
826 10進参照文字列、16進参照文字列はmod_chxjにより自動で2バイトコードに変換されます。
827 <note>コンテンツをSJISで記述する場合には絵文字もSJISで、コンテンツをEUCJP-WINで記述する場合には絵文字もEUCJP-WINで、UTF-8で記述する場合には絵文字もUTF-8で記述する必要があります</note>
828
829 <subsection title="絵文字変換定義">
830 絵文字の変換に関する動作を変えたい場合(例えば「ハートがあったら、AUの場合はスペードに」とか、「変換定義がおかしい」といった場合)は、
831 emoji.xmlファイルを直接編集することによって定義を変更することが可能です。emoji.xmlはXMLファイルとなっていますので、人によってはvi等で簡単に定義を
832 変更することができるかもしれません。
833
834 emoji.xmlは3つのパートに分かれています。1つ目はDoCoMo→DoCoMo/au/SoftBankの変換定義部。
835 2つ目はau→DoCoMoの変換定義部。3つ目はSoftBank→DoCoMoの変換定義部。
836 1つ目はサーバサイドコンテンから各キャリアの絵文字に変換する際に使用されます。
837 2つ目と3つ目はPOST/GETデータの変換に使用されます。
838
839
840 <br />
841 <!-- ================================================================================ -->
842 <!-- DoCoMo->DoCoMo/au/SoftBank変換定義 -->
843 <!-- ================================================================================ -->
844 <subsection title="DoCoMo→DoCoMo/au/SoftBank変換定義">
845 以下に、emoji.xmlファイルの1つ目のパート、DoCoMo→DoCoMo/au/SoftBankの変換定義部を記します。
846 <program title="emoji.xml">
847 &lt;emoji&gt;
848 &lt;set&gt;
849 &lt;no&gt;1&lt;/no&gt;
850 &lt;imode&gt;
851 &lt;sjis-hex&gt;f89f&lt;/sjis-hex&gt;
852 &lt;sjis-dec&gt;63647&lt;/sjis-dec&gt;
853 &lt;eucjp-hex&gt;8ffca1&lt;/eucjp-hex&gt;
854 &lt;eucjp-dec&gt;9436321&lt;/eucjp-dec&gt;
855 &lt;unicode-hex&gt;e63e&lt;/unicode-hex&gt;
856 &lt;unicode-dec&gt;58942&lt;/unicode-dec&gt;
857 &lt;utf8-hex&gt;ee98be&lt;/utf8-hex&gt;
858 &lt;utf8-dec&gt;15636670&lt;/utf-dec&gt;
859 &lt;description&gt;晴れ&lt;/description&gt;
860 &lt;/imode&gt;
861 &lt;ezweb&gt;
862 &lt;A&gt;
863 &lt;no&gt;44&lt;/no&gt;
864 &lt;sjis-hex&gt;f660&lt;/sjis-hex&gt;
865 &lt;sjis-dec&gt;63072&lt;/sjis-dec&gt;
866 &lt;unicode-hex&gt;e488&lt;/unicode-hex&gt;
867 &lt;unicode-dec&gt;58504&lt;/unicode-dec&gt;
868 &lt;utf8-hex&gt;eebda0&lt;/utf8-hex&gt;
869 &lt;utf8-dec&gt;15646112&lt;/utf-dec&gt;
870 &lt;/A&gt;
871 &lt;B&gt;
872 &lt;no&gt;44&lt;/no&gt;
873 &lt;sjis-hex&gt;f660&lt;/sjis-hex&gt;
874 &lt;sjis-dec&gt;63072&lt;/sjis-dec&gt;
875 &lt;unicode-hex&gt;e488&lt;/unicode-hex&gt;
876 &lt;unicode-dec&gt;58504&lt;/unicode-dec&gt;
877 &lt;utf8-hex&gt;eebda0&lt;/utf8-hex&gt;
878 &lt;utf8-dec&gt;15646112&lt;/utf-dec&gt;
879 &lt;/B&gt;
880 &lt;C&gt;
881 &lt;no&gt;44&lt;/no&gt;
882 &lt;sjis-hex&gt;f660&lt;/sjis-hex&gt;
883 &lt;sjis-dec&gt;63072&lt;/sjis-dec&gt;
884 &lt;unicode-hex&gt;e488&lt;/unicode-hex&gt;
885 &lt;unicode-dec&gt;58504&lt;/unicode-dec&gt;
886 &lt;utf8-hex&gt;eebda0&lt;/utf8-hex&gt;
887 &lt;utf8-dec&gt;15646112&lt;/utf-dec&gt;
888 &lt;/C&gt;
889 &lt;D&gt;
890 &lt;no&gt;44&lt;/no&gt;
891 &lt;sjis-hex&gt;f660&lt;/sjis-hex&gt;
892 &lt;sjis-dec&gt;63072&lt;/sjis-dec&gt;
893 &lt;unicode-hex&gt;e488&lt;/unicode-hex&gt;
894 &lt;unicode-dec&gt;58504&lt;/unicode-dec&gt;
895 &lt;utf8-hex&gt;eebda0&lt;/utf8-hex&gt;
896 &lt;utf8-dec&gt;15646112&lt;/utf-dec&gt;
897 &lt;/D&gt;
898 &lt;/ezweb&gt;
899 &lt;softbank&gt;
900 &lt;no&gt;74&lt;/no&gt;
901 &lt;sjis-hex&gt;476a&lt;/sjis-hex&gt;
902 &lt;sjis-dec&gt;116572776975&lt;/sjis-dec&gt;
903 &lt;unicode-hex&gt;e04a&lt;/unicode-hex&gt;
904 &lt;unicode-dec&gt;57418&lt;/unicode-dec&gt;
905 &lt;utf8-hex&gt;ee818a&lt;/utf8-hex&gt;
906 &lt;utf8-dec&gt;15630730&lt;/utf-dec&gt;
907 &lt;/softbank&gt;
908 &lt;/set&gt;
909
910
911
912
913 &lt;/emoji&gt;
914 </program>
915
916 絵文字の定義は、&lt;emoji&gt;タグから&lt;/emoji&gt;タグまでの間にあります。その中の要素を説明します。
917 1つの絵文字につき、1つのセット(&lt;set&gt;タグから&lt;/set&gt;タグまで)とし、キャリア毎の絵文字を定義しています。
918 合計176セットあります。
919
920 <ol>
921 <li>&lt;imode&gt;要素<br />
922 まず、元となるi-Mode用の絵文字は、&lt;imode&gt;タグにはさまれた間に定義されています。
923 &lt;imode&gt;要素は子にsjis、eucjp、utf8、unicodeのそれぞれ16進と10進表記データを保持します。
924 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進表記となります。
925 サーバサイドコンテンツがSJISで記述されている場合はimode要素のsjis-hex、sjis-decを参照します。
926 同様にがEUCJP-WINで記述されている場合はimode要素のeucjp-hex、eucjp-decを参照します。
927 UTF-8で記述されている場合はimode要素のutf8-hex、utf8-decを参照します。<br />
928 サーバサイドコンテンツのマッチするコードがimode要素の中に存在すれば、変換は同一set内のデータを使用して行われます。
929 </li>
930 <br />
931 <br />
932 <li>&lt;ezweb&gt;要素<br />
933 アクセスしてきた端末が、AU機であった場合、&lt;ezweb&gt;要素に定義されている値に変換します。
934 &lt;ezweb&gt;要素は、&lt;A&gt;&lt;D&gt;要素を持っていて、それぞれAUの絵文字タイプA〜Dに対応していますので、
935 もし、Dタイプの絵文字端末であったなら、&lt;D&gt;要素の&lt;no&gt;に定義されている値に変換します。ここで定義されている値は、
936 HDML機の場合は、<b>&lt;IMG ICON="XX"&gt;</b>の"XX"の部分に当てはめられて、置換されます。
937 XHTML機の場合は、<b>&lt;IMG LOCALSRC="XX"&gt;</b>の"XX"の部分に当てはめられて、置換されます。
938 同要素にはsjis-hex、sjis-dec、unicode-hex、unicode-dec、utf8-hex、utf8-decが有りますが、今のところ使用していません。
939 </li>
940 <br />
941 <br />
942 <li>&lt;softbank&gt;要素<br />
943 アクセスしてきた端末が、SoftBank/Vodafone/J-Phone端末であった場合、&lt;softbank&gt;要素に定義されている値に変換します。
944 &lt;softbank&gt;要素は、上記要素と同様にsjis-hex、sjis-dec、unicode-hex、unicode-dec、utf8-hex、utf8-decを保持しています。
945 アクセスしてきた端末にはsjisを返す場合はsjis-hex、sjis-decの値を使用します。utf8を返す場合にはutf8-hex、utf8-decでは無くunicode-hex、unicode-decを返します。
946 SoftBank端末の場合は3G端末は基本的にUTF8を返すようにデバイス定義にて定義されています。UTF8で定義された場合でSoftBankの場合はUNICODEの参照文字列を返すように
947 なっています。(問題回避のため)
948 </li>
949 </ol><br />
950 emoji.xmlに定義されていない絵文字で、変換したい絵文字がある場合には、このファイルに新たな定義を足せば、
951 変換するようになります。<note>同一コード領域に割り当てる必要があるかもしれません</note>
952 </subsection>
953
954
955 <!-- ================================================================================ -->
956 <!-- au->DoCoMo変換定義 -->
957 <!-- ================================================================================ -->
958 <subsection title="au→DoCoMo変換定義">
959 au->DoCoMo変換の定義は主にau端末からサーバサイドへのPOST/GETデータの変換に使用されます。
960 定義はemoji.xmlファイルの&lt;ezweb2imode&gt;タグではさまれたところに定義してあります。
961 &lt;set&gt;から&lt;/set&gt;までの間が1絵文字を表現する部分になります。
962 <br />
963 以下に、emoji.xmlファイルの2つ目のパート、au→DoCoMo変換定義を以下に記します。
964 <program title="emoji.xml">
965 &lt;ezweb2imode&gt;
966 &lt;set&gt;
967 &lt;no&gt;1&lt;/no&gt;
968 &lt;ezweb&gt;
969 &lt;sjis-hex&gt;F659&lt;/sjis-hex&gt;
970 &lt;utf8-hex&gt;eebd99&lt;/utf8-hex&gt;
971 &lt;/ezweb&gt;
972 &lt;imode&gt;
973 &lt;no&gt;220&lt;/no&gt;
974 &lt;/imode&gt;
975 &lt;/set&gt;
976
977
978
979 &lt;/ezweb2imode&gt;
980 </program>
981 <br />
982 <ol>
983 <li>&lt;no&gt;要素<br />
984 auで定義されている絵文字番号を保持します。
985 </li>
986 <br />
987 <br />
988 <li>&lt;ezweb&gt;要素<br />
989 &lt;no&gt;で定義された絵文字番号の実際にPOST/GETされてくる値を保持します。sjis-hexは端末がShift_JISの場合のPOST/GETデータ、utf8-hexは端末がUTF-8の場合のPOST/GETデータになっています。
990 POST/GETされたデータはこの要素に記述されたコードとマッチングされ、マッチした場合絵文字を特定します。
991 </li>
992 <br />
993 <br />
994 <li>&lt;imode&gt;要素<br />
995 &lt;ezweb&gt;要素でマッチした場合に参照されるEzWeb絵文字に対応するDoCoMo絵文字番号を保持します。mod_chxjによりDoCoMo絵文字に変換する場合に使用されます。
996 </li>
997 <br />
998 <br />
999 </ol>
1000 </subsection>
1001
1002
1003 <!-- ================================================================================ -->
1004 <!-- SoftBank->DoCoMo変換定義 -->
1005 <!-- ================================================================================ -->
1006 <subsection title="SoftBank→DoCoMo変換定義">
1007 SoftBank-&gt;DoCoMo変換の定義は主にSoftBank端末からサーバサイドへのPOST/GETデータの変換に使用されます。
1008 定義はemoji.xmlファイルの&lt;softbank2imode&gt;タグではさまれたところに定義してあります。
1009 &lt;set&gt;から&lt;/set&gt;までの間が1絵文字を表現する部分になります。
1010 <br />
1011 以下に、emoji.xmlファイルの3つ目のパート、SoftBank→DoCoMo変換定義を以下に記します。
1012 <program title="emoji.xml">
1013 &lt;softbank2imode&gt;
1014 &lt;set&gt;
1015 &lt;no&gt;
1016 1
1017 &lt;/no&gt;
1018 &lt;softbank&gt;
1019 &lt;webcode&gt;
1020 4721
1021 &lt;/webcode&gt;
1022 &lt;sjis-hex&gt;
1023 f941
1024 &lt;/sjis-hex&gt;
1025 &lt;utf8-hex&gt;
1026 ee8081
1027 &lt;/utf8-hex&gt;
1028 &lt;/softbank&gt;
1029 &lt;imode&gt;
1030 &lt;no&gt;
1031 140
1032 &lt;/no&gt;
1033 &lt;/imode&gt;
1034 &lt;/set&gt;
1035
1036
1037
1038
1039 &lt;/softbank2imode&gt;
1040 </program>
1041 <br />
1042 <ol>
1043 <li>&lt;no&gt;要素<br />
1044 SoftBankで定義されている絵文字番号を保持します。
1045 </li>
1046 <br />
1047 <br />
1048 <li>&lt;softbank&gt;要素<br />
1049 &lt;no&gt;で定義された絵文字番号の実際にPOST/GETされてくる値を保持します。webcodeは端末がShift_JISの場合でウェブコードを送信してくる場合のPOST/GETデータ、sjis-hexは端末がShift_JISの場合のPOST/GETデータ、utf8-hexは端末がUTF-8の場合のPOST/GETデータになっています。
1050 POST/GETされたデータはこの要素に記述されたコードとマッチングされ、マッチした場合絵文字を特定します。
1051 </li>
1052 <br />
1053 <br />
1054 <li>&lt;imode&gt;要素<br />
1055 &lt;ezweb&gt;要素でマッチした場合に参照されるSoftBank絵文字に対応するDoCoMo絵文字番号を保持します。mod_chxjによりDoCoMo絵文字に変換する場合に使用されます。
1056 </li>
1057 <br />
1058 <br />
1059 </ol>
1060 </subsection>
1061
1062
1063 </subsection>
1064 </section>
1065
1066 <br />
1067 <br />
1068
1069
1070
1071
1072
1073
1074 <!-- ================================================================================ -->
1075 <!-- -->
1076 <!-- デバイス定義 -->
1077 <!-- -->
1078 <!-- ================================================================================ -->
1079 <section title="デバイス定義 device_data.xml">
1080 mod_chxjの動作を決定付ける重要な定義です。変換対象の端末は全て、device_data.xmlファイルに定義される必要があります。
1081 定義されていない端末は、mod_chxjとしては、認識することができません。認識できない場合には、変換せずにそのまま出力します。ただし、Perl互換の正規表現によって定義できるため、正規表現の書き方によっては全ての機種に対応させることも可能です。
1082
1083 <br />
1084 <subsection title="デバイス定義の要素">
1085 まず以下にデバイス定義を記します。
1086 <program title="device_data.xml">
1087 &lt;devices&gt;
1088 &lt;user_agent pattern="^KDDI-([^ ]+) UP.Browser/[^ ]+ .+"&gt;
1089 &lt;device&gt;
1090 &lt;device_id&gt;HI21&lt;/device_id&gt;
1091 &lt;device_name&gt;C3001H&lt;/device_name&gt;
1092 &lt;html_spec_type&gt;XHTML_MOBILE_1_0&lt;/html_spec_type&gt;
1093 &lt;width&gt;120&lt;/width&gt;
1094 &lt;heigh&gt;130&lt;/heigh&gt;
1095 &lt;gif&gt;true&lt;/gif&gt;
1096 &lt;jpeg&gt;true&lt;/jpeg&gt;
1097 &lt;png&gt;true&lt;/png&gt;
1098 &lt;bmp2&gt;false&lt;/bmp2&gt;
1099 &lt;bmp4&gt;false&lt;/bmp4&gt;
1100 &lt;color&gt;4096&lt;/color&gt;
1101 &lt;emoji_type&gt;C&lt;/emoji_type&gt;
1102 &lt;wp_width&gt;120&lt;/wp_width&gt;
1103 &lt;wp_heigh&gt;116&lt;/wp_heigh&gt;
1104 &lt;cache&gt;9740&lt;/cache&gt;
1105 &lt;dpi_width&gt;72&lt;/dpi_width&gt;
1106 &lt;dpi_heigh&gt;72&lt;/dpi_heigh&gt;
1107 &lt;charset&gt;SJIS&lt;/charset&gt;
1108 &lt;/device&gt;
1109
1110
1111
1112 &lt;/user_agent&gt;
1113 &lt;user_agent&gt;
1114
1115
1116
1117 &lt;/user_agent&gt;
1118
1119
1120
1121 &lt;/devices&gt;
1122 </program>
1123 デバイス定義は&lt;devices&gt;タグに囲まれた中に記述します。
1124 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は該当端末用の変換処理を行います。
1125
1126 <br />
1127 以下に各タグについての説明を記します。
1128 <ol>
1129 <li><b>devicesタグ</b><br />
1130 全ての要素は一組のdevicesタグに囲まれます。この中に存在する要素がデバイス定義になります。
1131 <br />
1132 <br />
1133 </li>
1134 <li><b>user_agentタグ</b><br />
1135 User-Agentのパターンとそのパターンにマッチするdeviceを子ノードに持ちます。<br />
1136 pattern属性にはUser-AgentとマッチさせるPerl互換の正規表現を指定します<br />
1137 仮に"KDDI-CA31 UP.Browser/・・・"というUser-Agentを保持する端末からのアクセスがあった場合は、
1138 &lt;user_agent pattern="^KDDI-([^ ]+) UP.Browser/[^ ]+ .+"&gt;にマッチしますが、&lt;user_agent pattern="^UP.Browser/[^\-]+-([^ ]+) .+" &gt;
1139 にはマッチしません。
1140 よってmod_chxjは&lt;user_agent pattern="^KDDI-([^ ]+) UP.Browser/[^ ]+ .+"&gt;の子ノードを処理対象と判断します。<br />
1141 pattern属性の要素である正規表現には必ず$1で後方参照できるようグルーピングが必要です。$1で後方参照する値は以下に記すdevice_idタグの値と比較されます。
1142 device_idとの比較の結果、等しい値であればそのdevice_idを保持するdeviceタグが該当端末として選択されます。<br />
1143 user_agentタグレベルではマッチしているもののdevice_idが期待する値を持っていない場合は、user_agentタグ中の最後のdeviceが選択されます。
1144 <br />
1145 <br />
1146 </li>
1147 <li><b>deviceタグ</b><br />
1148 一台の端末を表現します。<br />
1149 子ノードとして以下を保持します。<br />
1150 <ol>
1151 <li>device_id</li>
1152 <li>device_name</li>
1153 <li>html_spec_type</li>
1154 <li>width</li>
1155 <li>height</li>
1156 <li>gif</li>
1157 <li>jpeg</li>
1158 <li>png</li>
1159 <li>bmp2</li>
1160 <li>bmp4</li>
1161 <li>color</li>
1162 <li>emoji_type</li>
1163 <li>wp_width</li>
1164 <li>wp_height</li>
1165 <li>cache</li>
1166 <li>dpi_width</li>
1167 <li>dpi_height</li>
1168 <li>charset</li>
1169 </ol>
1170 <br /><br />
1171 </li>
1172 <li><b>device_idタグ</b><br />
1173 user_agentタグのpattern属性により生成された$1により後方参照される値と比較される値を保持します。通常DoCoMoであればUser-Agentの「機種名」部、
1174 auであればUser-Agentの「デバイスID」部、 SoftBankであれば、User-Agentの「機種名」部を記述します。
1175 <program title="例">
1176 &lt;!-- DoCoMo F905iの場合 --&gt;
1177 &lt;device_id&gt;F905i&lt;/device_id&gt;
1178
1179 &lt;!-- au W54Tの場合 --&gt;
1180 &lt;device_id&gt;TS3E&lt;/device_id&gt;
1181
1182 &lt;!-- SoftBank 822SHの場合 --&gt;
1183 &lt;device_id&gt;822SH&lt;/device_id&gt;
1184 </program>
1185 </li>
1186 <li><b>device_nameタグ</b><br />
1187 mod_chxjでは本値をデバッグログ出力時にのみ使用します、人が見てわかりやすい名前を入力しておきます。
1188 device_idと混同しないように注意します。
1189 <program title="au W21CAの例">
1190 &lt;device_name&gt;W21CA&lt;/device_name&gt;
1191 </program>
1192 </li>
1193 <li><b>html_spec_typeタグ</b><br />
1194 端末のサポートするHTMLタイプを指定します。本タグの値によりHTML変換結果が変わります。
1195 指定できる値は以下のとおりです。大文字、小文字は区別しません。
1196 <table title="対応HTMLタイプ一覧">
1197 <thead>
1198 <tr>
1199 <td></td>
1200 <td>意味</td>
1201 </tr>
1202 </thead>
1203 <tbody>
1204 <tr>
1205 <td>CHTML_1_0</td>
1206 <td>CHTML1.0対応機種の場合記述します。HTML変換結果はCHTML1.0になります。</td>
1207 </tr>
1208 <tr>
1209 <td>CHTML_2_0</td>
1210 <td>CHTML2.0対応機種の場合記述します。HTML変換結果はCHTML2.0になります。</td>
1211 </tr>
1212 <tr>
1213 <td>CHTML_3_0</td>
1214 <td>CHTML3.0対応機種の場合記述します。HTML変換結果はCHTML3.0になります。</td>
1215 </tr>
1216 <tr>
1217 <td>CHTML_4_0</td>
1218 <td>CHTML4.0対応機種の場合記述します。HTML変換結果はCHTML4.0になります。(0.9.0時点ではCHTML3.0と同じ)</td>
1219 </tr>
1220 <tr>
1221 <td>CHTML_5_0</td>
1222 <td>CHTML5.0対応機種の場合記述します。HTML変換結果はCHTML5.0になります。(0.9.0時点ではCHTML3.0と同じ)</td>
1223 </tr>
1224 <tr>
1225 <td>CHTML_6_0</td>
1226 <td>CHTML6.0対応機種の場合記述します。HTML変換結果はCHTML6.0になります。(0.9.0時点ではCHTML3.0と同じ)</td>
1227 </tr>
1228 <tr>
1229 <td>CHTML_7_0</td>
1230 <td>CHTML7.0対応機種の場合記述します。HTML変換結果はCHTML7.0になります。(0.9.0時点ではCHTML3.0と同じ)</td>
1231 </tr>
1232 <tr>
1233 <td>XHTML_MOBILE_1_0</td>
1234 <td>auのXHTML対応機種の場合に記述します。HTML変換結果はXHTMLになります。</td>
1235 </tr>
1236 <tr>
1237 <td>HDML</td>
1238 <td>auのHDML対応機種の場合に記述します。HTML変換結果はHDMLになります。</td>
1239 </tr>
1240 <tr>
1241 <td>JHTML</td>
1242 <td>SoftBankの端末の場合に記述します。HTML変換結果はSoftBank用HTMLになります。</td>
1243 </tr>
1244 </tbody>
1245 </table>
1246 </li>
1247 <li><b>widthタグ</b><br />
1248 端末の横幅を指定します。
1249 </li>
1250 <li><b>heightタグ</b><br />
1251 端末の縦幅を指定します。
1252 </li>
1253 <li><b>gifタグ</b><br />
1254 端末がgif画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない)場合はfalseを指定します。<note>大文字、小文字の区別なし</note>
1255 </li>
1256 <li><b>jpegタグ</b><br />
1257 端末がjpeg画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない)場合はfalseを指定します。<note>大文字、小文字の区別なし</note>
1258 </li>
1259 <li><b>pngタグ</b><br />
1260 端末がpng画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない)場合はfalseを指定します。<note>大文字、小文字の区別なし</note>
1261 </li>
1262 <li><b>bmp2タグ</b><br />
1263 端末がbmp2画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない)場合はfalseを指定します。<note>大文字、小文字の区別なし</note>
1264 通常はfalse。
1265 </li>
1266 <li><b>bmp4タグ</b><br />
1267 端末がbmp4画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない)場合はfalseを指定します。<note>大文字、小文字の区別なし</note>
1268 通常はfalse。
1269 </li>
1270 <li><b>colorタグ</b><br />
1271 端末の表示可能色数。
1272 </li>
1273 <li><b>emoji_typeタグ</b><br />
1274 auの場合に指定します。au以外の場合は指定しても意味はありません。<br />
1275 設定できる値は以下のとおり。
1276 <table title="emoji_typeに設定できる値">
1277 <thead>
1278 <tr>
1279 <td></td>
1280 <td>意味</td>
1281 </tr>
1282 </thead>
1283 <tbody>
1284 <tr>
1285 <td>A</td>
1286 <td>図柄タイプAをサポートしている場合に指定します。</td>
1287 </tr>
1288 <tr>
1289 <td>B</td>
1290 <td>図柄タイプBをサポートしている場合に指定します。</td>
1291 </tr>
1292 <tr>
1293 <td>C</td>
1294 <td>図柄タイプCをサポートしている場合に指定します。</td>
1295 </tr>
1296 <tr>
1297 <td>D</td>
1298 <td>図柄タイプDをサポートしている場合に指定します。</td>
1299 </tr>
1300 </tbody>
1301 </table>
1302 <note>大文字、小文字の区別なし</note>
1303 </li>
1304 <li><b>wp_widthタグ</b><br />
1305 壁紙の横幅を指定します。Mode=WPで画像生成する場合、この値が使用されます。
1306 </li>
1307 <li><b>wp_heightタグ</b><br />
1308 壁紙の縦幅を指定します。Mode=WPで画像生成する場合、この値が使用されます。
1309 </li>
1310 <li><b>cacheタグ</b><br />
1311 ブラウザのキャッシュサイズを指定します。
1312 </li>
1313 <li><b>dpi_widthタグ</b><br />
1314 端末の解像度。
1315 </li>
1316 <li><b>dpi_heightタグ</b><br />
1317 端末の解像度。
1318 </li>
1319 <li><b>charsetタグ(0.9.0にて追加)</b><br />
1320 端末に送信する文字コードを指定します。指定できる値はSJISかUTF-8のみ。
1321 </li>
1322 </ol>
1323 <br />
1324 </subsection>
1325 <br />
1326 </section>
1327
1328
1329 <section title="イメージ画像変換機能">
1330 mod_chxjには、JPEG、GIF、PNG、BMPファイルを置いておくだけで、デバイス定義に従って、それぞれのキャリア対応のフォーマットに変換する機能があります。
1331 画像のサイズ(縦X横)も、端末の画面サイズに合わせて変換します。
1332 画像のサイズ(バイト数)については、デバイス定義中のキャッシュサイズを見て、その値よりも小さくなるように<b>努力</b>しますが、元の画像が
1333 大きすぎる場合や、複雑な画像の場合には、キャッシュサイズよりも小さくできずに表示できない場合があります。
1334 <br />
1335 それぞれのタグで指定する場合には、ファイル名の拡張子(.jpgや.gif等)をはずした形で指定します。<br />
1336 本機能には3つのモードが存在します。そのモードを以下に記します。
1337
1338 <subsection title="サムネイルモード">
1339 端末側画面サイズの約3分の1程度のサイズ(縦X横)に画像を縮小表示します。
1340 <program title="サムネイルモード 使用例">
1341 &lt;IMG SRC="/img/logo?Mode=Thumbnail"&gt;
1342 </program>
1343 </subsection>
1344 <subsection title="壁紙モード">
1345 端末側画面のサイズにマッチするサイズに拡大・縮小します。横長の画像の場合には、縦幅を合わせた後に左右をトリミングします。
1346 <program title="壁紙モード 使用例">
1347 &lt;IMG SRC="/img/logo?Mode=WP"&gt;
1348 </program>
1349 </subsection>
1350 <subsection title="EzGetモード">
1351 壁紙ダウンロードを行いたい場合に使用します。EzGETモードは、壁紙モードで出力される画像サイズと同一サイズの画像が使用されます。
1352 <program title="EzGetモード 使用例">
1353 &lt;A HREF="/img/logo?Mode=EzGet"&gt;
1354 </program>
1355 </subsection>
1356 <subsection title="その他の機能">
1357 モードの他に、画像サイズ(縦X横)を直接指定することも可能です。
1358 <b>w</b>パラメータ、<b>h</b>パラメータを使用して指定します。
1359 <ol>
1360 <li>wパラメータ<br />
1361 横幅を指定します。
1362 </li>
1363 <li>hパラメータ<br />
1364 縦幅を指定します。
1365 </li>
1366 <program title="w/hパラメータ 使用例">
1367 &lt;IMG SRC="/img/logo?w=100&amp;h=200"&gt;
1368 </program>
1369 <li>User-Agentパラメータ(uaパラメータ)<br />
1370 User-Agentを指定します。指定した場合は、リクエストヘッダ中のUser-Agentを本パラメータの値で上書きします。
1371 このパラメータに"IGN"を指定した場合は、User-Agentを無視します。Thumbnailモード、壁紙モードと併用時は、
1372 640x480を元に画像サイズを算出します。
1373 </li>
1374 </ol>
1375 </subsection>
1376 上記全てのモード、パラメータはGETリクエストとしてのみ使用できます。
1377 </section>
1378
1379 <section title="QRコード出力機能">
1380 <subsection title="QRコード出力ハンドラの登録">
1381 QRコード出力機能を使用するには、QRコードハンドラを登録します。
1382 httpd.confに以下の記述を追加します。
1383 <program title="httpd.conf">
1384 AddHandler chxj-qrcode .qrc
1385 </program>
1386 なお、ハンドラを登録しないでも、出力フィルターを経由させることで、QRコードを出力させることも可能です。(※QRコードの動的出力を参照)
1387 </subsection>
1388 <subsection title="QRコードソースファイルの設置">
1389 ハンドラを登録したら、その登録した拡張子を持つファイルを用意します。
1390 <program title="例:a.qrc">
1391 &lt;?xml version=1.0 ?&gt;
1392
1393 &lt;qrcode&gt;
1394 &lt;version&gt;13&lt;/version&gt;
1395 &lt;level&gt;H&lt;/level&gt;
1396 &lt;mode&gt;8bit&lt;/mode&gt;
1397 &lt;size&gt;1&lt;/size&gt;
1398 &lt;data&gt;テストデータです&lt;/data&gt;
1399 &lt;/qrcode&gt;
1400 </program>
1401 .qrcファイルは、qrcode要素、version要素、level要素、mode要素、size要素、data要素から成り立ちます。
1402 <ol>
1403 <li>versionタグ
1404 versionタグは出力するQRコードの生成に利用するバージョンを指定します。
1405 使用できるバージョンは、1〜40までの40種類です。
1406 </li>
1407 <li>levelタグ
1408 levelタグは出力するQRコードの生成に利用する誤り検出レベルを指定します。
1409  使用できるレベルは、L、Q、M、Hの4つです。
1410 </li>
1411 <li>modeタグ
1412 modeタグは出力するQRコードの生成に利用するモードを指定します。
1413 使用できるモードは、NUM(数字モード)ALPHA(英数字モード)8BIT(8ビットバイトモード)KANJI(漢字モード)です。
1414 </li>
1415 <li>sizeタグ
1416 sizeタグは1モジュールを何ピクセルであらわすかを指定します。
1417 0を指定した場合は、4を指定した場合と同じ動作をします。
1418  使用できるサイズは、0〜20までです。
1419 </li>
1420 <li>dataタグ
1421 dataタグは、QRコードに出力するデータを指定します。改行した場合は、改行文字もQRコード内に符号化されます。
1422 </li>
1423 </ol>
1424 </subsection>
1425 <subsection title="QRコードの動的出力機能">
1426 プログラム等を使用し、動的にQRコードを出力したい場合は、上記の.qrcファイルの内容をそのままOutputFilterに通してあげればOKです。つまり、ChxjConvertRuleディレクティブで"EngineOn"と指定したURIが指すディレクトリに設置すれば良いということです。mod_chxj内部で、Content-Typeがtext/xmlの場合、QRCode用のファイルであるかどうかを一度読み込んで判断するので、Content-Typeには、text/xmlを設定してください。
1427
1428 <program title="phpでQRコードを動的に出力する例">
1429 &lt;php
1430 $version = $_POST["version"];
1431 $level = $_POST["level"];
1432 $mode = $_POST["mode"];
1433 $size = $_POST["size"];
1434 $data = $_POST["data"];
1435
1436 header("Content-Type: text/xml; charset=Shift_JIS");
1437
1438 echo "&lt;qrcode&gt;\n";
1439 echo "&lt;version&gt;".$version."&lt;/version&gt;\n";
1440 echo "&lt;level&gt;".$level."&lt;/level&gt;\n";
1441 echo "&lt;mode&gt;".$mode."&lt;/mode&gt;\n";
1442 echo "&lt;size&gt;".$size."&lt;/size&gt;\n";
1443 echo "&lt;data&gt;".$data."&lt;/data&gt;\n";
1444 echo "&lt;/qrcode&gt;\n";
1445 &gt;
1446 </program>
1447 そして、上記のコードを、mod_chxj変換エンジンが処理するはずであるところに設置すれば完了です。
1448
1449 </subsection>
1450 </section>
1451 <section title="Cookieシミュレート機能(EXPERIMENTAL)">
1452 <subsection title="Cookieシミュレート機能(EXPERIMENTAL)">
1453 Cookieを受け付けない(無視する)端末のためにCookieをシミュレートします。本機能を有効にするためにはChxjConvertRuleディレクティブを使用する必要があります。ChxjConvertRuleディレクティブの第2パラメータにCookieOnを指定します。
1454
1455 <program title="Cookieシミュレート機能を有効にする例">
1456 ChxjConvertRule "^/chxj.+$" "EngineOn,CookieOn" "NONE"
1457 </program>
1458
1459 </subsection>
1460 <subsection title="One-Time ID">
1461 Cookieシミュレートでは、aタグ、imgタグ、formタグのURL部にOne-Time IDを埋め込むことで実現します。
1462 そのため、ユーザがブラウザの戻るボタン等で戻った場合はCookieを取得できなくなります。
1463 </subsection>
1464 <subsection title="Cookieの保存場所">
1465 Cookieの内容は、サーバ側に保存されます。保存ディレクトリはChxjCookieDirディレクティブを使用することで指定することができます。指定しなかった場合は、/tmpに保存されます。
1466 <program title="ChxjCookieDirの例">
1467 ChxjCookieDir /var/abc
1468 </program>
1469 </subsection>
1470 <subsection title="Cookieの保持期間">
1471 ChxjCookieTimeoutディレクティブで保持期間を指定することができます。指定しなかった場合は1800秒でサーバに保存されているCookieは削除されます。
1472 <program title="ChxjCookieTimeoutの例">
1473 &lt;Location /&gt;
1474 ChxjCookieTimeout 10
1475 &lt;/Location&gt;
1476 </program>
1477 上記の例は、10秒でタイムアウト(サーバから削除)するように指定しています。
1478 </subsection>
1479 </section>
1480
1481
1482
1483 <section title="Refererシミュレート機能(EXPERIMENTAL)">
1484 <subsection title="Refererシミュレート機能(EXPERIMENTAL)">
1485 DoCoMo端末などのRefererに対応していない機種のためにRefererシミュレート機能を提供します。
1486 本機能は、Cookieシミュレート機能を有効にすると、自動で有効になります(将来的には変更予定)。
1487 </subsection>
1488 </section>
1489
1490
1491
1492 </body>
1493 </doc>

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26