iPhoneの対応について

63 views
Skip to first unread message

藤岡岳之

unread,
Jul 11, 2008, 11:08:59 PM7/11/08
to jpmo...@googlegroups.com
xibbarこと藤岡です。

iPhone買った人ー?
早速iPhoneを買ってきました。
それでいくつか思ったことを書きます。
jpmobileではiphoneはiphoneとして扱うことが必要だなと。
safariでブラウジングするのですが、
普通のウェブを見ると見事に字が小さくて見づらいです。
ということで、携帯用でもなく
PC用でもないビューが必要な気がしてきました。
ただ、ビューを複数用意する手間もかかるので、
ここはiPhoneのビューを決定する順番を
選択することができるように
しなきゃならないような気がします。
あるサイトでは
index_iphone.html.erb -> index.html.erb
あるサイトでは
index_iphone.html.erb -> index_mobile.irb -> index.html.erb
といった検索順の感じでしょうか。

自分の話ですが、会社で使っているスケジューラソフトの
ビューが見づらくて使いづらい状況が発生しています。
基本はPC用のビューがJSが動くのでいいのですが、
横幅が800ぐらいを少なくとも想定しているので、
iPhoneを横にしてもつらい状況です。
このサイトはiPhone用にウェブのパーツの配置を
ちょっとだけ変更すれば済むというレベルなので
レイアウトをiPhone用に作るだけでうまくいきそうです。
application_iphone.html.erb 置いたら、
iPhone用場合はこっちを優先してくれて、
パーツの配置が変わるってのがいいななんて。

あとiphoneかどうかを判別するメソッドですが、
.mobile.iphone? > => :iPhone
.mobile.iphone? => :iPodTouch
とかが返ればいいのかな?なんて思います。
trueだったらiphoneかiPodTouchで、
それも判別するときは中身を比較してもらうと。

とりあえず感想を書かせていただきました。
ではまた。

# 強烈にiPhoneアプリの開発をしたい衝動にかられています。

Keiji Yoshimi

unread,
Jul 13, 2008, 11:27:49 AM7/13/08
to jpmo...@googlegroups.com
よしみです。iPhoneにはそれほど詳しくはないのですが。

2008/07/12 12:08 藤岡岳之 <xib...@gmail.com>:


>
> xibbarこと藤岡です。
>
> iPhone買った人ー?
> 早速iPhoneを買ってきました。
> それでいくつか思ったことを書きます。
> jpmobileではiphoneはiphoneとして扱うことが必要だなと。
> safariでブラウジングするのですが、
> 普通のウェブを見ると見事に字が小さくて見づらいです。
> ということで、携帯用でもなく
> PC用でもないビューが必要な気がしてきました。
> ただ、ビューを複数用意する手間もかかるので、
> ここはiPhoneのビューを決定する順番を
> 選択することができるように
> しなきゃならないような気がします。
> あるサイトでは
> index_iphone.html.erb -> index.html.erb
> あるサイトでは
> index_iphone.html.erb -> index_mobile.irb -> index.html.erb
> といった検索順の感じでしょうか。
>

最新のhook_action_view.rbを見る限りでは、
Jpmobile::Mobile::IPhoneというやつを作ってやれば、
iPhoneで見た際には
index_mobile_iphone.rhtml
index_mobile.rhtml
index.rhtml
の順番でテンプレートが検索されるようになっていると思うので特に変更する必要はないのではないかと思いますがいかがでしょうか?

Jpmobile::Mobile::IPhoneという名前が適切かどうかは悩ましいところですね。jpmobile的には今までの分けかただと、Jpmobile::Mobile::Appleの方が適切ですかね?

>
> あとiphoneかどうかを判別するメソッドですが、
> .mobile.iphone? > => :iPhone
> .mobile.iphone? => :iPodTouch
> とかが返ればいいのかな?なんて思います。
> trueだったらiphoneかiPodTouchで、
> それも判別するときは中身を比較してもらうと。
>

