SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
Sublime Text 2 ビルドにうもん

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

            @kuronekomichael

                                  1
sublはテキストエディタ


•エディタなんだけど、簡単な
 ビルド実行の仕組みも持っています
•デフォルトでF7キー or
 ツールバーの[Tools]-[Build]から実行可能

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

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

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




[Build]を実行すると、同ディレクトリに実行ファイルができるよ
                                    3
やってみよう!(Python)




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

                                4
何が起きているの?
》   Packages配下に、*.sublime-buildというファイルが
    あって、拡張子ごとのビルド設定が書いてある
》   前述のC/C++だとg++で実行形式にビルドするよう書い
    てあるし、Pythonならインタプリタで実行するように
    書いてある




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

》 C/C++          》 JavaC

》 D言語            》 Make

》 Erlang         》 Python

》 Haskel         》 Ruby

》 Ant


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

                                   6
例)Python.sublime-build
Macの場合) /Users/{ユーザ名}/Library/Application Support/Sublime Text 2/Packages/Python/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を押すと、ステータスバーに一定時間表示されます
                                                                                                7
ビルド設定の自作
》   設定項目はドキュメントに詳しくかいてあります(英語)
http://docs.sublimetext.info/en/latest/file_processing/build_systems.html


・当然ビルド設定ファイルはJSONファイルなので、自作できます
・拡張子を.sublime-buildにして、Package以下に配置
  (自作したものは、Package/User配下が良いです)


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




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


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


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


                 ので

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

》 ビルドは、
    プロジェクト単位でカスタマイズ
    できます
》   必要に応じて、メニューバーの[Project]-[Save Project As...]
    等でプロジェクトを作成しておいてください
》   [Project]-[Edit Project]等で、プロジェクト設定ファイル
    (*.sublime-project)を編集して、ビルド設定をカスタマイズす
    ることができます


》   プロジェクトファイルの書き方もドキュメントがあります
    http://www.sublimetext.com/docs/2/projects.html   10
例)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"
           }

}
    ]
                                                               11
実際にみてみましょ
          プロダクトコード    テストコード




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




               実行結果


                               12
まとめ
》   Sublは軽量なテキストエディタですが、
     – コンパイルやインタプリタの実行が
       かんたんにできます
     – プロジェクトにまとめて管理することで
       IDEのような環境を実現することもできます
     – ビルド設定をいじれば、自動テストの実行など
       も実現できます
》   Sublで快適なTDDライフをおくれるかもね!


                              13

Contenu connexe

Tendances

Power shellmemo
Power shellmemoPower shellmemo
Power shellmemoytanno
 
Azure Functions 入門
Azure Functions 入門Azure Functions 入門
Azure Functions 入門jz5 MATSUE
 
できる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャできる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャazuma satoshi
 
ドキュメントを直し続ける話 #kbkz_tech
ドキュメントを直し続ける話 #kbkz_techドキュメントを直し続ける話 #kbkz_tech
ドキュメントを直し続ける話 #kbkz_techMichihito Shigemura
 
Enterprise Manager 3.0
Enterprise Manager 3.0Enterprise Manager 3.0
Enterprise Manager 3.0Yuji Fujita
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法Naruto TAKAHASHI
 
映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010Hiroh Satoh
 
Node.jsで対戦ゲーム作ったよ
Node.jsで対戦ゲーム作ったよNode.jsで対戦ゲーム作ったよ
Node.jsで対戦ゲーム作ったよYuusuke Takeuchi
 
Dockerfile for Perl development
Dockerfile for Perl developmentDockerfile for Perl development
Dockerfile for Perl developmentYuzo Iwasaki
 
入門ClojureScript
入門ClojureScript入門ClojureScript
入門ClojureScriptsohta
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
Sphinx HTML Theme Hacks
Sphinx HTML Theme HacksSphinx HTML Theme Hacks
Sphinx HTML Theme HacksShoji KUMAGAI
 
Html5の通信対戦ゲームをテスト駆動開発で作ってみた
Html5の通信対戦ゲームをテスト駆動開発で作ってみたHtml5の通信対戦ゲームをテスト駆動開発で作ってみた
Html5の通信対戦ゲームをテスト駆動開発で作ってみたYuusuke Takeuchi
 
Shellを書こう 01 Shellcheckを使おう
Shellを書こう 01 Shellcheckを使おうShellを書こう 01 Shellcheckを使おう
Shellを書こう 01 Shellcheckを使おうKeisuke Oohata
 
How to spread reST and Sphinx
How to spread reST and SphinxHow to spread reST and Sphinx
How to spread reST and SphinxTakanori Suzuki
 

Tendances (20)

Power shellmemo
Power shellmemoPower shellmemo
Power shellmemo
 
