Develop and Download Open Source Software

Browse CVS Repository

Diff of /modchxj/mod_chxj/doc/modchxj.sdoc

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

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

Legend:
Removed from v.1.33  
changed lines
  Added in v.1.34

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