Appleの携帯端末として今後iPhone以外のものが出てこないとも限らないので、#iphone?というメソッド名にはあまり賛成しません。また、?のついたメソッドでtrueかfalse以外の値が返ってくるのもわかりづらいかなと思います。#model_nameとかでどうでしょうか?

ただ、個人的にはjpmobileレベルでiPhone対応の必要性は特に感じません。やるとするなら別のPluginとかにわけておいたほうがいい気もします。

何故かといえば、絵文字は独自なものを持っておらず端末ID情報の送信を持っているわけではないからです。IP情報も無線をつかっても接続させられるので持っていても特にメリットはないですよね。ただ画面サイズの情報は持っていると便利なこともあるかもしれませんね。

一番使えると便利そうなのは位置情報関連ですが、このあたりのロジックはDatumConvやJpmobile::Positionがつかえると便利なのでしょうか?
また、それらの情報を送る際にiPhoneの決まったパラメータのつけかたなどはあるのでしょうか?
ちょっとiPhoneのこのあたりの仕様はあまり詳しくないので教えていただけるとありがたいです。

request.mobile?でmobileかどうかの判別に入れるかどうかもなやましいところで、mobileに入れても特にメリットを享受できるわけでもないかなと思います。

見た目に関してはJSを実行できるので、PC版を見れる方がたいていの場合うれしいかなと思います。(Ajaxばりばりはつらそうですが;-)
ある程度であればhandheld用のCSSを書けば対応できるのではないかと思っています。(某サイトはそれでやりました)

requestを見てやってtemplateのファイルを振りわける処理はjpmobileからは切り離してもっと汎用的に書けるような気もし、それだけの部分しか必要ないのであればそれ用のプラグインがあればよいので、jpmobileでひとつにしておくメリットはあまりないかなと思うのです。

jpmobile会議に参加していないので既に十分議論されたことかもしれませんが、個人的な意見はこんな感じです。

藤岡岳之

unread,
Jul 13, 2008, 10:20:03 PM7/13/08
to jpmo...@googlegroups.com
藤岡です。

> 最新のhook_action_view.rbを見る限りでは、
> Jpmobile::Mobile::IPhoneというやつを作ってやれば、
> iPhoneで見た際には
> index_mobile_iphone.rhtml
> index_mobile.rhtml
> index.rhtml
> の順番でテンプレートが検索されるようになっていると思うので特に変更する必要はないのではないかと思いますがいかがでしょうか?
>

これでOKです。

> Jpmobile::Mobile::IPhoneという名前が適切かどうかは悩ましいところですね。jpmobile的には今までの分けかただと、Jpmobile::Mobile::Appleの方が適切ですかね?
>

これはどっちでもいいやって感じですが、shachiさんによると、
iphoneが最上位機種で、それから携帯機能をとったのがiPodTouchだということを考えると、、、
iphoneでいいとも思いますが、最終的にはお任せします。
appleの方ががいいのかなぁ。

> Appleの携帯端末として今後iPhone以外のものが出てこないとも限らないので、#iphone?というメソッド名にはあまり賛成しません。また、?のついたメソッドでtrueかfalse以外の値が返ってくるのもわかりづらいかなと思います。#model_nameとかでどうでしょうか?
>

#iphone?でtrue/false以外が返るのは私の気の迷いで結構です。
#iphone?自体は必要かと思います。
機種の判別は#model_nameでOKです。(と、twitterでの話でそうなっていました)

> ただ、個人的にはjpmobileレベルでiPhone対応の必要性は特に感じません。やるとするなら別のPluginとかにわけておいたほうがいい気もします。
>
必要だと思います。iphone用にビューの切り替え機能がないとすごく見づらいです。
iphoneやipodtouchで自分が作ったサイトを覗いてみていただければわかります。

> 見た目に関してはJSを実行できるので、PC版を見れる方がたいていの場合うれしいかなと思います。(Ajaxばりばりはつらそうですが;-)
> ある程度であればhandheld用のCSSを書けば対応できるのではないかと思っています。(某サイトはそれでやりました)
>

