Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Ruby  開発者のための
Heroku⼊入⾨門
Salesforce  Developer  Web  セミナー
tabe@salesforce.com
@sho7650 (Qiita/
Twitter)	
​ Takashi  Abe  (...
本⽇日のセミナー内容
内容
•  Ruby  on  Rails  (+  Sinatra)  を  Heroku  へデプロイしてみよう
•  ところで、Heroku  って?
対象者
•  Ruby  (Rails)  で開発経験のある⼈人...
アジェンダ
1.  Heroku  概要          15:05〜~15:10
2.  Heroku  を使うには       15:10〜~15:15
3.  Heroku  を使う流流れ       15:15〜~15:25
4.  ...
   自己紹介
阿  部    崇
Lead  Solution  Engineer  (@sho7650)
アプリエンジニア  à  HWエンジニア  à  インフラエンジニア
à  アーキテクト兼ITコンサルà  Salesforc...
Forward-Looking Statements
​ Statement under the Private Securities Litigation Reform Act of 1995:
​ This presentation may...
Heroku  概要
Heroku  とはどこから来て、どこへ⾏行行くのか
Heroku Overview
​ クラウド基盤で、Heroku  の位置づけ
アプリケーション
ミドルウェア
DBMS
OS
仮想化
サーバー
ストレージ
ネットワーク
施設
ユ
ー
ザ
管
理理
アプリケーション
ミドルウェア
DBMS
O...
Heroku  Overview
​ クラウド基盤で、Heroku  の位置づけ...は、PaaS!
アプリケーション
ミドルウェア
DBMS
OS
仮想化
サーバー
ストレージ
ネットワーク
施設
ユ
ー
ザ
管
理理
アプリケーション
ミド...
Heroku を構成するもの
​ すべては開発者のため
Dyno
いつでもすぐにカンタン
デプロイ、多くの⾔言語を
サポートし、スケールし
て実⾏行行できる環境
Data
エンタープライズでの利利⽤用
も想定して最適化された、
PostgreS...
Heroku  を使うには
まずサインアップしましょう
Ruby  on  Rails  on  Heroku  :  利利⽤用前提条件
• Heroku  アカウントを持っていること  (このあと、取得の仕⽅方をご説明します)
• Local  で  Ruby  (on  Rails)  の実⾏行...
Heroku  の事前準備
​ Heroku  のアカウントを作成しましょう。まずは、“Sign  up”  から始めます
https://www.heroku.com/home
Heroku  の事前準備
​ 利利⽤用者の情報を⼊入⼒力力して、  “FREE  ACCOUNT”  を作りましょう。
Heroku  の事前準備
​ Heroku  を操作するための  “Heroku  CLI”  を導⼊入しよう
https://devcenter.heroku.com/articles/heroku-cli
Heroku  を使う流流れ
アプリケーションをデプロイするには
Heroku  へ  deploy  する⼀一般的なフロー
アプリを開発したら、必要なアドオンを追加して  “git  push”  するだけ!
起動確認デプロイアドオン追加Herokuアプリ追加アプリ準備
アプリ開発
git  clone
ア...
アプリケーションを⼊入⼿手(開発)しましょう
​ 今回は、すでに完成しているアプリを使ってみましょう
$  git  clone  https://github.com/tabesfdc/heroku_̲ruby_̲0124.git
Cloni...
Heroku  上にアプリ(Dyno)  を準備しましょう
​ アプリケーションを⼊入れる器を、Heroku側に準備します
$ heroku create
Creating app... done, ⬢ calm-lowlands-14220
...
Heroku  Addon  を追加してみよう
​ hobby-‐‑‒dev  プランの  Heroku  Postgres  をインストールしてみるよ
$ heroku addons:create heroku-postgresql:hobb...
アプリケーションをデプロイしよう!
​ ⼿手元で開発しないでデプロイするだけなら、これでデプロイできちゃう
$ git remote –v
heroku https://git.heroku.com/calm-lowlands-14220.gi...
アプリケーションのログを⾒見見てみよう
​ デプロイできたら、ちゃんと実⾏行行されているかログを⾒見見てみよう
$ heroku logs
2017-01-23T10:28:42.394220+00:00 heroku[slug-compile...
データベースを使う場合には、マイグレーションが必要
​ ⼀一般的な  Rails  アプリ同様、  “rake  db:migrate”  が必要だよ
$ heroku run bundle exec rake db:migrate
Runni...
実⾏行行された  Webアプリケーションを⾒見見てみよう
​ コンソールから、ブラウザへ指⽰示できるよ
$ heroku open
  コンソールでどうぞ
“heroku  open”  を実⾏行行すると、ブラウザで
Webアプリを開いてくれる...
Heroku  Dashboard
GUI  で各種操作ができるお⼿手軽ツール
Heroku  Dashboard  とは
​ Heroku  の持つコア機能へアクセスするための  Webインターフェイス
Heroku  Dashboard:  Overview
​ Heroku  アプリの概要を表⽰示します
導⼊入済みアドオン
導⼊入済みDyno
開発者たち
作業ログ
Heroku  Dashboard:  Resources
​ Dyno  とアドオンの構成を確認できます
Dynoの詳細
導⼊入済みアドオン
Dynoの変更更
スケールが可能
アドオンの導⼊入
Heroku  Dashboard:  Metrics
​ アプリケーションの性能、リソースの利利⽤用状況などが可視化されます
メモリ使⽤用状況
アプリの応答速度度
アプリの
スループット
Heroku  Dashboard:  Access
​ アプリケーションごとに開発者のロール制御が可能です
開発者⼀一覧
各開発者の
ロール制御
Heroku  Dashboard:  Settings
​ Heroku  アプリの種種雑多な設定の確認と変更更が可能です
アプリ名
環境変数群
アプリの情報
buildpack
SSL  と  ドメイン
権限の移譲
メンテナンスモード
アプ...
Heroku  Dashboard:  Deploy  >  Heroku  Pipelines
​ Continious  Delivery(CD)を実現するための便便利利なワークフロー
https://devcenter.heroku.co...
作ったアプリケーションを  Heroku  Button  で配布する
​ 1click  で、Heroku⽤用のアプリケーションを、カンタン  deploy
https://devcenter.heroku.com/articles/hero...
参考:  app.json  を準備して、⾃自動化しよう
​ Heroku  Button  や  Pipeline  を使う場合には  app.json  で⾃自動化できます
{
"name": "heroku_ruby_0124",
"sc...
Ruby  on  Rails  注意事項
素の状態から、加筆修正の必要なこと
Ruby  on  Rails  と  Heroku  での注意事項
• 標準的なデータベースは  PostgreSQL
• config/database.yml
• Procfile
• Gemfile
• config/secret.yml
• ...
標準的なデータベースは  PostgreSQL
​ ⼀一般的に、Heroku  では  PostgreSQL  を使います。sqlite3  はローカルのみで。
アドオンで多くのデータベースを準備し
ているので、⽤用途に合わせて選べるよ
config/database.yml
​ Heroku  では、環境変数  “DATABASE_̲URL”  に接続情報が登録されているよ
development:
adapter: sqlite3
pool: 5
timeout: 5000
...
Procfile
​ 標準とは異異なる動作をさせる場合には、設定が必要!
web: bundle exec ruby app.rb
mqtt: bin/proximo bundle exec ruby bridge.rb
redshift: bi...
Gemfile
​ Rails4  の場合には、“rails_̲12factor”  Gem  を追加しよう
group :development do
gem 'sqlite3’
gem 'web-console', '~> 2.0’
end
...
config/secret.yml
​ SECRET_̲KEY_̲BASE  も環境変数で提供されるよ!
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  ⼀一般的に登録され...
デプロイする時の注意事項
​ Gemfile.lock  を準備して、DBを使っている場合は  rake  db:migrate  しよう
heroku run bundle exec rake db:migrate
  db  の  migra...
環境変数についての考慮事項
​ Rails  (Rack)  では、必要と想定されるものは、⾃自動的に登録されるよ
TZ Asia/Tokyo
  必要に応じて、登録が必要になるもの
DATABASE_URL
SECRET_KEY_BASE
R...
その他、Heroku  としての注意事項
•  Dyno  は、24時間+α  で⾃自動的に勝⼿手に再起動されます
•  セキュリティパッチが、最⼤大  24時間で適⽤用されることを⽰示しています
•  ファイルを永続的に保管することや、セッシ...
Sinatra  を使ってみよう
さっとつくって、さっとデプロイ
軽量 重厚
なぜ、ここにきて  Sinatra  か
​ Sinatra  と  Rails  のちがい
軽い
カンタン
すぐできる
(サイズが) 重い
多機能
容易易に実現
(サイズが)
Sinatra Ruby  on  Rails
こんな...
Sinatra  でアプリケーションを作ってみよう
​ Sinatra  を  Heroku  で動かすためには、3つのファイルがあれば動きます
source https://rubygems.org
gem "sinatra"
Gemfile
...
今⽇日のまとめ
​ Heroku  は開発者の皆さまを、様々なしがらみから開放します
Heroku  とは •  インフラをまとめて⾯面倒⾒見見てくれる便便利利なプラットフォーム
Heroku  の機能は
•  Web  アプリケーションサーバ...
次のステップへ...Trailhead
Heroku  Enterpriseの基礎
Heroku  Enterpriseをいつ
どのように使⽤用するかに
ついての基礎を学習します
SalesforceとHerokuの  
インテグレーション
H...
Upcoming SlideShare
Loading in …5
×

Ruby開発者のためのHeroku入門

2,869 views

Published on

2016年1月24日(火)開催のWebセミナーです。

Published in: Technology

Ruby開発者のためのHeroku入門

  1. 1. Ruby  開発者のための Heroku⼊入⾨門 Salesforce  Developer  Web  セミナー tabe@salesforce.com @sho7650 (Qiita/ Twitter) ​ Takashi  Abe  (阿部  崇) ​ Lead  Solution  Engineer
  2. 2. 本⽇日のセミナー内容 内容 •  Ruby  on  Rails  (+  Sinatra)  を  Heroku  へデプロイしてみよう •  ところで、Heroku  って? 対象者 •  Ruby  (Rails)  で開発経験のある⼈人 •  gem,  bundler  の単語を理理解できる⼈人 •  Github  を使ったことがある⼈人 •  Heroku  に興味がある⼈人 •  Salesforce  が好きな⼈人 ゴール •  Ruby  (on  Rails)  開発者が、Heroku  上で  Web  アプリケーションを公開で きるようになること
  3. 3. アジェンダ 1.  Heroku  概要          15:05〜~15:10 2.  Heroku  を使うには       15:10〜~15:15 3.  Heroku  を使う流流れ       15:15〜~15:25 4.  Heroku  Dashboard       15:25〜~15:30 5.  Ruby  on  Rails  注意事項 15:30〜~15:40 6.  Sinatra  を使ってみよう 15:40〜~15:45 7.  まとめ                   15:45〜~15:50 8.  Q&A                   15:50〜~16:00
  4. 4.    自己紹介 阿  部    崇 Lead  Solution  Engineer  (@sho7650) アプリエンジニア  à  HWエンジニア  à  インフラエンジニア à  アーキテクト兼ITコンサルà  Salesforce  Platform  SE  (今ここ) ライブと熱帯⿂魚が好き:  Perfume/BABYMETAL/稲川淳⼆二
  5. 5. Forward-Looking Statements ​ Statement under the Private Securities Litigation Reform Act of 1995: ​ This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. ​ The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of any litigation, risks associated with completed and any possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for the most recent fiscal quarter. These documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site. ​ Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.
  6. 6. Heroku  概要 Heroku  とはどこから来て、どこへ⾏行行くのか
  7. 7. Heroku Overview ​ クラウド基盤で、Heroku  の位置づけ アプリケーション ミドルウェア DBMS OS 仮想化 サーバー ストレージ ネットワーク 施設 ユ ー ザ 管 理理 アプリケーション ミドルウェア DBMS OS 仮想化 サーバー ストレージ ネットワーク 施設 Infrastructure (as  a  Service) ユ ーザ 管 理理 事 業 者 管 理理 アプリケーション ミドルウェア DBMS OS 仮想化 サーバー ストレージ ネットワーク 施設 Platform (as  a  Service)ユ ー ザ 管 理理 事 業 者 管 理理 アプリケーション ミドルウェア DBMS OS 仮想化 サーバー ストレージ ネットワーク 施設 Software (as  a  Service) 事 業 者 管 理理 オンプレミス 基盤 クラウド基盤 アプリケーション開発基盤 アプリケーションソフトウェア
  8. 8. Heroku  Overview ​ クラウド基盤で、Heroku  の位置づけ...は、PaaS! アプリケーション ミドルウェア DBMS OS 仮想化 サーバー ストレージ ネットワーク 施設 ユ ー ザ 管 理理 アプリケーション ミドルウェア DBMS OS 仮想化 サーバー ストレージ ネットワーク 施設 Infrastructur e (as  a  Service) ユ ーザ 管 理理 事 業 者 管 理理 アプリケーション ミドルウェア DBMS OS 仮想化 サーバー ストレージ ネットワーク 施設 Platform (as  a  Service)ユ ー ザ 管 理理 事 業 者 管 理理 アプリケーション ミドルウェア DBMS OS 仮想化 サーバー ストレージ ネットワーク 施設 Software (as  a  Service) 事 業 者 管 理理 オンプレミス 基盤 クラウド基盤 アプリケーション開発基盤 アプリケーションソフトウェア 開発者が、開発に専念念できる プラットフォームを提供!!
  9. 9. Heroku を構成するもの ​ すべては開発者のため Dyno いつでもすぐにカンタン デプロイ、多くの⾔言語を サポートし、スケールし て実⾏行行できる環境 Data エンタープライズでの利利⽤用 も想定して最適化された、 PostgreSQL/Redis  を提供 しています Add-‐‑‒ons 150を超えるプラグインが、 いつでもすぐにカンタン に使えます Payments Email SMS Search Analytics Monitoring Logging Ruby Node.js Java PHP Python Scala Clojure 24/7/365  Ops Continuous   Protection Health  Checks High  Availability Encryption Rollback いわゆるコンテナ のことだよ! Heroku⽤用に最適 化されたDB!! あらゆる機能が 1CLICK  で!
  10. 10. Heroku  を使うには まずサインアップしましょう
  11. 11. Ruby  on  Rails  on  Heroku  :  利利⽤用前提条件 • Heroku  アカウントを持っていること  (このあと、取得の仕⽅方をご説明します) • Local  で  Ruby  (on  Rails)  の実⾏行行環境があること • bundler  で  gem  管理理できること • git  コマンドが利利⽤用可能なこと ​ Heroku  はアカウントがあれば、いつでもどこでも利利⽤用できます ソースコードを落落としてきて、デプロイする だけなら、Heroku  アカウントと  gitコマンド があれば、⼤大抵は⼤大丈夫!
  12. 12. Heroku  の事前準備 ​ Heroku  のアカウントを作成しましょう。まずは、“Sign  up”  から始めます https://www.heroku.com/home
  13. 13. Heroku  の事前準備 ​ 利利⽤用者の情報を⼊入⼒力力して、  “FREE  ACCOUNT”  を作りましょう。
  14. 14. Heroku  の事前準備 ​ Heroku  を操作するための  “Heroku  CLI”  を導⼊入しよう https://devcenter.heroku.com/articles/heroku-cli
  15. 15. Heroku  を使う流流れ アプリケーションをデプロイするには
  16. 16. Heroku  へ  deploy  する⼀一般的なフロー アプリを開発したら、必要なアドオンを追加して  “git  push”  するだけ! 起動確認デプロイアドオン追加Herokuアプリ追加アプリ準備 アプリ開発 git  clone アプリ準備 heroku  create データベース ログ出⼒力力 監視ツール ファイル保管 などなど : git  push heroku  logs 150以上も!?
  17. 17. アプリケーションを⼊入⼿手(開発)しましょう ​ 今回は、すでに完成しているアプリを使ってみましょう $  git  clone  https://github.com/tabesfdc/heroku_̲ruby_̲0124.git Cloning  into  'heroku_̲ruby_̲0124'... remote:  Counting  objects:  140,  done. remote:  Compressing  objects:  100%  (100/100),  done. remote:  Total  140  (delta  39),  reused  123  (delta  26),  pack-‐‑‒reused  0 Receiving  objects:  100%  (140/140),  64.21  KiB  |  0  bytes/s,  done. Resolving  deltas:  100%  (39/39),  done. $  cd  ./heroku_̲ruby_̲0124/  コンソールでどうぞ 下線部(⽩白⽂文字)が実⾏行行するコマンドだよ cd  コマンドをお忘れなく
  18. 18. Heroku  上にアプリ(Dyno)  を準備しましょう ​ アプリケーションを⼊入れる器を、Heroku側に準備します $ heroku create Creating app... done, ⬢ calm-lowlands-14220 https://calm-lowlands-14220.herokuapp.com/ | https://git.heroku.com/calm- lowlands-14220.git  コンソールでどうぞ 下線部(⽩白⽂文字)が実⾏行行するコマンドで、ピンクの部分が、作 成されたHeroku  のアプリ名になるよ WebアプリのURLは  “https://calm-‐‑‒lowlands-‐‑‒14220.herokuapp.com/”   だよ “heroku  create”  のあとにアプリ名を指定することもできますが、 必ずユニークな名前である必要があります。 指定しなければ、Heroku  側が適切切にユニーク名を付与します。
  19. 19. Heroku  Addon  を追加してみよう ​ hobby-‐‑‒dev  プランの  Heroku  Postgres  をインストールしてみるよ $ heroku addons:create heroku-postgresql:hobby-dev Creating heroku-postgresql:hobby-dev on ⬢ calm-lowlands-14220... free Database has been created and is available ! This database is empty. If upgrading, you can transfer ! data from another database with pg:copy Created postgresql-elliptical-71354 as DATABASE_URL Use heroku addons:docs heroku-postgresql to view documentation  コンソールでどうぞ 下線部(⽩白⽂文字)が実⾏行行するコマンド 空っぽのデータベースができ上がるよ 接続先DB  の  URL  は  “DATABASE_̲URL”  環境変数へ登 録されるんだ
  20. 20. アプリケーションをデプロイしよう! ​ ⼿手元で開発しないでデプロイするだけなら、これでデプロイできちゃう $ git remote –v heroku https://git.heroku.com/calm-lowlands-14220.git (fetch) heroku https://git.heroku.com/calm-lowlands-14220.git (push) origin https://github.com/tabesfdc/heroku_ruby_0124.git (fetch) origin https://github.com/tabesfdc/heroku_ruby_0124.git (push) $ git push heroku master Counting objects: 140, done. Delta compression using up to 4 threads. : To https://git.heroku.com/calm-lowlands-14220.git * [new branch] master -> master  コンソールでどうぞ 下線部(⽩白⽂文字)が実⾏行行するコマンドだよ “heroku  create”  すると、⾃自動的に  git  のリモートリポジトリが 追加されているんだね、ピンク⾊色の部分だよ。
  21. 21. アプリケーションのログを⾒見見てみよう ​ デプロイできたら、ちゃんと実⾏行行されているかログを⾒見見てみよう $ heroku logs 2017-01-23T10:28:42.394220+00:00 heroku[slug-compiler]: Slug compilation started 2017-01-23T10:28:42.394225+00:00 heroku[slug-compiler]: Slug compilation finished 2017-01-23T10:28:45.303531+00:00 heroku[web.1]: Starting process with command `bin/rails server -p 39591 -e production` 2017-01-23T10:28:50.089622+00:00 app[web.1]: [2017-01-23 10:28:50] INFO WEBrick 1.3.1 2017-01-23T10:28:50.089640+00:00 app[web.1]: [2017-01-23 10:28:50] INFO ruby 2.3.3 (2016-11-21) [x86_64-linux] 2017-01-23T10:28:50.090036+00:00 app[web.1]: [2017-01-23 10:28:50] INFO WEBrick::HTTPServer#start: pid=4 port=3959 12017-01-23T10:28:50.496406+00:00 heroku[web.1]: State changed from starting to up  コンソールでどうぞ 下線部(⽩白⽂文字)が実⾏行行するコマンドだよ ⼀一般的なログの内容を確認できるよ
  22. 22. データベースを使う場合には、マイグレーションが必要 ​ ⼀一般的な  Rails  アプリ同様、  “rake  db:migrate”  が必要だよ $ heroku run bundle exec rake db:migrate Running bundle exec rake db:migrate on ⬢ calm-lowlands-142202... up, run.7402 (Free) (137.7ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) (5.9ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version") ActiveRecord::SchemaMigration Load (1.3ms) SELECT "schema_migrations".* FROM "schema_migrations"Migrating to CreatePeople (20170122100043) (1.0ms) BEGIN == 20170122100043 CreatePeople: migrating ===================================== -- create_table(:people) (90.1ms) CREATE TABLE "people" ("id" serial primary key, "name" character varying, "birth" date, "home" character varying, "height" float, "office" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -> 0.0907s == 20170122100043 CreatePeople: migrated (0.0908s) ============================ SQL (4.1ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20170122100043"]] (4.2ms) COMMIT  コンソールでどうぞ 下線部(⽩白⽂文字)が実⾏行行するコマンドだよ “heroku  run”  で、⼀一時的に  dyno  上でプログラムを実⾏行行できるんだ これを、“Worker  Dyno”  と呼んでいるよ
  23. 23. 実⾏行行された  Webアプリケーションを⾒見見てみよう ​ コンソールから、ブラウザへ指⽰示できるよ $ heroku open  コンソールでどうぞ “heroku  open”  を実⾏行行すると、ブラウザで Webアプリを開いてくれるよ! ちゃんと動いたのが確認できたね!
  24. 24. Heroku  Dashboard GUI  で各種操作ができるお⼿手軽ツール
  25. 25. Heroku  Dashboard  とは ​ Heroku  の持つコア機能へアクセスするための  Webインターフェイス
  26. 26. Heroku  Dashboard:  Overview ​ Heroku  アプリの概要を表⽰示します 導⼊入済みアドオン 導⼊入済みDyno 開発者たち 作業ログ
  27. 27. Heroku  Dashboard:  Resources ​ Dyno  とアドオンの構成を確認できます Dynoの詳細 導⼊入済みアドオン Dynoの変更更 スケールが可能 アドオンの導⼊入
  28. 28. Heroku  Dashboard:  Metrics ​ アプリケーションの性能、リソースの利利⽤用状況などが可視化されます メモリ使⽤用状況 アプリの応答速度度 アプリの スループット
  29. 29. Heroku  Dashboard:  Access ​ アプリケーションごとに開発者のロール制御が可能です 開発者⼀一覧 各開発者の ロール制御
  30. 30. Heroku  Dashboard:  Settings ​ Heroku  アプリの種種雑多な設定の確認と変更更が可能です アプリ名 環境変数群 アプリの情報 buildpack SSL  と  ドメイン 権限の移譲 メンテナンスモード アプリの削除!
  31. 31. Heroku  Dashboard:  Deploy  >  Heroku  Pipelines ​ Continious  Delivery(CD)を実現するための便便利利なワークフロー https://devcenter.heroku.com/articles/pipelines GithubのPull  Requestが ⾒見見える!!   デプロイ状況が、画⾯面で ⼀一望できるね
  32. 32. 作ったアプリケーションを  Heroku  Button  で配布する ​ 1click  で、Heroku⽤用のアプリケーションを、カンタン  deploy https://devcenter.heroku.com/articles/heroku-button 1CLICK  でアプリケーションが デプロイできた!!
  33. 33. 参考:  app.json  を準備して、⾃自動化しよう ​ Heroku  Button  や  Pipeline  を使う場合には  app.json  で⾃自動化できます { "name": "heroku_ruby_0124", "scripts": { "postdeploy": "bundle exec rake db:migrate” }, "env": { "SECRET_KEY_BASE": { "generator": "secret” } }, "formation": {}, "addons": [ "heroku-postgresql" ], "buildpacks": [ { "url": "heroku/ruby” } ] }  app.json  の例例 デプロイ後に実⾏行行する スクリプト 環境変数の定義 (内容の⾃自動作成も可) 導⼊入するアドオンも 指定できます buildpack  も指定する ことができますよ
  34. 34. Ruby  on  Rails  注意事項 素の状態から、加筆修正の必要なこと
  35. 35. Ruby  on  Rails  と  Heroku  での注意事項 • 標準的なデータベースは  PostgreSQL • config/database.yml • Procfile • Gemfile • config/secret.yml • デプロイする時の注意事項 • 環境変数についての考慮事項 • その他、Heroku  としての注意事項 ​ デプロイに向けての下準備と、考慮しておくべき事項について
  36. 36. 標準的なデータベースは  PostgreSQL ​ ⼀一般的に、Heroku  では  PostgreSQL  を使います。sqlite3  はローカルのみで。 アドオンで多くのデータベースを準備し ているので、⽤用途に合わせて選べるよ
  37. 37. config/database.yml ​ Heroku  では、環境変数  “DATABASE_̲URL”  に接続情報が登録されているよ development: adapter: sqlite3 pool: 5 timeout: 5000 database: db/development.sqlite3 production: url: <%= ENV['DATABASE_URL'] %>  よく⾒見見る  database.yml development  と  productionとで 異異なるDBを利利⽤用するケースだね
  38. 38. Procfile ​ 標準とは異異なる動作をさせる場合には、設定が必要! web: bundle exec ruby app.rb mqtt: bin/proximo bundle exec ruby bridge.rb redshift: bin/proximo bundle exec ruby redshift.rb web: bundle exec rails server -p $PORT -e $RAILS_ENV  標準的な  Rails  の起動  標準とは異異なるケース 標準通りなら、 なくても動くよ!
  39. 39. Gemfile ​ Rails4  の場合には、“rails_̲12factor”  Gem  を追加しよう group :development do gem 'sqlite3’ gem 'web-console', '~> 2.0’ end group :production do gem 'pg', '~> 0.15’ gem 'rails_12factor’ end  よく⾒見見る  Gemfile Rails5  では、いらなくなったんだ
  40. 40. config/secret.yml ​ SECRET_̲KEY_̲BASE  も環境変数で提供されるよ! production: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>  ⼀一般的に登録されている  secret.yml .gitignore  に登録されてる場合も あるから気をつけよう
  41. 41. デプロイする時の注意事項 ​ Gemfile.lock  を準備して、DBを使っている場合は  rake  db:migrate  しよう heroku run bundle exec rake db:migrate  db  の  migrate  が必要だよ bundle install --path vendor/bundle --binstubs vendor/bundle/bin  Gemfile.lock  が必要だよ ローカルに  PostgreSQL  が 必要になる場合があるよ
  42. 42. 環境変数についての考慮事項 ​ Rails  (Rack)  では、必要と想定されるものは、⾃自動的に登録されるよ TZ Asia/Tokyo  必要に応じて、登録が必要になるもの DATABASE_URL SECRET_KEY_BASE RAILS_ENV  事前に登録されているもの
  43. 43. その他、Heroku  としての注意事項 •  Dyno  は、24時間+α  で⾃自動的に勝⼿手に再起動されます •  セキュリティパッチが、最⼤大  24時間で適⽤用されることを⽰示しています •  ファイルを永続的に保管することや、セッション情報を維持できなくなりますから、データ・ファイル・セッション 情報などを維持したい場合は、データベースや外部オブジェクトストレージなどで、永続化しましょう •  ログも保管されません。必要であれば、アドオンなどでログを退避・運⽤用しましょう •  Web  アクセスは  30秒で強制的に切切断されます •  例例えばバッチ処理理など、処理理に時間のかかるものは、⾮非同期処理理としてバックグラウンドで処理理させよう •  アプリケーション開発における原理理原則は、Twelve  Factor  App(https://12factor.net/ja/)に従っている ので、興味がある開発者の⽅方は、どうぞそちらもご覧ください ​ Heroku  では、安全性や不不測の事態に備えて珍しい制限があります 詳しくはこちらへどうぞ https://devcenter.heroku.com/articles/limits
  44. 44. Sinatra  を使ってみよう さっとつくって、さっとデプロイ
  45. 45. 軽量 重厚 なぜ、ここにきて  Sinatra  か ​ Sinatra  と  Rails  のちがい 軽い カンタン すぐできる (サイズが) 重い 多機能 容易易に実現 (サイズが) Sinatra Ruby  on  Rails こんな時に •  画⾯面がメイン •  ロジックメイン •  DBが必要ない •  個性の探求 こんな時に •  機能性重視 •  利利便便性重視 •  いわゆるCRUD •  みんなと同じ
  46. 46. Sinatra  でアプリケーションを作ってみよう ​ Sinatra  を  Heroku  で動かすためには、3つのファイルがあれば動きます source https://rubygems.org gem "sinatra" Gemfile require './app’ run Sinatra::Application config.ru require 'sinatra’ get '/' do "Hello World!” end app.rb Gemfile.lock  を準備して  git  push  するだけ!
  47. 47. 今⽇日のまとめ ​ Heroku  は開発者の皆さまを、様々なしがらみから開放します Heroku  とは •  インフラをまとめて⾯面倒⾒見見てくれる便便利利なプラットフォーム Heroku  の機能は •  Web  アプリケーションサーバとバッチ処理理機能を持つ •  GUIで管理理できるDashboard  と  CLIを提供 アプリのデプロイは •  アプリのソースコードを準備したら、  “git  push”  するだけ
  48. 48. 次のステップへ...Trailhead Heroku  Enterpriseの基礎 Heroku  Enterpriseをいつ どのように使⽤用するかに ついての基礎を学習します SalesforceとHerokuの   インテグレーション Herokuのアプリケーションを Salesforceに統合するための パターンと⽅方法を学びます https://trailhead.salesforce.com/ja

×