Posted at

Aeromockでサーバサイドに影響されない開発をしよう

More than 3 years have passed since last update.


Aeromockとは

サイバーエージェントがオープンソースで公開しているScala製モックサーバです。

CyberAgent/Aeromock


Javaプロジェクトのフロントエンド開発が抱える問題

旧来、サイバーエージェントのJavaプロジェクトにおいては多くのプロジェクトが以下のような問題を抱えてきました。


  • サーバサイドにエラーでも発生しようものなら、開発が止まる

  • フロントエンジニアが専門領域外の作業に手を取られる(サーバサイド関連の環境構築、DBのテストデータ投入・修正等)

  • サーバサイド開発に引きずらがちなインタフェース(テンプレートの変数、JSONの構造等)

  • アプリケーションサーバの起動時間待ち

と言った感じで、サーバサイドはフロントエンド開発にとって完全なクリティカル・パスであり、その生産性には大きな問題を抱えていました。その内情は昨年のDevLOVE甲子園での発表を見るとイメージしやすいと思います。

そのようなサーバサイドJava主導のフロントエンド開発の生産性を改善し、フロントエンジニアが本来の専門領域の開発に専念できるようにするためにAeromockは開発されました。

Aeromockの使いどころはJavaプロジェクトだけではなく、最近ではネイティブ開発においても利用されることが増えています。また、GruntやGulpで起動したサーバのproxy先として利用したりすることもできます。


主な機能と特徴


  • テンプレートに紐づくデータファイル(JSON or YAML)を用意するだけでHTMLを描画できる

  • テンプレートでのメソッド呼び出しや、カスタムタグ・ファンクションを利用している

  • 対応しているテンプレート(0.2.3現在)


    • Freemarker

    • handlebars.java

    • Jade4j

    • Velocity

    • Groovy Template Engine

    • Thymeleaf



  • 純粋なJSON APIサーバとしても機能

  • リクエスト内容(クエリストリングやPOSTデータ)によって、レスポンスする内容をコントロールできる

  • Protocol BuffersやMessagePack等の特殊なレスポンスもサポート

  • 数秒で起動し、再起動不要


クイックチュートリアル

公式のクイックチュートリアルを利用すると、動作イメージをつかみやすくて良いです。


Dockerイメージ

AeromockはDockerHub上にDockerイメージも用意しています。Dockerに慣れている方であれば、インストーラー無しで利用することができます。

Docker Hub - stormcat24/aeromock

またDockerイメージがあることで、CircleCIのようなDockerをサポートしたCIツールでAPIのモックとして利用するようなこともできます。様々な外部システムに依存しているようなシステムのテストに有効です。

使い方は、任意のAeromockのディレクトリを/projectでマウントしてdocker runするだけです。

$ docker run -t -i -p 3183:3183 -v /aeromock_dir:/project stormcat24/aeromock


まとめ

Aeromockの機能はそれなりにあるので、この記事ではその詳細にまでは触れません。まずはチュートリアルを触ってみてください。フロントエンド開発で価値を出せる役割を担ってくれれば幸いです。

Happy mock life!!