しらぎくモバイルシステムFULL 処理出来るHTML文書。

しらぎくモバイルシステムFULLは、PC向けに書かれたフル規格のHTML文書を携帯端末での閲覧に適した形に変換しますが、端末の制約などに依り、一部に制限がございます。

文字コードのエンコーディング。(平成21年 7月26日)

推奨しないエンコーディング。

HTML文書に於いて、以下の文字コードエンコーディングは推奨しません

なるべく使わないようにしましょう。

ISO-2022-JP(JISコード)
アスキィ文字と仮名漢字の判別が困難なため、可能な限り事前にシフトJISに一括変換してから処理します。
UTF-16及びUTF-32
いずれもそのままでは処理出来ないため、事前にUTF-8に一括変換してから処理します。ユニコードを用いる場合にはなるべくUTF-8でエンコーディングするようにしましょう。
  • 特にPerl 5.8.3未満の場合、自家製の文字エンコーディング処理を利用するため、これらのエンコーディングでは処理が非常に重くなってしまう事があります。

推奨されるエンコーディング。

しらぎくモバイルシステムFULLでは、以下のエンコーディングを推奨しております。

シフトJIS
旧くから多くの国内携帯電話でデフォルトエンコーディングとして採用されてきた事より、しらぎくモバイルシステムFULLでもそのまま処理出来ます。

ユニコードを用いる場合の注意事項。

  • 上述の通り、ユニコードを用いる場合はなるべくUTF-8でエンコーディングするようにしてください。
    • 尚、現行の携帯電話は必ずUTF-8がデフォルトエンコーディングの一つになっております(しらぎくモバイルシステムFULLでは対応しませんが)。
  • 主に旧形の国内携帯電話ではシフトJISのみに対応しているものがあり、このためしらぎくモバイルシステムFULLではどのエンコーディングを採っていても最終的にはシフトJISに変換して配信するようになっております。

    以上の理由より、しらぎくモバイルシステムFULLを通じて携帯端末向けに配信するHTML文書はユニコードを用いる場合であってもアスキィ文字とJIS区点コードにある文字のみで記述する事を強く推奨します。

PC向け絵文字について。(平成21年 9月 9日)

第0.9000版(平成21年 9月 9日)より、一部のPC向け絵文字を端末絵文字に変換するようになりました。

主に以下の絵文字が変換対象となります。

  • トランプマーク(, , など)
  • 天気マーク(など)
  • 星座マーク(など)
  • 航空機マーク()
  • 封筒マーク()
  • 斜め矢印(など)
  • ©及び®も対応する絵文字を持つため、変換対象となります。

但し、絵文字は全て数値文字参照で記述されている事が変換の条件となります。

  • 実体参照で記述されている場合変換する事は出来ません。

また、国外端末, スマートフォン及びPCなど非実機では絵文字変換はされません。

  • 特にスマートフォンやPCなら、当該数値文字参照をそのまま表示出来る場合が多いでしょう。

フォーム。

フォームは、携帯端末では正常に機能しない場合があります。

サポートされないフォーム。

大き過ぎるフォーム
フォームは機能上、途中で分割する訳には行きません。

このため、途中で分割が必要になるような大きなフォームは削除対象となります。

  • 大体、4キロバイト程度を目安にすれば良いでしょう。
  • フォームの途中でのページ分割を防ぐため、フォームの前後の分割切片が極端に小さくなる事もあります。
フォームを扱えない端末
WAP 1.0 端末(国内には残っておりません)及びH"はHTMLではないため、フォームを扱えません。

従って、これらの端末ではフォームは一律削除対象となります。

制限のある要素。

<input type="file">要素
携帯端末の多くは、ファイルアップロードに対応しておりません。

このため、しらぎくモバイルシステムFULLでも<input type="file">要素は自動的に削除となります。

<button>要素
携帯端末の多くは、<button>要素をサポートしません。

<button>要素の内容テキストをvalue属性にした<input type="submit">要素または<input type="reset">要素に変換します。

<input type="image">要素
携帯電話の多くは、画像を送信ボタンにする事が出来ません。

このため、alt属性, value属性を用いた<input type="submit">要素に変換され、画像は表示されなくなります。

