RAMLの導入を考える

夜中に眠れなくなってしまったので、なんとなくRAMLの導入について考える

RAMLとは

YAMLでRestAPIのAPI仕様を作成できるツール

今私がいる環境

  • java
  • spring boot
  • ddd

何が生成できるの?

YAMLから以下を生成できる

  • API仕様書
  • バリデーションチェック(可能性)
  • スタブ作成
  • テスト仕様書作成(可能性)

疑問: RAML => ソースソース => RAMLか?

RAML => ソースの場合

RAMLは設計書、ソースは製造物と考える

pros

  • RAMLをしっかりレビューして、そこから差異なく製造することにより品質を担保できる
  • コンポ図との相性が良い

cons

  • コードを手で入力したら結局差異が出てバグる (Excel仕様書と差異なし)
  • RAMLからコードを自動的に生成するのは大変そう
  • RAMLをjavaに食わせたり出来んの?
  • テストコードの自動生成ができればいいのかなぁ

ソース => RAMLの場合

ソースは設計書兼製造物と考える
RAMLはそこから出力される何か

pros

  • RAMLとソースの差異がない

cons

  • RAML生成までに時間がかかる(実装が必要なため)
    • 既存APIへの変更の場合は内部実装も修正しないとRAMLを生成できない
    • Requestクラスを毎回新規作成すれば良さそうだが差分がわかりづらくなる
    • 仕様書早くくれ〜って他チームから言われると辛い

感想

メンテまで考えるとソース => RAMLは現実的ではなさそう
ただRAML => ソースも自動化をしておかないと旨味を活かせない

疑問: スタブ作成?既存APIはどうすんの?

APIのバージョン管理をしてないと無理
優先低い

こんなこといいな、できたらいいな

spockのテストパタン自動生成

RAMLに記述したテストからspockのwhereとwhenを自動生成する
setupとthenは自力で書く
設計書(RAML)、テストコード、製造の流れが作りやすくなりそう

特に結論もなく以上です