はじめに
このLessonではAPI、特にWeb APIの使い方について学んでいただきます。Web APIとは、とあるWebアプリケーションが自身のDB(データベース)や内部アルゴリズムなどを用いて得ることができる値を外部のサービスでも簡単に利用できるように提供している仕組みのことです。これを利用すると、自身のアプリケーション内でクレジットカードを用いた決済をする、画像を解析して写っている人の感情を推察する機能をつける、など個人では開発の難しい機能を簡単に実装することができます。本Lessonの学習が終わるころには、これまで学んできたことより飛躍的に強力な機能を自由自在に自分のアプリケーションに組み込めるようになっているでしょう。
本章の概要
APIとは、ある機能を実現するための処理のまとまりです。特にWeb APIとは、簡単に言ってしまえば、様々なWebアプリケーションが各自で提供している誰でも利用可能なメソッド群です。APIの決まりに従って何らかのパラメーターを伴ったリクエストを送ると、何らかの値が返って来ます。この時返ってくる値は、多くの場合JSONという形式になります。JSONはRubyのハッシュオブジェクトのような形式です。あるキーに対して、あるバリューが紐付いています。ハッシュと同じく、バリューをハッシュのようにすることで入れ子構造を作ることも可能です。これをRailsアプリケーション内で利用するために、JSON形式のデータをハッシュオブジェクトに変換したりします。
本Lessonの目的は実際にいくつかのWebAPIを利用することを通してWeb APIに慣れることです。RubyでWeb APIを利用する際は、多くの場合専用のGemが用意されています。単純に、Gemを利用せずに直接リクエストを送信することもあります。本Lessonでは専用のGemを利用する場合としない場合の両方を練習します。
APIとは何か
APIとは、何らかの目的を達成するための処理のまとまりのことです。「Web APIを公開」などと言う場合は、あるWebサービスが自身の機能の一部を誰でも利用できるよう開放している状態を指します。
API
APIとは、Application program interfaceの略です。あるプログラムが、その他のプログラムから簡単に呼び出せるように準備してあることを指します。
例えば、メール送信のプログラムを作るとしましょう。この時必要になるであろう「ファイルを開く」ためのコードや「文字を書き込む」ためのコードを、0から作成するのは大変ですよね。そこで、こういった処理のまとまり(API)をあらかじめ作成しておき、あとから簡単に利用できるようにします。
プログラムの作成者は、数あるAPIを組み合わせるだけで、目指すアプリケーションや機能を実現することができる、というわけです。
Web APIについて
さて、「プログラムなどの処理のまとまり」がAPIであることがわかりました。
特に、Webアプリケーションが提供するAPIのことをWeb APIと呼びます。具体的には、外部から受付可能な様々なメソッドを用意することを「APIを公開する」と言ったりします。APIを公開しているアプリケーションに対してパラメーターを伴ったリクエストを送ることで、APIを通して様々な値を得ることができます。
例えば、以下のようなWeb APIが存在します。
・画像を送ると、その画像に写っている人の美人度を判定して返してくれるAPI
・ある文字列を送ると、その文字列を含む在庫商品の一覧を返してくれるAPI
JSONについて
多くのWeb APIでは、TECH::MASTERで学んだRubyはもちろんPHPやJavascriptといったいくつかのメジャーな言語によるリクエストに対応しています。しかし、返ってくるレスポンスの形式は限られています。そのうちのひとつが、JSON形式です。
JSON
JSONはRubyでいうところのハッシュのようなデータ形式で、ひとつのキーに対してひとつのバリュー、という形で値を保持します。こうした形式をキーバリューストアと呼びます。
キーバリューストアの性質を持ったデータ型は各言語に存在します。JSONから各言語のキーバリューストアなデータ型に変換することができるので、多くのWeb APIはJSON形式でリクエストに対する値を返します。
本Lessonの目的
Web APIを自由に利用できるようになる
Web APIにはたくさんの種類があります。しかし、多くの人が利用したがるメジャーなサービスになればなるほど、使い方は共通の規約に沿うようなものになります。これを覚えてしまえば、たいていのAPIは利用できるようになります。本LessonでいくつかのWeb APIを利用してみることで、この共通の規約を体得しましょう。
本Lessonの各章の内容
1章 はじめに
本章です。本Lessonの目的や学習内容の概要について確認し、Web APIについての基礎知識を学習します。
2章 Gemを利用したWeb APIを使ってみよう
自身のアプリケーションに簡単にクレジットカード決済による支払い機能を導入できる、「WebPay」というWebサービスのAPIを利用してみます。専用のGemを利用したWeb APIの利用に慣れるためです。
3章 Gemを利用しないWeb APIを使ってみよう
楽天やYahooといった企業が提供しているAPIを利用してみます。専用のGemが存在しないWeb APIでも、Rubyを用いて利用できるようになるためです。