<select multiple>要素
携帯電話の多くは、複数選択のメニューボックスに対応しておりません。

このため、multiple属性があっても削除され、複数選択は出来ないものとします。

<optgroup>要素
旧型の携帯電話に、<optgroup>要素をサポートしないものがあります。
  • <optgroup>要素でのグルーピングが無効になるだけで、プルダウンメニューが利用不可能になる訳ではありません。
<form>要素のaction属性値
method属性が省略されているか"get"値の場合、action属性値となっているURLにクエリが付いている場合、それが無効になる端末があります。
  • 実はPCブラウザでも一部このような実装のものがあります。

この対策として、action属性に付けられたクエリは<input type="hidden">値に変換されます。

  • 順序はクエリの並ぶ順序に従い、<form>要素開始タグの直後に記述されます。
<form>要素外の<input>要素等
旧型端末の場合、<form>要素外に書かれた<input>要素等がレンダリングされないものがあります。

旧ジェイフォン機について。

旧ジェイフォンの非パケット端末には、幾つかの制限があります。

ヴァージョン 2(初期端末)
初期端末ではmethod="post"属性に対応しておりません。このため、getメソッドに強制変換されます。
ヴァージョン 3(初期端末を除く非パケット機)
method="post"属性が与えられたフォームでは、action属性に与えたクエリが送信出来ません。

このため、クエリは<input type="hidden">に変換されますが、その場合当該クエリはクエリストリングではなく標準入力から取得する事となります。

テーブル(表)。(平成21年 8月 8日 更新)

テーブル(表)に関しては、以下のように取扱います。

テーブル(表)として取扱わない場合とその扱い。

テーブル(表)として取扱わない場合。

以下に該当するテーブル(表)はテーブルとして扱いません。

レイアウト目的と見なされるテーブル
<th>要素が無いテーブルはレイアウト目的と判断して処理対象外となります。
多重テーブル
携帯端末では多重テーブルをサポートしないため、多重テーブルについては一番内側のもののみを処理対象とします。
フォームを含んだテーブル
テーブルは適切な方法で分割可能ですが、フォームは分割不可能であり、従ってフォームを含んだテーブルは処理対象外となります。

テーブル(表)として取扱わない場合の取扱。

テーブルとして扱わないテーブルに関しては、以下のように配信します。

<table>要素
<div>要素と見なします。
<tr>要素
開始タグのある箇所で改行、すなわち<br>要素を置きます。
<th>要素及び<td>要素
開始タグのある箇所で空白文字を挿入します。

テーブルの分割。(平成21年 7月24日 更新)

テーブル(表)は必要に応じて行単位で分割されます。

  • その際に、複数行に跨ったテーブルで問題が生じないようにしております。

また、複数ページに分割されたテーブルに於いて、テーブルのヘッダ部分とフッタ部分がそれぞれに自動的に附加されます。

  • テーブルのフッタは旧ジェイフォン非パケット機には附加されません。
  • ヘッダは<thead>要素としてマークアップされる部分ですが、<thead>要素が無い場合もテーブルの冒頭から空で無い<td>要素を含まない連続する行をヘッダとして処理対象とします。
  • フッタは<tfoot>要素としてマークアップされた部分ですが、<tfoot>要素が無い場合もテーブルの末尾から遡って空で無い<td>要素を含まない連続する行をフッタとして処理対象とします。尚、これが無い場合にはフッタは附与されません。(平成21年 7月24日 更新)

テーブルに関する注意。(平成21年 8月 8日 更新)

テーブルに関して、以下の点にご注意ください。

行グループ要素の扱い。

携帯端末では行グループ要素、すなわちヘッダ行グループ(<thead>要素), フッタ行グループ(<tfoot>要素)及び一般の行グループ(<tbody>要素)をサポートしておりません。

これらの要素の開始タグ及び終了タグは一律に削除されます。

但し、これらの要素に依る行グループを認識するため、行グループ一杯に跨るコマ(rowspan="0"属性を与えられたコマ)の跨る範囲は正常に処理されます。

また、モバイル非表示指定クラス名を与えられた行グループは、一律に当該行グループが削除されます。

列に関連する要素の扱い。

