Help us understand the problem. What is going on with this article?

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

More than 5 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!!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away