Tech Fielders セミナー(Oslo)に行ってきた

4/6 開催の「Tech Fielders セミナー 東京 セッション : MODELS remixed – はじめての "Oslo"、はじめてのモデリング」に行ってきた。

思ったこと:

  • 日本語の記事だと、Oslo のイメージをきっちり伝えれてるもの少ないかも
  • セミナー聞いて、予習(と言っても、ひたすら MGrammer 触ってただけだけど)して感じてたこと以上の期待感持てた
    • まだ「先の技術」過ぎて、今後どう転ぶかわかったもんじゃないけども

モデリング

Oslo、最近までスルーしてたというか、そもそも認識できてなかったというか、ぶっちゃけ「『モデリングツール Oslo』とか言われても何なのかイメージわかねぇよ」だったわけですけども。

このイメージを改善するためには、とりあえずM言語仕様書の冒頭の言葉を訳しておくのがよさそう。

Oslo Modeling Language (M)は、データを取り扱うためのモダンな宣言的言語です。
M によってユーザーは、どういう風にデータの構造を定義し、どういう風に問い合わせたいかを、読むにも書くにも使い勝手のいいテキストベースの構文で書き下すことができます。

Oslo の位置づけ

Oslo の位置づけとしては、「ドメインモデリングDSL の共通基盤」を目指してると見ていいのかな。

.NET Framework が共通型システムを持ってて OOP 言語の共通基盤になってるように、DLR が動的呼び出し機構を共通化することで動的言語の共通基盤になっているように、Oslo はデータ取扱いとか DSL 作成の共通基盤。

データの取り扱いの抽象化

端的に言うと、「データ定義を Create とかの命令使ってやるのやめようよ」という感じ。

M言語(MSchema と MGraph)を使うと、

  • C# とかのクラスに近い構文で書けて
  • ちゃんと値の制約とかも付けれて
  • リレーショナルデータベースのテーブル作成できる
  • 値の挿入もできる

あと、今現在、データベースサーバー製品ごとに独自文法になっちゃってる SQL を、一段抽象化して差を吸収したいって狙いもあるかも。

DSL の共通基盤

DSL の一番の難点は、独自の文法を覚えるのがかったるいところ。そこはツールも提供してサポートすべきで、ヘルプなんて一切読まなくてもとりあえず Ctrl+スペース を押せば何か出てくるという状態が理想。

極論な私見を言うと、「言語はサポートツールとかまで含めて完成品」とみるべきで、テキストベースの文法だけある状態はまだ言語として未完成。キーワードに色がついて、文法ミスにはリアルタイムで警告が出て、常に次に何を入力すべきかガイドが出て初めて完成品。

という願望に対して、Oslo では、MGrammer だけ書けば、あとは IntelliPad が入力サポートしてくれるというのが素敵。ユーザーは文法定義だけすれば、残りの面倒なサポートは共通基盤側でやってくれる。

(ただ、現状あるのはキーワードのハイライトと、リアルタイムの文法エラー警告くらい。あと、IntelliSense的な入力支援と、パラメーターヒントとかがあると満足なんですが。)

リポジトリ
  • MS 製品で、個々で見ると DSL を使って成功をおさめてる製品がちらほら
  • ところが、それぞれが協業する仕組みはない
  • 共通基盤があれば、複数の製品間での連携がとりやすくなるのでは
  • それと、MS 内だけで完結するのではなく、第三者の作るドメインモデルとの連携も期待

ということで、別個のユーザーが作った DSL を一元管理する仕組みとして、Oslo にはリポジトリって概念が含まれてる。