BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース JetBrains MPS 1.1: パフォーマンス改善と容易になったデバッグ

JetBrains MPS 1.1: パフォーマンス改善と容易になったデバッグ

ブックマーク

原文(投稿日:2010/03/23)へのリンク

半年前に Meta-Programming System (MPS) version 1.0JetBrainsからリリースされた。この続報として、 バージョン 1.1へのアップグレード が12月にあった。 InfoQは、 Apache 2.0 のライセンスの元で、オープンソース製品として提供されている language workbench の現状を確認した(例外的にオープンソースでないのは、 IntelliJ IDEA から抜き出されたJetBrains IDEフレームワークである)。

MPSには、すでにたくさんの構成ブロックがあり、以下のようなツールを使い始めることができる:

  • ベース言語(Java言語を基にしている)は、既に拡張され( クロージャ、コレクション、dates、regexp が使える)そして、更にカスタマイズできる
  • 特定のパーツで言語をモジュール化し、組み立てることができる
  • バージョンコントロールとの統合( subversion, gitそして IDEAによってサポートされているVCS )
  • 内部のMPSモデル(例えば、外部のソースからコンテントをインポートする)とやりとりできる API
  • 更に タイプシステム の定義を増やすことができる
  • 作成された言語上で、データフロー解析を行えるツール

MPSの実際の状況をよく理解するために、 InfoQは、 Markus Völter 氏に彼の最近の経験について聞いた。氏は、 Software Engineering Radio Episode on MPS を公表し、最近JetBrainsの Konstantin Solomatov 氏といっしょに、製品化が近い language workbenchとしてMPSを評価していた:

簡単に言語をモジュール化し、拡張し、組み立てることができます。1つのDSLでは、普通、充分でありません。言語セットを(参照によってそして構文的に)組み合わせることができなければなりません。MPSだとこれがシームレスにできます。

氏は、MPSで開発する際の生産性の側面についても話した:

MPSは、非常にうまく統合されています。言語構造やシンタクスをサポートしているだけでなく、タイプシステム、早い修正、ランタイムのサポートそして(モデル) 変形 も提供しています。

MPSの評価と lockステートメントを使って ベース言語を拡張し 、それから Javaコードを生成する 例を見せるようなスクリーンキャストを提供するのに加えて、氏は、ツール内で新しい言語を作成している最中でもある:

私は、現在Cをベースにした組込みソフトウェア開発用の言語モジュールセットを開発中です。この拡張には、ステートマシン、コンポーネント、フィーチャの可変性そして安全なコードが含まれています。 Lego Mindstorm ロボットOSek ベースの実演ソフトを開発中です。

現在のMPSバージョン1.1にはいくつもの 改善が含まれている:

  • パフォーマンスとメモリ消費が最適化された
  • ジェネレータによって付加されたデバッグ情報により、より簡単にエラーのトレースとスタックトレースの分析ができる
  • 他のIDEのように多重実行のプロファイルを保存でき、使うことができる
  • 自動生成ワークフローを走らせる antタスク (Antスクリプト)が提供されているので、連続統合環境で使うことができる

MPSを始める

tree editor に慣れるにはちょっと時間がかかる( JetBrainsによると1,2週間)。MPSの 既存の構造化要素 を理解することは、特に重要だ、何が、どこで、なぜ定義できるのかを知らなければならないからである。終了やエラーメッセージそして意志は大いに助けとなるが、いかにシンタクス ツリーが言語の異なった側面のために、構造化されているかを理解することは、非常に重要である。

パーサーのドメイン、 シンタクス ツリー、文法、言語定義などに慣れるのは、確かにMPSの概念をよりよく理解するのに助けとなる。

オンラインの calculator-building tutorial が、唯一、何ができるか、そしてどのように作り上げるかの横断的な理解を提供してくれる。 Markus Völter 氏によるスクリーンキャストは、言語拡張のもっと包括的な 例である。MPSで開発する人は、皆、非常に貴重な情報がある ユーザガイドディスカッション・フォーラム を読むべきである。 Jens Nerche 氏は、いかに異なった概念がMPSで達成できるかを研究するために、MPSによるサンプルプロジェクトを集めて githubに提供している。

現在の開発

Jetbrainsは、MPSを使って、それ自身の Issue Tracker (YouTrack) を作った、そしてMPSを使ってもっとアプリケーション作るようだ。ソフトウェア開発コミュニティにProjectional (投影的)ツリーエディタをもった最初のIDEがもしリリースされたら面白い。

現在開発されている、デバッグ機能により、あらゆる抽象レベルで、定義された言語から、今走っている生成されたコードにおいて、コードのステップ動作ができるようになる。このことが可能になる のは、提供されるデバッグ機能と言語生成プロセスとともに、生成されたバックトラック情報によってである。

JetBrainsは、また、定義されたシンタクスツリーのカスタムな永続化マネージャをサポートする計画である。ノードをXMLや提供されるVCSに保存するのは、1つのオプションにすぎない。カスタマイズできる永続化が、次のバージョンのいずれかで計画されている。その後に、ASTをカスタムなフォーマット(テキストとしてさえ)にして、例えば、グラフデータベース( neo4j のような)に保存することもできるようになる。

この記事に星をつける

おすすめ度
スタイル

BT