CodeZine(コードジン)

特集ページ一覧

これで作業がサクサク進む! 開発・運用でよく使うherokuコマンドリファレンス

Herokuでスタート! はじめてのPaaSアプリケーション開発 第5回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2015/02/18 14:00

目次

heroku releases

アプリケーション指定 必要
オプション引数 なし

 heroku releasesは、リリースの管理を行うためのコマンドです。サブコマンドなしでコマンドを実行すると、そのアプリケーションのリリースの一覧が表示されます。

 リリースには以下のものが含まれます。

  • デプロイ(git push)
  • 環境変数の変更
  • Add-onの追加/削除
heroku releasesコマンドの実行結果
$ heroku releases -a codezine-sample
=== codezine-sample Releases
v25  Add papertrail:choklad add-on             xxxx@example.com  2014/11/13 11:24:50
v24  Deploy f29143d                            xxxx@example.com  2014/11/13 11:19:58
v23  Deploy e241f02                            xxxx@example.com  2014/11/01 22:40:55
v22  Deploy dfcc1d5                            xxxx@example.com  2014/11/01 18:19:04
v21  Deploy fddafbc                            xxxx@example.com  2014/11/01 18:10:47
v20  Deploy eec5b1c                            xxxx@example.com  2014/11/01 17:50:08
v19  Deploy 890af46                            xxxx@example.com  2014/11/01 17:48:08
v18  Attach HEROKU_POSTGRESQL_CHARCOAL reso..  xxxx@example.com  2014/10/26 21:38:08
v17  Set DATABASE_URL config vars              xxxx@example.com  2014/10/26 21:38:08

 

heroku [releases:]rollback

アプリケーション指定 必要
引数 [リリースバージョン]
オプション引数 なし

 heroku rollbackは、アプリケーションのバージョンを任意のリリースバージョンに戻すためのコマンドです。

 引数には「v42」のようにheroku releasesコマンドで表示されるバージョン番号を指定します。省略時には1つ前のバージョンに戻ります。

 このリリース管理の機能は、オンプレミスやIaaSにはないHerokuの大きなアドバンテージの1つです。筆者も過去に何度かこのコマンドでリリースの取り消しを行ったことがあります。ただし、不測の事態の際にあわてないように、あらかじめコマンドの動作を確認しておくことをお勧めします。

 

heroku maintenance

アプリケーション指定 必要
オプション引数 なし

 heroku maintenanceは、アプリケーションをメンテナンスモードにするためのコマンドです。アプリケーションをメンテナンスモードにした場合、Web Dynoへのブラウザからのアクセスはすべて遮断され、代わりにメンテナンス中のアナウンスページが表示されます(このページは環境変数「MAINTENANCE_PAGE_URL」によって変更できます)。

 サブコマンドを指定せずに実行した場合には、現在メンテナンスモードとなっているかどうかが表示されます。状態を変更する場合には、maintenance:onあるいはmaintenance:offサブコマンドを使用します。

 

heroku run

アプリケーション指定 必要
オプション引数 なし

 heroku runコマンドはOne off Dynoを生成して、その上で指定のUNIXコマンドを実行します。

 このコマンドでもっとも頻繁に実行するUNIXコマンドは「bash」です。Dyno上でbashを実行することで、そのDynoのシェルに入って対話的にコマンドを実行することができます。

$ heroku run bash
app$ ls
...

 Dynoのシェルに入ることによって、slugコンパイルした結果がどのようにDynoに格納されているかなどを知ることができます。特に、「ローカルでは実行できているのにHeroku上ではエラーになる」といった問題が発生した場合の原因調査に役立ちます。

 なお、ここで実行されるDynoはあくまでこのrunコマンドによって生成された一時的なDyno(One off Dyno)です。Webリクエストを処理しているWeb Dynoとは異なるインスタンスであることに注意してください。

 これ以外にもheroku runコマンドには、

  • rakeで作成したタスクを実行する
  • スケジューラ用に用意したスクリプトの動作確認をする

 などの用途があります。

 

