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.7 - (show annotations) (download)
Wed Jun 14 02:31:27 2006 UTC (17 years, 10 months ago) by konn
Branch: MAIN
Changes since 1.6: +6 -0 lines
  * adding ChxjEngine directive.

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 </head>
10 <body>
11 <section title="Overview">
12
13 mod_chxjはオープンソースの携帯向けコンテンツ変換Apache2.0用モジュールであり、
14 CHTML(DoCoMo i-Mode用 CHTML3.0)で記述された文書を、アクセスに来た端末のUser-Agentヘッダを見て、それぞれの端末にあった形式に変換します。
15 HTML文書に限らず、画像(jpg、gif、png)、絵文字についても、定義ファイルに従ってそれぞれのキャリアにあった絵文字に変換します。
16
17
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)ライブラリとそのヘッダファイル郡</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 --with-apache-header=/usr/include/apache2.0
49 </program>
50 <note>--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
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
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 # モジュールをApache2.0にロード
90 LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so
91
92 # デバイスデータの設定
93 ChxjLoadDeviceData /etc/apache2/chxj/device_data.xml
94
95 # 絵文字データの設定
96 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
97
98 # 変換させる対象の設定
99 &lt;Location /chxj&gt;
100 # Chxjモジュールを有効にします
101 ChxjEngine On
102 SetOutputFilter chxj_output_filter
103 SetInputFilter chxj_input_filter
104 &lt;/Location&gt;
105 </program>
106 </li>
107 <li>apacheの再起動。</li>
108 </ol>
109 </subsection>
110 <subsection title="php等の出力結果が変換対象の場合">
111 <ol>
112 <li>httpd.confに以下を追加します
113
114 <program title="httpd.conf">
115 # モジュールをApache2.0にロード
116 LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so
117
118 # デバイスデータの設定
119 ChxjLoadDeviceData /etc/apache2/chxj/device_data.xml
120
121 # 絵文字データの設定
122 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
123
124 &lt;Location /chxj&gt;
125 # Chxjモジュールを有効にします
126 ChxjEngine On
127 SetOutputFilter chxj_output_filter
128 SetInputFilter chxj_input_filter
129 &lt;/Location&gt;
130 </program>
131 </li>
132 <li>apacheの再起動。</li>
133 </ol>
134 </subsection>
135
136 <subsection title="mod_jk2を使用したtomcatの出力結果が変換対象の場合">
137 <ol>
138 <li>httpd.confに以下を追加します
139
140 <program title="httpd.conf">
141 # モジュールをApache2.0にロード
142 LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so
143
144 # デバイスデータの設定
145 ChxjLoadDeviceData /etc/apache2/chxj/device_data.xml
146
147 # 絵文字データの設定
148 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
149 &lt;Location /chxj&gt;
150 # Chxjモジュールを有効にします
151 ChxjEngine On
152 SetOutputFilter chxj_output_filter
153 &lt;/Location&gt;
154 </program>
155 <note>注意:input_filterは設定しないでください!!!</note>
156 </li>
157
158 <li>chxjfilter-0.0.1.jarを生成します
159 <ol>
160 <li>build.propertiesを環境に合わせて編集します
161
162 <program title="build.propertiesの編集">
163 $ cd java
164 $ vi build.properties
165 </program>
166 </li>
167 <li>chxjfilter-0.0.1.jarを生成します
168
169 <program title="コンパイル">
170 $ ant dist
171 </program>
172 </li>
173 <li>生成されたchxjfilter-0.0.1.jarにクラスパスをとおします</li>
174 </ol>
175 </li>
176
177 <li>web.xmlの編集し、以下を追加します。
178
179 <program title="web.xml">
180 &lt;filter&gt;
181 &lt;filter-name&gt;chxjfilter&lt;/filter-name&gt;
182 &lt;filter-class&gt;com.qsdn.filter.CHXJFilter&lt;/filter-class&gt;
183 &lt;/filter&gt;
184 &lt;filter-mapping&gt;
185 &lt;filter-name&gt;chxjfilter&lt;/filter-name&gt;
186 &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
187 &lt;/filter-mapping&gt;
188 </program>
189 </li>
190
191 <li>apache等の再起動</li>
192 </ol>
193 </subsection>
194
195
196
197 <subsection title="画像自動変換機能を使用する場合">
198 <ol>
199 <li>httpd.confに以下を追加します。
200 下記は、URIが/imgで始まる全ての画像に対して動作するようmod_chxjに指示しています。
201
202 <program title="httpd.conf">
203 &lt;Location /img&gt;
204 ChxjImageEngine On
205 ChxjImageCacheDir /tmp
206 ChxjImageCopyright "A.Konno"
207 &lt;/Location&gt;
208 </program>
209
210 上記の説明を以下に示します。
211
212 <ol>
213 <li>ChxjImageEngine<br />
214 mod_chxjの画像変換ハンドラを起動するよう指示しています。
215 DefaultはOff
216
217 <br />
218 <br />
219 </li>
220
221
222 <li>ChxjImageCacheDir<br />
223 mod_chxj画像変換ハンドラが使用する変換後の画像をおいておくディレクトリを指定します。
224 デフォルトは/tmp。
225
226 <program title="ChxjImageCacheDir">
227 ChxjImageCacheDir /tmp
228 </program>
229
230 mod_chxjに画像変換キャッシュとして/tmpを使用するよう指示します。
231 <br />
232 <br />
233 </li>
234
235
236 <li>ChxjImageCopyright<br />
237 mod_chxjの画像変換ハンドラに、転送禁止設定を行うよう指示します。
238 パラメータとして任意の文字列をとります。
239 ChxjImageCopyrightディレクティブで指定された文字列は、それぞれのイメージの
240 コメント部に埋め込まれます。
241
242 <program title="ChxjImageCopyright">
243 ChxjImageCopyright "A.Konno"
244 </program>
245
246 mod_chxjに転送禁止設定を行うよう指示しています。
247 変換後イメージのコメント部分には、キャリア毎に以下の文字列を埋め込みます。
248
249 <b>AU の場合</b>
250 <program title="AU">
251 kddi_copyright=on,A.Konno
252 </program>
253
254 <b>DoCoMoの場合</b>
255 <program title="DoCoMo">copy="NO",A.Konno</program>
256
257 <b>Vodafone</b>の場合は、レスポンスヘッダに
258
259 <program title="Vodafone/J-Phone">
260 x-jphone-copyright:no-transfer
261 </program>
262
263 を埋め込みます。
264 <note>Vodafoneの場合は、リクエストURLの最後が.pnzか、.jpzで終わるようにダミーを付けなければなりません。</note>
265 </li>
266 </ol>
267 </li>
268 </ol>
269 </subsection>
270
271 <subsection title="文字コードを変換したい場合(EXPERIMENTAL)">
272 <ol>
273 <li>httpd.confに以下を追加します。
274 下記は、URIが/chxjで始まる全てのコンテンツに対して動作するようmod_chxjに指示しています。
275 サーバ側はEUC-JPであった場合の例です。mod_chxjによってSJISに変換するように指示しています。
276
277 <program title="httpd.conf">
278 &lt;Location /chxj&gt;
279 ChxjServerSideEncoding "EUC-JP"
280 &lt;/Location&gt;
281 </program>
282
283 上記の説明を以下に示します。
284
285 <ol>
286 <li>ChxjServerSideEncoding<br />
287 サーバサイドの文字コードを指定します。ここに、EUC-JPと指定してあった場合は、
288 EUC-JPからCP932に変換後、クライアントに出力されます。
289 DefaultはNONE
290
291 <br />
292 <br />
293 </li>
294 </ol>
295 </li>
296 </ol>
297 </subsection>
298 </section>
299 <section title="対応するCHTMLタグ">
300 変換可能なCHTMLタグは以下のとおりです。
301
302 <table title="対応タグ一覧">
303 <thead>
304 <tr>
305 <td>タグ</td>
306 <td>属性</td>
307 <td>CHTML</td>
308 <td>HDML</td>
309 <td>XHTML</td>
310 <td>JHTML</td>
311 <td>備考</td>
312 </tr>
313 </thead>
314 <tbody>
315 <tr>
316 <td>&lt;HTML&gt;</td>
317 <td align="center"> </td>
318 <td align="center"></td>
319 <td align="center"></td>
320 <td align="center"></td>
321 <td align="center"></td>
322 <td align="left">属性を指定した場合は無視します</td>
323 </tr>
324 <tr>
325 <td>&lt;META&gt;</td>
326 <td align="center">http-equiv</td>
327 <td align="center"></td>
328 <td align="center">×</td>
329 <td align="center"></td>
330 <td align="center"></td>
331 <td align="left">CHTML1.0、HDMLでは無視します</td>
332 </tr>
333 <tr>
334 <td> </td>
335 <td align="center">content</td>
336 <td align="center"></td>
337 <td align="center">×</td>
338 <td align="center"></td>
339 <td align="center"></td>
340 <td align="left">CHTML1.0、HDMLでは無視します</td>
341 </tr>
342 <tr>
343 <td>&lt;HEAD&gt;</td>
344 <td align="center"> </td>
345 <td align="center"></td>
346 <td align="center"></td>
347 <td align="center"></td>
348 <td align="center"></td>
349 <td align="left">属性を指定した場合は無視します</td>
350 </tr>
351 <tr>
352 <td>&lt;TITLE&gt;</td>
353 <td align="center"> </td>
354 <td align="center"></td>
355 <td align="center"></td>
356 <td align="center"></td>
357 <td align="center"></td>
358 <td align="left">属性を指定した場合は無視します</td>
359 </tr>
360 <tr>
361 <td>&lt;BASE&gt;</td>
362 <td align="center"> </td>
363 <td align="center"></td>
364 <td align="center">×</td>
365 <td align="center"></td>
366 <td align="center"></td>
367 <td align="left">HDMLでは無視します</td>
368 </tr>
369 <tr>
370 <td>&lt;BODY&gt;</td>
371 <td align="center">bgcolor</td>
372 <td align="center"></td>
373 <td align="center">×</td>
374 <td align="center"></td>
375 <td align="center"></td>
376 <td align="left">HDML、CHTML1.0、CHTML2.0では無視します</td>
377 </tr>
378 <tr>
379 <td> </td>
380 <td align="center">text</td>
381 <td align="center"></td>
382 <td align="center">×</td>
383 <td align="center"></td>
384 <td align="center"></td>
385 <td align="left">HDML、CHTML1.0、CHTML2.0では無視します</td>
386 </tr>
387 <tr>
388 <td> </td>
389 <td align="center">link</td>
390 <td align="center"></td>
391 <td align="center">×</td>
392 <td align="center"></td>
393 <td align="center"></td>
394 <td align="left">HDML、CHTML1.0、CHTML2.0では無視します</td>
395 </tr>
396 <tr>
397 <td>&lt;A&gt;</td>
398 <td align="center">href</td>
399 <td align="center"></td>
400 <td align="center"></td>
401 <td align="center"></td>
402 <td align="center"></td>
403 <td align="left"> </td>
404 </tr>
405 <tr>
406 <td> </td>
407 <td align="center">accesskey</td>
408 <td align="center"></td>
409 <td align="center"></td>
410 <td align="center"></td>
411 <td align="center"></td>
412 <td align="left"> </td>
413 </tr>
414 <tr>
415 <td>&lt;BR&gt;</td>
416 <td align="center"> </td>
417 <td align="center"></td>
418 <td align="center"></td>
419 <td align="center"></td>
420 <td align="center"></td>
421 <td align="left"> </td>
422 </tr>
423 <tr>
424 <td>&lt;FONT&gt;</td>
425 <td align="center">color</td>
426 <td align="center"></td>
427 <td align="center">×</td>
428 <td align="center"></td>
429 <td align="center"></td>
430 <td align="left">HDML,CHTML1.0では無視します</td>
431 </tr>
432 <tr>
433 <td>&lt;FORM&gt;</td>
434 <td align="center">action</td>
435 <td align="center"></td>
436 <td align="center"></td>
437 <td align="center"></td>
438 <td align="center"></td>
439 <td align="left"> </td>
440 </tr>
441 <tr>
442 <td> </td>
443 <td align="center">method</td>
444 <td align="center"></td>
445 <td align="center">×</td>
446 <td align="center"></td>
447 <td align="center"></td>
448 <td align="left">HDMLでは無視します</td>
449 </tr>
450 <tr>
451 <td>&lt;INPUT&gt;</td>
452 <td align="center">name</td>
453 <td align="center"></td>
454 <td align="center"></td>
455 <td align="center"></td>
456 <td align="center"></td>
457 <td align="left"> </td>
458 </tr>
459 <tr>
460 <td> </td>
461 <td align="center">type</td>
462 <td align="center"></td>
463 <td align="center"></td>
464 <td align="center"></td>
465 <td align="center"></td>
466 <td align="left">text,password,hidden,radio,checkbox,submitに対応</td>
467 </tr>
468 <tr>
469 <td> </td>
470 <td align="center">value</td>
471 <td align="center"></td>
472 <td align="center"></td>
473 <td align="center"></td>
474 <td align="center"></td>
475 <td align="left"></td>
476 </tr>
477 <tr>
478 <td> </td>
479 <td align="center">istyle</td>
480 <td align="center"></td>
481 <td align="center"></td>
482 <td align="center"></td>
483 <td align="center"></td>
484 <td align="left"> </td>
485 </tr>
486 <tr>
487 <td>&lt;SELECT&lt;</td>
488 <td align="center">name</td>
489 <td align="center"></td>
490 <td align="center"></td>
491 <td align="center"></td>
492 <td align="center"></td>
493 <td align="left"> </td>
494 </tr>
495 <tr>
496 <td> </td>
497 <td align="center">size</td>
498 <td align="center"></td>
499 <td align="center">×</td>
500 <td align="center"></td>
501 <td align="center"></td>
502 <td align="left">HDMLでは無視します</td>
503 </tr>
504 <tr>
505 <td>&lt;OPTION&gt;</td>
506 <td align="center">value</td>
507 <td align="center"></td>
508 <td align="center"></td>
509 <td align="center"></td>
510 <td align="center"></td>
511 <td align="left"><note>必ず閉じてください。そのうち対応します。</note></td>
512 </tr>
513 <tr>
514 <td> </td>
515 <td align="center">checked</td>
516 <td align="center"></td>
517 <td align="center"></td>
518 <td align="center"></td>
519 <td align="center"></td>
520 <td align="left"> </td>
521 </tr>
522 <tr>
523 <td>&lt;DIV&gt;</td>
524 <td align="center">align</td>
525 <td align="center"></td>
526 <td align="center"></td>
527 <td align="center"></td>
528 <td align="center"></td>
529 <td align="left"> </td>
530 </tr>
531 <tr>
532 <td>&lt;HR&gt;</td>
533 <td align="center"> </td>
534 <td align="center"></td>
535 <td align="center"></td>
536 <td align="center"></td>
537 <td align="center"></td>
538 <td align="left"> </td>
539 </tr>
540 <tr>
541 <td>&lt;CENTER&gt;</td>
542 <td align="center"> </td>
543 <td align="center"></td>
544 <td align="center"></td>
545 <td align="center"></td>
546 <td align="center"></td>
547 <td align="left"> </td>
548 </tr>
549 <tr>
550 <td>&lt;IMG&gt;</td>
551 <td align="center">src</td>
552 <td align="center"></td>
553 <td align="center"></td>
554 <td align="center"></td>
555 <td align="center"></td>
556 <td align="left"> </td>
557 </tr>
558 <tr>
559 <td>&lt;CHXJ:IF&gt;</td>
560 <td align="center">lang</td>
561 <td align="center"></td>
562 <td align="center"></td>
563 <td align="center"></td>
564 <td align="center"></td>
565 <td align="left">lang="chtml" lang="xhtml" lang="hdml" lang="jhtml"が指定できます</td>
566 </tr>
567 </tbody>
568
569 上記以外のタグは全て無視されます。
570
571 </table>
572
573 </section>
574 <section title="独自拡張タグ">
575 <ol>
576 <li>&lt;CHXJ:IF&gt;<br />
577
578 &lt;CHXJ:IF&gt;タグと&lt;/CHXJ:IF&gt;タグではさまれたタグやテキストは、
579 変換せずに<b>そのまま</b><note>変換しませんので注意が必要です</note>出力します。必須の属性としてlangがあります。lang属性を指定することによって、
580 例えば、<b>「HDML機の場合のみ出力させる」</b>といったことを可能にします。<br />
581 <br />
582 ex)
583 <program title="HTML文書中にHDML機の場合のみ有効にしたいタグ、または文書がある場合">
584 &lt;CHXJ:IF lang="HDML" &gt;
585 &lt;NODISPLAY&gt;
586 &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;
587 &lt;/NODISPLAY&gt;
588 &lt;/CHXJ:IF&gt;
589 </program><br />
590
591 ex)
592 <program title="i-Modeのみ出力したい文書がある場合">
593 &lt;CHXJ:IF lang="chtml" &gt;
594 シークレットコードがどーのこーの。
595 &lt;/CHXJ:IF&gt;
596 </program><br />
597
598 また、lang属性は、複数指定することも可能です。<br />
599
600 <program title="HDML機,J-PHONE機は以下を出力します">
601 &lt;CHXJ:IF lang="chtml" lang="jhtml"&gt;
602 あなたの携帯は、HDML機かJ-HTML機です。
603 &lt;/CHXJ:IF&gt;
604 </program><br />
605
606 </li>
607 </ol>
608 </section>
609
610
611
612 <section title="文字コード">
613 文字コードは、絵文字の入出力がある関係上、Shift_JISのみとしています。
614 </section>
615
616
617 <section title="絵文字について">
618 i-Mode用の絵文字を書いておけば、アクセスしたキャリアによって、mod_chxjが対応の絵文字に自動変換します。
619 ソースに2byteのバイナリコードを直接書いても、10進参照文字列<note>16進参照文字列には対応していません</note>&amp;#XXX;の形)で書いても、どちらでも変換対象になります。
620 10進参照文字列で書いた場合は、mod_chxjにより、自動で2バイトコードに変換します。
621 <subsection title="絵文字変換定義">
622 絵文字の変換に関する動作を変えたい場合(例えば「ハートがあったら、AUの場合はスペードに」とか、「変換定義がおかしい」といった場合)は、
623 emoji.xmlファイルを直接編集することによって定義を変更することが可能です。emoji.xmlはXMLファイルとなっていますので、vi等で簡単に定義を
624 変更することができます<note>厳密にはXMLになっていないので、日本語の記述はSJISでお願いします。</note>
625
626 <br />
627 以下に、emoji.xmlファイルの一部を記します。
628 <program title="emoji.xml">
629 &lt;?xml encoding="Shift_JIS" &gt;
630
631 &lt;emoji&gt;
632 &lt;set&gt;
633 &lt;no&gt;1&lt;/no&gt;
634 &lt;imode&gt;
635 &lt;hex1&gt;f8&lt;/hex1&gt;
636 &lt;hex2&gt;9f&lt;/hex2&gt;
637 &lt;string&gt;&amp;#63647;&lt;/string&gt;
638 &lt;description&gt;&lt;/description&gt;
639 &lt;/imode&gt;
640 &lt;ezweb&gt;
641 &lt;A&gt;44&lt;/A&gt;
642 &lt;B&gt;44&lt;/B&gt;
643 &lt;C&gt;44&lt;/C&gt;
644 &lt;D&gt;44&lt;/D&gt;
645 &lt;/ezweb&gt;
646 &lt;jphone&gt;
647 &lt;string&gt;$Gj&lt;/string&gt;
648 &lt;/jphone&gt;
649 &lt;/set&gt;
650 </program>
651
652 絵文字の定義は、&lt;emoji&gt;タグから&lt;/emoji&gt;タグまでの間にあります。その中の要素を説明します。
653 1つの絵文字につき、1つのセット(&lt;set&gt;タグから&lt;/set&gt;タグまで)とし、キャリア毎の絵文字を定義しています。
654
655 <ol>
656 <li>&lt;imode&gt;要素<br />
657 まず、元となるi-Mode用の絵文字は、&lt;imode&gt;タグにはさまれた間に定義されています。
658 &lt;imode&gt;要素は、2バイトコード要素(&lt;hex1&gt;&lt;hex2&gt;)と、
659 10進参照文字列要素(&lt;string&gt;)を保持していて、この2つの要素を変換元の値として使用します。
660 アクセスしてきた端末が、i-Mode機であった場合で、かつCHTML中に10進参照文字列が絵文字として書かれている場合には、
661 &lt;hex1&gt;&lt;hex2&gt;要素に定義されている値に置換します。
662 </li>
663 <br />
664 <br />
665 <li>&lt;ezweb&gt;要素<br />
666 アクセスしてきた端末が、AU機であった場合、&lt;ezweb&gt;要素に定義されている値に変換します。
667 &lt;ezweb&gt;要素は、&lt;A&gt;&lt;D&gt;要素を持っていて、それぞれAUの絵文字タイプA〜Dに対応していますので、
668 もし、Dタイプの絵文字端末であったなら、&lt;D&gt;要素に定義されている値に変換します。ここで定義されている値は、
669 HDML機の場合は、<b>&lt;IMG ICON="XX"&gt;</b>の"XX"の部分に当てはめられて、置換されます。
670 XHTML機の場合は、<b>&lt;IMG LOCALSRC="XX"&gt;</b>の"XX"の部分に当てはめられて、置換されます。
671 </li>
672 <br />
673 <br />
674 <li>&lt;jphone&gt;要素<br />
675 アクセスしてきた端末が、Vodafone/J-Phone端末であった場合、&lt;jphone&gt;要素に定義されている値に変換します。
676 &lt;jphone&gt;要素は、&lt;string&gt;要素を保持していて、ここで定義されている値を直接使用します。
677 </li>
678 </ol><br />
679 emoji.xmlに定義されていない絵文字で、変換したい絵文字がある場合には、このファイルに新たな定義を足せば、
680 変換するようになります。
681 </subsection>
682 </section>
683
684
685 <section title="デバイス定義 device_data.xml">
686 mod_chxjの動作を決定付ける重要な定義です。変換対象の端末は全て、device_data.xmlファイルに定義される必要があります。
687 定義されていない端末は、mod_chxjとしては、認識することができません。認識できない場合には、CHTMLをそのまま出力します。
688 </section>
689
690
691 <section title="イメージ画像変換機能">
692 mod_chxjには、JPEG、GIF、PNG、BMPファイルを置いておくだけで、デバイス定義に従って、それぞれのキャリア対応のフォーマットに変換する機能があります。
693 画像のサイズ(縦X横)も、端末の画面サイズに合わせて変換します。
694 画像のサイズ(バイト数)については、デバイス定義中のキャッシュサイズを見て、その値よりも小さくなるように<b>努力</b>しますが、元の画像が
695 大きすぎる場合や、複雑な画像の場合には、キャッシュサイズよりも小さくできずに表示できない場合があります。
696 <br />
697 それぞれのタグで指定する場合には、ファイル名の拡張子(.jpgや.gif等)をはずした形で指定します。<br />
698 本機能には3つのモードが存在します。そのモードを以下に記します。
699
700 <subsection title="サムネイルモード">
701 端末側画面サイズの約3分の1程度のサイズ(縦X横)に画像を縮小表示します。
702 <program title="サムネイルモード 使用例">
703 &lt;IMG SRC="/img/logo?Mode=Thumbnail"&gt;
704 </program>
705 </subsection>
706 <subsection title="壁紙モード">
707 端末側画面のサイズにマッチするサイズに拡大・縮小します。横長の画像の場合には、縦幅を合わせた後に左右をトリミングします。
708 <program title="壁紙モード 使用例">
709 &lt;IMG SRC="/img/logo?Mode=WP"&gt;
710 </program>
711 </subsection>
712 <subsection title="EzGetモード">
713 壁紙ダウンロードを行いたい場合に使用します。EzGETモードは、壁紙モードで出力される画像サイズと同一サイズの画像が使用されます。
714 <program title="EzGetモード 使用例">
715 &lt;A HREF="/img/logo?Mode=EzGet"&gt;
716 </program>
717 </subsection>
718 <subsection title="その他の機能">
719 モードの他に、画像サイズ(縦X横)を直接指定することも可能です。
720 <b>w</b>パラメータ、<b>h</b>パラメータを使用して指定します。
721 <ol>
722 <li>wパラメータ<br />
723 横幅を指定します。
724 </li>
725 <li>hパラメータ<br />
726 縦幅を指定します。
727 </li>
728 <program title="w/hパラメータ 使用例">
729 &lt;IMG SRC="/img/logo?w=100&amp;h=200"&gt;
730 </program>
731 <li>User-Agentパラメータ(uaパラメータ)<br />
732 User-Agentを指定します。指定した場合は、リクエストヘッダ中のUser-Agentを本パラメータの値で上書きします。
733 このパラメータに"IGN"を指定した場合は、User-Agentを無視します。Thumbnailモード、壁紙モードと併用時は、
734 640x480を元に画像サイズを算出します。
735 </li>
736 </ol>
737 </subsection>
738 上記全てのモード、パラメータはGETリクエストとしてのみ使用できます。
739 </section>
740
741 <section title="QRコード出力機能">
742 <subsection title="QRコード出力ハンドラの登録">
743 QRコード出力機能を使用するには、QRコードハンドラを登録します。
744 httpd.confに以下の記述を追加します。
745 <program title="httpd.conf">
746 AddHandler chxj-qrcode .qrc
747 </program>
748 なお、ハンドラを登録しないでも、出力フィルターを経由させることで、QRコードを出力させることも可能です。(※QRコードの動的出力を参照)
749 </subsection>
750 <subsection title="QRコードソースファイルの設置">
751 ハンドラを登録したら、その登録した拡張子を持つファイルを用意します。
752 <program title="例:a.qrc">
753 &lt;?xml version=1.0 ?&gt;
754
755 &lt;qrcode&gt;
756 &lt;version&gt;13&lt;/version&gt;
757 &lt;level&gt;H&lt;/level&gt;
758 &lt;mode&gt;8bit&lt;/mode&gt;
759 &lt;size&gt;1&lt;/size&gt;
760 &lt;data&gt;テストデータです&lt;/data&gt;
761 &lt;/qrcode&gt;
762 </program>
763 .qrcファイルは、qrcode要素、version要素、level要素、mode要素、size要素、data要素から成り立ちます。
764 <ol>
765 <li>versionタグ
766 versionタグは出力するQRコードの生成に利用するバージョンを指定します。
767 使用できるバージョンは、1〜40までの40種類です。
768 </li>
769 <li>levelタグ
770 levelタグは出力するQRコードの生成に利用する誤り検出レベルを指定します。
771  使用できるレベルは、L、Q、M、Hの4つです。
772 </li>
773 <li>modeタグ
774 modeタグは出力するQRコードの生成に利用するモードを指定します。
775 使用できるモードは、NUM(数字モード)ALPHA(英数字モード)8BIT(8ビットバイトモード)KANJI(漢字モード)です。
776 </li>
777 <li>sizeタグ
778 sizeタグは1モジュールを何ピクセルであらわすかを指定します。
779 0を指定した場合は、4を指定した場合と同じ動作をします。
780  使用できるサイズは、0〜20までです。
781 </li>
782 <li>dataタグ
783 dataタグは、QRコードに出力するデータを指定します。改行した場合は、改行文字もQRコード内に符号化されます。
784 </li>
785 </ol>
786 </subsection>
787 <subsection title="QRコードの動的出力機能">
788 プログラム等を使用し、動的にQRコードを出力したい場合は、上記の.qrcファイルの内容をそのままOutputFilterに通してあげればOKです。
789
790 <program title="phpでQRコードを動的に出力する例">
791 &lt;php
792 $version = $_POST["version"];
793 $level = $_POST["level"];
794 $mode = $_POST["mode"];
795 $size = $_POST["size"];
796 $data = $_POST["data"];
797
798 echo "&lt;qrcode&gt;\n";
799 echo "&lt;version&gt;".$version."&lt;/version&gt;\n";
800 echo "&lt;level&gt;".$level."&lt;/level&gt;\n";
801 echo "&lt;mode&gt;".$mode."&lt;/mode&gt;\n";
802 echo "&lt;size&gt;".$size."&lt;/size&gt;\n";
803 echo "&lt;data&gt;".$data."&lt;/data&gt;\n";
804 echo "&lt;/qrcode&gt;\n";
805 &gt;
806 </program>
807 そして、上記のコードを、OutputFilterを通るところに設置すれば完了です。
808 なお、OutputFilterを通る場合は、画像変換エンジンも動作してしまうため、使用するクライアントのUser-Agentを定義するか、もしくは、
809 ua=IGNを指定して、リクエストしなければなりません。(もちろん、画像変換エンジンをそのまま使用する場合は何もしないでいいです。)
810
811
812 </subsection>
813 </section>
814 </body>
815 </doc>

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