エンジニアブログ

エンジニアブログ
Salesforce

どうしてもApex+Visualforceをvimで開発したかった

YT 2013年06月15日

こんにちわ。エンジニアのYTです。

私は最近、Salesforce関連の開発プロジェクトに参加させて頂いています。

Salesforceはプログラムを書かずともある程度の機能は作れてしまうよ!というのが売りだったりしますが、「ある程度」以上の機能が必要になる場合にはApexやVisualforceと呼ばれるプログラム的なものを書かなければ実現できなくなってきます。

しかし、ApexやVisualforceのコードを書く環境はSalesforceへログインしてのWEBブラウザ経由での開発か、EclipseプラグインのForce.com IDE くらいしか公式には提供されていません。多分。

長くWEB業界に身を置いている自分は、LinuxにSSHログインしてvimでコードを書くという作業に慣れてしまっている事もあり、
「開発するのにテキストエディタも選べないなんて・・・」などと思ってしまいます。

本来はEclipseでの開発に慣れるのが望ましいのかもしれませんが、いかんせんEclipseは動作が重い。
工夫したり、お金をかけてマシンスペックを上げたりする事でEclipseでも快適な環境を作る事はできるのでしょうが、
公式提供のForce.com IDEではシンタックスハイライトすらまともにはしてくれない始末。
こういった諸々で工夫する気も失せてしまい、vimで開発ができないかを調べたところ・・・

ありました!
vimでApexのシンタックスハイライトやテスト、デプロイまでができるようになる素敵なプラグインが!!

その名もvim-force.com

これをダウンロードして、あとは同梱のREADME.mdに従うだけです!
英語が苦手な自分は若干苦労しましたが、無事導入できました。

以下に簡単に導入の手順を記載してみます。

JDK、JREのインストール
次項のAntの動作の為に必要です。
バージョンは多分最新なら問題ないと思います。

Apache Antのインストール
MacOSX Mountain Lionならデフォルトで入ってるのか、XCodeを入れると入るのかよくわかりませんが、自分は入ってました。
入っていない場合は適当に入れます。
入ってるかどうかわからない場合はターミナルで

# ant -version

等とするとわかります。

 

ここまでの手順は、Force.com Migration Tool というものを動作させる為の手順のようです。
これが何であるのかはよくわからないものの、どうやら vim-force.com は、Force.com Migration Tool を裏で操作する事でコードのテストやビルド、デプロイを行うようです。
で、肝心のForce.com Migration Toolは、Salesforceにログインした後、下記の画像の「Force.com 移行ツール」リンクからダウンロードできます。

sf_migtool_link.png

これを展開するとant-salesforce.jarというファイルが出てきますので
これはローカル環境のホームディレクトリに ~/.ant/lib/ みたいなディレクトリを掘ってこの中に入れます。

更に、展開した中に同梱されている sample/ ディレクトリ内の、build.properties も重要なファイルです。
このファイルの中に、Salesforceへのログイン情報などを記述し、ファイル名を「プロジェクト名.properties」のように変更します。
そしてプロジェクトが増えても問題ないように、propertiesファイルをまとめておくディレクトリを作っておきます。
僕は ~/workspace/apex.properties/ というディレクトリを作って置きました。

ここまでで、vim-force.com からApexコードのテストをする環境ができました。

・vim-force.com の導入
適当で構いませんが、僕は~/vim/ というディレクトリを作り、ここにvimプラグインをまとめていたりします。
このルールに則って~/vim/force.com/ として配置しました。

そしてvimrcファイルなんかに下記を追記します。中身は環境に合わせて書き換えてください。

	if has("unix")
		let &runtimepath=&runtimepath . ',~/vim/force.com'
	elseif has("win32")
		let &runtimepath=&runtimepath . ',c:\Documents and Settings\username\vimfiles\force.com'
	endif
	" make sure vim loads apexcode filetype detection
	runtime ftdetect/vim-force.com.vim

	filetype plugin on
	syntax on
	""" 下記はプロジェクト毎だったり環境によって色々変えてください。
	" build.properties ファイルはForce.com Migration Tool 内にサンプルが入って
	いますので、
	" これを環境に合わせて編集して、いい場所に置いてください。
	let g:apex_properties_folder="/sources/workspace/hoge/build.properties"
	let g:apex_temp_folder="/tmp/apex/gvim-deproyment"
	let g:apex_deployment_error_log="/tmp/gvim-deployment-error.log"

あとはおもむろにApexクラスファイルや、Visualforceページファイルなんかをvimで開けば・・・

vim-apex.pngのサムネイル画像

vim-vf.png

素敵!カラースキーマも自分の好きなものを使えてます!
テスト、デプロイなども、:ApexDeploy コマンドで一発です!

その他詳しい使い方はヘルプや、vim-force.com の紹介動画でご確認ください。

これで自分を含め、世のvim信者の皆さんも気兼ねなくApex、Visualforceの開発に挑めますね!

 

さて、スカイアークではまだまだエンジニアを募集しています。
「Salesforceは敷居が高そうだし、新しい言語を覚えるのはちょっと・・・」というWEB系エンジニアの方でも大丈夫!
僕も元々WEB系エンジニアですが意外とやれてます。
興味がありましたらこちらよりエントリーください!

 

2013/06/18 追記

propertiesファイルの記述の仕方がちょっとハマり所かなと思いましたので、補足しておきます。

propertiesファイルに記述するものは、ログインユーザID、パスワード+セキュリティトークン ぐらいのものですが、
この「パスワード+セキュリティトークン」が僕はなかなかわかりにくかったです。

Force.com Migration Tool の使い方を調べればすぐに出てくるのですが、
パスワード文字列の後ろにセキュリティトークンをくっつけた文字列を、sf.password 項目に設定します。

下記のようにします。(パスワードが「abc123def」, セキュリティトークンが「tokentokentoken」であるものとします)

sf.password = abc123deftokentokentoken

あともうひとつハマり所としては、vimrcに記述する変数の値ですが、
g:apex_temp_folder や、 g:apex_properties_folder 等の、ファイル/ディレクトリパスを指定する部分は
必ずフルパスで記述する必要があります。
~/ でホームディレクトリを使うとか、相対パスで指定するとかはできないようです。
また、g:apex_deployment_error_log は、g:apex_temp_folder で指定したディレクトリ内のファイル名指定のようなので、
ここではファイル名を指定するだけで、パスは設定しなくても良いようです。