Azure Functions 入門
Azure Functions 入門Azure Functions 入門
Azure Functions 入門
 
できる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャできる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャ
 
Git勉強会
Git勉強会Git勉強会
Git勉強会
 
Nodejs
NodejsNodejs
Nodejs
 
ドキュメントを直し続ける話 #kbkz_tech
ドキュメントを直し続ける話 #kbkz_techドキュメントを直し続ける話 #kbkz_tech
ドキュメントを直し続ける話 #kbkz_tech
 
Ansibleに貢献してみよう
Ansibleに貢献してみようAnsibleに貢献してみよう
Ansibleに貢献してみよう
 
Enterprise Manager 3.0
Enterprise Manager 3.0Enterprise Manager 3.0
Enterprise Manager 3.0
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法
 
映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010
 
Node.jsで対戦ゲーム作ったよ
Node.jsで対戦ゲーム作ったよNode.jsで対戦ゲーム作ったよ
Node.jsで対戦ゲーム作ったよ
 
Dockerfile for Perl development
Dockerfile for Perl developmentDockerfile for Perl development
Dockerfile for Perl development
 
入門ClojureScript
入門ClojureScript入門ClojureScript
入門ClojureScript
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
Sphinx HTML Theme Hacks
Sphinx HTML Theme HacksSphinx HTML Theme Hacks
Sphinx HTML Theme Hacks
 
SVN入門
SVN入門SVN入門
SVN入門
 
Html5の通信対戦ゲームをテスト駆動開発で作ってみた
Html5の通信対戦ゲームをテスト駆動開発で作ってみたHtml5の通信対戦ゲームをテスト駆動開発で作ってみた
Html5の通信対戦ゲームをテスト駆動開発で作ってみた
 
Shellを書こう 01 Shellcheckを使おう
Shellを書こう 01 Shellcheckを使おうShellを書こう 01 Shellcheckを使おう
Shellを書こう 01 Shellcheckを使おう
 
PHP勉強会 #51
PHP勉強会 #51PHP勉強会 #51
PHP勉強会 #51
 
How to spread reST and Sphinx
How to spread reST and SphinxHow to spread reST and Sphinx
How to spread reST and Sphinx
 

En vedette

Skuespilleren i antikken
Skuespilleren i antikkenSkuespilleren i antikken
Skuespilleren i antikkenAmalieKleppe
 
Surat siaran lembaga peperiksaan bil. 8 tahun 2013
Surat siaran lembaga peperiksaan bil. 8 tahun 2013Surat siaran lembaga peperiksaan bil. 8 tahun 2013
Surat siaran lembaga peperiksaan bil. 8 tahun 2013Mahfudz Ahamed
 
MRI Image Compression
MRI Image CompressionMRI Image Compression
MRI Image Compressiondswazalwar
 
Basketball taster
Basketball tasterBasketball taster
Basketball tasterMrsPolley
 
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたことKohki Nakashima
 
Block Matching Project
Block Matching ProjectBlock Matching Project
Block Matching Projectdswazalwar
 
微博调研究
微博调研究微博调研究
微博调研究li chong
 
Iris based Human Identification
Iris based Human IdentificationIris based Human Identification
Iris based Human Identificationdswazalwar
 
Thesis Licenseplaterecognitionincomplexscenes Fulldocument
Thesis Licenseplaterecognitionincomplexscenes FulldocumentThesis Licenseplaterecognitionincomplexscenes Fulldocument
Thesis Licenseplaterecognitionincomplexscenes Fulldocumentdswazalwar
 
Final Thesis Presentation Licenseplaterecognitionincomplexscenes
Final Thesis Presentation LicenseplaterecognitionincomplexscenesFinal Thesis Presentation Licenseplaterecognitionincomplexscenes
Final Thesis Presentation Licenseplaterecognitionincomplexscenesdswazalwar
 
ほんとにあったphantomjsのコワい話
ほんとにあったphantomjsのコワい話ほんとにあったphantomjsのコワい話
ほんとにあったphantomjsのコワい話Kohki Nakashima
 
JavaScriptでWebDriverのテストコードを書きましょ
JavaScriptでWebDriverのテストコードを書きましょJavaScriptでWebDriverのテストコードを書きましょ
JavaScriptでWebDriverのテストコードを書きましょKohki Nakashima
 
Retour d'expérience sur une utilisation avancée du MetaCPAN - journée Perl 2012
Retour d'expérience sur une utilisation avancée du MetaCPAN - journée Perl 2012Retour d'expérience sur une utilisation avancée du MetaCPAN - journée Perl 2012
Retour d'expérience sur une utilisation avancée du MetaCPAN - journée Perl 2012Erwan 'Labynocle' Ben Souiden
 
