Nitraの紹介

ちょうど一年前、JetBrainsより数名がNemerle(関数、オブジェクト指向のハイブリッドの.Net向け言語)プロジェクトに参加しました。彼らはここ一年Nitraと呼ばれる新しい技術に注力してきました。

なぜNitraなのか

Nitraについて説明する前に触れておきたいのが、なぜ我々がこのプロジェクトに投資してきたのかということです。

JetBrainsでは様々な言語やフレームワーク向けのツールを開発しています。十数の言語や100近くに上るフレームワークをサポートしています。新しい言語が登場する度に我々はその言語や文法を学び、パーサーを開発してコードの解析やリファクタリングを可能にしています。

技術の進歩が非常に早く、またJetBrainsに対する期待も日々高まっている中この作業は簡単なものではありません。こういった問題に対処する中で生まれたのがNitraです。

Nitraとは何か

まず以下のコードをご覧ください

image

これが何かわかるでしょうか?これは実行可能な仕様を定義するフレームワークであるCucumberで使われるGherkin用のシンタックスモジュールです。

このシンタックスモジュールはNitraを使って定義されています。これをプロジェクトに追加し、Nitraに内蔵されているパーサーと組み合わせるとCucumberファイルをパースし、AST(Abstract Syntax Tree:抽象構文木)を取得することができます。つまり単に文法を定義するだけでパーサーが得られることになります。

そして重要なのは…

これは単なる「新しいパーサジェネレータ」ではない

Nitraは単に新しいパーサジェネレータではありません。Nitraを個性付ける様々な協力な機能があります。

Nitraは拡張可能

Nitraは既存の文法を静的にも動的にも拡張することができます。注目して欲しいのは、新しい言語を定義するだけでなく既存の言語を拡張することも出来ると言うことです。例えば以下の例はC#に新しいオペレータ .? を追加したものです。

image

Nitraはツール開発を爆速にする

Nitraは新しい言語を開発したり、既存言語を拡張したりできるだけではありません。言語の周辺ツールの開発も容易にします。シンタックスモジュールを定義することでシンタックスハイライト、コードの折りたたみ、静的解析、リファクタリング、ナビゲーション、シンボルの検索などJetBrainsのIDEが既に持っている強力な機能を活用できるようになります。

一般ユーザーにとって何がうれしいの?

NitraによりJetBrainsは新しい言語やフレームワークのサポートが容易になりました。

新しい言語が登場するたびにスクラッチでパーサーやツールサポートを開発する必要がなくなり、シンタックスモジュールを定義するという最小限の手間で良くなりました。

つまり究極的にはJetBrainsのIDEユーザーによりよい開発体験をもたらすことになります。

さらにNitraにより皆様はパーサーや言語実装のエキスパートでなくても独自のDSLを開発することが出来るようになり、同時にエラーチェックやシンタックスハイライトといったIDEの機能を活用することができます。

今後は?

Nitraはここ一年かけて基本的な開発をしてきました。もう少しやり残したことがありますが状況をお伝えできるところまではたどり着きました。もうしばらくすればより詳しい情報をお届けできるようになる見込みです。今後のアップデートに興味がある方は是非Nitra Twitterアカウントをフォローしてください。

Discover more

JetBrains 製品の法人ライセンス購入や管理を効率化するためのソリューション

こんにちは。JetBrains堀岡です。 社内で管理する JetBrains 製品のライセンス数が増えてくると、購入や、更新のための契約の管理、新規ユーザー向け導入支援などにかかる工数削減に興味があるお客様から連絡をいただくことがあります。 このブログ記事では、既に一部のお客様ではご活用いただいている、昨年(2022年)以降利用可能になった契約やライセンスの管理を効率化するための製品およびソリューションについてご紹介します。 ライセンス追加購入時のサブスクリプション期間の自動統一 これまで直販サイト JetBrains ストア や JetBrains Account からの購入時に、追加購入するライセンス期間の変更を希望される場合、 メールまたはサポートサイトにて都度ご連絡いただいておりました。 現在は、JetBrains 日本語サポート窓口 にご希望の統一日をご連絡をいただければ、次回の追加購入以降は自動で調整されるようになっています。 日本の代理店様経由でご購入のお客様はご利用の代理店様にご相談ください。 利用方法 JetBrains 日本語サポート窓口 にご連絡いただき、希望されるライセンス期間統一日をご連絡ください。 設定以