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.25.2.3 - (show annotations) (download)
Mon Mar 17 14:09:23 2008 UTC (16 years, 1 month ago) by konn
Branch: RELEASE_0_8_0
CVS Tags: RELEASE_0_8_7
Changes since 1.25.2.2: +3 -6 lines
  * Updated document.
  * Added changelog

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: Tue, 5 Feb 2008 13:20:28 +0900</date>
10 </head>
11 <body>
12 <section title="Overview">
13
14 mod_chxjはオープンソースの携帯向けコンテンツ変換Apache2.0用モジュールであり、
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.0のヘッダーファイル群</li>
26 <li>Apache2.0用の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 以下は、/usr/include/apache2.0に、Apache2.0のヘッダーファイルが存在する場合です。
47 <program title="Configure">
48 $ ./configure
49 </program>
50 <note>場合によっては--with-apr-configや--with-apu-config、--with-pcre-configも必要です。</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
66 以下、/etc/apache2/chxjディレクトリにchxj用設定ファイルを用意する場合
67
68 <program title="データの設置">
69 $ mkdir -p /etc/apache2/chxj
70 $ cp etc/device_data.xml /etc/apache2/chxj
71 $ cp etc/emoji.xml /etc/apache2/chxj
72 </program>
73 </li>
74 </ol>
75 </subsection>
76 </section>
77 <section title="Configuration">
78 以下はmod_chxjが/usr/lib/apache2/modulesディレクトリ配下に設置されたものとしています
79
80 <subsection title="htmlファイルが変換対象の場合">
81
82 例として、Locationが"/chxj"以下のものは全て変換する場合を説明します。
83
84 <ol>
85 <li>httpd.confに以下を追加します。
86
87 <program title="httpd.conf">
88 #====================================================================================
89 # モジュールをApache2.0にロード
90 #====================================================================================
91 LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so
92
93 #====================================================================================
94 # デバイスデータファイルの設定
95 #====================================================================================
96 ChxjLoadDeviceData /etc/apache2/chxj/device_data.xml
97
98 #====================================================================================
99 # 絵文字データファイルの設定
100 #====================================================================================
101 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
102
103 #====================================================================================
104 # 変換エンジン動作指示命令
105 # ChxjConvRule ==> ディレクティブ
106 # "^/chxj.+$" ==> Perl互換のURIパターン
107 # EngineOn ==> 変換エンジンを動作させる指示
108 # NONE ==> サーバ側の文字コード。(NONEを指定した場合は文字コード変換しない)
109 #====================================================================================
110 ChxjConvertRule "^/chxj.+$" "EngineOn" "NONE"
111
112 </program>
113 </li>
114 <li>apacheの再起動。</li>
115 </ol>
116 </subsection>
117 <subsection title="php等の出力結果が変換対象の場合">
118 <ol>
119 <li>httpd.confに以下を追加します
120
121 <program title="httpd.conf">
122 #====================================================================================
123 # モジュールをApache2.0にロード
124 #====================================================================================
125 LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so
126
127 #====================================================================================
128 # デバイスデータの設定
129 #====================================================================================
130 ChxjLoadDeviceData /etc/apache2/chxj/device_data.xml
131
132 #====================================================================================
133 # 絵文字データの設定
134 #====================================================================================
135 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
136
137 #====================================================================================
138 # 変換エンジン動作指示命令
139 # ChxjConvRule ==> ディレクティブ
140 # "^/chxj.+$" ==> Perl互換のURIパターン
141 # EngineOn ==> 変換エンジンを動作させる指示。動作させたく無い場合は"EngineOff"
142 # EUC-JP ==> サーバ側の文字コード。(NONEを指定した場合は文字コード変換しない)
143 # EUC-JPからCP932に文字コード変換します。
144 #====================================================================================
145 ChxjConvertRule "^/chxj.+$" "EngineOn" "EUC-JP"
146
147 </program>
148 </li>
149 <li>apacheの再起動。</li>
150 </ol>
151 </subsection>
152
153 <subsection title="xoopsを使用し、且つwordpress、bwikiを使用している場合">
154 <ol>
155 <li>httpd.confに以下を追加します
156
157 <program title="httpd.conf">
158 #====================================================================================
159 # モジュールをApache2.0にロード
160 #====================================================================================
161 LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so
162
163 #====================================================================================
164 # デバイスデータの設定
165 #====================================================================================
166 ChxjLoadDeviceData /etc/apache2/chxj/device_data.xml
167
168 #====================================================================================
169 # 絵文字データの設定
170 #====================================================================================
171 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
172
173 #====================================================================================
174 # 変換エンジン動作指示命令
175 #====================================================================================
176 #====================================================================================
177 # bwikiの設定をします。bwikiではどうもxoopsヘッダの文字コードとbwiki内での携帯スキン
178 # の文字コードが一致していないようなので、bwiki内で文字コードを変換させないように
179 # 修正後、以下のルールを記述します。
180 #
181 # ChxjConvRule ディレクティブ
182 # "^/modules/bwiki.+$" このルールを適用したいURIパターン
183 # "EngineOn" 変換エンジンを有効にします。
184 # "EUC-JP" 出力時にEUC-JPからCP932に変換させます。
185 # "PC" 変換元HTMLはPCサイト用HTMLです。
186 # "DoCoMo/1.0/D501i" DoCoMo端末としてbwikiにアクセスさせます。
187 #
188 #====================================================================================
189 ChxjConvertRule "^/modules/bwiki.+$" "EngineOn" "EUC-JP" "PC" "DoCoMo/1.0/D501i"
190
191 #====================================================================================
192 # wordpressの設定をします。
193 #
194 # ChxjConvRule ディレクティブ
195 # "^/modules/wordpress.+$" このルールを適用したいURIパターン
196 # "EngineOn" 変換エンジンを有効にします。
197 # "NONE" 出力時に文字コード変換をさせません。
198 # "NONE" 変換元HTMLはPCサイト用HTMLではありません。
199 # "DoCoMo/1.0/D501i" DoCoMo端末としてwordpressにアクセスさせます。
200 #
201 #====================================================================================
202 ChxjConvertRule "^/modules/wordpress/.*$" "EngineOn" "NONE" "PC" "DoCoMo/1.0/D501i"
203
204 #====================================================================================
205 # その他の設定をします。
206 #
207 # ChxjConvRule ディレクティブ
208 # "^/.+$" このルールを適用したいURIパターン
209 # "EngineOn" 変換エンジンを有効にします。
210 # "EUC-JP" 出力時にEUC-JPからCP932に文字コード変換をさせます。
211 #
212 #====================================================================================
213 ChxjConvertRule "^/.+$" "EngineOn" "EUC-JP"
214
215
216 &lt;Location /&gt;
217 ChxjImageEngine On
218 AllowOverride All
219 &lt;/Location&gt;
220 </program>
221 </li>
222 <li>apacheの再起動。</li>
223 </ol>
224 </subsection>
225
226
227
228
229 <subsection title="画像自動変換機能を使用する場合">
230 <ol>
231 <li>httpd.confに以下を追加します。
232 下記は、URIが/imgで始まる全ての画像に対して動作するようmod_chxjに指示しています。
233
234 <program title="httpd.conf">
235 &lt;Location /img&gt;
236 ChxjImageEngine On
237 ChxjImageCacheDir /tmp
238 ChxjImageCopyright "A.Konno"
239 &lt;/Location&gt;
240 </program>
241
242 上記の説明を以下に示します。
243
244 <ol>
245 <li>ChxjImageEngine<br />
246 mod_chxjの画像変換ハンドラを起動するよう指示しています。
247 DefaultはOff
248
249 <br />
250 <br />
251 </li>
252
253
254 <li>ChxjImageCacheDir<br />
255 mod_chxj画像変換ハンドラが使用する変換後の画像をおいておくディレクトリを指定します。
256 デフォルトは/tmp。
257
258 <program title="ChxjImageCacheDir">
259 ChxjImageCacheDir /tmp
260 </program>
261
262 mod_chxjに画像変換キャッシュとして/tmpを使用するよう指示します。
263 <br />
264 <br />
265 </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 />
284 mod_chxjの画像変換ハンドラに、転送禁止設定を行うよう指示します。
285 パラメータとして任意の文字列をとります。
286 ChxjImageCopyrightディレクティブで指定された文字列は、それぞれのイメージの
287 コメント部に埋め込まれます。
288
289 <program title="ChxjImageCopyright">
290 ChxjImageCopyright "A.Konno"
291 </program>
292
293 mod_chxjに転送禁止設定を行うよう指示しています。
294 変換後イメージのコメント部分には、キャリア毎に以下の文字列を埋め込みます。
295
296 <b>AU の場合</b>
297 <program title="AU">
298 kddi_copyright=on,A.Konno
299 </program>
300
301 <b>DoCoMoの場合</b>
302 <program title="DoCoMo">copy="NO",A.Konno</program>
303
304 <b>SoftBank/Vodafone</b>の場合は、レスポンスヘッダに
305
306 <program title="SoftBank/Vodafone/J-PHONE">
307 x-jphone-copyright:no-transfer
308 </program>
309
310 を埋め込みます。
311 <note>SoftBank/Vodafoneの場合は、リクエストURLの最後が.pnzか、.jpzで終わるようにダミーを付けなければなりません。</note>
312 </li>
313 </ol>
314 </li>
315 </ol>
316 </subsection>
317
318 <subsection title="文字コードを変換したい場合(EXPERIMENTAL)">
319 <ol>
320 <li>httpd.confに以下を追加します。
321 下記は、URIが/chxjで始まる全てのコンテンツに対して動作するようmod_chxjに指示しています。
322 サーバ側はEUC-JPであった場合の例です。mod_chxjによってSJISに変換するように指示しています。
323 サーバ側がShift_JISで無い場合は、Shift_JISコードの10進参照文字列表記を記述することによって
324 Shift_JISコードの絵文字2バイトコードに変換しクライアントへ返します。
325
326 <program title="httpd.conf">
327 ChxjConvRule "^/chxj.+$" "EngineOn" "EUC-JP"
328 </program>
329
330 上記の説明を以下に示します。
331
332 <ol>
333 <li>ChxjConvertRule<br />
334 サーバサイドの文字コードを指定します。ここに、EUC-JPと指定してあった場合は、
335 EUC-JPからCP932に変換後、クライアントに出力されます。
336 省略した場合はNONE
337 <ol>
338 <li>変換エンジン動作指示命令<br />
339 ChxjConvertRule ==> ディレクティブ<br />
340 "^/chxj.+$" ==> Perl互換のURIパターン<br />
341 EngineOn ==> 変換エンジンを動作させる指示。動作させたく無い場合は"EngineOff"<br />
342 EUC-JP ==> サーバ側の文字コード。(NONEを指定した場合は文字コード変換しない)<br />
343 <br />
344 EUC-JPからCP932に文字コード変換します。(glibc/iconvに依存します)<br/>
345 </li>
346 </ol>
347
348 <br />
349 <br />
350 </li>
351 </ol>
352 </li>
353 </ol>
354 </subsection>
355 <subsection title="ディレクティブ">
356 <ol>
357 <li>ChxjLoadDeviceData<br />
358 デバイス定義ファイルを指定します。
359 <program title="ex)">
360 ChxjLoadDeviceData /etc/apache2/device.xml
361 </program>
362 </li>
363 <li>ChxjLoadEmojiData<br />
364 絵文字変換定義ファイルを指定します。
365 <program title="ex)">
366 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
367 </program>
368 </li>
369 <li>ChxjImageEngine<br />
370 画像変換エンジンを有効にします。
371 パラメータとしてOnとOffを指定できます。
372 DefaultはOffです。
373 <program title="ex)">
374 ChxjImageEngine On
375 </program>
376 </li>
377 <li>ChxjImageCacheDir<br />
378 イメージの一時ファイル保存場所を指定します。
379 <program title="ex)">
380 ChxjImageCacheDir /tmp
381 </program>
382 </li>
383 <li>ChxjImageCacheLimit<br />
384 イメージの一時ファイル保存許容量を指定します。
385 下記は1MByteの例。
386 <program title="ex)">
387 ChxjImageCacheLimit 1048576
388 </program>
389 </li>
390 <li>ChxjImageCopyright<br />
391 イメージに著作権情報を付与します。
392 <program title="ex)">
393 ChxjImageCopyright "chosakuken jyoho"
394 </program>
395 </li>
396 <li>ChxjConvertRule<br />
397 HTML変換エンジンの適用ルールを記述します。
398 本ディレクティブを使用し、変換エンジンのOn|Offを指定します。
399 DefaultはOFFです。
400 また、ルールは記述された順番に評価し、マッチするものがあれば、その時点で対象ルールを適用します。
401 パラメータは3つ必要です。下記にパラメータを記します。
402 <table title="パラメータ">
403 <tbody>
404 <tr>
405 <td>第1パラメータ</td><td>URIを評価するPerl互換の正規表現を指定します</td>
406 </tr>
407
408 <tr>
409 <td>第2パラメータ</td><td>HTML変換エンジンのOn|Offを指定します。Onの場合は"EngineOn"。Offの場合は"EngineOff"を指定します。"EngineOn|EngineOff"の他に"CookieOn|CookieOff"を指定することもできます。複数指定する場合は","で区切って指定します。</td>
410 </tr>
411 <tr>
412 <td>第3パラメータ</td><td>文字コードを指定します。ここで指定した文字コードから"CP932"に変換します。指定できる文字コードはiconv -lコマンドによって確認することができます。変換しなくて良い場合はNONEを指定してください。</td>
413 </tr>
414 <tr>
415 <td>第4パラメータ</td><td>省略した場合は、携帯ページからの変換を意味します。PC用ページからの変換を行う場合は"PC"を第四パラメータに指定します。</td>
416 </tr>
417 <tr>
418 <td>第5パラメータ</td><td>サーバサイドアプリケーションに渡すUser-Agentを指定します。
419 例えば、wordpress等のようにCHTMLを出力するアプリケーションがある場合は、"DoCoMo/1.0/N501i"等適当なUser-Agentを指定することによって、アプリケーションにCHTMLを出力するように指示することができます。
420 ここで指定したUser-AgentはHTML出力時には評価されません。</td>
421 </tr>
422 </tbody>
423 </table>
424 <program title="ex)">
425 ChxjConvertRule "^/chxj.+$/" EngineOn EUC-JP
426 </program>
427 </li>
428 <li>ChxjCookieDir<br />
429 クッキーを使用する場合に指定します。クッキーの内容を保存するディレクトリを指定します。
430 指定しない場合は/tmpに保存されます。
431 <program title="ex)">
432 &lt;Location /&gt;
433 ChxjCookieDir /tmp
434 &lt;/Location&gt;
435 </program>
436 詳細は「Cookieシミュレート機能」の項を参照ください。
437 </li>
438 <li>ChxjCookieTimeout<br />
439 クッキーを使用する場合に指定します。クッキーの保持期間を秒単位で指定します。
440 指定しない場合は、1800秒でクッキーデータを破棄します。
441 <program title="ex)">
442 &lt;Location /&gt;
443 ChxjCookieTimeout 10
444 &lt;/Location&gt;
445 </program>
446 詳細は「Cookieシミュレート機能」の項を参照ください。
447 </li>
448 </ol>
449 </subsection>
450 </section>
451 <section title="対応するCHTMLタグ">
452 変換可能なCHTMLタグは以下のとおりです。
453
454 <table title="対応タグ一覧">
455 <thead>
456 <tr>
457 <td>タグ</td>
458 <td>属性</td>
459 <td>CHTML</td>
460 <td>HDML</td>
461 <td>XHTML</td>
462 <td>JHTML</td>
463 <td>備考</td>
464 </tr>
465 </thead>
466 <tbody>
467 <tr>
468 <td>&lt;HTML&gt;</td>
469 <td align="center"> </td>
470 <td align="center"></td>
471 <td align="center"></td>
472 <td align="center"></td>
473 <td align="center"></td>
474 <td align="left">属性を指定した場合は無視します</td>
475 </tr>
476 <tr>
477 <td>&lt;META&gt;</td>
478 <td align="center">http-equiv</td>
479 <td align="center"></td>
480 <td align="center">×</td>
481 <td align="center"></td>
482 <td align="center"></td>
483 <td align="left">CHTML1.0、HDMLでは無視します</td>
484 </tr>
485 <tr>
486 <td> </td>
487 <td align="center">content</td>
488 <td align="center"></td>
489 <td align="center">×</td>
490 <td align="center"></td>
491 <td align="center"></td>
492 <td align="left">CHTML1.0、HDMLでは無視します</td>
493 </tr>
494 <tr>
495 <td>&lt;HEAD&gt;</td>
496 <td align="center"> </td>
497 <td align="center"></td>
498 <td align="center"></td>
499 <td align="center"></td>
500 <td align="center"></td>
501 <td align="left">属性を指定した場合は無視します</td>
502 </tr>
503 <tr>
504 <td>&lt;TITLE&gt;</td>
505 <td align="center"> </td>
506 <td align="center"></td>
507 <td align="center"></td>
508 <td align="center"></td>
509 <td align="center"></td>
510 <td align="left">属性を指定した場合は無視します</td>
511 </tr>
512 <tr>
513 <td>&lt;BASE&gt;</td>
514 <td align="center"> </td>
515 <td align="center"></td>
516 <td align="center">×</td>
517 <td align="center"></td>
518 <td align="center"></td>
519 <td align="left">HDMLでは無視します</td>
520 </tr>
521 <tr>
522 <td>&lt;BODY&gt;</td>
523 <td align="center">bgcolor</td>
524 <td align="center"></td>
525 <td align="center">×</td>
526 <td align="center"></td>
527 <td align="center"></td>
528 <td align="left">HDML、CHTML1.0、CHTML2.0では無視します</td>
529 </tr>
530 <tr>
531 <td> </td>
532 <td align="center">text</td>
533 <td align="center"></td>
534 <td align="center">×</td>
535 <td align="center"></td>
536 <td align="center"></td>
537 <td align="left">HDML、CHTML1.0、CHTML2.0では無視します</td>
538 </tr>
539 <tr>
540 <td> </td>
541 <td align="center">link</td>
542 <td align="center"></td>
543 <td align="center">×</td>
544 <td align="center"></td>
545 <td align="center"></td>
546 <td align="left">HDML、CHTML1.0、CHTML2.0では無視します</td>
547 </tr>
548 <tr>
549 <td>&lt;A&gt;</td>
550 <td align="center">href</td>
551 <td align="center"></td>
552 <td align="center"></td>
553 <td align="center"></td>
554 <td align="center"></td>
555 <td align="left"> </td>
556 </tr>
557 <tr>
558 <td> </td>
559 <td align="center">accesskey</td>
560 <td align="center"></td>
561 <td align="center"></td>
562 <td align="center"></td>
563 <td align="center"></td>
564 <td align="left"> </td>
565 </tr>
566 <tr>
567 <td>&lt;BR&gt;</td>
568 <td align="center"> </td>
569 <td align="center"></td>
570 <td align="center"></td>
571 <td align="center"></td>
572 <td align="center"></td>
573 <td align="left"> </td>
574 </tr>
575 <tr>
576 <td>&lt;FONT&gt;</td>
577 <td align="center">color</td>
578 <td align="center"></td>
579 <td align="center">×</td>
580 <td align="center"></td>
581 <td align="center"></td>
582 <td align="left">HDML,CHTML1.0では無視します</td>
583 </tr>
584 <tr>
585 <td>&lt;FORM&gt;</td>
586 <td align="center">action</td>
587 <td align="center"></td>
588 <td align="center"></td>
589 <td align="center"></td>
590 <td align="center"></td>
591 <td align="left"> </td>
592 </tr>
593 <tr>
594 <td> </td>
595 <td align="center">method</td>
596 <td align="center"></td>
597 <td align="center">×</td>
598 <td align="center"></td>
599 <td align="center"></td>
600 <td align="left">HDMLでは無視します</td>
601 </tr>
602 <tr>
603 <td>&lt;INPUT&gt;</td>
604 <td align="center">name</td>
605 <td align="center"></td>
606 <td align="center"></td>
607 <td align="center"></td>
608 <td align="center"></td>
609 <td align="left"> </td>
610 </tr>
611 <tr>
612 <td> </td>
613 <td align="center">type</td>
614 <td align="center"></td>
615 <td align="center"></td>
616 <td align="center"></td>
617 <td align="center"></td>
618 <td align="left">text,password,hidden,radio,checkbox,submitに対応</td>
619 </tr>
620 <tr>
621 <td> </td>
622 <td align="center">value</td>
623 <td align="center"></td>
624 <td align="center"></td>
625 <td align="center"></td>
626 <td align="center"></td>
627 <td align="left"></td>
628 </tr>
629 <tr>
630 <td> </td>
631 <td align="center">istyle</td>
632 <td align="center"></td>
633 <td align="center"></td>
634 <td align="center"></td>
635 <td align="center"></td>
636 <td align="left"> </td>
637 </tr>
638 <tr>
639 <td>&lt;SELECT&lt;</td>
640 <td align="center">name</td>
641 <td align="center"></td>
642 <td align="center"></td>
643 <td align="center"></td>
644 <td align="center"></td>
645 <td align="left"> </td>
646 </tr>
647 <tr>
648 <td> </td>
649 <td align="center">size</td>
650 <td align="center"></td>
651 <td align="center">×</td>
652 <td align="center"></td>
653 <td align="center"></td>
654 <td align="left">HDMLでは無視します</td>
655 </tr>
656 <tr>
657 <td>&lt;OPTION&gt;</td>
658 <td align="center">value</td>
659 <td align="center"></td>
660 <td align="center"></td>
661 <td align="center"></td>
662 <td align="center"></td>
663 <td align="left"><note>必ず閉じてください。そのうち対応します。</note></td>
664 </tr>
665 <tr>
666 <td> </td>
667 <td align="center">checked</td>
668 <td align="center"></td>
669 <td align="center"></td>
670 <td align="center"></td>
671 <td align="center"></td>
672 <td align="left"> </td>
673 </tr>
674 <tr>
675 <td>&lt;DIV&gt;</td>
676 <td align="center">align</td>
677 <td align="center"></td>
678 <td align="center"></td>
679 <td align="center"></td>
680 <td align="center"></td>
681 <td align="left"> </td>
682 </tr>
683 <tr>
684 <td>&lt;HR&gt;</td>
685 <td align="center"> </td>
686 <td align="center"></td>
687 <td align="center"></td>
688 <td align="center"></td>
689 <td align="center"></td>
690 <td align="left"> </td>
691 </tr>
692 <tr>
693 <td>&lt;CENTER&gt;</td>
694 <td align="center"> </td>
695 <td align="center"></td>
696 <td align="center"></td>
697 <td align="center"></td>
698 <td align="center"></td>
699 <td align="left"> </td>
700 </tr>
701 <tr>
702 <td>&lt;IMG&gt;</td>
703 <td align="center">src</td>
704 <td align="center"></td>
705 <td align="center"></td>
706 <td align="center"></td>
707 <td align="center"></td>
708 <td align="left"> </td>
709 </tr>
710 <tr>
711 <td>&lt;CHXJ:IF&gt;</td>
712 <td align="center">lang</td>
713 <td align="center"></td>
714 <td align="center"></td>
715 <td align="center"></td>
716 <td align="center"></td>
717 <td align="left">lang="chtml" lang="xhtml" lang="hdml" lang="jhtml"が指定できます</td>
718 </tr>
719 </tbody>
720
721 上記以外のタグは全て無視されます。
722
723 </table>
724
725 </section>
726 <section title="独自拡張タグ">
727 <ol>
728 <li>&lt;CHXJ:IF&gt;<br />
729
730 &lt;CHXJ:IF&gt;タグと&lt;/CHXJ:IF&gt;タグではさまれたタグやテキストは、
731 変換せずに<b>そのまま</b><note>変換しませんので注意が必要です</note>出力します。必須の属性としてlangがあります。lang属性を指定することによって、
732 例えば、<b>「HDML機の場合のみ出力させる」</b>といったことを可能にします。<br />
733 <br />
734 ex)
735 <program title="HTML文書中にHDML機の場合のみ有効にしたいタグ、または文書がある場合">
736 &lt;CHXJ:IF lang="HDML" &gt;
737 &lt;NODISPLAY&gt;
738 &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;
739 &lt;/NODISPLAY&gt;
740 &lt;/CHXJ:IF&gt;
741 </program><br />
742
743 ex)
744 <program title="i-Modeのみ出力したい文書がある場合">
745 &lt;CHXJ:IF lang="chtml" &gt;
746 シークレットコードがどーのこーの。
747 &lt;/CHXJ:IF&gt;
748 </program><br />
749
750 また、lang属性は、複数指定することも可能です。<br />
751
752 <program title="HDML機,J-PHONE機は以下を出力します">
753 &lt;CHXJ:IF lang="chtml" lang="jhtml"&gt;
754 あなたの携帯は、HDML機かJ-HTML機です。
755 &lt;/CHXJ:IF&gt;
756 </program><br />
757
758 </li>
759 </ol>
760 </section>
761
762 <section title="絵文字について">
763 i-Mode用の絵文字を書いておけば、アクセスしたキャリアによって、mod_chxjが対応の絵文字に自動変換します。
764 ソースに2byteのバイナリコードを直接書いても、10進参照文字列<note>16進参照文字列には対応していません</note>&amp;#XXX;の形)で書いても、どちらでも変換対象になります。
765 10進参照文字列で書いた場合は、mod_chxjにより、自動で2バイトコードに変換します。
766 <subsection title="絵文字変換定義">
767 絵文字の変換に関する動作を変えたい場合(例えば「ハートがあったら、AUの場合はスペードに」とか、「変換定義がおかしい」といった場合)は、
768 emoji.xmlファイルを直接編集することによって定義を変更することが可能です。emoji.xmlはXMLファイルとなっていますので、vi等で簡単に定義を
769 変更することができます<note>厳密にはXMLになっていないので、日本語の記述はSJISでお願いします。</note>
770
771 <br />
772 以下に、emoji.xmlファイルの一部を記します。
773 <program title="emoji.xml">
774 &lt;?xml encoding="Shift_JIS" &gt;
775
776 &lt;emoji&gt;
777 &lt;set&gt;
778 &lt;no&gt;1&lt;/no&gt;
779 &lt;imode&gt;
780 &lt;hex1&gt;f8&lt;/hex1&gt;
781 &lt;hex2&gt;9f&lt;/hex2&gt;
782 &lt;string&gt;&amp;#63647;&lt;/string&gt;
783 &lt;description&gt;&lt;/description&gt;
784 &lt;/imode&gt;
785 &lt;ezweb&gt;
786 &lt;A&gt;44&lt;/A&gt;
787 &lt;B&gt;44&lt;/B&gt;
788 &lt;C&gt;44&lt;/C&gt;
789 &lt;D&gt;44&lt;/D&gt;
790 &lt;/ezweb&gt;
791 &lt;jphone&gt;
792 &lt;string&gt;$Gj&lt;/string&gt;
793 &lt;/jphone&gt;
794 &lt;/set&gt;
795 </program>
796
797 絵文字の定義は、&lt;emoji&gt;タグから&lt;/emoji&gt;タグまでの間にあります。その中の要素を説明します。
798 1つの絵文字につき、1つのセット(&lt;set&gt;タグから&lt;/set&gt;タグまで)とし、キャリア毎の絵文字を定義しています。
799
800 <ol>
801 <li>&lt;imode&gt;要素<br />
802 まず、元となるi-Mode用の絵文字は、&lt;imode&gt;タグにはさまれた間に定義されています。
803 &lt;imode&gt;要素は、2バイトコード要素(&lt;hex1&gt;&lt;hex2&gt;)と、
804 10進参照文字列要素(&lt;string&gt;)を保持していて、この2つの要素を変換元の値として使用します。
805 アクセスしてきた端末が、i-Mode機であった場合で、かつCHTML中に10進参照文字列が絵文字として書かれている場合には、
806 &lt;hex1&gt;&lt;hex2&gt;要素に定義されている値に置換します。
807 </li>
808 <br />
809 <br />
810 <li>&lt;ezweb&gt;要素<br />
811 アクセスしてきた端末が、AU機であった場合、&lt;ezweb&gt;要素に定義されている値に変換します。
812 &lt;ezweb&gt;要素は、&lt;A&gt;&lt;D&gt;要素を持っていて、それぞれAUの絵文字タイプA〜Dに対応していますので、
813 もし、Dタイプの絵文字端末であったなら、&lt;D&gt;要素に定義されている値に変換します。ここで定義されている値は、
814 HDML機の場合は、<b>&lt;IMG ICON="XX"&gt;</b>の"XX"の部分に当てはめられて、置換されます。
815 XHTML機の場合は、<b>&lt;IMG LOCALSRC="XX"&gt;</b>の"XX"の部分に当てはめられて、置換されます。
816 </li>
817 <br />
818 <br />
819 <li>&lt;jphone&gt;要素<br />
820 アクセスしてきた端末が、SoftBank/Vodafone/J-Phone端末であった場合、&lt;jphone&gt;要素に定義されている値に変換します。
821 &lt;jphone&gt;要素は、&lt;string&gt;要素を保持していて、ここで定義されている値を直接使用します。
822 </li>
823 </ol><br />
824 emoji.xmlに定義されていない絵文字で、変換したい絵文字がある場合には、このファイルに新たな定義を足せば、
825 変換するようになります。
826 </subsection>
827 </section>
828
829
830 <section title="デバイス定義 device_data.xml">
831 mod_chxjの動作を決定付ける重要な定義です。変換対象の端末は全て、device_data.xmlファイルに定義される必要があります。
832 定義されていない端末は、mod_chxjとしては、認識することができません。認識できない場合には、変換せずにそのまま出力します。ただし、Perl互換の正規表現によって定義できるため、正規表現の書き方によっては全ての機種に対応させることも可能です。
833 </section>
834
835
836 <section title="イメージ画像変換機能">
837 mod_chxjには、JPEG、GIF、PNG、BMPファイルを置いておくだけで、デバイス定義に従って、それぞれのキャリア対応のフォーマットに変換する機能があります。
838 画像のサイズ(縦X横)も、端末の画面サイズに合わせて変換します。
839 画像のサイズ(バイト数)については、デバイス定義中のキャッシュサイズを見て、その値よりも小さくなるように<b>努力</b>しますが、元の画像が
840 大きすぎる場合や、複雑な画像の場合には、キャッシュサイズよりも小さくできずに表示できない場合があります。
841 <br />
842 それぞれのタグで指定する場合には、ファイル名の拡張子(.jpgや.gif等)をはずした形で指定します。<br />
843 本機能には3つのモードが存在します。そのモードを以下に記します。
844
845 <subsection title="サムネイルモード">
846 端末側画面サイズの約3分の1程度のサイズ(縦X横)に画像を縮小表示します。
847 <program title="サムネイルモード 使用例">
848 &lt;IMG SRC="/img/logo?Mode=Thumbnail"&gt;
849 </program>
850 </subsection>
851 <subsection title="壁紙モード">
852 端末側画面のサイズにマッチするサイズに拡大・縮小します。横長の画像の場合には、縦幅を合わせた後に左右をトリミングします。
853 <program title="壁紙モード 使用例">
854 &lt;IMG SRC="/img/logo?Mode=WP"&gt;
855 </program>
856 </subsection>
857 <subsection title="EzGetモード">
858 壁紙ダウンロードを行いたい場合に使用します。EzGETモードは、壁紙モードで出力される画像サイズと同一サイズの画像が使用されます。
859 <program title="EzGetモード 使用例">
860 &lt;A HREF="/img/logo?Mode=EzGet"&gt;
861 </program>
862 </subsection>
863 <subsection title="その他の機能">
864 モードの他に、画像サイズ(縦X横)を直接指定することも可能です。
865 <b>w</b>パラメータ、<b>h</b>パラメータを使用して指定します。
866 <ol>
867 <li>wパラメータ<br />
868 横幅を指定します。
869 </li>
870 <li>hパラメータ<br />
871 縦幅を指定します。
872 </li>
873 <program title="w/hパラメータ 使用例">
874 &lt;IMG SRC="/img/logo?w=100&amp;h=200"&gt;
875 </program>
876 <li>User-Agentパラメータ(uaパラメータ)<br />
877 User-Agentを指定します。指定した場合は、リクエストヘッダ中のUser-Agentを本パラメータの値で上書きします。
878 このパラメータに"IGN"を指定した場合は、User-Agentを無視します。Thumbnailモード、壁紙モードと併用時は、
879 640x480を元に画像サイズを算出します。
880 </li>
881 </ol>
882 </subsection>
883 上記全てのモード、パラメータはGETリクエストとしてのみ使用できます。
884 </section>
885
886 <section title="QRコード出力機能">
887 <subsection title="QRコード出力ハンドラの登録">
888 QRコード出力機能を使用するには、QRコードハンドラを登録します。
889 httpd.confに以下の記述を追加します。
890 <program title="httpd.conf">
891 AddHandler chxj-qrcode .qrc
892 </program>
893 なお、ハンドラを登録しないでも、出力フィルターを経由させることで、QRコードを出力させることも可能です。(※QRコードの動的出力を参照)
894 </subsection>
895 <subsection title="QRコードソースファイルの設置">
896 ハンドラを登録したら、その登録した拡張子を持つファイルを用意します。
897 <program title="例:a.qrc">
898 &lt;?xml version=1.0 ?&gt;
899
900 &lt;qrcode&gt;
901 &lt;version&gt;13&lt;/version&gt;
902 &lt;level&gt;H&lt;/level&gt;
903 &lt;mode&gt;8bit&lt;/mode&gt;
904 &lt;size&gt;1&lt;/size&gt;
905 &lt;data&gt;テストデータです&lt;/data&gt;
906 &lt;/qrcode&gt;
907 </program>
908 .qrcファイルは、qrcode要素、version要素、level要素、mode要素、size要素、data要素から成り立ちます。
909 <ol>
910 <li>versionタグ
911 versionタグは出力するQRコードの生成に利用するバージョンを指定します。
912 使用できるバージョンは、1〜40までの40種類です。
913 </li>
914 <li>levelタグ
915 levelタグは出力するQRコードの生成に利用する誤り検出レベルを指定します。
916  使用できるレベルは、L、Q、M、Hの4つです。
917 </li>
918 <li>modeタグ
919 modeタグは出力するQRコードの生成に利用するモードを指定します。
920 使用できるモードは、NUM(数字モード)ALPHA(英数字モード)8BIT(8ビットバイトモード)KANJI(漢字モード)です。
921 </li>
922 <li>sizeタグ
923 sizeタグは1モジュールを何ピクセルであらわすかを指定します。
924 0を指定した場合は、4を指定した場合と同じ動作をします。
925  使用できるサイズは、0〜20までです。
926 </li>
927 <li>dataタグ
928 dataタグは、QRコードに出力するデータを指定します。改行した場合は、改行文字もQRコード内に符号化されます。
929 </li>
930 </ol>
931 </subsection>
932 <subsection title="QRコードの動的出力機能">
933 プログラム等を使用し、動的にQRコードを出力したい場合は、上記の.qrcファイルの内容をそのままOutputFilterに通してあげればOKです。つまり、ChxjConvertRuleディレクティブで"EngineOn"と指定したURIが指すディレクトリに設置すれば良いということです。mod_chxj内部で、Content-Typeがtext/xmlの場合、QRCode用のファイルであるかどうかを一度読み込んで判断するので、Content-Typeには、text/xmlを設定してください。
934
935 <program title="phpでQRコードを動的に出力する例">
936 &lt;php
937 $version = $_POST["version"];
938 $level = $_POST["level"];
939 $mode = $_POST["mode"];
940 $size = $_POST["size"];
941 $data = $_POST["data"];
942
943 header("Content-Type: text/xml; charset=Shift_JIS");
944
945 echo "&lt;qrcode&gt;\n";
946 echo "&lt;version&gt;".$version."&lt;/version&gt;\n";
947 echo "&lt;level&gt;".$level."&lt;/level&gt;\n";
948 echo "&lt;mode&gt;".$mode."&lt;/mode&gt;\n";
949 echo "&lt;size&gt;".$size."&lt;/size&gt;\n";
950 echo "&lt;data&gt;".$data."&lt;/data&gt;\n";
951 echo "&lt;/qrcode&gt;\n";
952 &gt;
953 </program>
954 そして、上記のコードを、mod_chxj変換エンジンが処理するはずであるところに設置すれば完了です。
955
956 </subsection>
957 </section>
958 <section title="Cookieシミュレート機能(EXPERIMENTAL)">
959 <subsection title="Cookieシミュレート機能(EXPERIMENTAL)">
960 Cookieを受け付けない(無視する)端末のためにCookieをシミュレートします。本機能を有効にするためにはChxjConvertRuleディレクティブを使用する必要があります。ChxjConvertRuleディレクティブの第2パラメータにCookieOnを指定します。
961
962 <program title="Cookieシミュレート機能を有効にする例">
963 ChxjConvertRule "^/chxj.+$" "EngineOn,CookieOn" "NONE"
964 </program>
965
966 </subsection>
967 <subsection title="One-Time ID">
968 Cookieシミュレートでは、aタグ、imgタグ、formタグのURL部にOne-Time IDを埋め込むことで実現します。
969 そのため、ユーザがブラウザの戻るボタン等で戻った場合はCookieを取得できなくなります。
970 </subsection>
971 <subsection title="Cookieの保存場所">
972 Cookieの内容は、サーバ側に保存されます。保存ディレクトリはChxjCookieDirディレクティブを使用することで指定することができます。指定しなかった場合は、/tmpに保存されます。
973 <program title="ChxjCookieDirの例">
974 ChxjCookieDir /var/abc
975 </program>
976 </subsection>
977 <subsection title="Cookieの保持期間">
978 ChxjCookieTimeoutディレクティブで保持期間を指定することができます。指定しなかった場合は1800秒でサーバに保存されているCookieは削除されます。
979 <program title="ChxjCookieTimeoutの例">
980 &lt;Location /&gt;
981 ChxjCookieTimeout 10
982 &lt;/Location&gt;
983 </program>
984 上記の例は、10秒でタイムアウト(サーバから削除)するように指定しています。
985 </subsection>
986 </section>
987
988
989
990 <section title="Refererシミュレート機能(EXPERIMENTAL)">
991 <subsection title="Refererシミュレート機能(EXPERIMENTAL)">
992 DoCoMo端末などのRefererに対応していない機種のためにRefererシミュレート機能を提供します。
993 本機能は、Cookieシミュレート機能を有効にすると、自動で有効になります(将来的には変更予定)。
994 </subsection>
995 </section>
996 </body>
997 </doc>

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