携帯端末では列に関連する要素、すなわち列グループ(<colgroup>要素)及び列要素(<col>要素)をサポートしておりません。

これらの要素の開始タグ及び終了タグは一律に削除されます。

但し、<colgroup>要素に依る列グループを認識するため、列グループ一杯に跨るコマ(colspan="0"属性を与えられたコマ)の跨る範囲は正常に処理されます。

また、モバイル非表示指定クラス名を与えられた列グループは、一律に当該列グループが削除されます。

テーブル内のフラグメントについて。

テーブルの分割処理の際に、id属性が削除されたり、位置が移動したりする事があります。

このため、テーブル内にフラグメントを設定する場合には、<td>または<th>要素内にid属性を持った要素または<a name="">要素を記述するようにしてください。

  • また、この事から、テーブル内のスタイル指定にid属性セレクタを使わないようにしてください。

テーブル内のclass属性について。

class属性については、以下のように扱います。

行に関するクラス
<thead>要素, <tfoot>要素及び<tbody>要素としてマークアップされている行グループには、これらの要素に附与されたclass属性が直下の<tr>属性に継承されます。
  • 但し、class属性が附与されている<tr>要素には継承されません。
列に関するクラス
クラス名を与えた<colgroup>要素に対応している列のコマには、基本的に当該<colgroup>要素に与えたクラスが適用されます。
  • 但し、<colgroup>要素の下位にある<col>要素で別のクラスが与えられている場合にはそのクラスが適用されます。
  • 更に、コマ自身にクラス名が与えられている場合にはそのクラスが適用されます。

同様に、<colgroup>要素内に無い<col>要素にクラスが与えられている場合も、対応する列のコマには当該クラスが与えられます。これも、コマ自身がクラス名を与えられている場合には適用されません。

  • 携帯電話の多くは複数クラスを正常に認識しないため、より下位の要素に与えられたクラス名で上書きするものとしております。

テーブル内の物理属性について。(平成21年 8月 8日)

第0.8700版(平成21年 8月 8日)より、テーブルに対して以下の物理属性をサポートしております。

  • bgcolor属性
  • background属性
  • align属性(<table>要素及び<caption>要素を除く)
  • valign属性
  • brodercolor属性(<table>要素のみ)
  • 但し、WAP 2.0 端末に対してCSSを適用する場合は、align属性とvalign属性のみサポートするものとし、その他のプレゼンテーションはCSSで行う事とします。
  • また、テーブルに対応していない機種についても、上記の各属性は無効となります。
  • その他、各属性は端末に依りサポートされない場合もあります。

尚、cellspacing属性及びxellpadding属性は一部で固定されていて変更が出来ない機種があるため、サポートをしておりません。

また、枠線の指定については、常に枠線が引かれるものとして扱います。

携帯端末でサポートされていない、行グループ(<tbody>要素など), 列グループ(<colgrouop>要素)及び列要素(<col>要素)についての扱いは以下のようになります。

  • 行グループ(<tbody>要素など)に指定されている場合、対応する各行(>tr>要素)に継承されます。但し、align属性を附与されている行に対してはその値を優先するため継承されません。
  • 列グループ(<colgroup>要素)或いは列要素(<col>要素)に指定されている場合、対応する列の各コマに継承されます。但し、align属性を附与されているコマに対してはその値を優先するため継承されません。
    • <colgroup>要素内に<col>要素がある場合、<col>要素での指定が優先されます。

テーブルを処理出来ない端末。

テーブルを処理出来ない端末では、テーブル内容をリスト形式に置換えて表示します。

その際に見出しコマ(<th>要素)に与えたscope属性やデータコマ(<td>要素)に与えたheaders属性を活用します。

埋め込みメディアなど。(平成21年 8月10日)

静止画。(平成21年 8月10日)

現在サポートしている静止画は、GIF画像, JPEG画像及びPNG画像です。

