Yuriko.Net 個別記事

2009-03-06
雨

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などを使わないのもその理屈です。

トラックバック・コメント »

  1. PCと携帯が同じURLだとGoogleに嫌われか? SEO占い編

    同じだとページランクが下がり、変えたら上がったという証拠があれば、それまでのことです。ところが無い。それならば、占いがいいでしょう。呆れる人はどうぞ呆れてください。占い…

    陽春草庵からのトラックバック
  2. Ktai Stayleは優れたプラグインなので、利用させていただいています。
    私は、Ktai Stayleの採っている「第2世代」の方法に賛成です。
    今回の問題は単にURLに「/i/」「/ez/」「/sb/」などがつかないと「Google に嫌われる」という問題なんでしょうね。
    確かにPCと同じURLだとGoogleには「PC版だね」と扱われる見たいですし、エフルートなどに登録してもPC版として表示されてしまいます。
    でも、これって検索エンジン側の問題だし、リライトルール等を使って対処してしまえばすむような気がしますが、どうなんでしょうか?
    (と言うか、それで対処しようと思っています)

    • 今回の問題は単にURLに「/i/」「/ez/」「/sb/」などがつかないと「Google に嫌われる」という問題なんでしょうね。

      さあ?? そもそも「嫌われる」というのが、具体的にどういう現象なのかもはっきり書かれていないので、そもそも意味不明です。少なくとも、当サイトは、(検索ワードにもよりますが) 携帯での Google 検索でもよく出てくるので 、「PC と携帯を同一 URL にすると Google 検索に出てこない」ことはないと思っています。

      同一 URL で、PC/携帯に応じて内容を変化させるのは、これからのウェブ技術では基本だと考えられますから、検索エンジン側が対応するのがあるべき姿であることは間違いないでしょう。というか、現在の検索エンジンはそれなりに対応できているように思えますよ。

      ゆりこからのコメント
  3. いつもお世話になっております。

    同一URLでも、携帯とPCの両方の検索エンジンにインデックスされました。

    PCのクローラーと携帯のクローラーは別物ですし、どちらかにインデックスされると
    もう一方がインデックスされないというのは間違いなようです。

    トシからのコメント
    • トシさん、こんにちは。

      PCのクローラーと携帯のクローラーは別物ですし、どちらかにインデックスされると
      もう一方がインデックスされないというのは間違いなようです。

      ウチでもきちんとインデックスされているので、少なくとも「PC サイトと携帯サイトの URL を同一にしたら Google に不利」というのは、すべてのサイトに当てはまる話ではないです。それが当っているサイトがあるかもしれませんが、一部に過ぎないと思われます。

      ただ、元記事は「Google に嫌われる」と書いてあるだけで、インデックスされないとは書いてないのが、あやふやなところです。元記事が曖昧すぎるので、間違いと言えないんです (そもそもアテになる話になっていない)。

      個人的には、Google に嫌われるかどうかはどうでもよく、Ktai Style とは異なる実装が出てきたことの方が興味深く感じています。でも、たとえ PC と携帯を同一 URL にしたとしても、Smarty を使うのは「いまいち」だと思っています。WordPress のテンプレートタグを使える方が絶対に便利かつ分かりやすいはずですから……。

上に戻る

※スパム対策プラグインの影響により、すぐにトラックバックが反映されない場合があります。お手数ですが、半日ほど待ってみてください。

コメント投稿

※発言の責任を明確にするため「名無し」「通りすがり」「匿名希望」等の匿名は不可とします。捨てハンドルでもいいので必ず名乗ってください。
XHTML (使えるタグ): <a href="" title="" ktai=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt=""> .
※スパム対策プラグインの影響により、すぐにコメント内容が表示されない場合があります。お手数ですが、半日ほど待ってみてください。

上に戻る