それをどうやって切り替えますか?

> requestを見てやってtemplateのファイルを振りわける処理はjpmobileからは切り離してもっと汎用的に書けるような気もし、それだけの部分しか必要ないのであればそれ用のプラグインがあればよいので、jpmobileでひとつにしておくメリットはあまりないかなと思うのです。
>
つまりコントローラとかビューにロジックを書いて、テンプレートを切り替えた方がいいというわけですか?
私としてはapplication_iphone.html.erbを自動的に読んでほしいなぁ。
もっとかっこよくていい案があるんだったらそれでいいのですが。

Yohji Shidara

unread,
Jul 14, 2008, 1:58:50 AM7/14/08
to jpmobile
daraです。レスポンスが遅くなってすみません。

>> 最新のhook_action_view.rbを見る限りでは、
>> Jpmobile::Mobile::IPhoneというやつを作ってやれば、
>> iPhoneで見た際には
>> index_mobile_iphone.rhtml
>> index_mobile.rhtml
>> index.rhtml
>> の順番でテンプレートが検索されるようになっていると思うので特に変更する必要はないのではないかと思いますがいかがでしょうか?
>>
> これでOKです。

その通りなんですが、もしかして
index_mobile_iphone.html.erb -> index_mobile.html.erb ->
index.html.erb ではなくて
index_(mobile_)iphone.html.erb -> index.html.erb のほうがいいってこともあります?

>> Jpmobile::Mobile::IPhoneという名前が適切かどうかは悩ましいところですね。jpmobile的には今までの分けかただと、Jpmobile::Mobile::Appleの方が適切ですかね?
>>
> これはどっちでもいいやって感じですが、shachiさんによると、
> iphoneが最上位機種で、それから携帯機能をとったのがiPodTouchだということを考えると、、、
> iphoneでいいとも思いますが、最終的にはお任せします。
> appleの方ががいいのかなぁ。

悩むところではありますね。
まぁ、JpmobieがVodafoneになってSoftbankになったりする(そしてそれはあらかじめ知ることができない)ので、現状で最適な名前
を付けておくということでIphoneでいいのかなと思います。
あと、クラス名は一応先頭だけを大文字ということにしていたのでIphoneでしょうか。

>> Appleの携帯端末として今後iPhone以外のものが出てこないとも限らないので、#iphone?というメソッド名にはあまり賛成しません。また、?のついたメソッドでtrueかfalse以外の値が返ってくるのもわかりづらいかなと思います。#model_nameとかでどうでしょうか?
>>
> #iphone?でtrue/false以外が返るのは私の気の迷いで結構です。
> #iphone?自体は必要かと思います。
> 機種の判別は#model_nameでOKです。(と、twitterでの話でそうなっていました)

- #iphone? で iPhone でも iPod touch でも true を返す
- 機種を判断したいときは #model_name を使う
で良いと思います。問題は、それらのメソッドをどのレベルに実装するかで、
- request.mobile.iphone? か request.iphone? (後者の方が良さそう)
- request.mobile.model_name か request.iphone.model_name か (前者の方が良さそう,た
だrequest.iphone?との統一感が微妙か)
(request.iphone を用意するか、それとも request.iphone は用意せず request.mobile でIphone
のインスタンス*も*渡すか)
のあたりをどうするかというのは迷いのあるところです。

>> ただ、個人的にはjpmobileレベルでiPhone対応の必要性は特に感じません。やるとするなら別のPluginとかにわけておいたほうがいい気もします。
>>
> 必要だと思います。iphone用にビューの切り替え機能がないとすごく見づらいです。
> iphoneやipodtouchで自分が作ったサイトを覗いてみていただければわかります。

そうですねぇ。これは自分も判断の迷うところではあります。
jpmobileが実装するのではなく、iPhone/iPod touch用の別のプラグインを提供した方がよい、という考え方はもっともだと思いま
す。

