SlideShare a Scribd company logo
Heroku+Rubyでアプリを作る

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

More Related Content

What's hot

超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
Kanako Kobayashi
 
ゲーム会社でのRuby : rails活用事例
ゲーム会社でのRuby : rails活用事例ゲーム会社でのRuby : rails活用事例
ゲーム会社でのRuby : rails活用事例
Yasutomo Uemori
 
Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編
Yohei Yasukawa
 
AWS初心者が自作CGIをサーバレス実装の設計をしてみる
AWS初心者が自作CGIをサーバレス実装の設計をしてみるAWS初心者が自作CGIをサーバレス実装の設計をしてみる
AWS初心者が自作CGIをサーバレス実装の設計をしてみる
祐樹 夏目
 
SunspotではじめるSolr入門
SunspotではじめるSolr入門SunspotではじめるSolr入門
SunspotではじめるSolr入門
Takao Baba
 
Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶHiroshi Oyamada
 
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
Hironori Sekine
 
GitHub Enterprise with GMO Pepabo
GitHub Enterprise with GMO PepaboGitHub Enterprise with GMO Pepabo
GitHub Enterprise with GMO Pepabo
Hiroshi SHIBATA
 
Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースNext GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースよしだ あつし
 
chat bot framework for Java8
chat bot framework for Java8chat bot framework for Java8
chat bot framework for Java8
masahitojp
 
OpenShift のある生活
OpenShift のある生活OpenShift のある生活
OpenShift のある生活
Yoshimasa Tanabe
 
Rails解説セミナー: Railsのアップグレード編
Rails解説セミナー: Railsのアップグレード編Rails解説セミナー: Railsのアップグレード編
Rails解説セミナー: Railsのアップグレード編
Yohei Yasukawa
 
ChatOps with Hubot
ChatOps with HubotChatOps with Hubot
ChatOps with Hubot
Yoshiaki Yoshida
 
進撃のSbt
進撃のSbt進撃のSbt
進撃のSbt
Yuto Suzuki
 
ぼくのかんがえたさいきょうの Rails スタートダッシュ
ぼくのかんがえたさいきょうの Rails スタートダッシュぼくのかんがえたさいきょうの Rails スタートダッシュ
ぼくのかんがえたさいきょうの Rails スタートダッシュ
Kenji Mori
 
Heroku で作る
スケーラブルな 
PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーションHeroku で作る
スケーラブルな 
PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーション
Masashi Shinbara
 
Robot Framework (のSelenium2Libraryのお話)
Robot Framework (のSelenium2Libraryのお話)Robot Framework (のSelenium2Libraryのお話)
Robot Framework (のSelenium2Libraryのお話)
泰 増田
 
Hatena blogdevelopmentflow
Hatena blogdevelopmentflowHatena blogdevelopmentflow
Hatena blogdevelopmentflow
Yasuhiro Onishi
 
Rails解説セミナー: Rails国際化 (I18n) API
Rails解説セミナー: Rails国際化 (I18n) APIRails解説セミナー: Rails国際化 (I18n) API
Rails解説セミナー: Rails国際化 (I18n) API
Yohei Yasukawa
 

What's hot (20)

超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
 
ゲーム会社でのRuby : rails活用事例
ゲーム会社でのRuby : rails活用事例ゲーム会社でのRuby : rails活用事例
ゲーム会社でのRuby : rails活用事例
 
Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編
 
AWS初心者が自作CGIをサーバレス実装の設計をしてみる
AWS初心者が自作CGIをサーバレス実装の設計をしてみるAWS初心者が自作CGIをサーバレス実装の設計をしてみる
AWS初心者が自作CGIをサーバレス実装の設計をしてみる
 
SunspotではじめるSolr入門
SunspotではじめるSolr入門SunspotではじめるSolr入門
SunspotではじめるSolr入門
 
Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶ
 
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
 
github star note
github star notegithub star note
github star note
 
GitHub Enterprise with GMO Pepabo
GitHub Enterprise with GMO PepaboGitHub Enterprise with GMO Pepabo
GitHub Enterprise with GMO Pepabo
 
Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースNext GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリース
 
chat bot framework for Java8
chat bot framework for Java8chat bot framework for Java8
chat bot framework for Java8
 
