Ticket #20391

is_ipod()がもはやiPod touch/iPhoneの判定じゃないので名前を変更しよう

Open Date: 2010-01-22 11:32 Last Update: 2010-05-20 21:04

Reporter:
Owner:
Type:
Status:
Closed
Component:
Priority:
2
Severity:
2
Resolution:
None
File:
None

Details

#20390に関連

あちこち直すことになりそうなので、2.0を出してから考えるでいいとおもうのだけど、 ClientInfoのis_ipod()はもはやiPod touch/iPhoneの判定じゃなくなってしまう感じなので、 関数名かえることを考えたほうがよさげです。

Ticket History (3/7 Histories)

2010-01-22 11:32 Updated by: ishikawa
  • New Ticket "is_ipod()がもはやiPod tocuh/iPhoneの判定じゃないので名前を変更しよう" created
2010-01-22 12:26 Updated by: morimoto
Comment

この話は

  • iPhone/iPod touch同様に、androidにも対応してほしいな
  • 両方ともAppleWebKitベースだから、同じtemplateでいけそうだ
  • iPod用のtemplateをandroidにも使っちゃえ * と、すると、is_ipod() じゃなくて、iPodとかandroidとかそのへんを包含する判定をしたいな

というところから来てると思います。

is_ipod() に加え is_android() を追加するのはどうでしょう。

  • if(is_ipod() || is_android()){ .. } みたいなコードが増えちゃうけど、「iPodとかandroidとかそのへんを包含する概念」をいま下手に定義してヒエラルキーを増やすより、まずはフラットにad-hocに始めた方がいいかも。
    • 「iPodとかandroidとかそのへんの包含に含まれてるかどうか」は is_mobile_webkit() あたりになるのかな。でもこれでいいのか自信がもてない。自信がもてないし、無くたっていいものだから、作らない。
  • さらにいつか is_blackberry() とか is_window_smobile() とかいろいろ増えて、対象概念の階層構造がきちんと見えてきたら、そこでヒエラルキーを定義すればいいかも。
2010-01-22 12:26 Updated by: morimoto
  • Summary Updated
2010-01-22 12:27 Updated by: morimoto
Comment

別件として、is_ipod() じゃなくて is_iphone() だろ、という気も非常にするw

これはこれで実施してもいいかも

2010-01-25 10:41 Updated by: ishikawa
2010-05-20 21:04 Updated by: ishikawa
  • Status Update from Open to Closed
  • Ticket Close date is changed to 2010-05-20 21:04
Comment

iPhone まわり/Android まわりをいろいろいじってみた感想というか結論めいたものですが、 以下のように思います。

  • いわゆるガラケー同士 あるいは ガラケーとPCのWebブラウザの挙動はそれぞれものすごく乖離が激しくて、相互にものすごく違っている、しかしiPhoneおよびAndoridに関して言うと、それぞれ同士あるいはPCのWebブラウザの挙動との違いは非常に小さい。要するに「それら同士を区別する必要性は基本的にないだろう」
  • 逆に、それら同士での区別を行ないたい差異はサーバサイドではわからない(サーバ側ではその機能があるかどうかなんか情報こないのでわからん)
  • 少なくともiPhone/Androidにはかなりちゃんとした Javascrit の処理系が乗っている。つまり自分自身(クライアント自身)がどういうものなのか(どういう機能を持っているか)を自分自身で切り分けできるし、クライアント自身が画面上に出力するものを調整することもできる。

そもそも User-Agent を見て、テンプレートを切り替えるという方法はいわゆるガラケーにおいて

*「それぞれの差異が大きいために共通したものを相互に利用するのにものすごい困難があること」
  • 「(js が載っていない前提でやる必要があるので)クライアント側でできることがほぼない(サーバ側で整形したものを出力させるしかない)

という2つの大きな制約があるために、アクセスをみてその情報からサーバから出すデータを切り替えるため 仕組み/手法なわけです。

で、少なくともiPhone/Androidにおいては上記の2つの制限はほぼないし、User-Agent を見てなにかを切り替えることより better な方法がある(そもそも User-Agentでの判断というのは「おそらくこのUser-Agentはこういう機能をもっているやつ だろう」という間接情報による判断でしかないので、例えば js の Geolocation API に対応してるかどうか? とかいうことに なると、判断しようがなかったりします。という意味で判定条件としては サーバサイドで頑張るしかなく亜種の少ないガラケー では有効ですが、それ以外の場合にはあまり有効な手段じゃないように思えます)ので、これらを区別する意味はないと判断しました。

ということで、単純に is_ipod() を is_webkit() という名前に変更しました。

おそらく いわゆる スマートフォンてきなものは、全部この is_webkit() 的な判定で出力されるテンプレートで (微調整は必要かもしれないけど)おおむねいけるものと思われるので、この is_webkit() という名前も実は どうかなぁ とも思うんですが(わら まぁ、さらにその時はその時で考えるということで。

Attachment File List

No attachments

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login