Text Editors All Around/CotEditor

Last-modified: 2008-02-09 (土) 22:25:48 (3543d)
CotEditor.png

日本人の手によるMac用テキストエディタ。
検索/置換機能、シンタックスカラーリングなど、エディタとしての基本的な機能の他、入力補完や外部スクリプト言語の利用などの便利機能を搭載している。






各機能レビュー

検索/置換機能

OgreKitの正規表現を利用した細かい検索/置換が可能。複数行が対象になるし日本語(半角かな含む)も普通に扱える。
「一括検索」は現在編集中のテキストについて該当箇所を一括して抽出する機能で、複数ファイルを対象としたものではないのが少し残念。
プログラミング中はライブラリクラスや関数などの定義を探すことがよくあり、複数ファイルを一気に検索する機能を頻繁に使う。
逆に編集中のテキスト(=未保存のテキスト)の中に、あるキーワードがどれだけ出現するのかといった検索を利用することは比較的少ない。
Mac OS Xでは普通にgrepが使えるから複数ファイル検索なんか必要ないように思うし、スクリプトを使えばそれなりのことが出来そうなので使い勝手にこだわらなければそれほど不便ではないかも。

シンタックスカラーリング

各種プログラミング言語の構文ハイライト機能は以下の言語に対応している。

C、C++、Objective-C、CSS、eRuby、Haskell、HTML、Java、JavaScript、LaTex、Perl、PHP、Python、Ruby、シェルスクリプト

自分はPython使いなので複数行コメント(=シングルクォーテーション3つ)のハイライトが重要なポイントなのだが、このエディタは正しくコメントとして扱われるのでまずは合格。
ハイライトしたいキーワードを追加/削除/変更することも可能。ただしキーワードはあくまで「キーワード」として扱われるため、別のカラーリングをしたいと思っても出来ない。
例えば秀丸エディタだと「強調表示1」「強調表示2」などいくつかのグループに分けられるので比較的自由にカスタマイズできるのだが、CotEditorでは「キーワード」「値」「文字列」「コマンド」「数値」「文字」「コメント」の7種類のみとなっているのでカラーリングに関してはある程度の諦めが必要だ。
また、キーワードを含む識別子/変数/関数名は部分的にハイライトされてしまう。例えばPythonモードにするとin_strVar1という変数名の「in」部分がキーワードとして扱われる。
おそらく単にキーワード検索ロジックのテストパターンが不十分なだけだろう。今後に期待するとしよう。

このエディタの長所の一つに不可視文字表示機能がある。
PHPなどではスクリプト中に不可視文字があると、ブラウザでアクセスした時にInternal Server Errorを起こす。不可視文字を表示しないエディタを使っていると、ソース上では何の問題もないのでいつまでたっても原因が特定できない。不可視文字のせいだろうと思い付いてもそれがどこにあるのか見えないので、結局バイナリエディタを使うハメになる。実際Smultronを使っていて何度もそういう目に合った。

キーバインディング

Cocoaの標準フレームワークを使ったエディタなので例のキーバインディング設定ファイルが適用される。ただし「Save:」などメニューにあるコマンドについてはCotEditor独自のキーバインディングを設定する必要があり、これがさらにcommandキーを使ったものしか登録できない。なんでそんないびつな仕様を好んで採用するのだろうか。ひょっとしたら標準的な作り方をすると必然的にそうなってしまうのかも。

入力補完

各シンタックスのキーワード設定で入力補完文字列も追加できるようになっている。デフォルトの状態ではキーワード登録されているものが補完対象となる。…ということをヘルプには記述されているが、どうもそのように動かない。いろいろ試してみたところどうやら単純に編集中テキスト内の単語を補完対象としているようだ。これはあんまりうれしくない。しかしそもそもテキストエディタ単体で満足のいく入力補完などは難しいように思うし、それをなんとか実装してしまうと今度はエディタの良さである軽さが損なわれるような気がするので、過度の期待はしないほうが得策なのかもしれない。要するに「入力補完っぽいことも出来ます」程度が一番いいバランスなのだろう。

外部スクリプト言語

EmacsのLispのように、独自にスクリプトを書いて思い通りに動かすことができるとプログラマには大変ありがたい。プログラマ(やハッカー)という人種は単純作業の繰り返しを極端に嫌う傾向があり、それらをなんとか自動化できないものかと常に考えている。プログラミング言語のシンタックスをデフォルトで用意しているということはCotEditorがプログラマに向けられたエディタだという事であり、そのプログラマ向けエディタが外部スクリプトをサポートしないのは片手落ちと言えるだろう。そういう意味でCotEditorの方向性は間違っていない(とプログラマの自分は思う)。
CotEditorの外部スクリプト機能はスクリプトインタプリタを内包するわけではなく単に外部スクリプトを起動するだけのものだ。Lispエンジンを内包するEmacsとはこの点で大きく異なる。Emacsの場合はLispスクリプトによってEmacs自体の挙動をカスタマイズすることが可能だがCotEditorのスクリプトでは現在編集中のテキストについてのみ操作することになる。単にスクリプトをキックするだけなので他のプログラムを起動したりファイル操作することもできるがCotEditorの内部状態を変更することなどはできない。編集中テキストの受け渡しと処理結果の受け取りについてはスクリプト冒頭のコメントに特定の文字列を記述することで実現する。
基本的な状態を取得する関数などをライブラリ化すればそれなりに使えるものになるだろうし、そういうライブラリが有志によって公開されるようになれば使い勝手は飛躍的にアップするように思う。
ちょっと気になるのはキーバインディングで、Controlキー+任意キーという指定ではスクリプトが起動しなかった。どうも「Commandキー+何か」という組み合わせじゃないと起動しないんじゃないかと思うが、もしそうなら結構不便だ。

その他

アンチエイリアス

Macではシステム標準でアンチエイリアスが有効になっている。なにも考えずにアプリケーションを作るとテキスト部分はアンチエイリアスで表示される。 見た目が非常に美しく、それはそれで良いことなのだが、ソースコードを編集している時にはこのアンチエイリアスが邪魔に感じることがある。 CotEditorはアンチエイリアスをOFFにすることが出来る。

まとめ

テキストエディタの優劣は多くの場合「自分が慣れている機能がそのまま使えるかどうか」という観点で語られる事が多い。
自分の場合は普段使っているエディタが秀丸エディタ?なのでキーボードマクロやBOX選択、対応する括弧へのジャンプ、複数ファイル検索などが無いCotEditorはいつもどおりの操作ができないので劣っているということになる。
しかし、それはあくまで自分の個人的感覚による判断であり、普遍的に劣っているというわけではない。
普通のTextEdit.appやNotepad.exeなどの超基本的なエディタと比較すると間違いなく高機能であり優れているといえる。
他の高機能エディタと比較しても設定ダイアログの分かりやすさ、カスタマイズのしやすさなど、優れている部分は多い。
しかも現時点でのバージョンはまだ0.9.3である。今後機能がより充実する可能性は高い。
日本人の手によるMacのテキストエディタで、なおかつオープンソースなものはなかなか存在しない。
しかもメインで使える程度にグレードの高いものとなると、その希少価値はさらに高まる。
CotEditorはそうした「稀な存在」であり、ぜひとも存続・成長していって欲しいエディタである。

リンク

公式サイト
http://www.aynimac.com/p_blog/files/index2.php