ただ、 jpmobileは
- 「日本の携帯電話開発の面倒毎を解消する」プラグインであり、iPhoneもまた日本の携帯電話の一つになった
- (賛否もあるでしょうし、自分の中でも迷いはありますが)「Railsにならってフルスタックでいこう」というのを基本的なスタンスにしている
ので、中に入れてしまっても良いだろうと考えています。

切り離す必要が出てきたときに切り離せば良いかと思います。というか、iPhone/iPod touch専用の使いやすいプラグインは
jpmobileがつくらなくとも誰かが作ってくれるのではないかとも思います。なので、jpmobileが取るべき選択は、
- jpmobile上にiPhone/iPod touchを自然に扱える機能を提供する
- あえて何もしない
のいずれかかなと思っています。ここでどちらかを選ぶとしたら、jpmobileで実装するほうを選ぶべきかなと。

>> requestを見てやってtemplateのファイルを振りわける処理はjpmobileからは切り離してもっと汎用的に書けるような気もし、それだけの部分しか必要ないのであればそれ用のプラグインがあればよいので、jpmobileでひとつにしておくメリットはあまりないかなと思うのです。
>>
> つまりコントローラとかビューにロジックを書いて、テンプレートを切り替えた方がいいというわけですか?
> 私としてはapplication_iphone.html.erbを自動的に読んでほしいなぁ。
> もっとかっこよくていい案があるんだったらそれでいいのですが。

たしかに、requestを見てテンプレートを切り替えるより汎用的なモジュールがあって、現在のjpmobileのようなインタフェイスを提供するの
であればそれはいいかなとも思います。あと、最近のRails的にはviewの切り替えはController#respond_toを使うべきなのか
もという気もしています(本当に上手いこと使えるのか試せていませんが・・・)
チケットは発行してあります: http://jpmobile-rails.org/ticket/3

ざっくばらんに書いてしまいましたのでまとめます。

- 現状としては Mobile::Iphone を作ってしまうのが良いかな
- viewの順序は _iphone.html.erb -> _mobile.html.erb -> .html.erb
か、_iphone.html.erb -> .html.erb か迷いどころ
- #iphone? は iPhone / iPod touch で true、それ以外で false
- request.iphone? か request.mobile.iphone? か (前者の方が良さそう)
- request.mobile.model_name か request.iphone.model_name か (前者の方が良さそう,た
だrequest.iphone?との統一感が微妙か)

--
SHIDARA Yohji

藤岡岳之

unread,
Jul 14, 2008, 2:18:29 AM7/14/08
to jpmo...@googlegroups.com
藤岡です。

> その通りなんですが、もしかして
> index_mobile_iphone.html.erb -> index_mobile.html.erb ->
> index.html.erb ではなくて
> index_(mobile_)iphone.html.erb -> index.html.erb のほうがいいってこともあります?
>

ああ、これでOKなんて返事していたけど、OKじゃなかった。
ビューの検索順は選べるようにしたいです。
私の印象では、むしろデフォルトは下の案の方がいいと思います。
そうすると、携帯には対応する予定はないけど、iphoneには対応するぞ!というサイトについて
jpmobileで対応できるのかなと思いますし。

Keiji Yoshimi

unread,
Jul 14, 2008, 11:03:42 AM7/14/08
to jpmo...@googlegroups.com
よしみです。
ちょっと脱線して、CSSのみで見た目を振りわける方法について返信しておきます。

>
>> ただ、個人的にはjpmobileレベルでiPhone対応の必要性は特に感じません。やるとするなら別のPluginとかにわけておいたほうがいい気もします。
>>
> 必要だと思います。iphone用にビューの切り替え機能がないとすごく見づらいです。
> iphoneやipodtouchで自分が作ったサイトを覗いてみていただければわかります。
>
>> 見た目に関してはJSを実行できるので、PC版を見れる方がたいていの場合うれしいかなと思います。(Ajaxばりばりはつらそうですが;-)
>> ある程度であればhandheld用のCSSを書けば対応できるのではないかと思っています。(某サイトはそれでやりました)
>>
> それをどうやって切り替えますか?