OpenShift のある生活
OpenShift のある生活OpenShift のある生活
OpenShift のある生活
 
Rails解説セミナー: Railsのアップグレード編
Rails解説セミナー: Railsのアップグレード編Rails解説セミナー: Railsのアップグレード編
Rails解説セミナー: Railsのアップグレード編
 
ChatOps with Hubot
ChatOps with HubotChatOps with Hubot
ChatOps with Hubot
 
進撃のSbt
進撃のSbt進撃のSbt
進撃のSbt
 
ぼくのかんがえたさいきょうの Rails スタートダッシュ
ぼくのかんがえたさいきょうの Rails スタートダッシュぼくのかんがえたさいきょうの Rails スタートダッシュ
ぼくのかんがえたさいきょうの Rails スタートダッシュ
 
Heroku で作る
スケーラブルな 
PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーションHeroku で作る
スケーラブルな 
PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーション
 
Robot Framework (のSelenium2Libraryのお話)
Robot Framework (のSelenium2Libraryのお話)Robot Framework (のSelenium2Libraryのお話)
Robot Framework (のSelenium2Libraryのお話)
 
Hatena blogdevelopmentflow
Hatena blogdevelopmentflowHatena blogdevelopmentflow
Hatena blogdevelopmentflow
 
Rails解説セミナー: Rails国際化 (I18n) API
Rails解説セミナー: Rails国際化 (I18n) APIRails解説セミナー: Rails国際化 (I18n) API
Rails解説セミナー: Rails国際化 (I18n) API
 

Viewers also liked

Heroku使ったWebサービスとステマ
Heroku使ったWebサービスとステマHeroku使ったWebサービスとステマ
Heroku使ったWebサービスとステマ
Mikoto Kurage
 
VPSやめてHerokuに移行したお話
VPSやめてHerokuに移行したお話VPSやめてHerokuに移行したお話
VPSやめてHerokuに移行したお話
Hiroyuki Hayashi
 
Heroku Meetup #11 New Year Party!! - 新年会 - 非IT人間のherokuの使い方
Heroku Meetup #11 New Year Party!! - 新年会 - 非IT人間のherokuの使い方Heroku Meetup #11 New Year Party!! - 新年会 - 非IT人間のherokuの使い方
Heroku Meetup #11 New Year Party!! - 新年会 - 非IT人間のherokuの使い方Ryuko Toyokawa
 
Herokuをつかってみた。
Herokuをつかってみた。Herokuをつかってみた。
Herokuをつかってみた。Ueki Kouji
 
実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09
実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09
実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09
Masahiro Nishimi
 
特盛!Heroku
特盛!Heroku特盛!Heroku
特盛!Heroku
Shunji Konishi
 
Wantedlyを2年間Herokuで運用した話
Wantedlyを2年間Herokuで運用した話Wantedlyを2年間Herokuで運用した話
Wantedlyを2年間Herokuで運用した話
Yoshinori Kawasaki
 
10年前「Microsoftの社員だと思って働け!」と教育されて嫌気がさして出てった人から見た「外の世界」の話 #JCCMVP
10年前「Microsoftの社員だと思って働け!」と教育されて嫌気がさして出てった人から見た「外の世界」の話 #JCCMVP10年前「Microsoftの社員だと思って働け!」と教育されて嫌気がさして出てった人から見た「外の世界」の話 #JCCMVP
10年前「Microsoftの社員だと思って働け!」と教育されて嫌気がさして出てった人から見た「外の世界」の話 #JCCMVP
Kazuhito Miura
 
かんたんHeroku入門 - Heroku へのデプロイと運用 -
かんたんHeroku入門 - Heroku へのデプロイと運用 -かんたんHeroku入門 - Heroku へのデプロイと運用 -
かんたんHeroku入門 - Heroku へのデプロイと運用 -
sakagami3
 

Viewers also liked (9)

Heroku使ったWebサービスとステマ
Heroku使ったWebサービスとステマHeroku使ったWebサービスとステマ
Heroku使ったWebサービスとステマ
 
VPSやめてHerokuに移行したお話
VPSやめてHerokuに移行したお話VPSやめてHerokuに移行したお話
VPSやめてHerokuに移行したお話
 