機種の制約に合わせて処理されますが、一般に以下のような変換ルールとなります。

  • 旧ジェイフォン端末については、端末の世代に依り、一律にPNG画像かJPEG画像に変換します。
  • その他の主な端末については、以下のルールとなります。
    GIF画像
    縮小を伴う場合、JPEG画像に対応している端末にはJPEG画像に変換されます。
    JPEG画像
    • ベースライン方式以外(特にブログレッシヴJPEG)は、縮小などの加工を伴わない場合であってもベースラインJPEGに変換されます。
    • ベースライン方式であれば、JPEG画像に対応している端末にはそのまま配信されます。
    PNG画像
    • インデックスドカラー以外はJPEG画像に変換されます。
    • インデックスドカラーの場合、縮小を伴わなければGIF画像に、縮小される場合はJPEG画像に変換されます。

フラッシュ。(平成21年 8月10日)

フラッシュへのリンク。(平成21年 8月10日)

リンク処理については、リンク先が何であるかを調べておりませんが、しらぎくモバイルシステムFULLを通じてフラッシュが処理対象となる場合には、以下の条件を満たしている限りそのまま配信されます。

対象となるフラッシュが無圧縮でヴァージョンが4以下である事
携帯電話向けフラッシュ規格であるフラッシュLiteの前提条件です。
実機の場合はフラッシュに対応していると判断される端末である事
ドコモのムーヴァ 505/506シリーズ, フォーマ(旧型機は非対応ですが現時点では考慮しておりません), ソフトバンク 3G(ボーダフォン時代の機種を含む), その他フラッシュに対応している事をHTTPでのリクエストヘッダで通知している場合には対応しているものとします。
  • 上記に該当しない条件でフラッシュを開こうとした場合、エラーメッセージが配信されます。

その他のマルティメディア。(平成21年 8月10日)

PDF文書はドコモのフォーマ端末でのみリンク出来ます。

  • フォーマでも旧式の端末ではPDF文書が開けませんが、それについてはまだ考慮しておりません。
  • 他端末でしらぎくモバイルシステムFULLを通じてPDF文書を開こうとした場合、エラーメッセージが配信されます。

<object>要素について。(平成21年 8月14日)

一部端末で、<object>要素が正常に取扱えないものがあります。

このため、しらぎくモバイルシステムFULLでは<object>要素は極力扱わないようにしております。

  • type属性またはdata属性の拡張子で画像と分かる場合、<img>要素に変換します。
  • type属性またはdata属性の拡張子でHTML文書と分かる場合、当該文書へのリンクとなる<a>要素に変換します。
    • 但し、内容としてブロックレヴェル要素が含まれる場合、当該文書へのリンクが生成されない場合があります。

    これは<iframe>要素も同様です。

特に、ブロックレヴェル要素が入れられない箇所にブロックレヴェル要素を無理矢理記述するために属性の無い<object>要素を記述した場合、それの開始・終了タグは無効なタグと見なして削除され、結果ブロックレヴェル要素が入れられない箇所にブロックレヴェル要素を直接記述すると言うような文法違反状態となります。

  • しらぎくモバイルシステムFULLではこのような場合、既にブロックレヴェル要素内にある場合にはそれを一旦閉じるなどして文法違反を回避するようにしておりますが、その結果予期せぬマークアップとなる恐れがあります。

クリッカブルマップについて。(平成21年 8月14日)

原則として、携帯電話の多くがクリッカブルマップに対応出来ません。

  • 端末に依っては、上下キーでカーソルを動かすくらいの操作しか出来ないものもあります。
  • 仮にクリッカブルマップに対応している端末であっても、PC向けのクリッカブルマップが携帯端末で縮小表示されると、フォーカスを合わせるのは困難です。

このため、以下のような制約が課されます。

サーヴァサイドクリッカブルマップは一切使えません。

上述のように、携帯端末にはクリッカブルマップそのものに対応していないものが多く、従って特にクライアント側で処置を決められないサーヴァサイドクリッカブルマップには一切対応出来ません。

  • 従って、しらぎくモバイルシステムFULLでは<img>要素などのismap属性は無効とされます。

クライアントサイドクリッカブルマップは、アンカーリストに変換されます。

クライアントサイドクリッカブルマップについては、以下のように扱います。

画像側のクリッカブルマップ指定
画像側のクリッカブルマップ指定(<img>要素などのusemap属性)は無視されます。
  • 従って、クリック不可能な画像となりますので、機能しないのに表示されると閲覧者を混乱させる恐れがあると判断される場合には携帯端末非表示設定をするなどしてください。