デザインに関してそれほど詳しくはないのですが、
最近の携帯端末だと、それに内蔵しているフルブラウザがCSS3からサポートされる予定の
Media Queryに対応しているものも増えてきているそうです。
http://www.w3.org/TR/css3-mediaqueries/#media1

iPhoneはそれに対応しているらしく、
http://developer.apple.com/documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/chapter_3_section_2.html#//apple_ref/doc/uid/TP40006517-SW2

上記のページでは、次のように指定することで、iPhoneのような小型端末のみCSSを適用させることができるそうです。onlyと最初につけるのがミソで、こうすることで古いブラウザなどでは読みこまれなくなるそうです。

<link media="only screen and (max-device-width: 480px)"
href="small-device.css" type= "text/css" rel="stylesheet">

なお、自分が前に言及した、media typeにhandheldを指定する方法は上記のページで、

CSS3 recognizes several media types, including print, handheld, and
screen. iPhone ignores print and handheld media queries because these
types do not supply high-end web content. Therefore, use the screen
media type query for iPhone.

と書かれているように、handheldを無視すると書かれているので、今は動いているかもしれませんが、将来的には無効になる可能性も高いようなのでiPhoneに関しては誤りです。

# あくまでドキュメントなどからの憶測なので、もっと詳しいかたがいらっしゃいましたら、ご教授いただけると助かります。

ただし、iPhoneに関してはネットでの評判などを見る限りでは、ややSafariなどが不安定気味らしく(将来的なアップデートで改善されるでしょうが)、メモリを食わないように文字情報を絞ったViewを用意するということもiPhoneに最適化したサイトをつくるのであれば必要になってくるのかもしれません。

このあたりは個人的にはもう少し評判などを聞いてからどのくらいサイトをiPhoneに対応すべきか判断しようと思っている次第です。(もちろんサイトの性質によりますが;)

Keiji Yoshimi

unread,
Jul 14, 2008, 12:12:07 PM7/14/08
to jpmo...@googlegroups.com
よしみです。

>
>>> Jpmobile::Mobile::IPhoneという名前が適切かどうかは悩ましいところですね。jpmobile的には今までの分けかただと、Jpmobile::Mobile::Appleの方が適切ですかね?
>>>
>> これはどっちでもいいやって感じですが、shachiさんによると、
>> iphoneが最上位機種で、それから携帯機能をとったのがiPodTouchだということを考えると、、、
>> iphoneでいいとも思いますが、最終的にはお任せします。
>> appleの方ががいいのかなぁ。
>
> 悩むところではありますね。
> まぁ、JpmobieがVodafoneになってSoftbankになったりする(そしてそれはあらかじめ知ることができない)ので、現状で最適な名前
> を付けておくということでIphoneでいいのかなと思います。
> あと、クラス名は一応先頭だけを大文字ということにしていたのでIphoneでしょうか。

将来の仕様の変更などがよめないので、なんともいえませんが、Jpmobile::Mobile::Iphoneだとまぁわかるので問題はないと思います。
# Jpmobile::Mobile::Appleを出したのは、Appleにしておけば、iPhoneがブランドをチャンジした際に新しくキャリアをつくらなくてもすむのではないかというところをもくろんでのことです。

しかしJpmobile::Mobile::Iphoneでも拡張仕様が出てきて分けなきゃまずそうになったときにSoftbankのような方式で継承させて何か足したaliasにしておくということにすればまぁなんとかなるかと思います。
# iPhoneならソフトウェアアップデートで古い機種もバージョンアップしてくれてそのあたりを考慮しなくてもよいのであればそれが一番良いのですが;)

