Herokuだけじゃない！Deploy to Salesforceボタンの使い方

# はじめに

登場してからだいぶ日が経ちますが、[Heroku Button] (https://devcenter.heroku.com/articles/heroku-button) 、便利ですよね。
GitHub で公開されている Heroku アプリをボタン一発で自分の Heroku アカウントにデプロイすることができ、
これにより他人が公開しているアプリを簡単に試すことができるようになりました。

![SS 2014-12-24 23.31.08.png](https://qiita-image-store.s3.amazonaws.com/0/36518/06cd89b1-1931-b4bd-7956-ddc7470332d5.png)

ところで、これと **同じようなことが Salesforce でもできる** ことをご存知でしょうか？
それが「Deploy to Salesforce」ボタンです。

![SS_2014-12-24_23_34_40.png](https://qiita-image-store.s3.amazonaws.com/0/36518/45393aa6-7227-8fe1-fde2-93ec5078801e.png)


この Deploy to Salesforce ボタンは Heroku ボタンと同じように GitHub の README に設置し、
クリックすると GitHub に公開しているコード(Apex や Visualforce) を好きな開発組織にデプロイできます。

というわけでとっても便利そうな Deploy to Salesforce ボタンですが
日本語で解説されてるサイトも見当たらないので、設置方法と使い方をまとめてみます。

# 参考サイト

今回の Deploy to Salesforce ボタンはこちらの記事で紹介されているものです。(開発者本人のブログ？)

http://andyinthecloud.com/2014/09/27/the-new-github-deploy-to-salesforce-tool-button/

# GitHub
Deploy to Salesforce ボタンを設置してみたリポジトリがこちらにあります。

https://github.com/zaki-yama/deploy_to_salesforce_sample

# Deploy to Salesforce ボタンを設置してみる

自分の GitHub リポジトリに Deploy to Salesforce ボタンを設置するための手順です。

1. https://githubsfdeploy.herokuapp.com/ にアクセス
2. 「Owner」に GitHub のユーザー名を、「Repository」に GitHub のリポジトリ名を入力する
3. 「Show GitHub README button code」のチェックを入れる
4. 下部に Html のコードが表示されるのでコピーする
5. GitHub の README.md にソースコードを貼り付ける

https://githubsfdeploy.herokuapp.com/ にアクセスするとこのような画面が表示されます(1.)。
![SS 2014-12-25 0.03.45.png](https://qiita-image-store.s3.amazonaws.com/0/36518/209df529-2194-7f57-95d2-cf3745775d59.png)

「Owner」、「Repository」に自分の GitHub の情報を入力し(2.)、一番下の「Show GitHub...」をチェックします(3.)。
一番下に表示される html のコードをコピーしましょう。

![SS_2014-12-25_0_13_55.png](https://qiita-image-store.s3.amazonaws.com/0/36518/01b25cd9-76ff-5d01-97c2-e3ff38437444.png)

コピーしたコードを README に貼付けたら完了です。

# ソースコードも GitHub リポジトリに配置する

先ほどの README と一緒に、デプロイしたいソースコードを GitHub で公開します。

今回は簡単な例として、

- Apexクラス (.cls)
- Apexトリガ (.trigger)
- Visualforceページ (.page)

を用意しました。
ディレクトリの構成は以下の通りです。

```zsh
.
├── README.md
└── src
    ├── package.xml
    ├── classes
    │   ├── HogeClass.cls
    │   └── HogeClass.cls-meta.xml
    ├── pages
    │   ├── HogePage.page
    │   └── HogePage.page-meta.xml
    └── triggers
        ├── HogeTrigger.trigger
        └── HogeTrigger.trigger-meta.xml
```

# Deploy to Salesforce ボタンを使ってみる

では、配置した Deploy to Salesforce ボタンを使ってみます。
GitHub のリポジトリにアクセスし、
Deploy to Salesforce ボタンをクリックします。

![SS 2014-12-25 0.32.58.png](https://qiita-image-store.s3.amazonaws.com/0/36518/8c0e9fb0-ea53-8f6a-df2a-d72d664f6ce7.png)

![SS 2014-12-25 0.21.03.png](https://qiita-image-store.s3.amazonaws.com/0/36518/7b5cec97-4b40-450c-4808-964c6bd5a22d.png)

このように、ユーザー名、リポジトリ名が既に入力された状態で先ほどの画面が開くので、
「Login to Salesforce」ボタンをクリックします。
(初回のみ許可を求められます)
![SS 2014-12-25 0.45.12.png](https://qiita-image-store.s3.amazonaws.com/0/36518/aca812a4-4f0a-e0af-df4c-46712bea81b4.png)

こんな感じで、デプロイ実行前に内容を確認できます。
![SS 2014-12-25 0.45.59.png](https://qiita-image-store.s3.amazonaws.com/0/36518/adc37843-e574-b1d5-7940-ec9ea59009aa.png)

「Deploy」ボタンをクリックすると...
![SS 2014-12-25 0.46.47.png](https://qiita-image-store.s3.amazonaws.com/0/36518/477c2e4e-8f79-6ada-d9a5-8c63d6624ffe.png)

開発組織へのデプロイが完了しました！

![SS_2014-12-25_0_48_10.png](https://qiita-image-store.s3.amazonaws.com/0/36518/8ab53db6-9fb3-8dd1-482b-fb7051b924bd.png)
念のため開発組織にログインして確認しましたが、ちゃんとデプロイできています。

# その他

基本的な使い方は上に書いた通りです。
あとは、[この記事](http://andyinthecloud.com/2013/09/24/deploy-direct-from-github-to-salesforce/) (開発者のブログ) に書いていることの中からいくつか注意点をメモ。

- `package.xml` は **必須ではないが、使用を推奨**
  - 割とリポジトリ内のソースコード検知は自動で賢くやってくれるそうなんですが、用意した方が間違いがないよとのこと。
- デプロイ時に **テストは実行されない** ので、**本番組織へのデプロイは不可**
  - 試してませんが。

また、今回はちょっと触ってみた程度なので、気になることとか。

- Pull Request に配置したりするとどうなるの？
- 同一名のファイルがデプロイ先の組織に既に存在したら上書き？

# おわりに

このネタで [Salesforce1 Advent Calendar](http://qiita.com/advent-calendar/2014/salesforce1) に参加すればよかった。。。
メリークリスマス。