はじめに
GNU GLOBALのプラグインパーサーにはExuberant Ctagsを使ったものやPygmentsを使ったものがあります。
Pygmentsを使ったプラグインパーサーはとても便利なので、改めてプラグインパーサーを作るメリットはあまりありません。しかし、Pygmentsを使うためにはいろいろなものをインストールしなければならず少し面倒です。プラグインパーサーを作ることによって、それらのインストールの手間を省くことができます。
インストールの手間を省くことによって環境構築が楽になるだろうと思ったのと、単純に作ってみたくなったというのがプラグインパーサーを作った動機です。
GitHub
こちらに作ったものを上げました。詳細はソースコードを確認していただければと思います。
発想の転換
なぜ作ってみたくなったのかについて少し追記したいと思います。
以前にもプラグインパーサーを作ろうとしたことがありました。そのときはScalaの構文を完全にパースすることを目標にしていましたが、雲をつかむような感じでまったく手が動きませんでした。結局、そのときは挫折してしまいました。
しかし、よく考えてみると欲しいのはclassキーワードとtraitキーワードとobjectキーワードで定義しているものでした。つまり、Scalaの構文を完全にパースせずとも目標を達成することができることに気付きました。この発想の転換のおかげでもう一度トライしてみよう、トライしてみたいという気持ちが高まりました。
まとめ
必ずしも発想の転換がいいことだとは言えませんが、今回はいい効果があったと思っています。
あと、今日は社内ハッカソンでそれを試す絶好のチャンスでした。こういうイベントのある会社は少ないかもしれません。会社にも感謝です