>>> Appleの携帯端末として今後iPhone以外のものが出てこないとも限らないので、#iphone?というメソッド名にはあまり賛成しません。また、?のついたメソッドでtrueかfalse以外の値が返ってくるのもわかりづらいかなと思います。#model_nameとかでどうでしょうか?
>>>
>> #iphone?でtrue/false以外が返るのは私の気の迷いで結構です。
>> #iphone?自体は必要かと思います。
>> 機種の判別は#model_nameでOKです。(と、twitterでの話でそうなっていました)
>
> - #iphone? で iPhone でも iPod touch でも true を返す
> - 機種を判断したいときは #model_name を使う
> で良いと思います。問題は、それらのメソッドをどのレベルに実装するかで、
> - request.mobile.iphone? か request.iphone? (後者の方が良さそう)
> - request.mobile.model_name か request.iphone.model_name か (前者の方が良さそう,た
> だrequest.iphone?との統一感が微妙か)
> (request.iphone を用意するか、それとも request.iphone は用意せず request.mobile でIphone
> のインスタンス*も*渡すか)
> のあたりをどうするかというのは迷いのあるところです。
>

自分で#model_nameをあげておいて何なのですが、

http://developer.apple.com/documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/chapter_3_section_3.html#//apple_ref/doc/uid/TP40006517-SW3

の資料に書いてあるのになぞらえておいたほうがよい気もします。

すなわち、
#platform #=> "iPhone; U; CPU like Mac OS X; en"
#rendering_engine #=> "AppleWebKit/420+"
#browser #=> "Safari/419.3"
#model_name # => "Mobile/1A543"

こんな感じでしょうか。
# メソッド名は賛否両論あるでしょうが。

request.mobile.iphoneにするか、request.iphoneはなやましいところですね。

ただ、request.mobile.iphoneにするのであれば、キャリアのクラスはJpmobile::Mobile::IPhoneになり、他のMobileの仕様にある程度合わせないと使いづらくなる気がします。

また、Jpmobile::Mobileにいるのにrequest.mobile?でtrueになるのに、テンプレートの順番はiPhone専用、PC、モバイルというい順番になるのも気持ちわるいのでどうしても対応するならJpmobile::Iphoneを押します。(
Jpmobile::Iphoneというのもおさまりがあまりよくなくて好きではないですが。)

request.iphoneにするのであれば、
それが返すインスタンスのクラスはできればJpmobile::Mobile::Iphoneという名前ではなく別のものであって欲しいですね。(Jpmobile::Iphone
? )

これは、今のrequest.mobileの仕様がJpmobile::Mobile::xなクラスからマッチするUAを探してマッチしたもののインスタンスを返すという形になっているためです。そこに例外があると統一性がないので気持ちわるいなと感じます。

request.mobile関連のメソッドはJpmobile::RequestWithMobileに分離されているので、Jpmobile::RequestWithIphoneというのを作ってやって、

module Jpmobile::RequestWithIphone
def iphone; end # => Jpmobile::Iphone
def iphone?; end
emd

とするのであれば、Jpmobile::Mobile側の仕様とは分離されるので、コアの部分がiPhone側の仕様に携帯側がひきづられませんし、
携帯側の仕様にiPhoneがひきづられないので良いかなと思います。

また、ユーザーがrequestにmobileのみを生やすか、requestにiphoneも生やしたいのかを選択する余地があります。(
Jpmobileのコアのみを使うばあい )

# Railsレベルで自動でrequest.mobile、request.iphoneを生やすかどうかはまた別問題ですが、自分はRailsは使わないのでそこは積極的には議論しません。Rails的なやりかたに賛同している人だと、生やすことに反対するひとはそんなにいなそうですが。

藤岡岳之

unread,
Jul 14, 2008, 7:58:12 PM7/14/08
to jpmo...@googlegroups.com
藤岡です。

> ただし、iPhoneに関してはネットでの評判などを見る限りでは、ややSafariなどが不安定気味らしく(将来的なアップデートで改善されるでしょうが)、メモリを食わないように文字情報を絞ったViewを用意するということもiPhoneに最適化したサイトをつくるのであれば必要になってくるのかもしれません。
>
とりあえずここだけ反応しておきますが、
若干重いJavascriptを吸い込ませると、何回も再起動させてしまいました。

Reply all
Reply to author
Forward
0 new messages