Ressources numériques en bibliothèque
Ressources numériques en bibliothèqueRessources numériques en bibliothèque
Ressources numériques en bibliothèqueRenaud Chauvet
 
WebDriverで始めるUIスモークテスティング入門
WebDriverで始めるUIスモークテスティング入門WebDriverで始めるUIスモークテスティング入門
WebDriverで始めるUIスモークテスティング入門Kohki Nakashima
 

En vedette (20)

Skuespilleren i antikken
Skuespilleren i antikkenSkuespilleren i antikken
Skuespilleren i antikken
 
Takwim sek
Takwim sekTakwim sek
Takwim sek
 
Surat siaran lembaga peperiksaan bil. 8 tahun 2013
Surat siaran lembaga peperiksaan bil. 8 tahun 2013Surat siaran lembaga peperiksaan bil. 8 tahun 2013
Surat siaran lembaga peperiksaan bil. 8 tahun 2013
 
Less - first step
Less - first stepLess - first step
Less - first step
 
MRI Image Compression
MRI Image CompressionMRI Image Compression
MRI Image Compression
 
Basketball taster
Basketball tasterBasketball taster
Basketball taster
 
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
 
Block Matching Project
Block Matching ProjectBlock Matching Project
Block Matching Project
 
Aplicaciones y Herramientas TIC
Aplicaciones y Herramientas TICAplicaciones y Herramientas TIC
Aplicaciones y Herramientas TIC
 
微博调研究
微博调研究微博调研究
微博调研究
 
Iris based Human Identification
Iris based Human IdentificationIris based Human Identification
Iris based Human Identification
 
Thesis Licenseplaterecognitionincomplexscenes Fulldocument
Thesis Licenseplaterecognitionincomplexscenes FulldocumentThesis Licenseplaterecognitionincomplexscenes Fulldocument
Thesis Licenseplaterecognitionincomplexscenes Fulldocument
 
Final Thesis Presentation Licenseplaterecognitionincomplexscenes
Final Thesis Presentation LicenseplaterecognitionincomplexscenesFinal Thesis Presentation Licenseplaterecognitionincomplexscenes
Final Thesis Presentation Licenseplaterecognitionincomplexscenes
 
ほんとにあったphantomjsのコワい話
ほんとにあったphantomjsのコワい話ほんとにあったphantomjsのコワい話
ほんとにあったphantomjsのコワい話
 
JavaScriptでWebDriverのテストコードを書きましょ
JavaScriptでWebDriverのテストコードを書きましょJavaScriptでWebDriverのテストコードを書きましょ
JavaScriptでWebDriverのテストコードを書きましょ
 
Véhicules électriques
Véhicules électriquesVéhicules électriques
Véhicules électriques
 
Retour d'expérience sur une utilisation avancée du MetaCPAN - journée Perl 2012
Retour d'expérience sur une utilisation avancée du MetaCPAN - journée Perl 2012Retour d'expérience sur une utilisation avancée du MetaCPAN - journée Perl 2012
Retour d'expérience sur une utilisation avancée du MetaCPAN - journée Perl 2012
 
Ressources numériques en bibliothèque
Ressources numériques en bibliothèqueRessources numériques en bibliothèque
Ressources numériques en bibliothèque
 
WebDriverで始めるUIスモークテスティング入門
WebDriverで始めるUIスモークテスティング入門WebDriverで始めるUIスモークテスティング入門
WebDriverで始めるUIスモークテスティング入門
 
Ecommerce UB 2016
Ecommerce UB 2016Ecommerce UB 2016
Ecommerce UB 2016
 

Similaire à 20121115 fukuoka sublime0_kuroneko

ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドToru Tamaki
 
Dot netcore multiplatform 2
Dot netcore multiplatform 2Dot netcore multiplatform 2
Dot netcore multiplatform 2shozon
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門sandai
 
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」ericsagnes
 
ソフトウェア工学2023 13 ドキュメンテーション
ソフトウェア工学2023 13 ドキュメンテーションソフトウェア工学2023 13 ドキュメンテーション
ソフトウェア工学2023 13 ドキュメンテーションToru Tamaki
 
E2D3 ver. 0.2 開発の手順書
E2D3 ver. 0.2 開発の手順書E2D3 ver. 0.2 開発の手順書
E2D3 ver. 0.2 開発の手順書E2D3.org
 
LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2Tomofumi Yagi
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShiftEtsuji Nakai
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Takako Miyagawa
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309Nobuhiro Sue
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATELibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATETomofumi Yagi
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップYasuhito Yabe
 
自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptxhkharu0803
 
