pnamazu から学ぶ - 携帯電話対応 - ― 2006年02月08日 06時12分59秒
perl 版検索クライアント pnamazu には実験的なものではありますが、本家 Namazu にないいくつかの機能があります。
その一つが携帯電話対応です。
今ではフルブラウザ対応の携帯電話もありますし、1ページ当りの容量も昔よりは大きくなっていますが、それでもパソコンのブラウザよりは制限がかかります。
pnamazu では、携帯電話に対応するため、次の拡張が行われています。
A. NMZ.result.* に ${summary::size=XX} とオプションが指定可能
B. user agent が携帯電話のときは、検索文字列を Shift_JIS として扱い、半角カナに対応
C. 携帯電話モード時に、出力するカタカナを X0201 (いわゆる半角カナ)に変換
A は、summary の長さは他のフィールドと同じサイズでデフォルトは200バイト($MAX_FIELD_LENGTH で指定可能)です。
しかし、携帯電話にとっては長すぎるので、サイズを小さくできるようになっています。
pnamazu のサンプルの NMZ.result.phone では、${summary::size=40} が指定されています。
Bは、携帯電話で検索式を入力する際、いわゆる半角カナ (jis x 0201片仮名) が入力に使われることが多いのですが、cgi 内部では、文字コードの自動判別の際にこれを誤ります。
そのため、user agent が携帯電話のときは、文字コードの自動認識を行わず、Shift_JIS に決め打ちで処理するようになっています。
Cは、半角カナに変換することで、出力データのサイズを抑えたり、限られた表示領域を有効に使うのが目的でしょう。
--------------------------------------------------
[本家Namazuへの応用]
A.
本家 Namazu でも、${xxxx} にオプションを指定できるように拡張することを考えています。
その一つに、出力する文字列のサイズを指定できるようにしたいと思います。オプションの形式は pnamazu とは異なるものになるでしょう。
この際にバイト数を指定するのが良いのでしょうが、出力する文字コードによって同じ文字列でもバイト数は異なるのが頭の痛いところです。
(最後にまとめてコード変換をしたいと考えているので....。)
B.
この当時、携帯電話の文字コードは Shift_JIS が一般だったのかもしれませんが、現在は Shift_JIS とは限りません。UTF-8 はもちろん、EUC-JP もありえます。
このため、user agent による文字コードの決め打ちは難しいでしょう。
ただ、user agent で携帯電話であることはわかるので、これで携帯電話モードに切り替えるとかには使えるでしょう。
個人的には半角カナは大嫌いですが、携帯電話という閉じた世界に限るなら半角カナへの対応は考えなければならない問題だろうとは思います。
C.
出力コードが UTF-8 だと半角カナに変換してもサイズは減らないのですが、限られた表示領域により多くの情報を表示するためには半角カナの方が好まれるかもしれません。
同様に全角記号も半角記号に変換した方が良いかもしれません。
その一つが携帯電話対応です。
今ではフルブラウザ対応の携帯電話もありますし、1ページ当りの容量も昔よりは大きくなっていますが、それでもパソコンのブラウザよりは制限がかかります。
pnamazu では、携帯電話に対応するため、次の拡張が行われています。
A. NMZ.result.* に ${summary::size=XX} とオプションが指定可能
B. user agent が携帯電話のときは、検索文字列を Shift_JIS として扱い、半角カナに対応
C. 携帯電話モード時に、出力するカタカナを X0201 (いわゆる半角カナ)に変換
A は、summary の長さは他のフィールドと同じサイズでデフォルトは200バイト($MAX_FIELD_LENGTH で指定可能)です。
しかし、携帯電話にとっては長すぎるので、サイズを小さくできるようになっています。
pnamazu のサンプルの NMZ.result.phone では、${summary::size=40} が指定されています。
Bは、携帯電話で検索式を入力する際、いわゆる半角カナ (jis x 0201片仮名) が入力に使われることが多いのですが、cgi 内部では、文字コードの自動判別の際にこれを誤ります。
そのため、user agent が携帯電話のときは、文字コードの自動認識を行わず、Shift_JIS に決め打ちで処理するようになっています。
Cは、半角カナに変換することで、出力データのサイズを抑えたり、限られた表示領域を有効に使うのが目的でしょう。
--------------------------------------------------
[本家Namazuへの応用]
A.
本家 Namazu でも、${xxxx} にオプションを指定できるように拡張することを考えています。
その一つに、出力する文字列のサイズを指定できるようにしたいと思います。オプションの形式は pnamazu とは異なるものになるでしょう。
この際にバイト数を指定するのが良いのでしょうが、出力する文字コードによって同じ文字列でもバイト数は異なるのが頭の痛いところです。
(最後にまとめてコード変換をしたいと考えているので....。)
B.
この当時、携帯電話の文字コードは Shift_JIS が一般だったのかもしれませんが、現在は Shift_JIS とは限りません。UTF-8 はもちろん、EUC-JP もありえます。
このため、user agent による文字コードの決め打ちは難しいでしょう。
ただ、user agent で携帯電話であることはわかるので、これで携帯電話モードに切り替えるとかには使えるでしょう。
個人的には半角カナは大嫌いですが、携帯電話という閉じた世界に限るなら半角カナへの対応は考えなければならない問題だろうとは思います。
C.
出力コードが UTF-8 だと半角カナに変換してもサイズは減らないのですが、限られた表示領域により多くの情報を表示するためには半角カナの方が好まれるかもしれません。
同様に全角記号も半角記号に変換した方が良いかもしれません。
Spreadsheet::ParseExcel を使った excel フィルタ ― 2006年02月08日 15時13分20秒
Spreadsheet::ParseExcel を使うと Excel の本文テキスト抽出が可能です。
xlhtml の代わりに使うには良いかもしれません。
Excel5, Excel95, Excel97, Excel98 のテキストを統一的に処理するには
$ perl sample/dmpExU.pl CP932 file | nkf -Se
と、しなければなりませんでした。
(UTF-8 や EUC-JP を指定したら文字化け)
$ perl sample/dmpExU.pl CP932 excel5.xls | nkf -Se
=========================================
FILE :/backup/work/HEAD/namazu/tests/data/ja/excel5.xls
COUNT :3
AUTHOR:情報システム部
--------- SHEET:Sheet1
( 0 , 0 ) =>Namazu は手軽に使えることを第一に目指した日本語全文検索システムです。このファイルはテスト用です。
( 2 , 0 ) =>test@namazu.org
--------- SHEET:Sheet2
--------- SHEET:Sheet3
$ perl sample/dmpExU.pl CP932 excel98.xls | nkf -Se
=========================================
FILE :/backup/work/HEAD/namazu/tests/data/ja/excel98.xls
COUNT :3
AUTHOR:乗越洋一
--------- SHEET:Sheet1
( 0 , 0 ) =>Namazu は手軽に使えることを第一に目指した日本語全文検索システムです。このファイルはテスト用です。
( 2 , 0 ) =>test@namazu.org
--------- SHEET:Sheet2
--------- SHEET:Sheet3
十分です。dmpExU.pl を参考にすれば簡単にフィルタは作れるでしょう。
ところで、プロパティの取得はできません(AUTHORのみ可)。
これは xlhtml も同様です。現在は wvWare の wvSummary を使っています。
wvSummary の代わりに OLE::Storage_Lite で実装するのは良いかもしれません。そのものずばりではありませんが、taro7_10.pl には、一太郎のプロパティを取り出す処理が含まれていますので、これを参考にすれば作ることはできるでしょう。
xlhtml の代わりに使うには良いかもしれません。
Excel5, Excel95, Excel97, Excel98 のテキストを統一的に処理するには
$ perl sample/dmpExU.pl CP932 file | nkf -Se
と、しなければなりませんでした。
(UTF-8 や EUC-JP を指定したら文字化け)
$ perl sample/dmpExU.pl CP932 excel5.xls | nkf -Se
=========================================
FILE :/backup/work/HEAD/namazu/tests/data/ja/excel5.xls
COUNT :3
AUTHOR:情報システム部
--------- SHEET:Sheet1
( 0 , 0 ) =>Namazu は手軽に使えることを第一に目指した日本語全文検索システムです。このファイルはテスト用です。
( 2 , 0 ) =>test@namazu.org
--------- SHEET:Sheet2
--------- SHEET:Sheet3
$ perl sample/dmpExU.pl CP932 excel98.xls | nkf -Se
=========================================
FILE :/backup/work/HEAD/namazu/tests/data/ja/excel98.xls
COUNT :3
AUTHOR:乗越洋一
--------- SHEET:Sheet1
( 0 , 0 ) =>Namazu は手軽に使えることを第一に目指した日本語全文検索システムです。このファイルはテスト用です。
( 2 , 0 ) =>test@namazu.org
--------- SHEET:Sheet2
--------- SHEET:Sheet3
十分です。dmpExU.pl を参考にすれば簡単にフィルタは作れるでしょう。
ところで、プロパティの取得はできません(AUTHORのみ可)。
これは xlhtml も同様です。現在は wvWare の wvSummary を使っています。
wvSummary の代わりに OLE::Storage_Lite で実装するのは良いかもしれません。そのものずばりではありませんが、taro7_10.pl には、一太郎のプロパティを取り出す処理が含まれていますので、これを参考にすれば作ることはできるでしょう。
最近のコメント