Heroku Meetup #11 New Year Party!! - 新年会 - 非IT人間のherokuの使い方
Heroku Meetup #11 New Year Party!! - 新年会 - 非IT人間のherokuの使い方Heroku Meetup #11 New Year Party!! - 新年会 - 非IT人間のherokuの使い方
Heroku Meetup #11 New Year Party!! - 新年会 - 非IT人間のherokuの使い方
 
Herokuをつかってみた。
Herokuをつかってみた。Herokuをつかってみた。
Herokuをつかってみた。
 
実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09
実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09
実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09
 
特盛!Heroku
特盛!Heroku特盛!Heroku
特盛!Heroku
 
Wantedlyを2年間Herokuで運用した話
Wantedlyを2年間Herokuで運用した話Wantedlyを2年間Herokuで運用した話
Wantedlyを2年間Herokuで運用した話
 
10年前「Microsoftの社員だと思って働け!」と教育されて嫌気がさして出てった人から見た「外の世界」の話 #JCCMVP
10年前「Microsoftの社員だと思って働け!」と教育されて嫌気がさして出てった人から見た「外の世界」の話 #JCCMVP10年前「Microsoftの社員だと思って働け!」と教育されて嫌気がさして出てった人から見た「外の世界」の話 #JCCMVP
10年前「Microsoftの社員だと思って働け!」と教育されて嫌気がさして出てった人から見た「外の世界」の話 #JCCMVP
 
かんたんHeroku入門 - Heroku へのデプロイと運用 -
かんたんHeroku入門 - Heroku へのデプロイと運用 -かんたんHeroku入門 - Heroku へのデプロイと運用 -
かんたんHeroku入門 - Heroku へのデプロイと運用 -
 

Similar to Web技術勉強会 20120609

Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでScala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまで
Hideaki Miyake
 
Sprocketsを捨てたい
Sprocketsを捨てたいSprocketsを捨てたい
Sprocketsを捨てたい
Masato Noguchi
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎
真哉 杉野
 
bootsnapはどれくらい早くなるのか
bootsnapはどれくらい早くなるのかbootsnapはどれくらい早くなるのか
bootsnapはどれくらい早くなるのか
ota42y
 
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
Salesforce Developers Japan
 
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったPHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
Hironobu Saitoh
 
喋って、DEMOで 伝える 僕がHerokuを使う理由
喋って、DEMOで 伝える 僕がHerokuを使う理由喋って、DEMOで 伝える 僕がHerokuを使う理由
喋って、DEMOで 伝える 僕がHerokuを使う理由
Masaru Gushiken
 
VMを改めて学んで見る
VMを改めて学んで見るVMを改めて学んで見る
VMを改めて学んで見る
kishima7
 
Type scriptmemo
Type scriptmemoType scriptmemo
Type scriptmemoytanno
 
Arduino を PHP で制御する
Arduino を PHP で制御するArduino を PHP で制御する
Arduino を PHP で制御する
Kenichi Ahagon
 
コミュニティのある風景
コミュニティのある風景コミュニティのある風景
コミュニティのある風景
Ryunosuke SATO
 
たのしいNode.js
たのしいNode.jsたのしいNode.js
たのしいNode.jsishiki-takai
 
ASP.NETからASP.NET Coreに移行した話
ASP.NETからASP.NET Coreに移行した話ASP.NETからASP.NET Coreに移行した話
ASP.NETからASP.NET Coreに移行した話
Taiga Takahari
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングterurou
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話
Naoto Koshikawa
 
GitHubで見つかるFileMaker関連ソフトウェア
GitHubで見つかるFileMaker関連ソフトウェアGitHubで見つかるFileMaker関連ソフトウェア
GitHubで見つかるFileMaker関連ソフトウェア
Atsushi Matsuo
 
PHPとJavaScriptの噺
PHPとJavaScriptの噺PHPとJavaScriptの噺
PHPとJavaScriptの噺Shogo Kawahara
 
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャGoji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
Shiroyagi Corporation
 
20150227 イタンジプログラミング講座テキスト第4回
20150227 イタンジプログラミング講座テキスト第4回20150227 イタンジプログラミング講座テキスト第4回
20150227 イタンジプログラミング講座テキスト第4回
Yusuke Yokozawa
 
Hadoop Source Code Reading #17
Hadoop Source Code Reading #17Hadoop Source Code Reading #17
Hadoop Source Code Reading #17
Shingo Furuyama
 

