こんにちは!
ITエンジニア・webディレクター・webデザイナーなどのIT人材の自立・キャリアを支援するITプロパートナーズの木村です。
弊社では、独立精神旺盛な優秀なエンジニアの方々の独立・起業サポートや、フリーランス支援を行っています。 こちらでは、日々の現場でサポートさせていただいている中での、プロの目線で、エンジニアに役立つお話をしてまいります。
ソフトウェアを開発する際、毎回全ての機能を実装するのはとても面倒ですよね。
そんなときはWeb上で公開されている「API」を使えば、効率よく開発が可能です。
今回は「そもそも、APIとは何か」と疑問を持った方に向けて、APIを詳細に解説していきます。
ドンピシャ案件の探し方
「案件はたくさんあるはずなのに、なかなか自分の望む案件が見つからない…」
エンジニア市場は売り手市場であるものの、いまだに正しいマッチングノウハウが確立されておらず、多くの方が案件探しに苦労されています。
ですが、現在の市場感や企業側に刺さる経験・スキルを理解し正しく案件探しをすれば、誰でも自身のバリューを活かし単価を伸ばすことができる、というのも事実です。
ITプロパートナーズでは、
・9割がエンド直案件のため、高単価
・約6割が週3-4案件のため、柔軟に働ける
・事業会社の自社開発案件が多い
などの魅力的な案件を数多く保有し、マッチング能力の高い即戦力エージェントが完全サポートします。
初めてのフリーランス、情報収集段階でも大丈夫です。あなたの働き方にマッチし、単価も高く、最もバリューを発揮できる案件を探しませんか?
目次
APIって何?
APIとは「Application Programming Interface」の略です。
OSやミドルウエアの機能をアプリケーション開発で容易に利用できるようにした技術仕様のことを指し、広義には、それを実装した関数やコマンド群も含みます。
また、インタフェースとは「二つの物事の間を仲介する窓口となるもの」を指します。
APIは、アプリケーションとプラットフォーム(OSやミドルウェア)を繋ぐインタフェースだと言えるでしょう。
特定のAPIだけを使って開発したプログラムは、ソースコードを再コンパイルするだけで同じAPIを備えたソフトウェア環境に移植可能です。
オブジェクトコードの移植性を保証するインタフェース仕様を「ABI(Application Binary Interface)」と呼びます。
アプリケーションの移植性を保つ目的で、複数のプラットフォーム環境を対象に規定したAPIを指して「API」と呼びこともあります。
また、APIではアプリケーションからOSやデータベースなどを利用するためのインタフェースを規定するものが一般的。
単一の環境でしか使えないものや正式に国際標準になったものは、APIと呼ばないことが多いです。
プラットフォーム製品の開発会社が単独で規定した「独自API」と、標準化団体など業界団体が規定した「標準API」に大別されます。
独自APIの代表例は、マイクロソフトが定めたWindows用の「Win32」や「.NETFramework」、CTI(コンピュータ電話統合)用の「TAPI(Telephony API)」などが上げられるでしょう。
また、標準APIの例としては「統一UNIX仕様(旧称SPEC1170)」があります。
現在のAPIは、Webによる通信で多く利用されています。
そのため「Web API」と呼ばれており、APIと記述されている場合の多くが「Web API」のことを指します。
今回はWeb APIについて詳しく解説していきます。
Web APIの定義
Web APIは、Webサイトに外部のサイトの提供する機能や情報を組み込んだり、アプリケーションソフトからWeb上で公開されている機能や情報を利用する際などに用いられます。
例えば、Web APIで機能を公開しているサーバに対してインターネットなどの通信ネットワークを通じて依頼内容をHTTPリクエストの形で送信すると、その処理結果がHTTPレスポンスの形で送られてきます。
送受信されるデータの形式はAPIによって異なりますが、Webでよく用いられるXMLやHTML、JSON、各種の画像ファイル形式などが用いられることが多いです。
この記事では、以下のような特徴を備えた通信をWeb APIと定義します。
- HTTP、またはHTTPSプロトコルによって通信される
- 特定のHTTPメソッド(GET、POST)などを用いてアクセスできる
- 特定のURI(Uniform Resource Identifier)で提供される
- URIのクエリパラメータやHTTPリクエストボディに一貫した呼び出し方の決まりがある
- HTTPレスポンスのヘッダやボディの表現方法に一定の法則がある
上記の特徴を持つことで、特定のプログラムから見て、使いやすく再利用しやすいインタフェースになります。
URIとは情報やサービス、機器など何らかの資源(リソース)を一意に識別するためのデータの書式を定義したものを指します。
Web APIの連携パターン
Web APIは、異なるアプリケーション間を連携する手法の1つです。こうした目的を持つ手法は様々ですが、アプリケーション間連携のパターン集である「Enterprise IntegrationPatterns」では、次のように分類されています。
- File Transfer
- Shared Database
- Remote Procedure Invocation
- Messaging
File Transferではファイルを介して、Shared Databaseではデータベースのスキーマと実データを介して通信します。
Remote Procedure Invocationでは、ネットワーク上の同期的な関数呼び出しによってデータのやり取りが可能。
Messagingでは、共通のメッセージングシステムを介して非同期にデータをやり取りします。
また、Web APIの多くがRemote ProcedureInvocationの形態を採用しています。
◆Remote Procedure Invocationが使われる理由
なぜ、Web APIでRemote Procedure Invocationが採用されているのでしょうか。
FileTransferでは不特定多数のアプリケーション間の連携には適しておらず、ネットワークをまたぐやり取りに用いることができません。RemoteProcedure Invocationであれば、ネットワーク経由のデータのやり取りが可能です。
また、Shared Databaseは複数のWebアプリケーション間で使われている手法です。
しかし、Shared Databaseは低いレイヤーにおけるアプリケーション連携であるため、操作によっては連携が壊れてしまう可能性もあります。
Remote Procedure Invocationでは、一定の制約を設けて操作を行うため、Shared Databaseよりも連携が壊れることが少ないです。
非同期通信を行うMessagingは、不特定多数に公開する手法としては難易度が高くなります。
Remote Procedure Invocationはクライアント/サーバ型が一般的であり、同期的プログラミングを取り扱うことが可能です。
Web APIの種類
一口にWeb APIと言っても、その仕様は多種多様です。
REST(REpresentational StateTransfer)、RPC(Remote Procedure Call)、SOAP(Simple Object Access Protocol)などの種類があります。
このうち、XML形式を前提としたSOAP仕様のWeb APIはあまり見かけなくなっています。
その理由は、軽量プログラミング言語(Lightweight Language)でWebアプリケーションを記述することが主流となっているからです。
軽量プログラミング言語では「JSON」がメッセージング形式として扱いやすくなっていますね。
JSONとは、JavaScriptにおけるオブジェクトの表記法を応用したデータ形式を指します。
JavaScriptでの扱いが簡単なため、WebサービスやAjaxなどでプログラム間でのデータ交換フォーマットとして多用されています。
また、数多くのプログラミング言語でJSONを簡単に扱えるようにする追加機能などが公開されており、大変便利です。
この記事ではREST、RPCの特徴を紹介します。
◆RESTスタイルの特徴
RESTスタイルには、ROA(Resource Oriented Architecture)という設計手法が広く知られています。
ROAには4つの概念と4つの特徴について見てみましょう。
▼4つの概念
- リソース
- URI
- 表現
- リンク
リソースとは、データとして表現できるものを指します。
また、ROAにおけるリソースは名前とアドレスを与えるためのURIを持たなければなりません。ROAではJSON形式での表現を用います。
▼4つの特徴
- アドレス可読性
アドレス可読性とは、提供する情報がURIを通して表現できることを指します- ステートレス性
ステートレス性とは、APIリクエストのためのHTTPリクエストがすべて分離・独立していることを意味します- 接続性
接続性とは、リソースが別のリソースとの関連を表すリンクを持っていることを意味します- 統一インタフェース
統一インタフェースとは、原則としてHTTPメソッドで操作を表現することで一貫したインタフェースを保証することを意味します。
◆RPCスタイルの特徴
RPCスタイルでは、RESTのような特定の設計指針は特にありません。RPCスタイルには「XML-RPC」「JSON- RPC 2.0」などがあります。
- XML-RPC
1990年代後半からしばらくはXML-RPCがよく使われていました。XML-RPCは、以下のような情報があれば利用できます。- RPCエンドポイント
- リクエストパラメータ
XML-RPCの仕様自体は短くて理解しやすいため、特に提供側としてはハードルが低いものだったと言えます。- JSON-RPC 2.0
XML-RPCがXML形式で表現されるのに対して、JSON形式で表現されるのがJSON-RPC2.0です。
JSON-RPC 2.0は、XML-RPCと非常によく似たインタフェースを持っています。
JSON-RPC 2.0は、HTTP(S)プロトコル以外でも適用でき、RESTと違ってURIやHTTPヘッダなどには依存しないことが特徴です。
また、XML-RPCと同様に、
- RPCエンドポイント
- メソッド名
- リクエストパラメータ
などが分かれば呼び出すことが可能です。
JSON-RPC 2.0は、XML-RPCから続くRPC系のプロトコルとして様々な概念を取り込んでいます。
その特徴としては、リクエストパラメータとそのメソッド呼び出しのレスポンスパラメータを対応付けるための「id」を導入したことが挙げられます。
RPCスタイルは、プログラミング言語のようにメソッドを定義する自由さがある一方で、制約が少ないです。
その一方で、RESTにおいては標準ではないユニークな機能も提供しています。
◆REST、RPCのどちらがよいのか
RESTとRPCの違いは、RESTが「設計時の制約が強い」のに対して、RPCは「柔軟性が高い」と言えます。
実際にアプリケーション間で連携するにあたりWeb APIを提供したい場合、どちらを選択すればよいでしょうか。
REST形式は「公開APIなど、不特定多数のクライアントがAPIを用いる場合」「複数のエンジニアがAPIの設計をする場合」などに向いていると言えるでしょう。
一方、RPCは「クライアントが社内に限定されているなど、SDK(ソフトウェア開発キット)のような形で提供される場合」「限定されたエンジニアでAPIを設計する場合」などに向いています。
Web APIを利用する目的・メリットとは?
Web APIを利用することで、自分のソフトウェアに他のソフトウェアの機能を埋め込むことができ、アプリケーション同士で連携することが可能になります。
ただ、内部のコードまでは公開していないので、外部からは機能の使い方や仕様が分かりません。
そのため、APIの使い方を説明する必要があります。また、セキュリティの観点から、使用方法に関するルールも定められています。
Web APIでは、仕様やルールとまとめてWeb上で公開しているものが一般的です。
Web APIを利用する目的としては「新しいサービスを開発するために利用する」ことが挙げられます。
自社のアプリケーションをAPIとして公開することで、同じ特徴を持ったサービスが開発しやすくなるでしょう。
あるサービスの機能に特化させたり、より使いやすくなるように一部を改良することが可能なので、その結果、ユーザーにとってより利便性の高いWebサービスを開発・提供することができるようになります。
またAPIでは、他社が提供するサービスのデータを利用することができます。
データを二次利用することで、情報のより多角的な分析が可能になり新しい発見や気づきが生まれます。
その結果、新しいビジネスが生まれるきっかけにもなります。
Web APIを利用するメリットの1つが「ソフトウェア開発の効率化」です。
作りたい機能がすでにAPIで公開されていれば、同様の機能を持つプログラムを実装する必要はありませんので、開発期間の短縮が可能になります。
また、無料で利用できるWeb APIを使うことでため、開発コストの削減にもつながるでしょう。
こちらの記事も合わせてお読みください!
まとめ
API(Web API)の特徴や利用目的、メリットなどを理解していただけましたか。
ソフトウェアやWebサービスを開発する上で頼りになるAPIを使って、新しいサービスや機能を実装してみてください。
- 高額案件を定期的に紹介してもらいたい
- 週2日、リモートワークなど自由な働き方をしてみたい
- 面倒な契約周りはまかせて仕事に集中したい
そのような方はぜひ、ITプロパートナーズをご利用ください!
まずは会員登録をして案件をチェック!