Web技術勉強会 20120609

1,107 views

Published on

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

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,107
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
4
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Web技術勉強会 20120609

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

×