Your SlideShare is downloading. ×
Web技術勉強会 20120609
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Web技術勉強会 20120609

784
views

Published on

Web技術勉強会 20120609 …

Web技術勉強会 20120609
Heroku+Rubyで作ったアプリの紹介

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
784
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Heroku+Rubyでアプリを作る Web技術勉強会 2012/06/09Ryuichi TANAKA(@mapserver2007)
  • 2. きっかけ• 個人的な趣味ですが、走るのが好きです• runnet.jpというランナーのためのサイトがあり、 ここでレース登録をします• が、ほぼ即日で登録が埋まるため、全くレー スに出られません…• フルマラソン出たいんですけど…
  • 3. 解決策• エントリー開始になったらすぐに自分に通知 すればいいじゃない!• どうやって?• そんなニッチなツールなどない• そこでプログラミングですよ
  • 4. 技術的要件• Herokuを使いたい – ぼちぼちクラウド使うか• Rubyが書きたくなった – PHP飽きた、Javaはもういい – JavaScriptでもいいけど、今回はRuby。ツール揃っ てるし。• 可能な限り自動化 – コマンド一発で全自動が理想
  • 5. Herokuとは• Herokuの特徴• Salesforce.comにより買収• ・RubyのためのPaaS(現在はJavaなども動作する)• ・基本的に無料• ・dynosという単位(1dyno=1プロセス)で管理• ・月間750h/dynoまで無料• 31日ある月で744hなので1dynoなら無料ということ• ・Web、clockなどのdynoがある Web clock dyno• WebとClockを同時に動かすと有料。Webとバッチを同時に動かせない。• ・1プロジェクトあたり750h/dynoまで無料• つまり複数プロジェクトでも無料で運用可能• ・github連携が必須• githubからチェックアウトしてきたプロジェクトをそのままデプロイに• 使用するため• ・DBはPostgreSQLで5MBまで無料• DBをまともに使おうとすると有料必至• ・アドオンが豊富• 50個くらいある。プランによっては有料だったりもする。• クレジットカード登録しないと使えない(無料アドオンでも)
  • 6. Herokuに向いている要件• バッチ系処理は向いている – Twitter botなど• 逆にDB系は(個人では)おすすめしない – 無料でやりたいor少額で運用したい場合は向かない – DBは5MBしか無料枠で使えない• 複数プロセス(dyno)で運用するとかなり金がか かる – 1hour/dynoは0.05$。つまり、Webとバッチを同時に同 じプロジェクトで使うと0.05$x24hx30dayかかる。
  • 7. Herokuを使う• gem install heroku• 主なコマンド – heroku create (プロジェクト名) • プロジェクトを作る – heroku ps – heroku ps apps (プロジェクト名) • プロセスを見る – heroku logs • ログを見る
  • 8. HerokuでWebアプリを動かす• RailsかRackアプリ(Sinatraなど)のみ• Sinatraで作ってみた – まずはいつもどおりに作る• Gemfileに必要なgemを記述する – bundler必須 – bundle install まで実行しておく• Procfileというファイルを作る – Herokuではこのファイルを起動する
  • 9. Herokuへデプロイ• githubへpush – Herokuへはgithubを経由してデプロイされるため• Herokuにプロジェクトを作成 – heroku create –stack cedar (プロジェクト名) – --stack cedarオプションを付けないといけない – Celadon CedarというRuby1.9.2が利用できるPaaS – つまりRubyアプリはこのオプションが必須
  • 10. Herokuへデプロイ• git push heroku master – githubからHerokuへpush – そのままデプロイされる• うまくいけば以下のURLでアクセス可能 – http://(プロジェクト名).herokuapp.com• バッチ系の場合はログで確認
  • 11. 自動化• まずは普通にコードを書く• 適当なタイミングでコミット(ローカル)• Rakeを叩く(rakeで自動化) – Rspecが実行される • Rspecが通らない限り次に進めない – Rspecが通ったらgithubへpush – pushが完了したらHerokuへデプロイ – Webページの場合、デプロイ後ブラウザを立ち上 げる
  • 12. 作るアプリの概要• runnet.jpからエントリ開始大会一覧を取得 – スクレイピング• 取ってきたデータをGoogleカレンダーにマッピ ング• 定期実行
  • 13. 作成したアプリ• EventCapture – https://github.com/mapserver2007/EventCapture• 定期実行はclockwork – Herokuのcronは1日1回、有料でも1時間に1回 – clockworkは最短で1秒に1回実行可能 – gemなのでHerokuでもローカルでも使える• デモ
  • 14. 感想• Herokuはすごい簡単 – だが、Ruby初心者にはちょっときついか? – ややハマりどころもあった(すぐ解決できたが)• github楽すぎ – 少なくとも個人開発ではSubversionより楽ということがわかった。 – Herokuとの連携がすばらしくシンプル(コマンド一発)• Rubyやっぱ最高だろ – gem最強 – Herokuとの相性がやばい • bundlerあればなんでもできる• Rakeで自動化気持よすぎ – Antよりもロジックが楽にかける