【Oslo】Oslor vol.1 "Oslo"にチャレンジする前に
小町えんじぇるです。こんにちは。
今回から、Microsoft(以下MS)が提唱する、次世代モデリングプラットフォームと言われている"Oslo"について紹介(チャレンジ報告)していきたいと思います。…が、"Oslo"について話をする前に、「モデル」について、ちょっと考えてみたいと思います。
◆「モデル」について考えてみよう
皆さんは、「モデル」や「モデリング」についてどのようにお考えでしょうか?
「モデル」というと、私は、ファッションモデルを思い浮かべてしまうのですが、辞書を紐解くと、「モデル(model)」には「模型、ひな型、見本、設計図」といった「倣う対象」といった意味合いがあるようです。「モデル」自体は、「実体(あるいは実物)」ではありません。あくまでも実体を抽象化し、他者と認識を共有するためのツールです。
もう少し具体的に考えてみます。例えば、私が「ぬうぬう」という名前の猫を飼っていたとします。(実際、飼っていますが。)全く見ず知らずの人と会話をするとき、「ぬうぬうが可愛いんですよ!」と話しても、相手の方は頭の中に「?」を思い浮かべることでしょう。しかし、「うちの猫が可愛いんですよ!」と話せば、見ず知らずの人でも、「猫」というキーワードを通じて、猫の姿をイメージすることができます。ここでは、「猫」という抽象的な概念が「モデル」の役割を果たしています。(必ずしも「モデル」は「図」である必要はないと私は考えています)実体そのものではないけれども、実体を端的に抽象化したイメージを通じて、認識を他者と共有できる、これが私の考える「モデル」です。
とはいえ、「モデル」は実体そのものではなく、捉えられ方も様々であるため、しばしば「認識の相違」を生むことがあります。おそらくこれは宿命でしょう。この相違をいかに縮めて、他者と認識を共有できるか、それが「モデル」の課題とも言えます。
◆ソフトウェア開発における「モデル」
では、ソフトウェア開発の現場における「モデル」について考えてみましょう。ソフトウェア開発の現場における「モデル」というと、クラス図やシーケンス図などのUML(Unified Modeling Language)を思い浮かべる方が多いと思います。UMLを上手に使用すると、抽象化され細分化された「モデル」(サブシステムや個々の機能などの設計要素)で、システムの全体像を表現することができ、開発メンバー間で(時にはお客様も含めて)イメージを共有することができます。(実際は、うまく表現できないことが多いですが)システムイメージがきちんと共有された状態で開発を行えば、無駄や手間を省けるため、結果的に生産性も上がりますよね。
ソフトウェア開発における「モデル」の特徴を、一般的な「モデル」からもう少し限定してみると、以下のような特徴が挙げられます。(私がよく聞く特徴を列挙してみます)
・モデルは、曖昧さが小さく、高い抽象度でイメージを共有できる。
・モデルは、多角的な視点で、抽象化されたイメージを記述できる。
・モデルは、誰でも検証可能である。
・モデルは、誰でも実行可能である。
上記のような特徴に着目し、モデルを使った開発手法も考え出されました。それが、最近注目されつつある「モデル駆動開発(MDD:Model Driven Development)」です。モデル駆動開発では、まずはモデル情報を作成し、そのモデル情報をベースにコードを自動生成していく開発スタイルです。(厳密には違うと指摘を受けそうですが、概念をお伝えしたいので、その辺はご容赦ください)
◆次世代モデリングプラットフォーム"Oslo"
こうした中、モデル駆動開発のプラットフォームとして、Microsoft社から登場したのが、コードネーム"Oslo"です!"Oslo"については、PDC2008やTechDays2009、MSの長沢さんのblogなどで紹介されていますので、概要をご存じの方も多いと思います。しかし、まだまだ日本語の情報は少ないと思いますので、私の方でも次回から本格的に、基礎から順を追って、紹介していこうと思います。(本当はこのエントリで、Oslo開発環境の構築やHello Mの作成方法まで、紹介するつもりでしたが、長くなってしまったので、別エントリできちんと紹介します)
"Oslo"の目指すゴールは、Oslo Developer Centerの言葉を借りれば、「モデル駆動開発のプラットフォームを提供することにより、生産性向上に貢献する」ことのようです。私としては、「モデルあるいはモデル駆動開発で、本当に、生産性向上って実現できるの?」という疑念があります。「モデル」や「モデリング」について、私自身、まだまだきちんと理解できていないというのも事実です。これらの答えが簡単に見つかるとは思っていませんが、"Oslo"に触れ、紹介することで、少しでも「モデル」や「モデリング」について見直すきっかけとしていければと考えています。
私の場合、新しい技術を学習する際に、どうしても登場背景やコンセプトをきちんと押さえるところから入らないと、自分を見失ってしまうので、今回も遠回りなような気もしますが、概念的なところから、お話しを始めさせていただきました。(次回は、もう少しキャプチャ映像が入ると思います)
これからが本題というところですが、今日はこの辺で。ではでは。
◆次回予告
・"Oslo"の初歩
⇒(ようやく)"Oslo"の概要、Hello M、Oslo開発環境の構築について紹介する予定です。
◆Reference URL
・"Oslo" Developer Center
http://msdn.microsoft.com/en-us/oslo/
⇒"Oslo"の公式情報はこちらから。
・長沢智治のライフサイクルブログ
http://blogs.msdn.com/tomohn/
⇒Tech Days 2009でも"Oslo"関連のセッションを担当したMS・長沢さんのblog。
M言語、MGrammerを用いた簡単なサンプル作成手順の紹介もされていますので、興味のある方はぜひ一読を!