heroku postgresのDBにローカルPCから遠隔アクセスする

## はじめに
herokuが提供するPostgreSQLのDBにローカルPCから遠隔ログインし、データを取得・編集できる方法をまとめました。
当方の環境はMac(Mountain Lion)ですが、Windows/Linuxでも同じはずです。

主に、コマンドライン（psql）でアクセスする方法と、GUIのDBクライアントを使う方法があります。

## psqlを使う方法
[heroku toolbelt](https://toolbelt.heroku.com/)がインストールされていることを前提とする。
以下のコマンドを実行する。

```
$ heroku pg:psql
```

これで、psqlでheorkuのPostgreSQL DBにアクセスすることができます。

## GUI DBクライアントを使う方法
ここでは、NetBeansのDBクライアント機能を利用することを前提とする。

**（2013/09/27追記：NetBeansよりもお薦めの「pgAdmin」というGUIクライアントを発見した。本記事末尾に紹介したので参考にされたい。HerokuのPostgreSQL DBへのアクセスの仕方は、NetBeansと変わらないはずである。）**

まず、herokuの公式Webサイトに自分のアカウントでログインする。そして、DBにアクセスしたいアプリケーション名をクリックする。（プライバシーのため、以下の図はアプリ名にモザイクがかかってます）
![スクリーンショット 2013-01-14 13.44.58.jpg](https://qiita-image-store.s3.amazonaws.com/0/12753/76f6b051-1052-62a6-b694-77eafdb147ef.jpeg "スクリーンショット 2013-01-14 13.44.58.jpg")

「Resources」タブが選択されていることを確認し、「Add-ons」の「Heroku Postgres ****」（****は使っているプランによって変わります）をクリックする。
![スクリーンショット-2013-01-14-13.55.45.jpg](https://qiita-image-store.s3.amazonaws.com/0/12753/4b349b42-1056-f63c-82d2-4010affa3d25.jpeg "スクリーンショット-2013-01-14-13.55.45.jpg")

以下のページが表示されるので、herokuのアカウントでログインする。
![スクリーンショット 2013-01-14 14.02.12.jpg](https://qiita-image-store.s3.amazonaws.com/0/12753/797ff0a3-d3d3-2b5a-61a0-bb69c582ba71.jpeg "スクリーンショット 2013-01-14 14.02.12.jpg")

ログインすると、データベースのリストが表示されるので、見たいアプリのデータベース名をクリックする。
![スクリーンショット-2013-01-14-14.04.22.jpg](https://qiita-image-store.s3.amazonaws.com/0/12753/90bcb218-0c16-be0a-b108-71509762f01f.jpeg "スクリーンショット-2013-01-14-14.04.22.jpg")

次に、「Connection Settings」の右にある歯車アイコンをクリックしてメニューを表示し、「JDBC URL」を選択する。
![スクリーンショット-2013-01-14-14.08.52.jpg](https://qiita-image-store.s3.amazonaws.com/0/12753/2df09496-28be-246d-79a2-efc8698dfadf.jpeg "スクリーンショット-2013-01-14-14.08.52.jpg")

表示されたページで、JDBC URLをコピーして保存しておく。
![スクリーンショット 2013-01-14 14.13.24.jpg](https://qiita-image-store.s3.amazonaws.com/0/12753/a2c98241-99cc-eced-ca61-fdb513915505.jpeg "スクリーンショット 2013-01-14 14.13.24.jpg")


[NetBeans](https://ja.netbeans.org/)をインストールする（ここではバージョン7.3.1を想定）。

「サービス」タブ→「ドライバ」→「PostgreSQL」の右クリックでコンテキストメニューを表示し、「接続」をクリックする。以下のページが参考になる。
[http://ubuntu-note.blog.so-net.ne.jp/2010-12-31](http://ubuntu-note.blog.so-net.ne.jp/2010-12-31)（Ubuntu & Emacs & etc. メモ さんより）

ただ、上記のページで説明しているNetBeansはバージョンが古く、接続設定画面のUIが異なる。バージョン7.3.1では以下のような画面になる。herokupostgresのページで控えたJDBC URLの情報を元に、項目を埋めていく。ホスト、ポート、データーベース、ユーザー名、パスワードの項目を埋めたら、最後にJDBC URLの欄の末尾に`?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory`という文字列を追加する。
（参考：[devcenter.heroku.com](https://devcenter.heroku.com/articles/connecting-to-relational-databases-on-heroku-with-java#connecting-to-a-database-remotely)）
そして、「接続をテスト」ボタンを押せば、「接続に成功しました。」と出るはずである。
![スクリーンショット-2013-01-14-14.23.39.jpg](https://qiita-image-store.s3.amazonaws.com/0/12753/1446e4cf-3a4e-9006-1d1e-eac869fee9b4.jpeg "スクリーンショット-2013-01-14-14.23.39.jpg")

接続に成功したら、各テーブルのデータを参照したり編集したり、色々できる。
![スクリーンショット 2013-01-14 14.35.31.jpg](https://qiita-image-store.s3.amazonaws.com/0/12753/49c5d799-9340-5cac-ef3a-a405beb31240.jpeg "スクリーンショット 2013-01-14 14.35.31.jpg")

### NetBeansの問題点
Mac版のみの問題なのか、他のプラットフォーム版でも起きるのか確認していないが、NetBeansのDB機能だと、データを表示するタブが、開いてもしばらく経つと勝手に閉じてしまうという不具合（？）を確認した。

## 2013/09/27追記：NetBeansよりもオススメのGUIクライアント「pgAdmin」

上記の不具合があるNetBeansよりもオススメのGUIクライアントを発見した。「[pgAdmin](http://www.pgadmin.org/index.php)」である。無料。
UIが若干使いづらいが、PostgreSQL専用ということで、相性は良さそうだ。
ちなみに日本語UIは訳がところどころ不自然なので、環境設定で英語UIに変更することをお勧めする。
HerokuのPostgreSQL DBへのアクセスの仕方は、NetBeansと変わらないはずである。