API Gateway用にRubyでSwagger触るやつ書いた

r7kamura/swagger_parser

Amazon API GatewayとAmazon Lambdaで雑にWebアプリ開発できるような環境をつくろうかと思って、何を思ったか週末の朝から海辺に来て夕方までSwaggerのパーサを書いていた。

Amazon LambdaというのはNode.jsやJava 8用の事前に用意しておいたコードを何らかのイベントを契機に実行させられるというもので、Amazon API Gatewayという最近出てきた怪しいサービスと組み合わせるとHTTPリクエストを契機にコードを実行してその結果を返せるようになる。SwaggerというのはRESTful APIのインターフェースを定義するスキーマの一種で「この GET /recipes というエンドポイントはOAuth2による認証認可が必要でRecipeの配列を返します」みたいな内容を記述できる。似たような領域を扱うものとして、他にRAMLやJSON Hyper-Schemaといったものが存在する。

面白半分でAPI GatewayとLambdaを簡単に試してみたところ、リクエストに応じて処理して適当なレスポンスを返すというのはそこまで制限もなく実現できるということが分かったので、これで簡単なWebアプリであれば論理的には実現できる。しかしながら、AWSのコンソールのGUIでちょこちょこコードアップロードしていくのは辛いという感触だったので、何らかの形で自動化したい。そこで、Railsみたいにある程度決められた形に則ってWebアプリを実装すると、提供されるエンドポイントを解析してAPI GatewayとLambdaの上に適当に反映してくれるというやつをつくろうとしていて、そのためにエンドポイントのインターフェースを定義するスキーマがあると内部表現として便利で、そこで鎌倉まで来て海見ながらSwaggerのパーサを書くに至ってる。

この方法でWebアプリを作れるようにしたとしてもそんなに綺麗に上手くとは思えないので、まあ遊びという感じだけど、サーバのことをそこまで気にせずにWebアプリをつくれる可能性が存在するのは良いことだろうと思うし、飽きるまではしばらくやっていきたい。