Date: 2008/06/05
Category: Technology Tags: Heroku Rails TumbLens Comments: 0
ひとつ前のエントリで書いた通り,TumbLensってアプリを Rails で作って Heroku ってサービスをホストにして動かしています.Heroku を使ってみた感想などをメモする!
Heroku で Rails アプリを開発する方法は大きく分けて3種類あるかと思います.
- Heroku の IDE 上ですべての作業を行う
- ローカルや別の場所で開発したアプリのファイル一式を tar.gz で固めて Heroku にインポートする
- git を使って,ローカルで開発したものを随時 Heroku に反映させる
ボクはこれを機にちゃんと git を使ってみようと思ったのですが,SSH の設定がよく分からなくて上手くいかなかったので tar.gz のインポートを行いました.本当は git git したかった!基礎がない人はこれだから困りますね>< tar.gz を作るときは,tmp フォルダと log フォルダは含めないようにします.
Heroku の IDE も本当によくできていて悪くないんだけどね,script/console とか使いたくなるから,やっぱりローカルかどっかにちゃんとした環境を用意するのがいいよ.
あと,これは勘違いかもしれないけれど,Heroku の IDE はキャッシュが残ると厄介だ.ソースコードを書き換えてもアプリに反映されないことがあった.ちょっと待てば解決するかもだけど,ガーッと作りたいときに,これはストレス溜まるよね.モチベーションが一気に下がっちゃう.だからやっぱり,開発環境は用意しよう.今後,IDE がよりよいものになるといいいね.
作ったアプリは「appname.heroku.com」でホストされることになるんだけど,これ,早いもの勝ちだよ.今回ボクは「tumblens.heroku.com」を登録したあとに色々あって一度削除したんだけど,もう一度同じ名前のアプリを作ろうとしたら「もう使われているよ!」と言われて涙目になった.サポートにメールして古いデータを消してもらおうと思って「やぁ,ボクは日本の開発者だよ.Heroku はグレートだね.リスペクトだよ」まで書いたところでリトライしたら同名アプリを作れちゃったよ.ボクと同じ状況に陥って涙目になった人は,少し待つといい.
Heroku でホストした Rails アプリには,body の閉じタグの直前に heroku_toolbar の JavaScript が読み込まれて,こいつが IE でエラーを起こすよ.TumbLens はそもそも Firefox での利用しか想定しないものだからいいけどね,普通の Rails アプリだとそうもいきません.困ったね.
Date: 2008/06/04
Category: Technology Tags: Heroku Rails TumbLens Comments: 1
言いたいことはいっぱいあるけど,ゆっくり順番に話そうと思う!
PicLensってなに
PicLens | Immersive Views Across the Web
PicLens :: Firefox Add-ons
これはもう PicLens のサイトを見てください!ステキなインタフェースですよね!PicLens の拡張機能をインストールした Firefox で Flickr や Google の画像検索の結果ページを見ると,とってもワクワクしちゃいます!
じゃあ,こんなステキなインタフェースでみんなが見たいものはなんでしょう.ひとりの囚人は壁を見ていた… もちろんあたしは Tumblr を見るわ! というわけで作ってみたのが TumbLens です.