Db2 Warehouse Spark利用ガイド チュートリアル編
Db2 Warehouse Spark利用ガイド チュートリアル編Db2 Warehouse Spark利用ガイド チュートリアル編
Db2 Warehouse Spark利用ガイド チュートリアル編IBM Analytics Japan
 
Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料Nobuhiro Iwamatsu
 

Similaire à 20121115 fukuoka sublime0_kuroneko (20)

ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルド
 
Dot netcore multiplatform 2
Dot netcore multiplatform 2Dot netcore multiplatform 2
Dot netcore multiplatform 2
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
 
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
 
ソフトウェア工学2023 13 ドキュメンテーション
ソフトウェア工学2023 13 ドキュメンテーションソフトウェア工学2023 13 ドキュメンテーション
ソフトウェア工学2023 13 ドキュメンテーション
 
E2D3 ver. 0.2 開発の手順書
E2D3 ver. 0.2 開発の手順書E2D3 ver. 0.2 開発の手順書
E2D3 ver. 0.2 開発の手順書
 
WindowsでMySQL入門
WindowsでMySQL入門WindowsでMySQL入門
WindowsでMySQL入門
 
LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2
 
Clang Modules
Clang ModulesClang Modules
Clang Modules
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
Djangoのススメ
DjangoのススメDjangoのススメ
Djangoのススメ
 
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATELibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATE
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx
 
Db2 Warehouse Spark利用ガイド チュートリアル編
Db2 Warehouse Spark利用ガイド チュートリアル編Db2 Warehouse Spark利用ガイド チュートリアル編
Db2 Warehouse Spark利用ガイド チュートリアル編
 
Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料
 

20121115 fukuoka sublime0_kuroneko

  • 1. Sublime Text 2 ビルドにうもん 2012/11/15 福岡 Sublime Text 2 勉強会-第0回- @kuronekomichael 1
  • 2. sublはテキストエディタ •エディタなんだけど、簡単な ビルド実行の仕組みも持っています •デフォルトでF7キー or ツールバーの[Tools]-[Build]から実行可能 今日は、この「ビルドの使い方」のはなし。 Sublime Text 2.appをビルドするって話じゃあないです。OOSでもないしね 2
  • 5. 何が起きているの? 》 Packages配下に、*.sublime-buildというファイルが あって、拡張子ごとのビルド設定が書いてある 》 前述のC/C++だとg++で実行形式にビルドするよう書い てあるし、Pythonならインタプリタで実行するように 書いてある 5
  • 6. はじめから対応している言語 》 C/C++ 》 JavaC 》 D言語 》 Make 》 Erlang 》 Python 》 Haskel 》 Ruby 》 Ant つーても、コンパイラやランタイムは自前で用意する必要があります。 あくまでショートカット一発で、コマンドが実行できるだけなんで 6
  • 7. 例)Python.sublime-build Macの場合) /Users/{ユーザ名}/Library/Application Support/Sublime Text 2/Packages/Python/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を押すと、ステータスバーに一定時間表示されます 7
  • 8. ビルド設定の自作 》 設定項目はドキュメントに詳しくかいてあります(英語) http://docs.sublimetext.info/en/latest/file_processing/build_systems.html ・当然ビルド設定ファイルはJSONファイルなので、自作できます ・拡張子を.sublime-buildにして、Package以下に配置  (自作したものは、Package/User配下が良いです) 例) *.jsファイルはNodeで実行する(JavaScript.sublime-build) 8
  • 9. でもさ  》 ファイル単体でのビルドはいいけど、 一般的にはソースファイルが沢山あってビルドするでしょー 》 例えば、拡張子はおなじでも 「単体のユーティリティスクリプトとしてのjsファイル」と、 「Webアプリの一部としてのjsファイル」で 実行したい内容は変わってくるでしょー 》 拡張子単位でビルド設定が決まるのはイケてない! ので 9
  • 10. プロジェクトのビルド設定 》 ビルドは、 プロジェクト単位でカスタマイズ できます 》 必要に応じて、メニューバーの[Project]-[Save Project As...] 等でプロジェクトを作成しておいてください 》 [Project]-[Edit Project]等で、プロジェクト設定ファイル (*.sublime-project)を編集して、ビルド設定をカスタマイズす ることができます 》 プロジェクトファイルの書き方もドキュメントがあります http://www.sublimetext.com/docs/2/projects.html 10
  • 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" } } ] 11
  • 12. 実際にみてみましょ プロダクトコード テストコード プロジェクトの ファイル一式 実行結果 12
  • 13. まとめ 》 Sublは軽量なテキストエディタですが、 – コンパイルやインタプリタの実行が かんたんにできます – プロジェクトにまとめて管理することで IDEのような環境を実現することもできます – ビルド設定をいじれば、自動テストの実行など も実現できます 》 Sublで快適なTDDライフをおくれるかもね! 13