Heroku と Dropbox を連携する手順 [Discontinued]

※ [当機能は 2018年7月24日をもって終了しました](https://devcenter.heroku.com/articles/dropbox-sync)


Heroku へソースコードをデプロイする方法には、次の３つの方法があります。

1. Herokuの Git Repositry へ `git push` する
2. Github と連携する
3. Dropbox と連携する

一般的に、1.の方法が使われるケースが多く、2.の場合は、`Heroku Pipelines`を利用する場合には必須の方法です。そのため、Heroku への Deployには、Gitが必須と考えられている節がありますが、Dropboxと連携して Deployする方法も用意されています。今回は、その手順について説明します。

# 前提条件

- Heroku アカウントを持っている
- Dropbox アカウントを持っている

# Heroku と Dropbox を連携する

まず、Heroku と Dropbox を連携する前準備が必要になります。

## Heroku App を準備しよう

すでに準備されているものを再利用するもよし、新たに作るもよし。今回は、専用の Appを作成して連携してみます。`dropboxsyc` という Heroku App を作成しました。

![Screen Shot 2017-02-16 at 15.28.23.png](https://qiita-image-store.s3.amazonaws.com/0/37263/3c8c282a-385b-43b3-19ba-e60afbdc2db1.png "Screen Shot 2017-02-16 at 15.28.23.png")

## Dropbox と接続

Appを作成した後であれば、そのまま `Deploy`メニューになりますが、既存のAppを利用する場合は、App を開いて `Deploy` をクリックします。

`Deployment method` にて「`Dropbox`」を選択して `Connect to Dropbox` ボタンを押します。

![Screen Shot 2017-02-16 at 15.28.40.png](https://qiita-image-store.s3.amazonaws.com/0/37263/a5211d6a-6097-cc68-d633-ba78fd158114.png "Screen Shot 2017-02-16 at 15.28.40.png")

`Dropbox`との OAuth認証画面が出てくるでしょうから、ログインをするなり、ログイン済みであれば下図のように `許可` をしましょう。

![Screen Shot 2017-02-16 at 15.28.48.png](https://qiita-image-store.s3.amazonaws.com/0/37263/24e7c3ff-ea13-88de-9c89-af3090ac2e0c.png "Screen Shot 2017-02-16 at 15.28.48.png")

## 同期されたディレクトリを確認

正常に接続されると、`App connected to Dropbox` 欄に、`Connect to Dropbox/Apps/Heroku/dropboxsync` (dropboxsync は App名) と表示されています。このディレクトリがソースコードを置く、ルートディレクトリになります。

![Screen Shot 2017-02-16 at 15.30.23.png](https://qiita-image-store.s3.amazonaws.com/0/37263/25a36c3c-5d57-6274-c73c-eea782c4d987.png "Screen Shot 2017-02-16 at 15.30.23.png")

もしここで、エラーが発生して「あれっ」となったときでも、`reload`してみると良いです。Dropbox に同時にアクセスしてたりすると、なんかおかしくなったケースがあります。が、ちゃんとできてました。

# ソースコードをデプロイしてみよう

それでは、`Dropbox` へファイルを配置して、Heroku へソースコードをデプロイしてみましょう。

## Dropbox へソースコードを配置する

`Dropbox` ですから、ローカルのディレクトリと同期して、ふつーにソースコードを `git clone` するなり、一から作成するなり、なんらかの方法で、先程のディレクトリへソースコードを配置します。

今回は、先程のルートディレクトリへ `index.php` だけ配置して試してみます。

![Screen Shot 2017-02-16 at 15.33.29.png](https://qiita-image-store.s3.amazonaws.com/0/37263/eb83a63f-5311-53e7-badb-1e3df580adf3.png "Screen Shot 2017-02-16 at 15.33.29.png")

## ソースコードを `Deploy`

必要なファイルをすべて配置し、`Dropbox`との同期が完了しましたら、先程の Heroku Dashboard の `Deploy` 画面を下までスクロールします。

すると、`Deploy changes` 項目があり、そこに入力欄と`Deploy`ボタンが位置されているはずです。ここで、入力欄に何か「**コミットメッセージ**」を入力して、`Deploy` ボタンをクリックします。

![Screen Shot 2017-02-16 at 15.34.17.png](https://qiita-image-store.s3.amazonaws.com/0/37263/211b2e6a-07cb-88fd-5aea-dadfe7235b87.png "Screen Shot 2017-02-16 at 15.34.17.png")

正常にデプロイが完了すると、下図のように `Deploy to Heroku` と表示されるでしょう、これでデプロイ完了です。

![Screen Shot 2017-02-16 at 15.34.39.png](https://qiita-image-store.s3.amazonaws.com/0/37263/69a09c6e-3928-e625-9670-de52b42d7f59.png "Screen Shot 2017-02-16 at 15.34.39.png")

## アプリケーションを開いてみる

Heroku Dashboard 右上の `Open app` をクリックするなり、URLを入力するなりして、アプリケーションが表示できます。

今回のソースコードは次のとおりです。

```php:index.php
<?
phpinfo();
```

したがって、次のように `phpinfo` の画面が表示されています。ちゃんと、php であることも認識されて、deploy されていることがわかります。

![Screen Shot 2017-02-16 at 15.34.53.png](https://qiita-image-store.s3.amazonaws.com/0/37263/c6bcfa98-928c-cf1d-20b9-e4fc0311d9f0.png "Screen Shot 2017-02-16 at 15.34.53.png")

完了ヽ(´ー｀)ノ

# 注意事項

local での実行環境を `Dropbox`との同期したディレクトリで作成している場合、余計なファイルも Herokuと同期されてしまいます。本家にもあるとおり、[Save hard drive space with selective sync](https://www.dropbox.com/en/help/175) による同期の制御や、`.gitignore` などの利用が付記されています。

## FAQ

[Dropbox Sync](https://devcenter.heroku.com/articles/dropbox-sync#faq)

試しきれていないのですが、ざっくり意訳するとこんな感じです。

### .gitignore and ignored files

Dropbox フォルダ上の `.gitignore` に該当するファイルは Heroku リポジトリへはコミットしないようです。

### App renames

Heroku App の名前を変えると、それに合わせて同期先のフォルダも変更しに行くようです。

### Conflicted files in Dropbox folder

Dropbox 同期中に発生したエラーで作成されるコンフリクトファイルがあると上手くいかなくなるようです。