公開日:2022.07.15
更新日:2024.07.24
まとめ
公開日:2022.07.15
更新日:2024.07.24
KDDIウェブコミュニケーションズ
近年、サービス開発の現場でよく聞かれるようになった「API」。自社開発の効率化を図るうえで欠かせない、重要な存在となっています。
しかし一口に「API」と言っても、その種類はさまざま。そこで本記事では現在広く使われているAPIについて、どのような種類があるのか? それぞれにどのような特徴があるのか? を詳しく解説していきます。
APIは「Application Programming Interface」の略称で、サービスの機能そのものやサービス内に持っている情報を、APIを通じて外部のプログラムから利用できるようにするための接点のことを指します。
APIを利用することで、他社サービス(API提供元)の機能の一部を自社サービスに組み込んで提供することができます。つまりAPIに備わっている機能を独自に作成する必要がなくなり、開発コストを大幅に削減できるのです。
またサービス提供者にとっても、多くの人にAPIを使ってもらうことで、自社サービスの知名度を向上させられるというメリットがあります。
APIには、利用用途や特性によっていくつかの種類があります。
Web APIは、Webサービス機能の一部として提供されているAPIです。アプリケーションをAPIで連携する事例の中でも、特に多く活用されています。
GoogleやAmazon、Facebookといった誰もがよく知っている大企業からも、Web APIが数多く提供されています。サービスを開発中の企業はこれらを取り入れることで、自社の機能を簡単かつ効率的に拡大しているのです。
Web APIは、インターネット上で一般的に使われているHTTPS通信によってデータのやり取りをおこないます。利用するパソコンのOSやプログラミング言語には依存せず、ありとあらゆる環境からアクセスできるようになっています。
APIの中には、OS上でプログラミングをおこなうために用意されているものもあります。
たとえばWindows APIは、サービスを開発中の企業がWindows上でプログラミングをおこなう際に利用するAPIです。プログラムからWindowsの機能や情報を簡単に利用できるように、Windowsの生みの親であるMicrosoftから、開発者に向けて提供されています。
近年ではAPIだけでなく、「.NET Framework」と呼ばれるWindows APIを用いた開発をおこなうためのアプリケーションフレームワークが提供されており、開発者がWindows APIを利用しやすくするための仕組み作りも進められています。
そのほかにも、APIの中にはランタイム(プログラムを動かす環境)が提供しているものもあります。
たとえばプログラミング言語Javaでは、アプリケーションを開発するために必要な標準機能や拡張機能の多くをAPIとして提供しています。そのため開発者は自然とAPIのルールに従って、プログラミングをおこなえるようになっています。
Java SE APIの仕様については、Javaの開発を行なっているアメリカのオラクル社が提供する開発者ガイドの中で詳しく紹介されています。JavaのAPIは多数公開されているため、APIのドキュメントの構造や読み方を確認しておくと利用しやすいでしょう。
Web APIでは、利用者とAPIサービス間の通信に、Web上でよく使われるHTTPやHTTPSが用いられます。異なるOSやプログラミング言語間のやりとりも、Web通信では統一の仕様で処理できるようになっています。
それに伴い、これまでアプリケーション間のやり取りに使われるプロトコル(=通信に関する規格)も多数定義されてきました。続いては、Web APIの代表的なプロトコルを4つ紹介します。
HTTPはWebサーバとWebブラウザがデータをやりとりするのに使われるプロトコルです。先述の通り、多くのWeb APIにおいては、利用者とサービス間の通信に使われています。
ちなみに一般的にHTTP通信のレスポンスにはわかりやすい構造のHTMLが採用されていますが、Web APIの場合はソフトウェアの読み込みや加工の容易さを優先して、JSONやXMLなどテキストベースのデータが多く用いられます。
RPC(リモートプロシージャコール)は、プログラムの中で通信相手のコンピュータに対して処理を依頼したり、結果を返したりするための取り決めを意味します。RPCを使うと、リモートサーバーに置かれているメソッドを実行できるようになります。
RPCの中でも、クライアントとサーバー間のデータのやり取りにXMLが利用されるタイプをXML-RPCと呼びます。APIで利用されるプロトコルにおいて、最も古い歴史を持っています。
JSON-RPCは、XML-RPCと同じく、RPCを実現するプロトコルの一つです。名前の通り、サーバーとクライアント間のデータのやり取りにJSONを利用します。
JSONは人間にもコンピュータにも扱いやすいシンプルなデータフォーマットです。この特性からJSON-RPCは、従来のWebブラウザとサーバー間や、モバイルアプリ等のクライアントとサーバー間の通信に多く使われます。
さらに近年増え続けているマイクロサービスでは、アプリケーションやサーバー間でデータ連携が頻繁におこなわれています。このような場面でも、シンプルで扱いやすいJSON-RPCは、連携するデータの作成や受け取った後の処理が簡単におこなえるという特性を活かして活用の幅を広げています。
SOAPは「Simple Object Access Protocol」の略称で、アプリケーション間のネットワークを介した連携を標準化するためのプロトコルです。クライアントとサーバー間の通信には、XMLを利用します。
XML-RPCを拡張したプロトコルで、XML-RPCより複雑なデータを扱うケースが多く、XMLドキュメントとXMLスキーマを定義して利用されます。
ここまで代表的なWeb APIのプロトコルを紹介しましたが、実際に利用を検討する場合には、どれを選択すればよいのか迷うはずです。
一つの選択基準として考えられるのは「制約が強い」もしくは「柔軟性が高い」かどうかです。API仕様においては、RESTやSOAPは制約が強く、RPCは柔軟性が高いのが特徴です。
一般的なWebサービスはAPI利用者の幅が広いため、制作者が想定していなかったような内容の問い合わせにも対応する必要が出てきます。その場合、多少の制約があっても「REST」や「SOAP」を選び、制作者の意図しない動作が発生しにくい厳格な設計にするのがよいでしょう。
反対に、利用者が社内や開発者など信用できる接続元に絞られる場合は、APIの柔軟性を優先して「XML-RPC」や「JSON-RPC」を選定するのがよいでしょう。
APIの中でも特に幅広く利用されているWeb APIは、セキュリティレベルや提供事業者と利用者の関係などから、大きく4つのタイプに分類できます。
Open APIは、外部APIまたはパブリックAPIとも呼ばれる、外部から利用しやすい形でAPIを公開するために要求事項を仕様化したものです。セキュリティ対策が緩和されている分、開発者がデータにアクセスしやすいため、手軽かつ迅速な機能実装に役立ちます。
Open APIのAPI仕様はYAMLまたはJSONで記述できます。なおこのYAMLとJSONはフォーマットの構造がわかりやすく、開発者にとって習得が容易な形式です。
またOpen APIの中でもRESTアーキテクチャスタイルと呼ばれる考え方に準拠した、高い可用性かつ統一されたインタフェース仕様に沿って提供されるAPIを「REST API」といいます。RESTは、API機能を持つサーバーがクライアントからの要求を認識して応答しやすいように、RESTアーキテクチャスタイルと呼ばれる考え方に準拠することでAPI仕様の標準化を叶えるものです。
REST APIのサーバーは、次のような制約を満たしている必要があります。
OSやプログラミング言語に関係なく、問合せ方法やレスポンス仕様が一定のため、開発者にとって使いやすくなっています。
パートナーAPIは、提供事業者が特定の提携企業との連携を目的に提供するAPIです。Open APIとは異なり、一部の企業からのみアクセスを許可します。
パートナーAPIは、Open APIに比べてセキュリティを意識した接続方式が必要になります。その分、提供事業者と提携企業はより綿密に連携をおこなえるようになります。
たとえばNTTドコモでは、提携するパートナー企業に向けて「ドコモAIエージェントAPI」を提供しています。本APIはNTTドコモのパートナー企業にのみ公開され、パートナー企業はAPIを利用できるだけでなく、NTTドコモからビジネス支援も受けられます。
このように接続元を絞り、事業連携ツールの一つとして利用するAPIをパートナーAPIと呼んでいます。
内部APIは、自社の関係者以外には公開していない、企業内のみ利用を想定したAPIです。プライベートAPIとも呼ばれています。
接続元は内部オペレーションが利用できる範囲内に限定されます。そのため、自社システムの判定をする最低限のセキュリティ対策がおこなわれます。
内部APIの主な利用用途としては、企業内サービス間の連携や、事業所間のコミュニケーションが挙げられます。また同一サービス内でも、機能ごとのモジュールを連携する際に使われるケースもあるでしょう。
コンポジットAPIは、コンポジット(合成)という単語で表されるように、複数のAPIを一つのAPIまたはメソッドで提供しているものを指します。
コンポジットAPIを利用することで、1つのAPI連携だけで複数のAPIを利用できるように実装できます。また1つのAPIがおこなった処理の結果を別のAPIに対する入力事項として引き渡すことで、複数の処理を継続する仕組みも実現可能です。
1つのAPIがハブのような機能を担ってくれるため、管理がしやすくなるというメリットもあります。
ちなみにAPIの合成方法や組み合わせ方には取り決めがありません。APIの開発企業によってさまざまです。
APIを利用してサービス間で連携することは、提供事業者と利用者それぞれにメリットがあります。どのようなものがあるか、主に上げられる4つのメリットをご紹介します。
APIを利用すると、APIサービス側の機能だけでなく、サービス側に登録されているデータを二次利用できます。
情報の二次利用を行うことで、膨大なデータの収集や登録、更新を新規でおこなう必要がなくなります。これによって実装したい機能の開発にのみ集中できるようになり、システムの機能拡大や精度の向上、またスピーディーな機能実装を実現できます。
近年は有償・無償を問わず、有用な情報がオープンデータとして公開されています。総務省を中心に「オープンデータを積極的に使うICTの活用推進」に取り組まれていることもあり、今後はデータの二次利用という観点でもAPI利用の幅が広がると見られています。
APIサービス側が作成した機能をそのまま活用できるため、利用者はサービス開発の効率化、スピード化を実現できます。また予定していた開発タスクが減ることで、必要な人員を別の作業に配置でき、チーム全体の効率化も期待できるでしょう。
そのほかにも、APIが提供している機能の品質は「APIサービス側が管理・維持してくれる」というメリットがあります。これによって利用者は自社開発した部分のみに注力できるため、結果としてサービス全体の品質向上にもつながります。
API連携の使用は、セキュリティ面の向上にもつながります。
例えば利用者の会員情報等を管理する場合、自社で独自に登録画面を作成するとなると、セキュリティを含めた機能についても一から構築しなくてはなりません。
しかしFacebookやTwitterといった世界基準の非常に高いセキュリティ対策をおこなっているAPIと連携すれば、会員情報はそれらのサービスのセキュリティレベルによって担保されます。独自に個人情報を管理するより、高いセキュリティを保つことが可能となる場合があるのです。
独自にセキュリティを高める開発をするより、有名企業のセキュリティレベルが高いAPIサービスを利用する方が強固になるケースもあるため、状況に応じて利用するとよいでしょう。
API連携を利用すると、システムの使いやすさの指標として利用されるユーザビリティの向上も見込めます。
たとえばWEBサービスに新規登録する際、登録情報を一から入力していくのを面倒だと感じるユーザーも多いでしょう。しかしAPI連携を利用してすでに登録済みのサービスの情報を再利用できれば、登録にかかる時間も短縮されます。
続いては、実際にAPIを利用するまでの代表的な流れについて紹介します。必要な情報や操作の仕組みは、提供事業者によって異なるため、詳細は各企業へご確認ください。
Web APIはWebサービス機能の一部として公開されているケースがほとんどです。そのため多くの場合、APIの利用には、APIを提供しているWebサービスへの登録が必要になります。
登録の際には、APIを利用する予定のドメイン名や作業後の戻り先となるURLなどの情報が必要な可能性があるため、事前の確認をおすすめします。
登録が完了したら、APIを利用するために「APIキー」や「シークレット」と呼ばれる認証コードを取得できます。
これらのコードは、APIを利用するための「パスワード」のような役割を果たします。サービスによって「APIキー」と「シークレット」が両方必要になったり、どちらか一方で良かったりするため、仕様書を良く確認してみてください。
またサービス提供者側は顧客からの問い合わせの際、付与されているAPIキーやシークレットの情報を見て正当な利用者かどうかを判断することもあります。大切な情報ですので、外部に漏れることのないようしっかり管理しておきましょう。
利用準備が整ったら、いよいよ自社サービスへ実装します。APIへの詳しいリクエスト実装方法は提供事業者によって異なります。事前にドキュメントを確認し、サービスのルールに則って問い合わせしましょう。
Vonageは、電話やSMS・ビデオ・チャット・SNSなど、さまざまなコミュニケーションチャネルをWeb・モバイルアプリケーションやビジネスへ組み込めるクラウドAPIサービスです。自動電話発信や電話転送、対話型IVR、自動SMS通知や二要素認証など、多岐にわたるサービスを実現できます。
コミュニケーションに関わる機能を自社で1から開発するのには多大な工数がかかります。通信の暗号化といったセキュリティ対策など考慮せねばならない点も多く、そのために実装を諦めてしまう企業も少なくありません。
しかしVonage APIと連携すれば、それらの工数をすべてVonage側が担ってくれます。お客様側でのインフラ開発はもちろん、ネットワークの構築・維持コストも必要ありません。ただ数行のコードを書き加えるだけで、自社サービスをマルチチャネル化できるのです。
まとめ
記事の前半ではAPIの種類や特徴について、記事の後半ではWeb APIを例に利用するメリットや具体的な利用例について紹介しました。
APIを効率的に利用できれば、自社サービスの開発や拡大にとって大きな武器となるでしょう。
どのようなAPIと連携するのがよいか、検討する参考にしてみてください。