SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Herokuではじめるチーム開発と運用

選ぶだけでアプリケーションに機能が追加できる「Herokuアドオン」の使い方

Herokuではじめるチーム開発と運用 第4回

コマンドラインによるインストール

 アドオンはコマンドライン操作でも追加することができます。アドオンを追加する「heroku addons:create」や、すでに特定のアプリケーションに追加されたアドオンを別のアプリケーションに追加する「heroku addons:attach」の2つのコマンドがあります。

構文
$ heroku addons:create [アドオン名]:[プラン] --app [アプリケーション名]
$ heroku addons:attach [(追加により付与された)アドオン識別名] --app [アプリケーション名]

 例えば、Heroku Postgresを「shrouded-peak-81347」アプリケーションに追加するには、次のコマンドを実行します。

実行例
$ heroku addons:create heroku-postgresql:hobby-dev --app shrouded-peak-81347
Creating heroku-postgresql:hobby-dev on ⬢ shrouded-peak-81347... 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-deep-74187 as DATABASE_URL
Use heroku addons:docs heroku-postgresql to view documentation

 これで、Heroku Postgresがアプリケーション「shrouded-peak-81347」に追加され、「postgresql-deep-74187」と言う識別名が付与されました。この追加したHeroku Postgres「postgresql-deep-74187」を別のアプリケーション「aqueous-earth-70365」に追加するには、次のコマンドを実行します。

実行例
$ heroku addons:attach postgresql-deep-74187 --app aqueous-earth-70365
Attaching postgresql-deep-74187 to ⬢ aqueous-earth-70365... done
Setting DATABASE config vars and restarting ⬢ aqueous-earth-70365... done, v19

設定変数によるアドオンの利用

 さて、無事アドオンが追加されましたが、アプリケーションからはどのように使えば良いのでしょうか? 例えばHeroku Postgresでは、追加したアドオンの管理画面からID/パスワード/接続URLなどの情報を確認し、それをアプリケーションのプログラム内に設定して利用することもできますが、もっと便利な方法があります。それが設定変数です。

 設定変数は、アプリケーションから呼び出せる環境変数のことです。ID/パスワード/接続URLなどは、ソースコードに書き込むのではなく設定変数から呼び出して使用することで、利用の容易性とプログラムの可搬性を高めることもできます。Heroku Postgresアドオンを追加すると、次のような設定変数がアプリケーションに追加されます。設定変数はアプリケーションのダッシュボードにある[Settings]タブの[Config Variables]で確認・設定することができます。

図5 Heroku Postgres の設定変数([Reveal Config Vars]ボタンをクリックし、設定内容を表示させたところ)
図5 Heroku Postgres の設定変数([Reveal Config Vars]ボタンをクリックし、設定内容を表示させたところ)

 例えば、Node.jsプログラムからHeroku Postgresへの接続は、次のように記述することができます。

var pg = require('pg');

pg.defaults.ssl = true;
pg.connect(process.env.DATABASE_URL, function(err, client) {
  if (err) throw err;
  console.log('Connected to postgres! Getting schemas...');

  client
    .query('SELECT table_schema,table_name FROM information_schema.tables;')
    .on('row', function(row) {
      console.log(JSON.stringify(row));
    });
});

 Postgresアクセス用のモジュールpgを読み込み、pg.connectの引数として、設定変数に定義されているDATABASE_URLを渡しています。pgモジュール内で接続情報が自動的に接続ユーザー名、パスワード、URLなどに分解されて利用されるため、非常にすっきりとした記述で、データベースへのアクセスを実現できます。

SSO(Single SIGN ON)でアドオンのダッシュボードにも簡単アクセス

 アドオンは、それぞれ専用の管理画面を持っていることがあります。アプリケーションのダッシュボードに表示される各アドオン名をクリックすると、管理画面に遷移します。外部ベンダーが提供しているアドオンによっては、ベンダー提供サービスへのアカウント作成と連携をアドオン追加時に行ってくれます。例えば、画像加工とホスティングのCloudinaryですが、アドオン名をクリックすると、CloudinaryのWebサイトへSSOで遷移し、管理画面が表示されます。個別に外部ベンダーサイトでの登録や、連携のための設定を行う必要はありません。

図6 外部ベンダーサイトへのSSO
図6 外部ベンダーサイトへのSSO

次のページ
有償プランの支払いもHerokuにお任せ

この記事は参考になりましたか?

Herokuではじめるチーム開発と運用連載記事一覧

もっと読む

この記事の著者

稲葉 洋幸(株式会社セールスフォース・ドットコム)(イナバ ヒロユキ)

 株式会社セールスフォース・ドットコム プラットフォームスペシャリスト 日本ヒューレット・パッカードにてアプリ開発、インフラ構築プロジェクトのエンジニア・リーダー、製品プリセールスに従事。その後日立コンサルティングにてIT組織最適化・デジタルビジネス立ち上げのコンサルタントを経て、2016年より現職...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/10257 2017/07/04 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー