Sublime Text3+MavensMateでSalesforce.comの開発環境を作る

Force.comの開発環境
===================

Force.comの開発環境としてメジャーなのは下記かと思います。

-   SalesforceのWeb画面
-   Force.com 開発者コンソール
-   Eclipse + Force.com IDEプラグイン

Force.com開発者コンソールは結構良くできていると思います。オートコンプリート機能もあるし、デバッグログも表示できます。さらにSOQLも実行できます。Webベースでここまで開発環境を作るか！と思いました。ブラウザがクラッシュしたり、誤って閉じてしまっても直前の状態を保持していたり、気が利いているところも素晴らしいです。

Eclipse + Force.comIDEプラグインについては、（自分の設定が不足しているのかもしれませんが）オートコンプリートされないようです。デバッグログも統合されていないので、SFDC
Web画面もしくは、Force.com開発者コンソールを併用する感じになります。
私の場合は、小さくコーディング→実行→ログで動作確認という小さいサイクルを繰り返すので、ちょっとツライ。
これならForce.com開発者コンソールのほうが良いかなと思っていたところ、Sublime
Text3+MavensMateで統合開発環境ができるようなので、環境準備して試します。

※この記事は [Sublime_Text3でSalesforce.comの開発環境を作る](http://www.dondari.com/Sublime_Text3%E3%81%A7Salesforce.com%E3%81%AE%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%82%92%E4%BD%9C%E3%82%8B)の転載です。

環境準備
========

全体的な環境
------------

-   手元の環境 Windows10
-   SFDC Summer '16
 - Developer組織
-   Sublime Text3 Build 3126
-   MavensMate for Sublime Text v7.0.2
-   MavensMate-app v0.0.10

Sublime Text3
-------------

### Sublime Text 3をインストール

下記サイトからダウンロード、インストールします。
[`http://www.sublimetext.com/3`]

### Package Controlをインストール
-   下記ページのテキスト（import urllib ..(snip).. write(by)部分）をコピー
[`https://packagecontrol.io/installation#st3`]

-   Sublime Text 3のメニューバー、View &gt; Show Console
-   表示されたコンソールにペースト、Enterキーでインストールされます。

### MavensMateパッケージのインストール

-   Preferences &gt; Package Control  
   ![forcecom-dev1.png](https://qiita-image-store.s3.amazonaws.com/0/53115/7923fb02-837f-184a-95a7-24b362aa6426.png)
-   “Package Control: Install Package” を探してEnter  
 ![forcecom-dev2.png](https://qiita-image-store.s3.amazonaws.com/0/53115/b8ea94e0-b731-5b8d-66bf-56a1afa77ec3.png)
-   “MavensMate” を探して Enter  
 ![forcecom-dev3.png](https://qiita-image-store.s3.amazonaws.com/0/53115/14da832c-fdd4-b9c5-0fa7-eed12db4428a.png)

 ![forcecom-dev-4-1.png](https://qiita-image-store.s3.amazonaws.com/0/53115/308b9b82-bdbc-f0a6-6aa1-3d2f823d0a18.png)

-   MavensMate-appというサーバー機能が必要なのでインストールが必要ということです。（バージョン5からこういう仕組みに変更になったようです）

  [`http://www.sublimetext.com/3`]: http://www.sublimetext.com/3
  [`https://packagecontrol.io/installation#st3`]: https://packagecontrol.io/installation#st3

MavensMate-appをインストール
----------------------------
- リリースページでバイナリ配布されています。ダウンロードしてインストールします。(windowsアプリ)
- https://github.com/joeferraro/MavensMate-Desktop/releases

![mavensmateapp-1.png](https://qiita-image-store.s3.amazonaws.com/0/53115/8344ff02-3354-6cbe-edce-ee7304ed0b52.png)

-   MavensMate-appは接続するSalesforce組織ごとに"Project"という単位で管理するようです。プロジェクトを保存するパスを設定します。
    -   Settings &gt; MavensMate Settings &gt; Workspaces(mm\_workspace)へ設定記述します。(JSON format)

<pre>
[
  "C:\\Users\\shinsaka\\workspaces-mm"
]
</pre>
![mavensmateapp-2.png](https://qiita-image-store.s3.amazonaws.com/0/53115/2522cf06-6edb-48d1-12e5-676096d4acc2.png)
![mavensmateapp-3.png](https://qiita-image-store.s3.amazonaws.com/0/53115/25b112f0-bfa1-3db0-aa96-eaed39268bab.png)

Project作成
===========
-   New Project を選択します。  
![mavensmateapp-4.png](https://qiita-image-store.s3.amazonaws.com/0/53115/afd0a04d-7406-9dbd-bc16-5fb5e878ffd2.png)
-   Project Details に各種情報を入力します。
    -   パスワードフィールドはいつものです。（パスワード＋セキュリティトークン）  
![mavensmateapp-5.png](https://qiita-image-store.s3.amazonaws.com/0/53115/f90726b2-12fb-d524-10db-bfa95141183b.png)
-   Create ProjectをクリックするとSFDCと接続し、Projectが作成されます。Open in Sublimeをクリックすると連動してSublime Text3が起動します。FOLDERSペインにApexClassたちが表示されます。  
![mavensmateapp-6.png](https://qiita-image-store.s3.amazonaws.com/0/53115/19d074b9-2eeb-b282-77f9-6f3e5a7501ca.png)
オートコンプリート
==================
オートコンプリート機能を試してみます。

-   項目がサジェストされるのを期待してAccountオブジェクト（＝取引先）で試してみますが、ダメです。どうやらオブジェクトの情報を取得できていないことが原因のようです。  
![exec-1.png](https://qiita-image-store.s3.amazonaws.com/0/53115/6666eb76-ad6c-d4ce-2896-451acedbeca5.png)

プロジェクト設定を変更する
--------------------------
-   MavensMate-appへ戻り、Project Homeのメニュー &gt; Project &gt; Edit Projectを選択します。（ちょっとメニューの階層がわかりにくい）  
  ![mavensmateapp-edit-1.png](https://qiita-image-store.s3.amazonaws.com/0/53115/58622a9e-3ba8-6d70-013e-f7fabe53e660.png)
-   Advancedページで"CustomObject"を選択します。  
  ![mavensmateapp-edit-2.png](https://qiita-image-store.s3.amazonaws.com/0/53115/fc946336-160f-7ef8-9634-5a81d09d4cc6.png)
-   続いて、Project Metadataページで"CustomObject"をチェックします。（必要なメタデータだけをダウンロードできるように考慮されているようです）  
  ![mavensmateapp-edit-3.png](https://qiita-image-store.s3.amazonaws.com/0/53115/8acc3f32-ae13-716f-1661-40e692c52454.png)
-  Update Projectをクリックしてちょっと待ちます。  
  ![mavensmateapp-edit-4.png](https://qiita-image-store.s3.amazonaws.com/0/53115/ef4ab506-7f12-3749-71eb-231bf9248efd.png)
-   設定が完了しました。この時点で情報がダウンロードされて更新されています。  
  ![mavensmateapp-edit-5.png](https://qiita-image-store.s3.amazonaws.com/0/53115/ad25919f-3f00-847b-1547-2397fb8f061f.png)

再度オートコンプリート機能を確認
--------------------------------

-   Sublime
    Text3へ戻り、確認します。今度は期待通りAccountオブジェクトの項目がサジェストされます。素晴らしい。  
![exec-2.png](https://qiita-image-store.s3.amazonaws.com/0/53115/ffeec8ef-2118-12ee-d092-cc1fad4796ef.png)

デバッグログの確認
==================

-   次はデバッグログです。これは簡単、メニューからロギング開始・終了できます。
-   Sublime Text3のメニュー &gt; MavensMate &gt; Debugging &gt; Start Logging  
![debug-1.png](https://qiita-image-store.s3.amazonaws.com/0/53115/837b69ee-651f-853a-b51b-a25637071ce6.png)
-   SFDC側でApexが実行されるような操作をすると、プロジェクト内のディレクトリ(project/debug/logs/)へ自動的にログがダウンロードされます。素晴らしい。（※MavensMate for Sublime Text ver4では、毎回Log Fetchする必要があったのが、自動ダウンロードに改善されている）  
![debug-2.png](https://qiita-image-store.s3.amazonaws.com/0/53115/80ab8729-2733-98d7-5968-eef28396fcef.png)