2009年3月06日の投稿

2009-03-06
雨

PLIMO 開発者は RFC を知らない

ゆりこ による 03:48:22 の投稿
カテゴリー: ソフトウェア,ネットワーク,モバイル・携帯電話
タグ: , , ,

シックス・アパートと株式会社 GENOVAが「Movable Type」をベースとした携帯電話専用CMS「PLIMO」を共同開発したそうなのですが、そのデモサイトの出来にがっかりしました。

まず、デモサイトの URL は QR コードで提供されているのですが「左のQRコードを読み込むと」と書いてあるのに、QR コードは右にあります (魚拓)。それぐらいはつまらない誤記だと思ったのですが、それは第一歩に過ぎませんでした。その、読み込んだ URL が驚愕でした。なんと「http://plimo_salon2.plimo.jp/」というものだったからです。ホスト名にアンダースコア (_) が入っているという RFC1123 (日本語訳その1その2) 抵触モノです!! ホスト名に使えるのはアンダースコアじゃなくてハイフン (-) なのですが、それを分かってないということですよね……。携帯端末とウェブサーバーの間のネットワークに、アンダースコアを含むホスト名を想定していない機器 (プロキシー等) を通った場合、閲覧できない可能性もあります。

また、デモサイトの HTML も、XML 違反があります。48行目「MENU&PRICE」のアンパサンド記号が「&」という記述ではなく「&」となっていて、これがレンダリングエラーになります (Safari とか Firefox で見てみてください)。リンクの色が薄くて見にくいとか、画像の回り込みをテーブルタグで実現しているとか、スペーサー画像の alt 属性が「alt=”space”」だとか、他にもツッコミどころ満載です ;-)

デモサイトは自社の技術力を示すものですから、もっと丁寧に、かつ、しっかり作ってもらいたいものです。GENOVA の方はベンチャーなので、少々ミスがあっても「そんなもんか」と思われるだけですが、共同開発者であるシックス・アパートがこれを見逃しているのは、「ありえない」ことだと思います。

シックス・アパートと言えば、携帯電話向けコンテンツ表示モジュール「TypeCast」を自社開発しているはずですが、それとは別に CMS を作ってしまうとなると、TypeCast はどう位置付けるんでしょうね?? TypeCast は ISP 向けであって、別物ということでしょうか。

PLIMO は、携帯シミュレーターを内蔵してプレビュー時に携帯出力を確認できるなど、斬新な機能があるんですが、根幹の部分がいまいちだと先行きが不安ですね……。せめて、ウィルコムとイー・モバイル音声端末にも対応して「5キャリア対応!!」とかやってくれれば、応援する気にもなりますが。

WordPress の携帯表示を Smarty で行う実装

ゆりこ による 19:47:10 の投稿
カテゴリー: WordPressハック
タグ: , , , , ,

ガイドミーというサイトの管理者ブログで、「Smarty を使って WordPress の携帯表示を行う実装」を披露されているのを見かけました (ソースは未公開)。Ktai Style を使わない理由は「PC と携帯で URL が同一だと Google に嫌われる(と作者が思い込んでいる)」からだと思われます(*)。

ウェブログの DB に直接アクセスして携帯表示を作るのは、MT4iwp-ktai.php の手法ですね。はっきり言うと、第1世代の携帯対応のやり方です。Mobile Eye, Mobile Eye+, MobilePressNEO, Ktai Style は、WordPress のテンプレート機構を乗っ取るというやり方で、第2世代と呼べるでしょう。これは単に設計手法の新旧の違いであって、実装の優劣を述べているのではないことに注意してください。優劣があるとすれば、携帯向けサイトの URL が永続的であるかどうか、です (第1世代は携帯閲覧ツールの寿命に左右されるが、第2世代は左右されず永続的です)。

とはいえ、2009年になって、第1世代の実装方法を新規に行うというのは、大胆です ;-) まあ、Smarty を使っているという点を加味すると 1.5 世代と言えるでしょうし、単純な XSS 脆弱性を起こしにくくなるという面ではよい方法だと言えるでしょう。(WordPress のテンプレートタグを XSS を起こさないように使うのはちょっとコツがいる)

ただ、作者の PHP スキルが、「データ中に??などの文字(バイナリデータ?)が存在するのですが、よく分からないので全部削りました」とか「PHP5.2.6 で date("Y年n月j日 H:i"); の『年』が化けるのは PHP のバグ」と言っているレベルなのが不安です。正解は、「年」を Shift_JIS で書くと2バイト目が「N」なので、PHP 5.1.0 で導入された曜日フォーマット文字「N」と解釈されるため、「年」の1バイトが浮いてしまって化けるためなのです。バグというより、date() 関数の仕様ですね。date 関数で文字エンコーディングを指定できるようになるのがあるべき姿だと思いますが、PHP コードを Shift_JIS ではなく、EUC-JP や UTF-8 で書けば回避できるので、仕様変更の必然性は低いでしょう。PHP コードを Shift_JIS で書くこと自体、あまり好ましくないことですし。

あと、au, ソフトバンク向けにも <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/2.1) 1.0//EN" "i-xhtml_4ja_10.dtd"> という DTD を出力したり、XHTML なのに <HR size="0.5" color="#ccccff"> とか <br> というマークアップがある (大文字だったり閉じタグがない) のもイマイチでしょうか……。今後はこのへんが修正されることに期待ですね。

(*) 作者は「事実だ」と書いていますが、ログから推測される事項はあくまで「意見」であって事実ではありません。いついつにどういうアクセスがあった/いついつの間のアクセス件数はxxだったというのが事実であって、減った/増えたは統計による推論となるからです。

[追記 5月9日] 作者の翌日のエントリーで「サイトを作る目的は多くの人に見てもらうため」と書いておられました。わたしの考えでは、それに必要なことは、まずウェブ標準/各社の規約に従うこと、次にクールな URI を守ること、そして訪問者の立場でデザイン (見栄え・設計両方の意味) をすることでしょう。Ktai Style はそのような方針で作られています。

他人のフレームワークに左右されたくないという下りは実は同感で、わたしの自作プラグインは、「他人のプラグインが信用できない/挙動が来に食わない」から作ったものがほとんどです。PEAR の Net_UserAgent_Mobileなどを使わないのもその理屈です。