クリッカブルマップの領域指定
クリッカブルマップの領域指定(<map>要素)について、以下のように扱います。
<map>要素内に<area>要素以外の要素がある場合
それらをそのまま出力し、<area>要素の記述は無視します。
  • HTML 4.01及びISO-HTMLの仕様では、<map>要素内には<area>要素の他に代替リンクを含むブロックレヴェル要素を入れられる事とされており、双方ある場合には後者を優先する事としております。

特に、<map>要素はインライン要素であるにも拘らず、<area>要素以外に入れられるのはブロックレヴェル要素のみである事に注意してください。

しらぎくモバイルシステムFULLでは<map>要素については開始・終了タグとも除去しますので、その結果

  • <p>要素などブロックレヴェル要素を含み得ないブロックレヴェル要素に<map>要素があった場合、<p>要素直下にブロックレヴェル要素が位置する事になる
  • 一般のインライン要素内に<map>要素があった場合、当該インライン要素内要素直下にブロックレヴェル要素が位置する事になる

と言うように、文法違反となる場合がある事に充分ご注意ください。

<map>要素内に<area>要素しかない場合
それらをリストアイテムとする<ul>要素に置換されます。

具体的には、例えば変換元のHTMLが

<map id="CONTENTS">
			    <area href="Horikita.html" alt="堀北真希"/>
			    <area href="UetoAya.html" alt="上戸彩"/></map>

となっている場合、しらぎくモバイルシステムFULLでは

<ul>
			    <li><a href="Horikita.html">堀北真希</a></li>
			    <li><a href="UetoAya.html">上戸彩</a></li></ul>

と等価と見なして処理します。

クライアントサイドスクリプト及びスタイルシート言語。

JAVAスクリプトなどのクライアントサイドスクリプトコードである<script>要素は一律に削除されます。

また、スタイルシートをリンクする<link>要素, <style>要素及びstyle属性も全て削除されます。

  • HTMLの変換処理の影響で、モバイル対応のCSSも正常に機能しない場合があります。このため、CSSに対応している端末では変換後のスタイルを別途用意したCSSで実現する事となります。
  • 尚、CSS対応の携帯電話はドコモを除く各社の全現行端末と、ドコモのiモードブラウザ 2.0搭載機種(平成21年 5月以降発売の一部機種)が該当します。これらに該当しないCSS非対応端末では設定で定めたデザインが適用されます。

外部サイトの扱い。 (平成22年 3月13日 更新)

外部サイトはグーグル・ワイヤレス・トランスコーダで処理されます。(平成22年 3月13日 更新)

しらぎくモバイルシステムFULLで取扱対象とならないサイト外のページへのリンクについては、原則としてグーグル・ワイヤレス・トランスコーダで処理するようにしております。

  • グーグル・ワイヤレス・トランスコーダとは、携帯電話向けにフル規格のHTMLを変換するサーヴィスです。

グーグル・ワイヤレス・トランスコーダを通したくない場合。(平成22年 3月13日 更新)

リンク先が携帯電話に対応している場合、グーグル・ワイヤレス・トランスコーダで処理されるよりも直接当該サイトへリンクされた方が良い場合もあります。

このような携帯電話対応の外部サイトについては、以下のいずれかの方法で対応出来ます。

当該リンクとなる<a>要素に、rel="mobileok"属性を与える
この方法は、HTML 5でマークアップされたHTML文書では不適合となる場合があります。

例えば、

<a href="http://www.uso800.uso/mobi/horikita/">堀北真希ちゃん</a>

と言うリンクが携帯電話対応サイトへのリンクであれば、

<a rel="mobileok" href="http://www.uso800.uso/mobi/horikita/">堀北真希ちゃん</a>

と書き加える事で直接リンクされます。

モバイル向けのURLを data-mobilehref 属性で指定する (平成22年 3月13日)
この方法は、HTML 5でマークアップされている文書でのみ適合となり、従来のHTML 4/XHTML 1以前の企画では不適合となりますます。

例えば、

<a href="http://www.uso800.uso/mobi/horikita/">堀北真希ちゃん</a>

と言うリンクが携帯電話対応サイトへのリンクであれば、

