Grape ~Rubyで簡単REST~ その1 (ゼネット松永紘氏)
私が編集支援しているCTC教育サービスのコラムコーナーでコラム『Grape ~Rubyで簡単REST~ その1 (ゼネット松永紘氏) 』が公開されました。
###
7/2にRails3.2.19、4.0.8及び4.1.4がリリースされました(*1)(*2)。このリリースはPostgreSQL利用時におけるSQLインジェクションのセキュリティフィックスですので(*3)、できるだけ早くアップデートすることをお勧めいたします。
さて話は変わりますが筆者はここ数ヶ月、お仕事でJavaを使ったプログラミングをしています。Javaそのものは5年くらい前に触ったきりでそ の時はJava6だったのですが、今ではJava8までリリースされています。枯れた技術と言われることもありますがいろんな試みを取り入れながら進化し ており、きちんとアンテナを張っていないと取り残されていくなあと実感しました。
JavaEEに関してもJ2EEの重厚すぎるイメージを持っていましたが、最新の物ではかなりコンパクトに洗練されているみたいです。そんなJavaEEのなかで個人的にいいなと感じたものがJAX-RS(*4)です。
JAX-RSは「Java API for RESTful Services」の略で、その名の通りRESTfulな(Web)サービスを作るためのJava標準APIです。このAPIはアノテーションをベースと して、あるメソッドの処理とリクエストURL、HTTPメソッドを対応付けるため、直感的にRESTfulなWebサービスを開発することができます。
Rubyでも似たようなものはないかと探したところ、Grape(*5)というライブラリがありましたので今回と次回、2回に分けてこちらをご紹介していきます。
Grape
GrapeとはRESTfulなWebAPIを構築するためのライブラリです。前述の通りRubyで書かれており、Rackアプリケーションであ れば簡単に動作させることができます。また軽量で直感的なライブラリでもあるため、学習コストもそれほどかからず既存のアプリケーションにも組み込みやす いかと思います。
ここでは郵便番号検索APIの実装をしていきながら、Grapeについてご説明いたします。
なお、動作環境は以下の通りです。(*6)
- Windows 7
- Chrome 36
- Ruby 2.1.2
- Rails 4.1.4
- Grape 0.8.0
また実装する郵便番号検索APIはごくごく簡単なもので、「/zip/:zip_code」にGETリクエストを行うと:zip_codeに対応する郵便番号をJSON形式で返すというものにします(*7)。
(この続きは以下をご覧ください)
http://www.school.ctc-g.co.jp/columns/masuidrive/masuidrive17.html
*1 : http://weblog.rubyonrails.org/2014/7/2/Rails_4_0_8_and_4_1_4_have_been_released/
*2 : http://weblog.rubyonrails.org/2014/7/2/Rails_3_2_19_4_0_7_and_4_1_3_have_been_released/
*3 : 正確にはRails4.0.8及び4.1.4は、当該セキュリティフィックスを行ったRails4.0.7及び4.1.3のリグレッションフィックスです。
*4 : https://java.net/projects/jax-rs-spec
*5 : http://intridea.github.io/grape
*6 : ここではRailsアプリケーション上でGrapeを動かしますが、前述の通りRackアプリケーション上であれば簡単に動作させることができます。
*7 : ただし今回はJSONを整形することが主眼ではないため、ActiveRecord#to_jsonを使って出力を行っています。