Modegramming Styleブログではモデリングとプログラミングの一体化を目指してModegrammingというコンセプトを提唱しています。
このModegrammingを実現するための技術体系としてまとめようとしているのがSimpleModelingです。
SimpleModelingでは仕様定義と実装が一体化したモデル駆動開発の実現を目指して、方法論の整備とツールの開発を行っています。
SimpleModelingの基本的な方法論については以下の本にまとめています。
SimpleModelingの枠組みの中で、ここまでで以下のツールを開発してきました。
- smartdox : 文書処理系
- simplemodeler : モデルコンパイラ
SimpleModelingによる方法論をモデル駆動開発につなげているツールとしてsimplemodelerを開発していましたが、この開発を通じて見えてきたのが自動生成したアプリケーションの動作基盤となるクラウドプラットフォームです。モデル駆動開発のための重要な要素技術としてクラウドアプリケーションプラットフォーム(以下CAP)が必要という認識にいたりました。
このCAPとしてを業務向けに開発を進めてきたものが Prefer Cloud です。Prefer CloudはPrefer Cloud Platform(以下PCP)というCAP上で動作しています。2012年から足掛け8年ほど開発を進め、一応の軌道に乗ってきました。
そこで、PCPの開発は進めつつ、次の活動としてモデル駆動開発を実現するためのSimpleModelingを再始動することにしました。
モデリング
オブジェクト指向開発方法論(OOAD)の一旦の完成時期を2004年だとすると、すでに15年が経過しており、その間にさまざまな技術革新がありました。
モデリングに関しては関数型言語の進化を取り込んだObject-Functional Analysis and Designの整備が必要だと考えています。
この問題に関しては以前から検討を続けており以下のような記事で検討を続けてきました。
- Object-Functional Analysis and Designふりかえり
- QCon Tokyo 2016
- よこはまクラウド勉強会: OFP & OFAD Deep Dive with Reactive Streams
また、クラウド環境を取り巻く以下のようなの新技術をカバーできるようにメタモデルの拡張やプロファイルの整備も行う必要があるでしょう。
- AI
- IoT
- RPA
- FinTech
プロダクト
SimpleModelingを支えるプロダクトとして以下のものを開発中です。いずれもOSSとして展開しています。
- smartdox : 文書処理系 (前出)
- simplemodeler : モデルコンパイラ (前出)
- kaleidox :: アクション言語
- arcadia :: ウェブ・フレームワーク
kaleidox
kaleidoxはオブジェクトモデリングとプログラミングをシームレスに連携させることを目的とするアクション言語です。
アクション言語はモデル駆動開発を成立させるミッシングリンクを埋める要の技術ではないか、というのが最近の技術的な興味で、これを具象化するためのアクション言語としてkaleidoxを開発してみました。
スクリプト言語としても面白いものに仕上がっていると思います。機能が多岐に渡るので次回以降少しずつ紹介していく予定です。
arcadia
モデル駆動開発を進める際にネックとなるのがWebフロントです。
サーバーサイドのサービスはRESTサーバーとして実現する場合、モデル駆動開発との相性がよい形で実現しやすいですが、Webフロントに関してはスクラッチの開発になるケースが多いと思います。
画面デザインの調整などどうしてもスクラッチ開発せざるを得ない部分もありますが、ビジネスルールの適用(パラメタの値域など)やアプリケーションロジックとのREST連携などモデル駆動開発の恩恵を得られると考えられるパーツも多いと思います。
モデル駆動開発では、後者の部分は自動生成しつつスクラッチ開発の画面部分との連携をとるためのフレームワークが必要となってくると考えています。
このようなモデル駆動開発向けWebフレームワークとして開発したものがarcadiaです。
kaleidoxの機能を一通りご紹介した後、arcadiaについても紹介していこうと思います。
まとめ
SimpleModelingの全体構想とプロダクトについてご紹介しました。
次回以降は当面SimpleModelingの中核プロダクトであるkaleidoxについて取り上げていく予定です。
0 件のコメント:
コメントを投稿