20121115 fukuoka sublime0_kuroneko

13
1 Sublime Text 2 ビルドにうもん 2012/11/15 福岡 Sublime Text 2 勉強会-第0回- @kuronekomichael

Transcript of 20121115 fukuoka sublime0_kuroneko

Page 1: 20121115 fukuoka sublime0_kuroneko

1

Sublime Text 2 ビルドにうもん

2012/11/15福岡 Sublime Text 2 勉強会-第0回-

@kuronekomichael

Page 2: 20121115 fukuoka sublime0_kuroneko

2

sublはテキストエディタ

•エディタなんだけど、簡単な ビルド実行の仕組みも持っています

•デフォルトでF7キー or ツールバーの[Tools]-[Build]から実行可能

今日は、この「ビルドの使い方」のはなし。

Sublime Text 2.appをビルドするって話じゃあないです。OOSでもないしね

Page 3: 20121115 fukuoka sublime0_kuroneko

3

やってみよう!(C言語)

[Build]を実行すると、同ディレクトリに実行ファイルができるよ

Page 4: 20121115 fukuoka sublime0_kuroneko

4

やってみよう!(Python)

ちょっとしたスクリプトを書いて、そのまま即実行できちゃう♪

Page 5: 20121115 fukuoka sublime0_kuroneko

5

何が起きているの?

》 Packages配下に、*.sublime-buildというファイルがあって、拡張子ごとのビルド設定が書いてある

》 前述のC/C++だとg++で実行形式にビルドするよう書いてあるし、Pythonならインタプリタで実行するように書いてある

Page 6: 20121115 fukuoka sublime0_kuroneko

6

はじめから対応している言語

》C/C++

》D言語

》Erlang

》Haskel

》Ant

》JavaC

》Make

》Python

》Ruby

つーても、コンパイラやランタイムは自前で用意する必要があります。あくまでショートカット一発で、コマンドが実行できるだけなんで

Page 7: 20121115 fukuoka sublime0_kuroneko

7

例)Python.sublime-build

{

// “cmd”ターミナルで実行するコマンドを指定

"cmd": ["python", "-u", "$file"],

// “file_regex”:ビルド結果からエラー行を検出するための// 正規表現を指定(optional)

"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",

// “selector”: ビルド対象をautomaticで判断するための

// 識別子を指定する(optional) ※

"selector": "source.python"

}

※識別子(例:”source.python”)とは、拡張子別に決まった固定の文字列です。

 知りたいファイルを開いてCmd+Opt+pを押すと、ステータスバーに一定時間表示されます

Macの場合) /Users/{ユーザ名}/Library/Application Support/Sublime Text 2/Packages/Python/Python.sublime-build

Page 8: 20121115 fukuoka sublime0_kuroneko

8

ビルド設定の自作

》 設定項目はドキュメントに詳しくかいてあります(英語)

http://docs.sublimetext.info/en/latest/file_processing/build_systems.html

・当然ビルド設定ファイルはJSONファイルなので、自作できます

・拡張子を.sublime-buildにして、Package以下に配置 (自作したものは、Package/User配下が良いです)

例) *.jsファイルはNodeで実行する(JavaScript.sublime-build)

Page 9: 20121115 fukuoka sublime0_kuroneko

9

でもさ 

》 ファイル単体でのビルドはいいけど、一般的にはソースファイルが沢山あってビルドするでしょー

》 例えば、拡張子はおなじでも「単体のユーティリティスクリプトとしてのjsファイル」と、「Webアプリの一部としてのjsファイル」で実行したい内容は変わってくるでしょー

》 拡張子単位でビルド設定が決まるのはイケてない!

ので

Page 10: 20121115 fukuoka sublime0_kuroneko

10

プロジェクトのビルド設定

》ビルドは、プロジェクト単位でカスタマイズできます

》 必要に応じて、メニューバーの[Project]-[Save Project As...]等でプロジェクトを作成しておいてください

》 [Project]-[Edit Project]等で、プロジェクト設定ファイル(*.sublime-project)を編集して、ビルド設定をカスタマイズすることができます

》 プロジェクトファイルの書き方もドキュメントがありますhttp://www.sublimetext.com/docs/2/projects.html

Page 11: 20121115 fukuoka sublime0_kuroneko

11

例)sample.sublime-project{

// プロジェクトフォルダ"folders": [{

// プロジェクトに含めるディレクトリパス"path": ".",// 上記path内から除外するディレクトリパターン"folder_exclude_patterns": [],// 上記path内から除外するファイルパターン"file_exclude_patterns": ["*.sublime-workspace"]

}],// プロジェクト固有の設定"settings": {

"tab_size": 4,"translate_tabs_to_spaces": true

},// プロジェクト固有のビルドシステム(既存の設定を上書き)"build_systems":[

{"name": "JavaScript","cmd": ["/usr/local/share/npm/bin/mocha"],"working_dir": "$project_path","selector": "source.js"

}]

}

Page 12: 20121115 fukuoka sublime0_kuroneko

12

実際にみてみましょ

実行結果

テストコードプロダクトコード

プロジェクトのファイル一式

Page 13: 20121115 fukuoka sublime0_kuroneko

13

まとめ

》 Sublは軽量なテキストエディタですが、

– コンパイルやインタプリタの実行がかんたんにできます

– プロジェクトにまとめて管理することでIDEのような環境を実現することもできます

– ビルド設定をいじれば、自動テストの実行なども実現できます

》 Sublで快適なTDDライフをおくれるかもね!