2011年4月27日

僕はB-mobile Fair使えるかなあ

スマートフォン用の通信環境をいろいろと探しているが、今のiPhone3GSは、割引があるみたいで、月々3780円だ。
それよりも安くなるのかなあと見てみると、ドコモだと、月々サポートをいれても6000円弱になるみたい。
ソフトバンクやauもたぶん似たようなものだろうなあ。
考えてみたら、スマフォって高いね。
僕が学生の頃、毎月6000円払えって言われたら、払えなかったと思う。

それはさておき、先日出た1GBまで使えて、4ヶ月で9800円というb-mobile fairがスマフォの通信環境の選択肢にあがってくる。
端末に何を買うかは別として、(Galaxy SII、いいなあ。MilestoneにもSIMいれてあげたいし・・・)とりあえず、今どの程度パケットを使っているかを把握しておこう。

My Softbankにアクセスしてみると、過去、月に10万円とか20万円とかパケットを使っている月もあるみたい。
これなら、一瞬で1G超えるやん、と思って計算してみたら、どうもそんなことはないみたい。
Softbankのプランは1パケット0.08円で計算しているから、高く見えるんだろう。

Softbankの割引前の請求額がどの程度のデータ通信料になるのか、こちらを参考に計算してみよう。
まず、8パケットで1KBになるので、8で割る。
これがKBなので、GBに換算する。

だいたいだけど、KBからGBへの変換は百万で割れば概算できる。
1MB=1024KBで、1GB=1024MBだと思うんだけど、ブログでは、わざわざ1GB=1000MBと修正している。
めんどうなので、ここでは概算する。

すると出たのが、12万円ぐらい使っているときで0.18G、20万円だと0.31GB。
4ヶ月使うと・・・20万円ペースだと1.25GBになるが、12万円ペースだと0.75GB。

20万円ペースで使うということはあんまりないと思うので、僕の場合はちょうどb-mobile fairの範囲内っぽい。
ちなみに、20万円ペースというのは、子ども番組をYouTubeでけっこう見たとき。
ふだん、YouTubeとか見ないので、平均すると、12万円ペースと思えばよさそう。

自宅や職場ではWifiがあるし、移動中はほんとに移動しているからネットってあんまりみないしなあ。

ちなみに、iPhoneは一昨年の12月に契約したから、今解約すると1万円ぐらいのペナルティ(かな?)がかかる。
Fairにすると、月2500円なので月に800円ぐらい浮くから・・・12月まで8ヶ月で6400円の差額。
ペナルティを考えると、もうしばらくiPhoneでひっぱったほうが得かも。。。

なんだかんだいって、今使っているサービスにロックインされている感じがする。

Softbankで計算すると月に12万円〜20万円ぐらいになるものを、b-mobileで使うと月に2500円ですむというこの結果、よく考えると損か得かというレベルの問題ではない気がする。
Softbank(だけではなく、ドコモやauも)のパケット単価が高すぎるのではないか。
現代の用途から考えると、二段階定額と言ってもこの単価では上限に張り付いてしまう。
Wired Visionの記事で詳しくこの点が検討されている。

b-mobileのばあいは、パケット単価が100分の1ぐらいだ。
ドコモから回線を買って提供しているにも関わらず、100分の1の価格で提供できるということの意味をしっかり考えないといけない。
そして、大手三者がほぼ横並びの価格設定と料金体系を作っていることも。

僕はここまで書いて、抗議の意味も込めて、b-mobileに引っ越しすることにした。

2011年4月9日

link_to :remote=>trueには、Named Routeが必要?

Rails3でAJAXを使って、画面を動的に更新したいと思っていたのだが、どうもうまく行かなくてすごくはまってしまった。
どうやら、replace_htmlなどを動作させるには、Named Routeを指定する必要があるようだ。

jquery-railsをインストールした環境で、こんなコードは動く。
def show
@item = Item.find(params[:id])
respond_to do |format|
format.js do
render(:update) do |page|
page.replace_html 'Change', "Okay!"
end
end
end
end

しかし、これは動かない。
def showitem
@item = Item.find(params[:id])
respond_to do |format|
format.js do
render(:update) do |page|
page.replace_html 'Change', "Okay!"
end
end
end
end


いずれも、ページ中の
の中身を置き換えるだけのものだ。

show.html.erbで定義したリンクはこんな感じ。
showへのリンク: <%= link_to 'update', item_path(@mole), :remote => true %>
showitemへのリンク: <%= link_to 'update2', :action => 'showitem', :remote => true, :format => 'js' %>


showitemは、config/routes.rbでもこんな感じで定義
match 'items#showitem' => 'items#showitem'


こうすると、show.html.erbのソースは
update
update2

となる。
remote => trueが前者はちゃんとdata-remoteと認識されているのに対して、後者は、単なるパラメータになってしまっている。

後者は、リンクをクリックすると、javascriptが表示されるだけで、何も起こらない。

ここでずーっとはまったのだが、ふと、Named Routeを設定したらどうなるのか?と思い、やってみたら、うまく動いた。

route.rb
match 'items#showitem' => 'items#showitem', :as => 'showitem_item'

showitemへのリンク: <%= link_to 'update2', showitem_item_path, :remote => true %>

htmlのソース:update2


なにか間違えているからこうなるのかなあ。
Named Routeなしで同じことができるべきという気がするんだけど・・・