タグ「Rails」を含むエントリ

Heroku.comで作るRailsアプリ

ひとつ前のエントリで書いた通り,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 アプリだとそうもいきません.困ったね.

TumbLensをHerokuにてリリース

言いたいことはいっぱいあるけど,ゆっくり順番に話そうと思う!

PicLensってなに

PicLens | Immersive Views Across the Web

PicLens :: Firefox Add-ons

これはもう PicLens のサイトを見てください!ステキなインタフェースですよね!PicLens の拡張機能をインストールした Firefox で Flickr や Google の画像検索の結果ページを見ると,とってもワクワクしちゃいます!

じゃあ,こんなステキなインタフェースでみんなが見たいものはなんでしょう.ひとりの囚人は壁を見ていた… もちろんあたしは Tumblr を見るわ! というわけで作ってみたのが TumbLens です.

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 の使用感については,エントリを改めて書こうかな.

Suicaの履歴で遊ぶ

上京して働き始めてから3週間ほどが経ちました.思っていたほどの気持ちの変化もなく,これまで通りのノリで楽しく暮らしています.それでも,環境の変化はボクにたくさんのものを与えてくれますね.嬉しいことです.ようやく生活も落ち着いてきたので,少しずつブログの更新頻度も高めていきたいです.

会社に属するようになって改めて,「手続き的なものは苦手だなぁ」と感じます.そんな中でも,日々の交通費の申請がとても面倒だったので,PaSoRi を使って Suica の履歴を取得し,半自動化を試みました.

SONY RC-S320 非接触ICカードリーダ/ライタ PaSoRi 「パソリ」 SONY RC-S320 非接触ICカードリーダ/ライタ PaSoRi 「パソリ」

ソニー
売り上げランキング : 148

Amazonで詳しく見る by G-Tools

Rails で社内用 Web アプリ!

こんなアプリを作ってみました.

PSReadr
Uploaded with plasq’s Skitch!

誰がいつどの駅からどの駅まで移動していくら掛かったのか, 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 から読み出すタイミングでは買い物履歴も取得します.今回作ったアプリでは,その後の処理で買い物履歴を除いて,電車利用の履歴だけを利用しています.

RailsのPagenationとlink_toのhtml_option

最近ちょこちょこ触っている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が必要ですね.覚えておこう.