Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

Azure REST API Specifications をパースしてモデル情報を見てみる その2

前回は、Swagger APIのパース部分でつまづいて終わったのですが、続きをやってみました

statemachine.hatenablog.com

Parser

前回記事通り、現状のSwagger製のJava Parserだと、Azure の REST API SPECが正しくパースされないので、結局Java Parserをアドホックに修正して自分の希望通りにパースできるようにしてみました。あまり厳密な解釈にこだわる必要もないので。

Diagram

詳細は後述しますが、ComputeのAPIをモデル化した情報をDiagramエディタにD&Dして、手動レイアウトしたものが以下です。

f:id:StateMachine:20160519131716p:plain

VirtualMachineから関連するオブジェクトが手に取るように分かります。これで内部構造の理解も捗るんじゃないかと思います。

仕組み

前回も少し書きましたが必要な環境は以下です。

  • Eclipse 4.6 Modeling edition
  • Eclipse Modeling Framework(EMF)
  • Swagger Parser
  • API の スキーマ

EclipseにはJava IDEとかとは別に、Modeling Editionがありますので、これを使います。EMFやDiagram Editorなどのプラグインが予め組み込まれています。

やっていることは簡単で、APIをパースするとSwaggerのAPIモデルが作られます。クラスやプロパティ、関連などが機械可読可能な状態になりますので、それをEMFのEcoreモデルでモデリングするだけです。EMFのEcoreモデルはメタモデル(MOF)の実装です。簡単にいってしまえば、Swagger API JSON -> Ecoreモデル(*.ecoreファイル)の変換をしているに過ぎません。

ecoreモデルが出来た後は、Diagram Editorを開いてD&Dしつつ、見える形に整えるだけです。

というわけで、当初も目論見が達成できたので満足です。