TumbLens
Tumblr のユーザ名と Tumblelog の URL を入力すると,PicLens 対応サイトが出力されます.あとは,PicLens を起動して,思う存分トリップしちゃってください!
スクリーンキャストは画質が低すぎて話になりませんね…!
Tumblr にポストされた良質のコンテンツを,PicLens という優れたインタフェースと組み合わせたら,きっと楽しいだろうと考えました.PicLens 対応サイトの作り方は公式リファレンスに書いてあります.また,MacBookをPicLens対応サーバにしてiPhoto Libraryを覗いてみるがとても参考になりました!というか,こちらのエントリがなかったら PicLens 対応サイトを作ろうとしていなかったと思います.ありがとうございます!
Heroku.comをホストにする
Rails アプリとして作った TumbLens は,一時期すごく話題になった Heroku.com をホストにして動かしています.最初に Heroku を知ったときは,ブラウザ上で Rails アプリが開発できちゃう IDE だと思ったから,「それならローカルで開発した方がいいよなー」と思ってあまり気にしていなかったんだけど,Rails アプリのホストとして使うのはアリですね.面倒なデプロイ作業から開放されます.TumbLens のような小物には充分なホスト先だと思います.
Heroku の使用感については,エントリを改めて書こうかな.
Date: 2008/04/22
Category: Technology Tags: Rails Ruby Suica Comments: 0
上京して働き始めてから3週間ほどが経ちました.思っていたほどの気持ちの変化もなく,これまで通りのノリで楽しく暮らしています.それでも,環境の変化はボクにたくさんのものを与えてくれますね.嬉しいことです.ようやく生活も落ち着いてきたので,少しずつブログの更新頻度も高めていきたいです.
会社に属するようになって改めて,「手続き的なものは苦手だなぁ」と感じます.そんな中でも,日々の交通費の申請がとても面倒だったので,PaSoRi を使って Suica の履歴を取得し,半自動化を試みました.
Rails で社内用 Web アプリ!
こんなアプリを作ってみました.
誰がいつどの駅からどの駅まで移動していくら掛かったのか, Suica の履歴から分かります.「この駅は誰々がよく利用している」だとか「この日はどこどこに行ったよねー」だとか,そんな会話が生まれるといいですね.
Suica の履歴
Leopard で Ruby から PaSoRi を通して Suica のデータを扱えるようにするため,以下のリンク先を手順を踏みました.
Leopard 上の Xcode を使う場合は「有効なアーキテクチャ」の項目から「ppc」を除いてやるとビルドが上手くいくようです.
駅のデータはこちらのものを利用させていただきました.Excel 形式のものを CSV に変換してプログラムに読ませましたが,重複行があったり,昔と今で駅の名前が変わっていて同じコードが振られているものがあったりするので,多少の整形が必要でした.
ここまでの下準備が最も大変だったわけですが,ようやく Ruby から Suica のデータを読めたときはテンションが上がりました!でもでも,Suica には最新20件の利用履歴しか保存されておらず,日付のデータは取れても時刻までは取れないし,ちょっと残念です.もっと細かいデータまで扱えたら楽しいのになぁ.
まとめ
会社の手続きのような面倒なものも積極的に楽しくしていきたい!デバイスを扱うプログラミングは楽しい!
追記
ブックマークコメントにお返事します.
ところで買い物履歴も吸い出すんですか?
Quotation from はてなブックマーク - kyo_juのブックマーク / 2008年05月03日
Suica は,買い物履歴も含めて20件まで保持していて,PaSoRi から読み出すタイミングでは買い物履歴も取得します.今回作ったアプリでは,その後の処理で買い物履歴を除いて,電車利用の履歴だけを利用しています.
Date: 2007/12/02
Category: Technology Tags: Rails Comments: 0
最近ちょこちょこ触っているRailsの話を少しだけ書きます.検索してもあまり出てこない話なので,キーワードを散りばめつつ書いてみよう!
RailsのPagination
RailsにはPaginationという仕組みがあって,よくあるページング処理を簡単に実現できます.例えば,controller側で
# controllers/model_controller.rb
class ModelController < ApplicationController
def index
@model_pages, @models = paginate :models, :per_page => 10
end
end
と書いておくと,viewの方では
# views/model/index.rhtml
<ul>
< %- for m in @models -%>
<li>m.name</li>
< %- end -%>
</ul>
<%= link_to 'Previous page', { :page => @model_pages.current.previous } if @model_pages.current.previous %>
<%= link_to 'Next page', { :page => @model_pages.current.next } if @model_pages.current.next %>
と書くだけで1ページにper_page分ずつ表示してくれて,前後のページへのリンクも出せちゃうわけです.と,まぁここまではただのPaginationの話で,詳しい説明がWeb上にたくさんあるので見つかるでしょう.このPaginationはRails 2.0ではプラグイン扱いになるようですね!使い方が変わるでしょうから要チェックです.
link_toのhtml_option
さてさて,ページング処理を実装するようなサイトでしたら,AutoPagerizeに対応させたくなるのが人情ってもんです.そのためには次のページへのリンクに「@rel=”next”」を付与する必要があります.しかし! a タグは link_to メソッドで自動生成しているから,属性を付与できません!とか騒いでいたら,link_to メソッドには html_option なるものがありました.ちゃんとドキュメントを読めって話でした.
<%= link_to 'Next page', { :page => @model_pages.current.next }, { :rel => "next" } if @model_pages.current.next %>
こうしてやればOKです.aタグにclassやidを振りたいときにもhtml_optionが必要ですね.覚えておこう.