ばかおもちゃ本店:Youtube twitter:@sashimizakana Amazon.co.jpアソシエイト

2013年7月31日水曜日

Sublime TextでStino(Arduinoの開発環境プラグイン)をつかう

Sublime Textというエディタが良い感じだ。

Sublime Textはプログラミングなどの用途に便利なテキストエディタだ。統合開発環境の類ほど重たくなく、かつ一般的なテキストエディタと比べるとプラグインを入れればかなりの機能拡張も可能だ。私がそうなのだけど、Eclipseは重くてもっさりしてるからヤだけど、完全なテキストエディタよりはもうちょっと機能が欲しい、なんて人に向いている。
これまではNotepad++を使っていたのだけど、最近はこればかり使っている。

http://www.sublimetext.com/

説明するより試用は無制限なので、使ってみると良いと思う。
継続的な利用をするならライセンスを使ってね的な感じだが、特に機能制限や期間制限なんかは無いと思う(私はすぐライセンスを買ったので確かでは無い)。

実際の所、これで出来ることはおそらく大半がNotepad++でも出来るだろう。
Notepad++にも沢山の拡張機能が配布されているし、カスタマイズもできる。
なので、Sublime Textが優れている点は、出来ることより、使っている時の感触みたいな部分にあると思っている。

たとえばNotepad++で拡張機能を使おうと思うと、ファイルを落としてきてプラグインフォルダに入れる、という作業になるが、Sublime Textはパッケージ管理用のプラグインを最初に入れてしまえば、あとはエディタ内でコマンドを打ちリポジトリから拡張機能の一覧を出して選択するだけですぐにインストールができる。
削除するときも同様にコマンドからすぐに行うことができる。
これは些細なことではあるけど、非常に快適だ。

またSublime Textやプラグイン(の多く)はDefault設定とUser設定というものがあり、JSON形式なんかで基底の設定(Default)と、それを上書きする個人設定(User)をエディタ内で編集することが出来る。たとえばスペースかタブか、スペースの個数はとか、フォントの種類はとかそういう設定はUser設定に書いてしまえば良い。

プラグインはかなりの数があり、たとえばJavaScriptを開いたときにunderscore.jsのスニペットを出すとか、GitやSVNのコミットなんかをショートカットキーで出来るようにするものだとか、左側に表示されるファイラーの右クリックメニューにExplorerで開くを追加したり、デフォルトでは日本語入力がインラインに表示されないのでIMEのサポートを追加したりすることもできる。

で、表題の件だが、Arduinoの開発環境の代わりにSublime Textを使うこともできる。
Arduinoの開発環境はArduinoで必要なもの全部入りで便利っちゃ便利なんだけど、エディタとしてはやや貧弱だ。もちろん他のエディタで書いてコピペすれば良いんだけど、それはやっぱり面倒くさい。
Sublime Textならこの問題も解消するパッケージがある。

Stino https://github.com/Robot-Will/Stino

上記のStinoがそれだ。パッケージマネージャではArduino-like IDEという名前になる。
これを入れると、Arduinoのinoファイルを開くとメニュー内にArduinoという項目が表示されるようになって、そこからArduinoの開発環境で行えることがすべて出来るようになる。シリアルモニターもあって、これが他のファイルと一緒にタブに開いたりするのがなかなか良い。

ついでにパッケージ名Arduinoというスニペットも入れてしまえば入力補完もしてくれるようになる。もっともClassなんかに対応した補完をしてくれるわけではなくて、単純に全部の候補から絞り込むだけのものだが、何もないよりは良いという気もする。

というわけで、これでArduinoもSublime Textで書ける!
やったー!

と言いたいところなんだけど、どうもStinoのビルドプロセスは何かArduinoの開発環境と違う部分があるのか、コンパイルが全然通らなくなったりしてすごい困った。どうもスケッチブックフォルダなんかに関連しているらしいけど詳しいことはよく分からない。
私に分かるのはフォルダ名とファイル名を変えたらうまく動いたということだけだ。
もしかすると一回Arduino側でビルドしたものを、Stinoでビルドしようとすると、うまくパスを見つけられないとかそういう問題があるのかもしれない。ないかもしれない。とりあえず今のところは特に深入りするつもりはない。

ともかく

undefined reference to 'setup'
undefined reference to 'loop'

とか言われたらフォルダ名を変えてみたりすると良いかも。
この辺、もうちょっとよく分かったらまた書く。