クラウド技術は仮想化技術の延長として捉えられることも多いですが、最近は仮想化技術を意識しないサービスも増えており、ユーザー視点では「API によってクラウドのコンポーネントを自在に制御できる」、これこそがクラウドの本質と著者は考えています。
API 制御は、「認証」「対象」「操作」の 3 つの要素で構成されます。「対象」はDNS と URI、「操作」は HTTP と密接に関係するため、それらインターネットの基礎技術もあわせて説明していきます。なお、コンポーネントと関係する「認証」については、第 9 章「認証とセキュリティ」であらためて説明します。
3.1 クラウドと API の関係
3.1.1 API とは?
API というと、「言葉は聞いたことがある」「なんとなく使っている」という人は多いかもしれませんが、その詳細を理解している人は意外と少ないのではないでしょうか。
API とは、アプリケーションプログラムインターフェース(Application ProgramInterface)の略で、「あるソフトウェアから他のソフトウェアを制御するインターフェース(規約)」を意味します。これにより、重複した記述の防止によるソフトウェアの開発生産性の向上や標準化を促進できます。API を利用すると、ソフトウェアの内部構造を知らなくても、 API を介してソフトウェアに接続して制御できます。これが API の目的です。
共通のロジックを API として用意しておき、各種プログラミング言語でプログラムを書く際に、その API の機能をインターフェースから呼び出す宣言をプログラム内に書けば、共通のロジックの記述を省略できます。例として、クラウドでもよく利用される Java 言語のケースで見てみましょう(図3.1)。
Java はオブジェクト指向という特徴があります。実態としてはクラスとインターフェースで構成されており、これをオブジェクト化して処理を実行できるようになります。Java で実装するアプリケーションには、どのケースでも利用したい共通処理があります。
たとえば、データ入出力、言語設定、SQL 呼び出し設定、アプレット呼び出し設定といった処理です。これらは毎回、最初から同じコードを書くのは効率的ではありません。したがって、オブジェクト指向の特性を活かして、これらを処理するクラスをまとめて共通のパッケージから呼び出すほうが明らかに効率的です。このようなことから、以前から拡張性や再利用性が求められる環境で API は活用されていました。
3.1.2 Web API
クラウドでは、Web API を利用するのが一般的です。Web API とは、「HTTP(HTTPS)プロトコルを利用してネットワークを介して呼び出す API」のことです。
Web 上でユニークな URI に対して、HTTP リクエストを投げて、レスポンスとして情報を取得するのが、Web API の基本的な処理です(図 3.2)。このやりとりに関する規約は、API リファレンスとして各サービスによって定められており、ユーザーは基本的にサービス提供側の規定に従う形になります。
Web API を詳細に理解するには、HTTP、URI、REST の基礎知識が必要になってくるため、この後に順番に説明していきます。