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.31 - (show annotations) (download)
Wed Feb 13 09:37:28 2008 UTC (16 years, 2 months ago) by konn
Branch: MAIN
Changes since 1.30: +498 -32 lines
  * Updated document.
    - for 0.9.0

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や--with-apuも必要です。</note>
50 <note>0.8.xの場合には--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;CHXJ:IF&gt;</td>
715 <td align="center">lang</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">lang="chtml" lang="xhtml" lang="hdml" lang="jhtml"が指定できます</td>
721 </tr>
722 </tbody>
723
724 上記以外のタグは全て無視されます。
725
726 </table>
727
728 </section>
729 <section title="独自拡張タグ">
730 <ol>
731 <li>&lt;CHXJ:IF&gt;<br />
732
733 &lt;CHXJ:IF&gt;タグと&lt;/CHXJ:IF&gt;タグではさまれたタグやテキストは、
734 変換せずに<b>そのまま</b><note>変換しませんので注意が必要です</note>出力します。必須の属性としてlangがあります。lang属性を指定することによって、
735 例えば、<b>「HDML機の場合のみ出力させる」</b>といったことを可能にします。<br />
736 <br />
737 ex)
738 <program title="HTML文書中にHDML機の場合のみ有効にしたいタグ、または文書がある場合">
739 &lt;CHXJ:IF lang="HDML" &gt;
740 &lt;NODISPLAY&gt;
741 &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;
742 &lt;/NODISPLAY&gt;
743 &lt;/CHXJ:IF&gt;
744 </program><br />
745
746 ex)
747 <program title="i-Modeのみ出力したい文書がある場合">
748 &lt;CHXJ:IF lang="chtml" &gt;
749 シークレットコードがどーのこーの。
750 &lt;/CHXJ:IF&gt;
751 </program><br />
752
753 また、lang属性は、複数指定することも可能です。<br />
754
755 <program title="HDML機,J-PHONE機は以下を出力します">
756 &lt;CHXJ:IF lang="chtml" lang="jhtml"&gt;
757 あなたの携帯は、HDML機かJ-HTML機です。
758 &lt;/CHXJ:IF&gt;
759 </program><br />
760
761 </li>
762 </ol>
763 </section>
764
765
766
767
768 <section title="文字コードについて">
769 サーバサイドコンテンツについてはShift_JIS(CP932)、EUCJP-WIN(Win外字対応のEUCJP)、UTF-8のどれかで記述することが可能です。
770 Shift_JISで記述した場合は絵文字についてもShift_JISで、EUCJP-WINで記述した場合は絵文字についてもEUCJP-WINで、UTF-8で記述した場合は絵文字についてもUTF-8で
771 記述します。<note>詳細は「絵文字について」の項を参照のこと</note>
772 クライアントサイド(端末側)に送信する文字コードはShift_JISまたはUTF-8を指定することが可能です。<note>指定方法については「デバイス定義」の項を参照のこと。</note>
773 mod_chxjによりサーバサイドコンテンツの文字コードから端末に送信する文字コードへと絵文字も含めて変換します。
774 POST/GET中のデータについても端末側文字コードからサーバサイドコンテンツの文字コードへと絵文字も含めて変換します。
775
776
777 <ol>
778 <li>注意: Shift_JISでサーバサイドコンテンツを記述した場合はPOST/GETデータもShift_JISでサーバサイドコンテンツに渡されます。</li>
779 <li>注意: EUCJP-WINでサーバサイドコンテンツを記述した場合はPOST/GETデータもEUCJP-WINでサーバサイドコンテンツに渡されます。</li>
780 <li>注意: UTF-8でサーバサイドコンテンツを記述した場合はPOST/GETデータもEUCJP-WINでサーバサイドコンテンツに渡されます。</li>
781 </ol>
782
783 サーバサイドコンテンツの文字コードはChxjConvRuleディレクティブで指定した文字コードになります。
784 ChxjConvRuleにて矛盾が生じない限り、文字コードの混在も可能です。
785
786 </section>
787
788
789
790
791 <!-- ================================================================================ -->
792 <!-- -->
793 <!-- 絵文字について -->
794 <!-- -->
795 <!-- ================================================================================ -->
796 <section title="絵文字について">
797 i-Mode用の絵文字を書いておけば、アクセスしたキャリアによって、mod_chxjが対応の絵文字に自動変換します。
798 ソースに2byteのバイナリコードを直接書いても、10進参照文字列(&amp;#XXX;の形)、16進参照文字列(&amp;#xXXX;の形)で書いても、変換対象になります。
799 10進参照文字列、16進参照文字列はmod_chxjにより自動で2バイトコードに変換されます。
800 <note>コンテンツをSJISで記述する場合には絵文字もSJISで、コンテンツをEUCJP-WINで記述する場合には絵文字もEUCJP-WINで、UTF-8で記述する場合には絵文字もUTF-8で記述する必要があります</note>
801
802 <subsection title="絵文字変換定義">
803 絵文字の変換に関する動作を変えたい場合(例えば「ハートがあったら、AUの場合はスペードに」とか、「変換定義がおかしい」といった場合)は、
804 emoji.xmlファイルを直接編集することによって定義を変更することが可能です。emoji.xmlはXMLファイルとなっていますので、人によってはvi等で簡単に定義を
805 変更することができるかもしれません。
806
807 emoji.xmlは3つのパートに分かれています。1つ目はDoCoMo→DoCoMo/au/SoftBankの変換定義部。
808 2つ目はau→DoCoMoの変換定義部。3つ目はSoftBank→DoCoMoの変換定義部。
809 1つ目はサーバサイドコンテンから各キャリアの絵文字に変換する際に使用されます。
810 2つ目と3つ目はPOST/GETデータの変換に使用されます。
811
812
813 <br />
814 <!-- ================================================================================ -->
815 <!-- DoCoMo->DoCoMo/au/SoftBank変換定義 -->
816 <!-- ================================================================================ -->
817 <subsection title="DoCoMo→DoCoMo/au/SoftBank変換定義">
818 以下に、emoji.xmlファイルの1つ目のパート、DoCoMo→DoCoMo/au/SoftBankの変換定義部を記します。
819 <program title="emoji.xml">
820 &lt;emoji&gt;
821 &lt;set&gt;
822 &lt;no&gt;1&lt;/no&gt;
823 &lt;imode&gt;
824 &lt;sjis-hex&gt;f89f&lt;/sjis-hex&gt;
825 &lt;sjis-dec&gt;63647&lt;/sjis-dec&gt;
826 &lt;eucjp-hex&gt;8ffca1&lt;/eucjp-hex&gt;
827 &lt;eucjp-dec&gt;9436321&lt;/eucjp-dec&gt;
828 &lt;unicode-hex&gt;e63e&lt;/unicode-hex&gt;
829 &lt;unicode-dec&gt;58942&lt;/unicode-dec&gt;
830 &lt;utf8-hex&gt;ee98be&lt;/utf8-hex&gt;
831 &lt;utf8-dec&gt;15636670&lt;/utf-dec&gt;
832 &lt;description&gt;晴れ&lt;/description&gt;
833 &lt;/imode&gt;
834 &lt;ezweb&gt;
835 &lt;A&gt;
836 &lt;no&gt;44&lt;/no&gt;
837 &lt;sjis-hex&gt;f660&lt;/sjis-hex&gt;
838 &lt;sjis-dec&gt;63072&lt;/sjis-dec&gt;
839 &lt;unicode-hex&gt;e488&lt;/unicode-hex&gt;
840 &lt;unicode-dec&gt;58504&lt;/unicode-dec&gt;
841 &lt;utf8-hex&gt;eebda0&lt;/utf8-hex&gt;
842 &lt;utf8-dec&gt;15646112&lt;/utf-dec&gt;
843 &lt;/A&gt;
844 &lt;B&gt;
845 &lt;no&gt;44&lt;/no&gt;
846 &lt;sjis-hex&gt;f660&lt;/sjis-hex&gt;
847 &lt;sjis-dec&gt;63072&lt;/sjis-dec&gt;
848 &lt;unicode-hex&gt;e488&lt;/unicode-hex&gt;
849 &lt;unicode-dec&gt;58504&lt;/unicode-dec&gt;
850 &lt;utf8-hex&gt;eebda0&lt;/utf8-hex&gt;
851 &lt;utf8-dec&gt;15646112&lt;/utf-dec&gt;
852 &lt;/B&gt;
853 &lt;C&gt;
854 &lt;no&gt;44&lt;/no&gt;
855 &lt;sjis-hex&gt;f660&lt;/sjis-hex&gt;
856 &lt;sjis-dec&gt;63072&lt;/sjis-dec&gt;
857 &lt;unicode-hex&gt;e488&lt;/unicode-hex&gt;
858 &lt;unicode-dec&gt;58504&lt;/unicode-dec&gt;
859 &lt;utf8-hex&gt;eebda0&lt;/utf8-hex&gt;
860 &lt;utf8-dec&gt;15646112&lt;/utf-dec&gt;
861 &lt;/C&gt;
862 &lt;D&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;/D&gt;
871 &lt;/ezweb&gt;
872 &lt;softbank&gt;
873 &lt;no&gt;74&lt;/no&gt;
874 &lt;sjis-hex&gt;476a&lt;/sjis-hex&gt;
875 &lt;sjis-dec&gt;116572776975&lt;/sjis-dec&gt;
876 &lt;unicode-hex&gt;e04a&lt;/unicode-hex&gt;
877 &lt;unicode-dec&gt;57418&lt;/unicode-dec&gt;
878 &lt;utf8-hex&gt;ee818a&lt;/utf8-hex&gt;
879 &lt;utf8-dec&gt;15630730&lt;/utf-dec&gt;
880 &lt;/softbank&gt;
881 &lt;/set&gt;
882
883
884
885
886 &lt;/emoji&gt;
887 </program>
888
889 絵文字の定義は、&lt;emoji&gt;タグから&lt;/emoji&gt;タグまでの間にあります。その中の要素を説明します。
890 1つの絵文字につき、1つのセット(&lt;set&gt;タグから&lt;/set&gt;タグまで)とし、キャリア毎の絵文字を定義しています。
891 合計176セットあります。
892
893 <ol>
894 <li>&lt;imode&gt;要素<br />
895 まず、元となるi-Mode用の絵文字は、&lt;imode&gt;タグにはさまれた間に定義されています。
896 &lt;imode&gt;要素は子にsjis、eucjp、utf8、unicodeのそれぞれ16進と10進表記データを保持します。
897 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進表記となります。
898 サーバサイドコンテンツがSJISで記述されている場合はimode要素のsjis-hex、sjis-decを参照します。
899 同様にがEUCJP-WINで記述されている場合はimode要素のeucjp-hex、eucjp-decを参照します。
900 UTF-8で記述されている場合はimode要素のutf8-hex、utf8-decを参照します。<br />
901 サーバサイドコンテンツのマッチするコードがimode要素の中に存在すれば、変換は同一set内のデータを使用して行われます。
902 </li>
903 <br />
904 <br />
905 <li>&lt;ezweb&gt;要素<br />
906 アクセスしてきた端末が、AU機であった場合、&lt;ezweb&gt;要素に定義されている値に変換します。
907 &lt;ezweb&gt;要素は、&lt;A&gt;&lt;D&gt;要素を持っていて、それぞれAUの絵文字タイプA〜Dに対応していますので、
908 もし、Dタイプの絵文字端末であったなら、&lt;D&gt;要素の&lt;no&gt;に定義されている値に変換します。ここで定義されている値は、
909 HDML機の場合は、<b>&lt;IMG ICON="XX"&gt;</b>の"XX"の部分に当てはめられて、置換されます。
910 XHTML機の場合は、<b>&lt;IMG LOCALSRC="XX"&gt;</b>の"XX"の部分に当てはめられて、置換されます。
911 同要素にはsjis-hex、sjis-dec、unicode-hex、unicode-dec、utf8-hex、utf8-decが有りますが、今のところ使用していません。
912 </li>
913 <br />
914 <br />
915 <li>&lt;softbank&gt;要素<br />
916 アクセスしてきた端末が、SoftBank/Vodafone/J-Phone端末であった場合、&lt;softbank&gt;要素に定義されている値に変換します。
917 &lt;softbank&gt;要素は、上記要素と同様にsjis-hex、sjis-dec、unicode-hex、unicode-dec、utf8-hex、utf8-decを保持しています。
918 アクセスしてきた端末にはsjisを返す場合はsjis-hex、sjis-decの値を使用します。utf8を返す場合にはutf8-hex、utf8-decでは無くunicode-hex、unicode-decを返します。
919 SoftBank端末の場合は3G端末は基本的にUTF8を返すようにデバイス定義にて定義されています。UTF8で定義された場合でSoftBankの場合はUNICODEの参照文字列を返すように
920 なっています。(問題回避のため)
921 </li>
922 </ol><br />
923 emoji.xmlに定義されていない絵文字で、変換したい絵文字がある場合には、このファイルに新たな定義を足せば、
924 変換するようになります。<note>同一コード領域に割り当てる必要があるかもしれません</note>
925 </subsection>
926
927
928 <!-- ================================================================================ -->
929 <!-- au->DoCoMo変換定義 -->
930 <!-- ================================================================================ -->
931 <subsection title="au→DoCoMo変換定義">
932 au->DoCoMo変換の定義は主にau端末からサーバサイドへのPOST/GETデータの変換に使用されます。
933 定義はemoji.xmlファイルの&lt;ezweb2imode&gt;タグではさまれたところに定義してあります。
934 &lt;set&gt;から&lt;/set&gt;までの間が1絵文字を表現する部分になります。
935 <br />
936 以下に、emoji.xmlファイルの2つ目のパート、au→DoCoMo変換定義を以下に記します。
937 <program title="emoji.xml">
938 &lt;ezweb2imode&gt;
939 &lt;set&gt;
940 &lt;no&gt;1&lt;/no&gt;
941 &lt;ezweb&gt;
942 &lt;sjis-hex&gt;F659&lt;/sjis-hex&gt;
943 &lt;utf8-hex&gt;eebd99&lt;/utf8-hex&gt;
944 &lt;/ezweb&gt;
945 &lt;imode&gt;
946 &lt;no&gt;220&lt;/no&gt;
947 &lt;/imode&gt;
948 &lt;/set&gt;
949
950
951
952 &lt;/ezweb2imode&gt;
953 </program>
954 <br />
955 <ol>
956 <li>&lt;no&gt;要素<br />
957 auで定義されている絵文字番号を保持します。
958 </li>
959 <br />
960 <br />
961 <li>&lt;ezweb&gt;要素<br />
962 &lt;no&gt;で定義された絵文字番号の実際にPOST/GETされてくる値を保持します。sjis-hexは端末がShift_JISの場合のPOST/GETデータ、utf8-hexは端末がUTF-8の場合のPOST/GETデータになっています。
963 POST/GETされたデータはこの要素に記述されたコードとマッチングされ、マッチした場合絵文字を特定します。
964 </li>
965 <br />
966 <br />
967 <li>&lt;imode&gt;要素<br />
968 &lt;ezweb&gt;要素でマッチした場合に参照されるEzWeb絵文字に対応するDoCoMo絵文字番号を保持します。mod_chxjによりDoCoMo絵文字に変換する場合に使用されます。
969 </li>
970 <br />
971 <br />
972 </ol>
973 </subsection>
974
975
976 <!-- ================================================================================ -->
977 <!-- SoftBank->DoCoMo変換定義 -->
978 <!-- ================================================================================ -->
979 <subsection title="SoftBank→DoCoMo変換定義">
980 SoftBank-&gt;DoCoMo変換の定義は主にSoftBank端末からサーバサイドへのPOST/GETデータの変換に使用されます。
981 定義はemoji.xmlファイルの&lt;softbank2imode&gt;タグではさまれたところに定義してあります。
982 &lt;set&gt;から&lt;/set&gt;までの間が1絵文字を表現する部分になります。
983 <br />
984 以下に、emoji.xmlファイルの3つ目のパート、SoftBank→DoCoMo変換定義を以下に記します。
985 <program title="emoji.xml">
986 &lt;softbank2imode&gt;
987 &lt;set&gt;
988 &lt;no&gt;
989 1
990 &lt;/no&gt;
991 &lt;softbank&gt;
992 &lt;webcode&gt;
993 4721
994 &lt;/webcode&gt;
995 &lt;sjis-hex&gt;
996 f941
997 &lt;/sjis-hex&gt;
998 &lt;utf8-hex&gt;
999 ee8081
1000 &lt;/utf8-hex&gt;
1001 &lt;/softbank&gt;
1002 &lt;imode&gt;
1003 &lt;no&gt;
1004 140
1005 &lt;/no&gt;
1006 &lt;/imode&gt;
1007 &lt;/set&gt;
1008
1009
1010
1011
1012 &lt;/softbank2imode&gt;
1013 </program>
1014 <br />
1015 <ol>
1016 <li>&lt;no&gt;要素<br />
1017 SoftBankで定義されている絵文字番号を保持します。
1018 </li>
1019 <br />
1020 <br />
1021 <li>&lt;softbank&gt;要素<br />
1022 &lt;no&gt;で定義された絵文字番号の実際にPOST/GETされてくる値を保持します。webcodeは端末がShift_JISの場合でウェブコードを送信してくる場合のPOST/GETデータ、sjis-hexは端末がShift_JISの場合のPOST/GETデータ、utf8-hexは端末がUTF-8の場合のPOST/GETデータになっています。
1023 POST/GETされたデータはこの要素に記述されたコードとマッチングされ、マッチした場合絵文字を特定します。
1024 </li>
1025 <br />
1026 <br />
1027 <li>&lt;imode&gt;要素<br />
1028 &lt;ezweb&gt;要素でマッチした場合に参照されるSoftBank絵文字に対応するDoCoMo絵文字番号を保持します。mod_chxjによりDoCoMo絵文字に変換する場合に使用されます。
1029 </li>
1030 <br />
1031 <br />
1032 </ol>
1033 </subsection>
1034
1035
1036 </subsection>
1037 </section>
1038
1039 <br />
1040 <br />
1041
1042
1043
1044
1045
1046
1047 <!-- ================================================================================ -->
1048 <!-- -->
1049 <!-- デバイス定義 -->
1050 <!-- -->
1051 <!-- ================================================================================ -->
1052 <section title="デバイス定義 device_data.xml">
1053 mod_chxjの動作を決定付ける重要な定義です。変換対象の端末は全て、device_data.xmlファイルに定義される必要があります。
1054 定義されていない端末は、mod_chxjとしては、認識することができません。認識できない場合には、変換せずにそのまま出力します。ただし、Perl互換の正規表現によって定義できるため、正規表現の書き方によっては全ての機種に対応させることも可能です。
1055
1056 <br />
1057 <subsection title="デバイス定義の要素">
1058 まず以下にデバイス定義を記します。
1059 <program title="device_data.xml">
1060 &lt;devices&gt;
1061 &lt;user_agent pattern="^KDDI-([^ ]+) UP.Browser/[^ ]+ .+"&gt;
1062 &lt;device&gt;
1063 &lt;device_id&gt;HI21&lt;/device_id&gt;
1064 &lt;device_name&gt;C3001H&lt;/device_name&gt;
1065 &lt;html_spec_type&gt;XHTML_MOBILE_1_0&lt;/html_spec_type&gt;
1066 &lt;width&gt;120&lt;/width&gt;
1067 &lt;heigh&gt;130&lt;/heigh&gt;
1068 &lt;gif&gt;true&lt;/gif&gt;
1069 &lt;jpeg&gt;true&lt;/jpeg&gt;
1070 &lt;png&gt;true&lt;/png&gt;
1071 &lt;bmp2&gt;false&lt;/bmp2&gt;
1072 &lt;bmp4&gt;false&lt;/bmp4&gt;
1073 &lt;color&gt;4096&lt;/color&gt;
1074 &lt;emoji_type&gt;C&lt;/emoji_type&gt;
1075 &lt;wp_width&gt;120&lt;/wp_width&gt;
1076 &lt;wp_heigh&gt;116&lt;/wp_heigh&gt;
1077 &lt;cache&gt;9740&lt;/cache&gt;
1078 &lt;dpi_width&gt;72&lt;/dpi_width&gt;
1079 &lt;dpi_heigh&gt;72&lt;/dpi_heigh&gt;
1080 &lt;charset&gt;SJIS&lt;/charset&gt;
1081 &lt;/device&gt;
1082
1083
1084
1085 &lt;/user_agent&gt;
1086 &lt;user_agent&gt;
1087
1088
1089
1090 &lt;/user_agent&gt;
1091
1092
1093
1094 &lt;/devices&gt;
1095 </program>
1096 デバイス定義は&lt;devices&gt;タグに囲まれた中に記述します。
1097 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は該当端末用の変換処理を行います。
1098
1099 <br />
1100 以下に各タグについての説明を記します。
1101 <ol>
1102 <li><b>devicesタグ</b><br />
1103 全ての要素は一組のdevicesタグに囲まれます。この中に存在する要素がデバイス定義になります。
1104 <br />
1105 <br />
1106 </li>
1107 <li><b>user_agentタグ</b><br />
1108 User-Agentのパターンとそのパターンにマッチするdeviceを子ノードに持ちます。<br />
1109 pattern属性にはUser-AgentとマッチさせるPerl互換の正規表現を指定します<br />
1110 仮に"KDDI-CA31 UP.Browser/・・・"というUser-Agentを保持する端末からのアクセスがあった場合は、
1111 &lt;user_agent pattern="^KDDI-([^ ]+) UP.Browser/[^ ]+ .+"&gt;にマッチしますが、&lt;user_agent pattern="^UP.Browser/[^\-]+-([^ ]+) .+" &gt;
1112 にはマッチしません。
1113 よってmod_chxjは&lt;user_agent pattern="^KDDI-([^ ]+) UP.Browser/[^ ]+ .+"&gt;の子ノードを処理対象と判断します。<br />
1114 pattern属性の要素である正規表現には必ず$1で後方参照できるようグルーピングが必要です。$1で後方参照する値は以下に記すdevice_idタグの値と比較されます。
1115 device_idとの比較の結果、等しい値であればそのdevice_idを保持するdeviceタグが該当端末として選択されます。<br />
1116 user_agentタグレベルではマッチしているもののdevice_idが期待する値を持っていない場合は、user_agentタグ中の最後のdeviceが選択されます。
1117 <br />
1118 <br />
1119 </li>
1120 <li><b>deviceタグ</b><br />
1121 一台の端末を表現します。<br />
1122 子ノードとして以下を保持します。<br />
1123 <ol>
1124 <li>device_id</li>
1125 <li>device_name</li>
1126 <li>html_spec_type</li>
1127 <li>width</li>
1128 <li>height</li>
1129 <li>gif</li>
1130 <li>jpeg</li>
1131 <li>png</li>
1132 <li>bmp2</li>
1133 <li>bmp4</li>
1134 <li>color</li>
1135 <li>emoji_type</li>
1136 <li>wp_width</li>
1137 <li>wp_height</li>
1138 <li>cache</li>
1139 <li>dpi_width</li>
1140 <li>dpi_height</li>
1141 <li>charset</li>
1142 </ol>
1143 <br /><br />
1144 </li>
1145 <li><b>device_idタグ</b><br />
1146 user_agentタグのpattern属性により生成された$1により後方参照される値と比較される値を保持します。通常DoCoMoであればUser-Agentの「機種名」部、
1147 auであればUser-Agentの「デバイスID」部、 SoftBankであれば、User-Agentの「機種名」部を記述します。
1148 <program title="例">
1149 &lt;!-- DoCoMo F905iの場合 --&gt;
1150 &lt;device_id&gt;F905i&lt;/device_id&gt;
1151
1152 &lt;!-- au W54Tの場合 --&gt;
1153 &lt;device_id&gt;TS3E&lt;/device_id&gt;
1154
1155 &lt;!-- SoftBank 822SHの場合 --&gt;
1156 &lt;device_id&gt;822SH&lt;/device_id&gt;
1157 </program>
1158 </li>
1159 <li><b>device_nameタグ</b><br />
1160 mod_chxjでは本値をデバッグログ出力時にのみ使用します、人が見てわかりやすい名前を入力しておきます。
1161 device_idと混同しないように注意します。
1162 <program title="au W21CAの例">
1163 &lt;device_name&gt;W21CA&lt;/device_name&gt;
1164 </program>
1165 </li>
1166 <li><b>html_spec_typeタグ</b><br />
1167 端末のサポートするHTMLタイプを指定します。本タグの値によりHTML変換結果が変わります。
1168 指定できる値は以下のとおりです。大文字、小文字は区別しません。
1169 <table title="対応HTMLタイプ一覧">
1170 <thead>
1171 <tr>
1172 <td></td>
1173 <td>意味</td>
1174 </tr>
1175 </thead>
1176 <tbody>
1177 <tr>
1178 <td>CHTML_1_0</td>
1179 <td>CHTML1.0対応機種の場合記述します。HTML変換結果はCHTML1.0になります。</td>
1180 </tr>
1181 <tr>
1182 <td>CHTML_2_0</td>
1183 <td>CHTML2.0対応機種の場合記述します。HTML変換結果はCHTML2.0になります。</td>
1184 </tr>
1185 <tr>
1186 <td>CHTML_3_0</td>
1187 <td>CHTML3.0対応機種の場合記述します。HTML変換結果はCHTML3.0になります。</td>
1188 </tr>
1189 <tr>
1190 <td>CHTML_4_0</td>
1191 <td>CHTML4.0対応機種の場合記述します。HTML変換結果はCHTML4.0になります。(0.9.0時点ではCHTML3.0と同じ)</td>
1192 </tr>
1193 <tr>
1194 <td>CHTML_5_0</td>
1195 <td>CHTML5.0対応機種の場合記述します。HTML変換結果はCHTML5.0になります。(0.9.0時点ではCHTML3.0と同じ)</td>
1196 </tr>
1197 <tr>
1198 <td>CHTML_6_0</td>
1199 <td>CHTML6.0対応機種の場合記述します。HTML変換結果はCHTML6.0になります。(0.9.0時点ではCHTML3.0と同じ)</td>
1200 </tr>
1201 <tr>
1202 <td>CHTML_7_0</td>
1203 <td>CHTML7.0対応機種の場合記述します。HTML変換結果はCHTML7.0になります。(0.9.0時点ではCHTML3.0と同じ)</td>
1204 </tr>
1205 <tr>
1206 <td>XHTML_MOBILE_1_0</td>
1207 <td>auのXHTML対応機種の場合に記述します。HTML変換結果はXHTMLになります。</td>
1208 </tr>
1209 <tr>
1210 <td>HDML</td>
1211 <td>auのHDML対応機種の場合に記述します。HTML変換結果はHDMLになります。</td>
1212 </tr>
1213 <tr>
1214 <td>JHTML</td>
1215 <td>SoftBankの端末の場合に記述します。HTML変換結果はSoftBank用HTMLになります。</td>
1216 </tr>
1217 </tbody>
1218 </table>
1219 </li>
1220 <li><b>widthタグ</b><br />
1221 端末の横幅を指定します。
1222 </li>
1223 <li><b>heightタグ</b><br />
1224 端末の縦幅を指定します。
1225 </li>
1226 <li><b>gifタグ</b><br />
1227 端末がgif画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない)場合はfalseを指定します。<note>大文字、小文字の区別なし</note>
1228 </li>
1229 <li><b>jpegタグ</b><br />
1230 端末がjpeg画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない)場合はfalseを指定します。<note>大文字、小文字の区別なし</note>
1231 </li>
1232 <li><b>pngタグ</b><br />
1233 端末がpng画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない)場合はfalseを指定します。<note>大文字、小文字の区別なし</note>
1234 </li>
1235 <li><b>bmp2タグ</b><br />
1236 端末がbmp2画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない)場合はfalseを指定します。<note>大文字、小文字の区別なし</note>
1237 通常はfalse。
1238 </li>
1239 <li><b>bmp4タグ</b><br />
1240 端末がbmp4画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない)場合はfalseを指定します。<note>大文字、小文字の区別なし</note>
1241 通常はfalse。
1242 </li>
1243 <li><b>colorタグ</b><br />
1244 端末の表示可能色数。
1245 </li>
1246 <li><b>emoji_typeタグ</b><br />
1247 auの場合に指定します。au以外の場合は指定しても意味はありません。<br />
1248 設定できる値は以下のとおり。
1249 <table title="emoji_typeに設定できる値">
1250 <thead>
1251 <tr>
1252 <td></td>
1253 <td>意味</td>
1254 </tr>
1255 </thead>
1256 <tbody>
1257 <tr>
1258 <td>A</td>
1259 <td>図柄タイプAをサポートしている場合に指定します。</td>
1260 </tr>
1261 <tr>
1262 <td>B</td>
1263 <td>図柄タイプBをサポートしている場合に指定します。</td>
1264 </tr>
1265 <tr>
1266 <td>C</td>
1267 <td>図柄タイプCをサポートしている場合に指定します。</td>
1268 </tr>
1269 <tr>
1270 <td>D</td>
1271 <td>図柄タイプDをサポートしている場合に指定します。</td>
1272 </tr>
1273 </tbody>
1274 </table>
1275 <note>大文字、小文字の区別なし</note>
1276 </li>
1277 <li><b>wp_widthタグ</b><br />
1278 壁紙の横幅を指定します。Mode=WPで画像生成する場合、この値が使用されます。
1279 </li>
1280 <li><b>wp_heightタグ</b><br />
1281 壁紙の縦幅を指定します。Mode=WPで画像生成する場合、この値が使用されます。
1282 </li>
1283 <li><b>cacheタグ</b><br />
1284 ブラウザのキャッシュサイズを指定します。
1285 </li>
1286 <li><b>dpi_widthタグ</b><br />
1287 端末の解像度。
1288 </li>
1289 <li><b>dpi_heightタグ</b><br />
1290 端末の解像度。
1291 </li>
1292 <li><b>charsetタグ(0.9.0にて追加)</b><br />
1293 端末に送信する文字コードを指定します。指定できる値はSJISかUTF-8のみ。
1294 </li>
1295 </ol>
1296 <br />
1297 </subsection>
1298 <br />
1299 </section>
1300
1301
1302 <section title="イメージ画像変換機能">
1303 mod_chxjには、JPEG、GIF、PNG、BMPファイルを置いておくだけで、デバイス定義に従って、それぞれのキャリア対応のフォーマットに変換する機能があります。
1304 画像のサイズ(縦X横)も、端末の画面サイズに合わせて変換します。
1305 画像のサイズ(バイト数)については、デバイス定義中のキャッシュサイズを見て、その値よりも小さくなるように<b>努力</b>しますが、元の画像が
1306 大きすぎる場合や、複雑な画像の場合には、キャッシュサイズよりも小さくできずに表示できない場合があります。
1307 <br />
1308 それぞれのタグで指定する場合には、ファイル名の拡張子(.jpgや.gif等)をはずした形で指定します。<br />
1309 本機能には3つのモードが存在します。そのモードを以下に記します。
1310
1311 <subsection title="サムネイルモード">
1312 端末側画面サイズの約3分の1程度のサイズ(縦X横)に画像を縮小表示します。
1313 <program title="サムネイルモード 使用例">
1314 &lt;IMG SRC="/img/logo?Mode=Thumbnail"&gt;
1315 </program>
1316 </subsection>
1317 <subsection title="壁紙モード">
1318 端末側画面のサイズにマッチするサイズに拡大・縮小します。横長の画像の場合には、縦幅を合わせた後に左右をトリミングします。
1319 <program title="壁紙モード 使用例">
1320 &lt;IMG SRC="/img/logo?Mode=WP"&gt;
1321 </program>
1322 </subsection>
1323 <subsection title="EzGetモード">
1324 壁紙ダウンロードを行いたい場合に使用します。EzGETモードは、壁紙モードで出力される画像サイズと同一サイズの画像が使用されます。
1325 <program title="EzGetモード 使用例">
1326 &lt;A HREF="/img/logo?Mode=EzGet"&gt;
1327 </program>
1328 </subsection>
1329 <subsection title="その他の機能">
1330 モードの他に、画像サイズ(縦X横)を直接指定することも可能です。
1331 <b>w</b>パラメータ、<b>h</b>パラメータを使用して指定します。
1332 <ol>
1333 <li>wパラメータ<br />
1334 横幅を指定します。
1335 </li>
1336 <li>hパラメータ<br />
1337 縦幅を指定します。
1338 </li>
1339 <program title="w/hパラメータ 使用例">
1340 &lt;IMG SRC="/img/logo?w=100&amp;h=200"&gt;
1341 </program>
1342 <li>User-Agentパラメータ(uaパラメータ)<br />
1343 User-Agentを指定します。指定した場合は、リクエストヘッダ中のUser-Agentを本パラメータの値で上書きします。
1344 このパラメータに"IGN"を指定した場合は、User-Agentを無視します。Thumbnailモード、壁紙モードと併用時は、
1345 640x480を元に画像サイズを算出します。
1346 </li>
1347 </ol>
1348 </subsection>
1349 上記全てのモード、パラメータはGETリクエストとしてのみ使用できます。
1350 </section>
1351
1352 <section title="QRコード出力機能">
1353 <subsection title="QRコード出力ハンドラの登録">
1354 QRコード出力機能を使用するには、QRコードハンドラを登録します。
1355 httpd.confに以下の記述を追加します。
1356 <program title="httpd.conf">
1357 AddHandler chxj-qrcode .qrc
1358 </program>
1359 なお、ハンドラを登録しないでも、出力フィルターを経由させることで、QRコードを出力させることも可能です。(※QRコードの動的出力を参照)
1360 </subsection>
1361 <subsection title="QRコードソースファイルの設置">
1362 ハンドラを登録したら、その登録した拡張子を持つファイルを用意します。
1363 <program title="例:a.qrc">
1364 &lt;?xml version=1.0 ?&gt;
1365
1366 &lt;qrcode&gt;
1367 &lt;version&gt;13&lt;/version&gt;
1368 &lt;level&gt;H&lt;/level&gt;
1369 &lt;mode&gt;8bit&lt;/mode&gt;
1370 &lt;size&gt;1&lt;/size&gt;
1371 &lt;data&gt;テストデータです&lt;/data&gt;
1372 &lt;/qrcode&gt;
1373 </program>
1374 .qrcファイルは、qrcode要素、version要素、level要素、mode要素、size要素、data要素から成り立ちます。
1375 <ol>
1376 <li>versionタグ
1377 versionタグは出力するQRコードの生成に利用するバージョンを指定します。
1378 使用できるバージョンは、1〜40までの40種類です。
1379 </li>
1380 <li>levelタグ
1381 levelタグは出力するQRコードの生成に利用する誤り検出レベルを指定します。
1382  使用できるレベルは、L、Q、M、Hの4つです。
1383 </li>
1384 <li>modeタグ
1385 modeタグは出力するQRコードの生成に利用するモードを指定します。
1386 使用できるモードは、NUM(数字モード)ALPHA(英数字モード)8BIT(8ビットバイトモード)KANJI(漢字モード)です。
1387 </li>
1388 <li>sizeタグ
1389 sizeタグは1モジュールを何ピクセルであらわすかを指定します。
1390 0を指定した場合は、4を指定した場合と同じ動作をします。
1391  使用できるサイズは、0〜20までです。
1392 </li>
1393 <li>dataタグ
1394 dataタグは、QRコードに出力するデータを指定します。改行した場合は、改行文字もQRコード内に符号化されます。
1395 </li>
1396 </ol>
1397 </subsection>
1398 <subsection title="QRコードの動的出力機能">
1399 プログラム等を使用し、動的にQRコードを出力したい場合は、上記の.qrcファイルの内容をそのままOutputFilterに通してあげればOKです。つまり、ChxjConvertRuleディレクティブで"EngineOn"と指定したURIが指すディレクトリに設置すれば良いということです。mod_chxj内部で、Content-Typeがtext/xmlの場合、QRCode用のファイルであるかどうかを一度読み込んで判断するので、Content-Typeには、text/xmlを設定してください。
1400
1401 <program title="phpでQRコードを動的に出力する例">
1402 &lt;php
1403 $version = $_POST["version"];
1404 $level = $_POST["level"];
1405 $mode = $_POST["mode"];
1406 $size = $_POST["size"];
1407 $data = $_POST["data"];
1408
1409 header("Content-Type: text/xml; charset=Shift_JIS");
1410
1411 echo "&lt;qrcode&gt;\n";
1412 echo "&lt;version&gt;".$version."&lt;/version&gt;\n";
1413 echo "&lt;level&gt;".$level."&lt;/level&gt;\n";
1414 echo "&lt;mode&gt;".$mode."&lt;/mode&gt;\n";
1415 echo "&lt;size&gt;".$size."&lt;/size&gt;\n";
1416 echo "&lt;data&gt;".$data."&lt;/data&gt;\n";
1417 echo "&lt;/qrcode&gt;\n";
1418 &gt;
1419 </program>
1420 そして、上記のコードを、mod_chxj変換エンジンが処理するはずであるところに設置すれば完了です。
1421
1422 </subsection>
1423 </section>
1424 <section title="Cookieシミュレート機能(EXPERIMENTAL)">
1425 <subsection title="Cookieシミュレート機能(EXPERIMENTAL)">
1426 Cookieを受け付けない(無視する)端末のためにCookieをシミュレートします。本機能を有効にするためにはChxjConvertRuleディレクティブを使用する必要があります。ChxjConvertRuleディレクティブの第2パラメータにCookieOnを指定します。
1427
1428 <program title="Cookieシミュレート機能を有効にする例">
1429 ChxjConvertRule "^/chxj.+$" "EngineOn,CookieOn" "NONE"
1430 </program>
1431
1432 </subsection>
1433 <subsection title="One-Time ID">
1434 Cookieシミュレートでは、aタグ、imgタグ、formタグのURL部にOne-Time IDを埋め込むことで実現します。
1435 そのため、ユーザがブラウザの戻るボタン等で戻った場合はCookieを取得できなくなります。
1436 </subsection>
1437 <subsection title="Cookieの保存場所">
1438 Cookieの内容は、サーバ側に保存されます。保存ディレクトリはChxjCookieDirディレクティブを使用することで指定することができます。指定しなかった場合は、/tmpに保存されます。
1439 <program title="ChxjCookieDirの例">
1440 ChxjCookieDir /var/abc
1441 </program>
1442 </subsection>
1443 <subsection title="Cookieの保持期間">
1444 ChxjCookieTimeoutディレクティブで保持期間を指定することができます。指定しなかった場合は1800秒でサーバに保存されているCookieは削除されます。
1445 <program title="ChxjCookieTimeoutの例">
1446 &lt;Location /&gt;
1447 ChxjCookieTimeout 10
1448 &lt;/Location&gt;
1449 </program>
1450 上記の例は、10秒でタイムアウト(サーバから削除)するように指定しています。
1451 </subsection>
1452 </section>
1453
1454
1455
1456 <section title="Refererシミュレート機能(EXPERIMENTAL)">
1457 <subsection title="Refererシミュレート機能(EXPERIMENTAL)">
1458 DoCoMo端末などのRefererに対応していない機種のためにRefererシミュレート機能を提供します。
1459 本機能は、Cookieシミュレート機能を有効にすると、自動で有効になります(将来的には変更予定)。
1460 </subsection>
1461 </section>
1462
1463
1464
1465 </body>
1466 </doc>

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