<a data-mobilehref="http://www.uso800.uso/mobi/horikita/" href="http://www.uso800.uso/mobi/horikita/">堀北真希ちゃん</a>

と書き加える事で、直接リンクされます。

モバイルでリンク先を変えたい場合。(平成22年 3月13日)

PC向けのHTML文書で指定されているリンク先を、モバイルでは別のURLに変更したい場合があります。

その場合、当該リンクとなる<a>要素に、data-mobilehref属性でモバイル用のURLを指定してください。

例えば、

<a href="http://www.uso800.uso/horikita/PC/">堀北真希ちゃん</a>

と言うリンクに対し、携帯電話対応サイトである http://uso800.keitai/horikita/ へリンク先を変更したいのであれば、

<a data-mobilehref="http://uso800.keitai/horikita/" href="http://www.uso800.uso/mobi/horikita/">堀北真希ちゃん</a>

と記述します。

外部サイトへリンクする際にリンク元を隠したい場合。(平成22年 3月13日)

外部サイトへのリンクで、端末が送信するリファラに依りリンク元となるページを特定されたくない場合には、以下の方法を用いる事で、特定の出口ページを挟んでリンクされるようになります。

  • 出口ページを経由してのリンクする事に依り、リンク元のページの特定は困難になりますが、リンク元のサイトまでは隠蔽出来ない事に注意してください
  • パスワード認証または年齢確認を用いている場合には、以下の方法を用いる用いないに拘らず、外部サイトへのリンクは全て出口ページ経由となります。
  • この方法は外部サイトに対してのみ有効です。
設定ファイル「KConfig.pl」内の$extNeed=0;の右辺を 1する
こうすると、外部サイトへのリンクは全て出口ページへのリンクとなり、リンク先にはその出口ページのURLしか伝わらなくなります。
外部サイトへのリンクとなる<a>要素に、rel="noreferrer"属性を附与する (平成22年 3月13日)
こうすると、当該リンクについては出口ページへのリンクとなり、リンク先にはその出口ページのURLしか伝わらなくなります。

この方法は、特定のページのみリンク元のページを隠蔽するのに使えます。

携帯端末には冗長な記述。

PC向けに書かれたHTML文書は、しばしば携帯端末では冗長な記述となっている場合が多いものです。

また、PC向けには有用な情報であっても、携帯端末には適さない情報も稀にあります。

そのような記述に対し、非表示指定を行う事で、しらぎくモバイルシステムFULLでは当該箇所を取扱わずに削除する事が出来ます。

推奨事項。

しらぎくモバイルシステムFULLで適切に変換出来るようにするため、以下の事を強く推奨します。

テーブルやフォームはなるべく使わない
上記の通り、テーブルやフォームには様々な制限があります。掲示板やメールなどのフォームは外部サイトにリンクするようにしてください。また、可能な限りテーブルを用いずに情報を表現出来るようにしましょう。
テーブルを用いる場合
どうしてもテーブルを用いる場合は、以下の点にご留意ください。
テーブル関連タグに与えたid属性は切り捨てられる場合があります
テーブル内の項目へのフラグメントを指定するのであれば、コマ内にid属性を与えた要素か<a name="…">要素を与えてください。
テーブル関連タグへのクラス名について
  • 行グループ(<tbody>要素など)にクラス名を与える場合は、その直下の行(<tr>要素)にはクラス名を与えないようにします。また、CSSでスタイルを指定する場合、行グループ要素はタグが削除されるので、<table>, <tr>, <td>/<th>以外のテーブル関連要素はセレクタとして用いないようにしてください。
  • 列グループ(<colgroup>要素)にクラス名を与える場合、その直下の列(<col>要素)や対応する列にあるコマ要素(<td>要素など)にはクラス名を与えないようにします。また、また、CSSでスタイルを指定する場合、<table>, <tr>, <td>/<th>以外のテーブル関連要素はセレクタとして用いないようにしてください。
モバイルに対しては適宜配信文章を制限する
冗長な記述は携帯端末での閲覧には苦痛を与える事があります。モバイルでは冗長と判断されるような箇所は適切に非表示クラス名などを活用して配信されないようにすると良いでしょう。