今回は「Sublime Text」について。ライトユーザには「?」な存在かもしれないが、WEB系開発に従事するいまどきのプログラマには言わずもがな、豊富な機能と拡張性で高い評価を得ているテキストエディタだ。かれこれ20年以上GNU Emacs(MuleやMeadow含む)を使い続けている筆者だが、調査を含めこの新顔テキストエディタに取り組むことにした。
Sublime Textの特徴
Sublime Textは、開発者の利用を強く意識したテキストエディタだ。Pythonをベースに開発されており、OS XのほかLinuxとWindowsに対応、マルチプラットフォームで利用できる。有償(70 US$)・プロプライエタリなソフトウェアだが、試用期間に期限はなく機能制限も設けられていない。8月時点における最新バージョンは2.0.2で「Sublime Text 2」と呼ばれるが、次期バージョン(Sublime Text 3)のβテストも進められている。
テキストエディタゆえに基本的には「(プレイン)テキスト編集ツール」だが、ある意味徹底的なまでに「コードの記述」を支援する機能を備えていることが、Sublime Textの特徴といえるだろう。予約語などを色分け表示するシンタックスハイライト機能を装備、対応する開発言語はデフォルトで70種以上。もちろん関数や変数を入力補完する機能や、対括弧の強調表示機能もある。各種機能をすばやく呼び出せるコマンドパレットなど、キーボード重視のUIも用意されている。
OS Xの場合、インストールそのものはかんたん。ダウンロードしたDMGファイルをマウント、Sublime Textのバンドル(Sublime Text.app)をアプリケーションフォルダへコピーすればいい。作業はこれだけ、シンプルこのうえない。しかし、筆者はこのあとSublime Textの奥深さを身に染みて感じることになる。
外部開発ツールとの連携
Sublime Textが人気の理由は、そのようなテキストエディタとしての機能にあることは確かだが、外部のビルドシステムとの連携がスムーズということも大きい。書いたコードをすぐに試せる、外部の開発ツールでそのままビルドできるという点は大きなメリットとなる。
たとえば、JavaScriptのコードを検証するにはローカルにJavaScriptの実行環境が必要だが、Sublime Textで「Tools」→「Build System」→「New Build System...」を選択し、「Node.js」用の定義ファイル(リスト1)を適当な名前で登録しておけば、JavaScriptファイル(*.js)を開いているときCommand-Bをタイプすると、コンソール画面で実行結果を確認できる。いちいちブラウザを開いたりTerminalでコマンドを実行したりする必要がないので、関数の結果確認などに重宝しそうだ。
リスト:Node.jsの設定
{
"cmd": ["node","$file","file_base_name"],
"osx":{"path": "/usr/local/bin:$PATH"},
"working_dir":"${project_path:${folder}}",
"selector":"*.js"
}
気になる日本語環境は?
近ごろは夜更けにJavaScriptやCoffeeScriptで何か書いている筆者だが、もちろん主業はコラム書き。日本語の文章をストレスなく編集できるエディタでなければ、どれほどコーディング支援機能が優れていても日常の道具としては利用できない。
Sublime Textはどうかというと、日本語は扱えるもののメニューなど日本語ローカライズは実施されていない。デフォルトではサポートされる文字符号化形式がUTF-8のみのため、シフトJISなど他形式でエンコードされたテキストファイルを読み書きできない。フォントサイズも初期値の10ポイントでは小さすぎ……と、ツッコミどころは満載だ。
すべてを一気に解決することはできないので、まずはパッケージシステムを導入することから始めよう。Sublime Textには拡張性があり、パッケージを導入することで機能を追加できるのだ。Mac版のSublime Text 3にパッケージシステムを導入するには、Control-[`]を押してコンソール画面を表示し、そこへ以下の行をコピー&ペーストして実行する。その後Sublime Textを再起動すれば、作業は完了だ。
import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read()); print('So, you may restart Sublime Text 3!')
次に、メニューバーで「Tools」→「Command Palette...」を選択してコマンドパレットを表示し、「install」とタイプしてみよう。すべてタイプし終える前に、「Package Control: Install Package」という選択肢が逐次検索の結果現れるはず。これを実行すれば、インストール可能なパッケージが一覧される。そこで「japanize」とタイプすれば、Sublime Textのメニューを日本語化するパッケージが現れるはず。同様に、「ConvertToUTF8」というパッケージもインストールすれば、シフトJISや日本語EUCも読みとれるようになり、日本語対応はひとまず完了だ。