Yusukeちょうど一年前、JetBrainsより数名がNemerle(関数、オブジェクト指向のハイブリッドの.Net向け言語)プロジェクトに参加しました。彼らはここ一年Nitraと呼ばれる新しい技術に注力してきました。NitraなのかNitraについて説明する前に触れておきたいのが、なぜ我々がこのプロジェクトに投資してきたのかということです。JetBrainsでは様々な言語やフレームワーク向けのツールを開発しています。十数の言語や100近くに上るフレームワークをサポートしています。新しい言語が登場する度に我々はその言語や文法を学び、パーサーを開発してコードの解析やリファクタリングを可能にしています。技術の進歩が非常に早く、またJetBrainsに対する期待も日々高まっている中この作業は簡単なものではありません。いった問題に対処する中で生まれたのがNitraです。Nitraとは何かまず以下のコードをご覧くださいこれが何かわかるでしょうか?これは実行可能な仕様を定義するフレームワークであるCucumberで使われるGherkin用のシンタックスモジュールです。このシンタックスモジュールはNitraを使って定義されています。Tree:抽象構文木)を取得することができます。文法を定義するだけでパーサーが得られることになります。重要なのは...これは単なる「新しいパーサジェネレータ」ではないNitraは単に新しいパーサジェネレータではありません。Nitraを個性付ける様々な協力な機能があります。Nitraは拡張可能Nitraは既存の文法を静的にも動的にも拡張することができます。注目して欲しいのは、新しい言語を定義するだけでなく既存の言語を拡張することも出来ると言うことです。Nitraはツール開発を爆速にするNitraは新しい言語を開発したり、既存言語を拡張したりできるだけではありません。言語の周辺ツールの開発も容易にします。シンタックスモジュールを定義することでシンタックスハイライト、コードの折りたたみ、静的解析、リファクタリング、ナビゲーション、シンボルの検索などJetBrainsのIDEが既に持っている強力な機能を活用できるようになります。一般ユーザーにとって何がうれしいの?NitraによりJetBrainsは新しい言語やフレームワークのサポートが容易になりました。新しい言語が登場するたびにスクラッチでパーサーやツールサポートを開発する必要がなくなり、シンタックスモジュールを定義するという最小限の手間で良くなりました。究極的にはJetBrainsのIDEユーザーによりよい開発体験をもたらすことになります。Nitraにより皆様はパーサーや言語実装のエキスパートでなくても独自のDSLを開発することが出来るようになり、同時にエラーチェックやシンタックスハイライトといったIDEの機能を活用することができます。今後は?Nitraはここ一年かけて基本的な開発をしてきました。やり残したことがありますが状況をお伝えできるところまではたどり着きました。すればより詳しい情報をお届けできるようになる見込みです。Twitterアカウントをフォローしてください。アドボケートの募集を開始しました。WordPress.。