Similar to Web技術勉強会 20120609 (20)

Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでScala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまで
 
Sprocketsを捨てたい
Sprocketsを捨てたいSprocketsを捨てたい
Sprocketsを捨てたい
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎
 
bootsnapはどれくらい早くなるのか
bootsnapはどれくらい早くなるのかbootsnapはどれくらい早くなるのか
bootsnapはどれくらい早くなるのか
 
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
 
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったPHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
 
喋って、DEMOで 伝える 僕がHerokuを使う理由
喋って、DEMOで 伝える 僕がHerokuを使う理由喋って、DEMOで 伝える 僕がHerokuを使う理由
喋って、DEMOで 伝える 僕がHerokuを使う理由
 
VMを改めて学んで見る
VMを改めて学んで見るVMを改めて学んで見る
VMを改めて学んで見る
 
Type scriptmemo
Type scriptmemoType scriptmemo
Type scriptmemo
 
Arduino を PHP で制御する
Arduino を PHP で制御するArduino を PHP で制御する
Arduino を PHP で制御する
 
コミュニティのある風景
コミュニティのある風景コミュニティのある風景
コミュニティのある風景
 
たのしいNode.js
たのしいNode.jsたのしいNode.js
たのしいNode.js
 
ASP.NETからASP.NET Coreに移行した話
ASP.NETからASP.NET Coreに移行した話ASP.NETからASP.NET Coreに移行した話
ASP.NETからASP.NET Coreに移行した話
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話
 
GitHubで見つかるFileMaker関連ソフトウェア
GitHubで見つかるFileMaker関連ソフトウェアGitHubで見つかるFileMaker関連ソフトウェア
GitHubで見つかるFileMaker関連ソフトウェア
 
PHPとJavaScriptの噺
PHPとJavaScriptの噺PHPとJavaScriptの噺
PHPとJavaScriptの噺
 
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャGoji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
 
20150227 イタンジプログラミング講座テキスト第4回
20150227 イタンジプログラミング講座テキスト第4回20150227 イタンジプログラミング講座テキスト第4回
20150227 イタンジプログラミング講座テキスト第4回
 
Hadoop Source Code Reading #17
Hadoop Source Code Reading #17Hadoop Source Code Reading #17
Hadoop Source Code Reading #17
 

More from 龍一 田中

WebSocketでリアルタイム処理をする
WebSocketでリアルタイム処理をするWebSocketでリアルタイム処理をする
WebSocketでリアルタイム処理をする
龍一 田中
 
Web技術勉強会 20130525 - Google Cloud Messaging入門
Web技術勉強会 20130525 - Google Cloud Messaging入門Web技術勉強会 20130525 - Google Cloud Messaging入門
Web技術勉強会 20130525 - Google Cloud Messaging入門
龍一 田中
 
Web技術勉強会 20120728
Web技術勉強会 20120728Web技術勉強会 20120728
Web技術勉強会 20120728
龍一 田中
 
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドするWeb技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
龍一 田中
 
Web技術勉強会 20111112
Web技術勉強会 20111112Web技術勉強会 20111112
Web技術勉強会 20111112龍一 田中
 
Web技術勉強会 20110723
Web技術勉強会 20110723Web技術勉強会 20110723
Web技術勉強会 20110723龍一 田中
 
Web技術勉強会 20110611
Web技術勉強会 20110611Web技術勉強会 20110611
Web技術勉強会 20110611
龍一 田中
 
Web技術勉強会 20110528
Web技術勉強会 20110528Web技術勉強会 20110528
Web技術勉強会 20110528
龍一 田中
 
Web技術勉強会 20110514
Web技術勉強会 20110514Web技術勉強会 20110514
Web技術勉強会 20110514
龍一 田中
 
Web技術勉強会 20100925
Web技術勉強会 20100925Web技術勉強会 20100925
Web技術勉強会 20100925龍一 田中
 
Web技術勉強会 20100424
Web技術勉強会 20100424Web技術勉強会 20100424
Web技術勉強会 20100424
龍一 田中
 
Web技術勉強会 第38回
Web技術勉強会 第38回Web技術勉強会 第38回
Web技術勉強会 第38回
龍一 田中
 
