IDEについて考えたこと(続き)
きのうまでの話
きのうの続き。
プログラムの開発環境について書く。
オイラは普段、VisualStudioの恩恵にどっぷり浴しながら
C#を書くプログラマです。
今回macを買ったので、rubyやらFlashやら、もっと本腰を入れて
やってみようと考え中。
教養としてVimを覚えて、XCodeをインストールしてみた。
でも、当然ながらVisualStudioはないの。
さてどうしようか。←今ココ
Eclipseに言いたいこと
Eclipseは使ったことがある。
GoogleSketchUp自動化用のrubyを書く事が、rubyをやってる大きな理由なんだけど、
そのためにEclipseを使うことがある。
でもね、嫌いなのEclipse。
動作ももさっとしてるし、オイラが何を間違えてるのか、
エディタでソース書きながらDeleteキーを押すと、ファイルごと消そうとするし。
高度に隠ぺいされてる割には、全てを任せられない危うさがあるのが、
どうにも好きになれない理由だと思う。
IBMの誰かが作ってくれた、SketchUp API用のSDKがある、というのが
Eclipseを使うモチベーションだったのだけど、
rubyはJavaと違い、ほぼサジェストが効かないので、
IDEの意味がない気がした。
Vimの人たち
Vimを高度に使う人たちは、Vim一本でコードを書いたりするらしい。
秀丸でC++をコンパイルするようなもんですニャ。
自分がIDE難民であることに気が付いた今、
Vimでやるのもひとつの手じゃないか?と考えているのも確か。
つか、Vimってエディタであって、開発環境じゃないよね。
開発に必要なものを考えよう
- ソースエディタ
- GUIエディタ
- コンパイラ(+リンカ)/インタプリタ
- デバッガ
- 自動テスト実行環境
- ソースコード管理ツール
- リファクタツール
- 相互に関連するファイル群をまとめる機能(プロジェクトファイル)
これらを『統合』したツールが『統合開発環境』だということか。
この中で、IDEを使わないと機能の実現が厳しいものは、いくつもある。
- GUIエディタ
- テキストエディタだけでは無理。
- 自動テスト実行環境
- プライベートアクセサの自動生成、やってもらうには、
リフレクションとかしてくれるツールが必要。 - ブレークポイントが使えるデバッガ
- 『Vimでもできる』という噂もあり、未検証。
エディタ+コマンドでやったら、そんなぴたっと止まるわけなさそうなんだけど。
これが使えるから、IDEはやめられない。そう思う。
その一方
基本的にプログラムは、文字列で書かれている。
文字列は、自動化されていない部分は、手で入力しないといけない(当たり前)。
つまり、開発環境の中でも、テキストエディタは、
最も人間に近いパーツなのだということ。
たまにしか使わない機能は、多少使い勝手が悪くても、
大して生産性に影響しない。
しかし、ソースコードを手打ちする部分は、
プログラミングの大部分を占めるだけに、
ものすごく生産性に影響するんじゃないか。
エディタの鍵は、補完にあり
ただのテキストエディタにはなくてもいいけど、
ソースコードエディタには、絶対にあって欲しい機能がある。
ないものを、いかに楽に作れるか
SketchUp APIのライブラリなんてマイナーな存在は、
結局自分でSDKを作る必要があるだろう。
そうなった時に、『いかにカスタマイズしやすいか』という要素は、
生産性にとってかなり重大な問題じゃないだろうか。
そのため、オムニ補完のカスタマイズができるVimは、
非常に魅力的な選択肢となった。
インテリセンスに慣れたオイラは、コード補完にこだわる。
エディタはVimに決まり。