heroku sharing

アプリケーション指定 必要
オプション引数 なし

 heroku sharingは、アプリケーションを複数人で開発する場合のコラボレータの設定を行うためのコマンドです。

 サブコマンドなしで実行した場合には、コラボレータの一覧が表示されます。

 

heroku sharing:add

アプリケーション指定 必要
引数 コラボレータとするユーザのメールアドレス
オプション引数 なし

 heroku sharing:addは、コラボレータを追加するためのコマンドです。引数で指定したメールアドレスのユーザが、コラボレータとして追加されます。

 コラボレータとなったユーザは、アプリケーションの削除や有償Add-onの追加といった一部のセンシティブなコマンドを除く、ほとんどのコマンドをアプリケーションに対して発行できます。

 

heroku sharing:remove

アプリケーション指定 必要
引数 コラボレータから削除するユーザのメールアドレス
オプション引数 なし

 heroku sharing:removeは、コラボレータを削除するためのコマンドです。

 コラボレータでなくなったユーザは以降、そのアプリケーションに対して一切のコマンドを発行できなくなります。

 

heroku sharing:transfer

アプリケーション指定 必要
引数 オーナーを移管するユーザのメールアドレス
オプション引数 なし

 heroku sharing:transferは、アプリケーションのオーナー権限を他者に移管するためのコマンドです。

 オーナー権限を移管するためには、そのユーザがあらかじめコラボレータになっている必要があります。

 なお、このコマンドではDynoやAdd-onの課金対象も変更になるため、実際のオーナー変更は移管を受けたユーザがそれをアクセプトするまで、移管は行われません。

 

heroku addons

アプリケーション指定 必要
オプション引数 なし

 heroku addonsは、Add-onを操作するためのコマンドです。サブコマンドなしで実行した場合には、アプリケーションに追加されているAdd-onのリストが表示されます。

 

heroku addons:add

アプリケーション指定 必要
引数 Add-on名
オプション引数 なし

 heroku addons:addは、Add-onを追加するためのコマンドです。通常、Add-onにはいくつかのプランがあり、正確に指定する場合は「:」のようにコロンで区切って指定します。

 プランの指定が省略された場合には、最もグレードの低いプランが追加されます。

 

heroku addons:remove

アプリケーション指定 必要
引数 Add-on名
オプション引数 なし

 heroku addons:removeは、Add-onを追加するためのコマンドです。

 

heroku addons:open

アプリケーション指定 必要
引数 Add-on名
オプション引数 なし

 heroku addons:openは、ブラウザでAdd-onの管理画面を開くためのコマンドです。

 WebコンソールからAdd-onの管理画面を開く場合、アプリケーション選択から何度かの画面遷移が必要ですが、このコマンドを使用すると一発で管理画面を開けるので便利です。

 

heroku help

アプリケーション指定 不要
引数 [COMMAND]

 heroku helpは、コマンドヘルプを表示するコマンドです。引数なしで実行することで、完全なコマンド一覧を参照することができます。また、

$ heroku help ps:scale

 のようにコマンド名を指定して実行することで、各コマンドのヘルプを参照することができます。

 

おわりに

 今回は、筆者の経験則から日常的によく使用するコマンドを紹介しました。日本語でのHerokuコマンドリファレンスはほとんどないので、それなりに有益ではないかと思います。

 これらのコマンドはこの先の連載でも何度となく使うことになるはずです。

 次回は、スケールアウト(Dyno複数台での運用)に対応するために使用するAdd-onの「Memcached」を紹介します。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:Herokuでスタート! はじめてのPaaSアプリケーション開発

著者プロフィール

  • 小西 俊司(コニシ シュンジ)

    株式会社Giveryに所属するエンジニア。CODEプロジェクトというエンジニアの成長を促進するプラットフォーム開発のテックリード。Herokuも使った新しいプロダクトを今秋リリース予定。

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5