Web技術勉強会 第37回
Web技術勉強会 第37回Web技術勉強会 第37回
Web技術勉強会 第37回
龍一 田中
 
Web技術勉強会 第34回
Web技術勉強会 第34回Web技術勉強会 第34回
Web技術勉強会 第34回
龍一 田中
 
Web技術勉強会 第33回
Web技術勉強会 第33回Web技術勉強会 第33回
Web技術勉強会 第33回
龍一 田中
 
Web技術勉強会 第31回
Web技術勉強会 第31回Web技術勉強会 第31回
Web技術勉強会 第31回
龍一 田中
 
Web技術勉強会 第30回
Web技術勉強会 第30回Web技術勉強会 第30回
Web技術勉強会 第30回
龍一 田中
 
Web技術勉強会 第29回
Web技術勉強会 第29回Web技術勉強会 第29回
Web技術勉強会 第29回
龍一 田中
 
Web技術勉強会 第28回
Web技術勉強会 第28回Web技術勉強会 第28回
Web技術勉強会 第28回
龍一 田中
 
Web技術勉強会 第26回
Web技術勉強会 第26回Web技術勉強会 第26回
Web技術勉強会 第26回
龍一 田中
 

More from 龍一 田中 (20)

WebSocketでリアルタイム処理をする
WebSocketでリアルタイム処理をするWebSocketでリアルタイム処理をする
WebSocketでリアルタイム処理をする
 
Web技術勉強会 20130525 - Google Cloud Messaging入門
Web技術勉強会 20130525 - Google Cloud Messaging入門Web技術勉強会 20130525 - Google Cloud Messaging入門
Web技術勉強会 20130525 - Google Cloud Messaging入門
 
Web技術勉強会 20120728
Web技術勉強会 20120728Web技術勉強会 20120728
Web技術勉強会 20120728
 
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドするWeb技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
 
Web技術勉強会 20111112
Web技術勉強会 20111112Web技術勉強会 20111112
Web技術勉強会 20111112
 
Web技術勉強会 20110723
Web技術勉強会 20110723Web技術勉強会 20110723
Web技術勉強会 20110723
 
Web技術勉強会 20110611
Web技術勉強会 20110611Web技術勉強会 20110611
Web技術勉強会 20110611
 
Web技術勉強会 20110528
Web技術勉強会 20110528Web技術勉強会 20110528
Web技術勉強会 20110528
 
Web技術勉強会 20110514
Web技術勉強会 20110514Web技術勉強会 20110514
Web技術勉強会 20110514
 
Web技術勉強会 20100925
Web技術勉強会 20100925Web技術勉強会 20100925
Web技術勉強会 20100925
 
Web技術勉強会 20100424
Web技術勉強会 20100424Web技術勉強会 20100424
Web技術勉強会 20100424
 
Web技術勉強会 第38回
Web技術勉強会 第38回Web技術勉強会 第38回
Web技術勉強会 第38回
 
Web技術勉強会 第37回
Web技術勉強会 第37回Web技術勉強会 第37回
Web技術勉強会 第37回
 
Web技術勉強会 第34回
Web技術勉強会 第34回Web技術勉強会 第34回
Web技術勉強会 第34回
 
Web技術勉強会 第33回
Web技術勉強会 第33回Web技術勉強会 第33回
Web技術勉強会 第33回
 
Web技術勉強会 第31回
Web技術勉強会 第31回Web技術勉強会 第31回
Web技術勉強会 第31回
 
Web技術勉強会 第30回
Web技術勉強会 第30回Web技術勉強会 第30回
Web技術勉強会 第30回
 
Web技術勉強会 第29回
Web技術勉強会 第29回Web技術勉強会 第29回
Web技術勉強会 第29回
 
Web技術勉強会 第28回
Web技術勉強会 第28回Web技術勉強会 第28回
Web技術勉強会 第28回
 
Web技術勉強会 第26回
Web技術勉強会 第26回Web技術勉強会 第26回
Web技術勉強会 第26回
 

Recently uploaded

Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
Osaka University
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 

Recently uploaded (7)

Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 

Web技術勉強会 20120609

  • 1. Heroku+Rubyでアプリを作る Web技術勉強会 2012/06/09 Ryuichi 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よりもロジックが楽にかける