APIの構築方法

2022年6月30日

APIとは

APIとは、およびAPIを正常に構築するためのガイドラインは何ですか?アプリケーション・プログラミング・インタフェース(API)は、外部アプリケーションがプラットフォーム、オペレーティング・システム、アプリケーションまたはサービスの機能またはデータにアクセスして操作できるようにする一連のプログラミング機能、ツールおよびプロトコルです。効果的なAPIは、データの共有とコラボレーションを強化し、さまざまなソフトウェアが相互に通信してビジネス機能を提供できるエコシステムを構築します。APIは、最新のアプリケーションとクラウドネイティブのマイクロサービスベースのアーキテクチャのコア・コンポーネントであり、さまざまなサービスが相互に通信し、最新のエクスペリエンスを提供するための主要なチャネルを作成します。

正常なAPIの設計、開発および配布には、様々なベスト・プラクティスを活用する必要があります。これらのベストプラクティスに従うことで、このプロセスは、同様に開発者やアプリケーションによる安全なアクセスと使いやすさを保証します。これらのベスト・プラクティスには次のものがあります。

  • シンプルで洗練されたデザインにより、多様なスキルセットと経験を持つ開発者がAPIを容易に利用できるようになっています。
  • 必要に応じて、データへのアクセスを制限する高レベルのセキュリティ
  • APIへのアクセスがソースまたは外部アプリケーションのどちらにも影響しないことを保証するリーン設計原則
  • 既存のAPIのガバナンス、セキュリティおよび使用状況の監視を保証する関連サービス

APIを一から開発する方法

APIの構築は、主にデータの提供元と、それと連携する外部アプリケーションの要件や特性に大きく依存します。API開発プロセスを計画する際に考慮すべき点をいくつか次に示します。

目標は何ですか?
どのタイプのプロジェクトでも、目標を定義し、理解することから始めるのが得策です。APIの目的は、このプロジェクトの指針となるものです。APIを介してどのような情報が交換されますか。どのように使用または提示されますか?考慮するその他の要素には、アプリケーションのターゲット・オーディエンスとそのニーズの理解が含まれます。

どのような制限がありますか。
プロジェクトの目標の側面は、プロジェクトの制限です。開発に実践的な視点を取り入れることは不可欠なステップです。そのため、自社のリソースとスケジュールの制約を十分に理解しておく必要があります。考慮すべきもう1つの要素: セキュリティ上の懸念、ハードウェア・リソースへの影響、パフォーマンス要求などの技術的な制限は、スケーラビリティが懸念されます。

アーキテクチャは何ですか。
APIをゼロから設計する場合、開発者は多くの出発点を選択できます。Python、Java、JavaScript、C#などの言語はすべて、APIを開発するための選択肢です。設計上の考慮事項に組み込むその他の要因には、ユーザビリティスケーラビリティ(リソースのニーズと結合)、セキュリティなどがあります。APIはアプリケーション間のブリッジとして機能するため、この最後の1つは特に重要です。そのためには、双方のデータが適切に保護されている必要があります。セキュリティの脆弱性があるAPIは、コード・インジェクションやデータ・エクスポージャなどの悪用に対してオープンです。

これらの大まかな質問により、ガイドラインを定義でき、開発者はAPIをゼロから構築するプロセスを深く掘り下げることができます。

SOAP APIとREST API

APIを設計する際の重要な決定事項の1つは、アプリケーションがWebサービスにアクセスする方法です。単純なソフトウェア・アーキテクチャ・スタイル・オブジェクト・アクセス・プロトコル(SOAP)と表現状態転送(REST)は、どちらもAPIを設計するための有効な手段です。どちらにも長所と短所があり、どちらが最適かはプロジェクトの状況や利用する場面の文脈によって異なります。一般的に、WebサービスはSOAPまたはRESTのいずれかをサポートするため、APIのWebサービスの決定は、目標に対してSOAPまたはRESTのどちらが適切に機能するかによって定義される場合があります。

SOAPとは
SOAPは、Microsoftが設計したXMLベースのプロトコルです。一連のルールに基づいて構築されたSOAPは、多数の拡張(WS-coordinationおよびWS-security)、自動化および組込みのエラー処理をサポートしたメッセージングで標準を作成します。SOAPは分散環境で最適に動作しますが、XML構造への依存により、コードが非常に複雑になる可能性があります。

RESTとは
RESTは、ポイントツーポイント・レベルで動作するSOAPのよりシンプルで軽量な代替手段として開発されました。RESTは、効率的なスケーラビリティのために特別に構築されたソフトウェア・アーキテクチャ・スタイルとして、柔軟性を提供しながら処理を最小限に抑える一連の標準化された制約を提供します。RESTの高速レスポンスにより、JSONやCSVなど、アプリケーションで使用される様々な出力メッセージ形式でのレイテンシが最小化されます。

APIにRESTまたはSOAPを使用しますか。
アプリケーションに最適な標準はどれですか。それはお客様のニーズによって異なります。共有メディアやデータベース問合せからの出力など、アプリケーションが単純なユーザー対応メッセージを有効にしているほとんどの場合、REST APIが理想的です。SOAPは学習曲線と使用曲線が急峻ですが、この内在する複雑さが、セキュアな支払いなど、より複雑なトランザクションを処理する能力を可能にしています。

API設計ツールの選択

APIを構築する際の具体的な手順や方法は、開発チームが選択するツールによって異なります。Oracle Cloud Infrastructure(OCI)のAPIソリューションでは、OpenAPI仕様に基づいて迅速なプロトタイピングと検証を可能にする完全なツールキットを使用して、APIを簡単に設計および開発できます。OCIを使用すると、ユーザーはAPIブループリントまたはSwaggerにアクセスしてAPIを設計できます。さらに、APIを最初から構築することも、テンプレートから構築して開発プロセスを加速することもできます。

OCIのAPI開発プロセスについて詳しく見ていきましょう。この例では、OCIコンソールを使用して、APIリソース(オプションで、アップロードされたAPI記述ファイルから作成されたAPI記述を使用して)を作成します。無料のOCIアカウントにサインアップして、手順に従ってください。

  1. コンソールで、ナビゲーション・メニューを開き、「Developer Services」をクリックします。「API管理」で、「ゲートウェイ」をクリックします。
  2. 「API」ページで、「APIリソースの作成」をクリックし、その名前を指定します。API記述ファイル(サポートされている言語でのAPI記述を含む)およびタグをアップロードします。
  3. 「Create」をクリックして、新しいAPIリソースを作成します。
  4. バックエンド・コードを記述します。好みのプログラミング言語とフレームワークを使用して、APIを強化するバックエンド・コードを作成します。これは、他の関係者と協力しながら進める反復的なプロセスになることもあります。
  5. バックエンド・コードをテストします。OracleのAPI開発サービスには、ローカルおよび様々な継続的統合(CI)サービスを介してテストするための様々なツールが含まれています。
  6. デプロイします。APIを起動して、開発者エコシステム、パートナ、顧客および内部開発者がAPIにアクセスできるようにします。Oracle API Gatewayは、API接続、セキュリティおよびガバナンスの使用状況の監視および管理を可能にします。

OracleのクラウドベースのAPIソリューションを使用したAPI開発の詳細は、Oracle API開発者ガイド(PDF)を参照してください。

APIのテストのベスト・プラクティス

APIの徹底的なテストは、スムーズな開始と継続的な運用を確保するための重要なステップです。ビジネス・ニーズを満たすAPIのデプロイを支援するために、従うべき効果的なAPIベスト・プラクティスの短いリストを次に示します。

  • APIのスモークテスト(最小限のテスト)を実行してコードを検証します。これは、APIの基本的な機能が正しく動作しているかどうかを確認するための簡易テストです。スモークテストでは、再現性のあるエラーが発生しないかを確認する必要があります。
  • 本番環境に類似した条件で現実的なデータを使用します。実際のユースケースを反映していないデータを操作すると、さまざまなシナリオをトラブルシューティングする能力が長引くだけでなく、信頼性の低いテストが生成される可能性があります。したがって、テストでは、現実のシナリオをできるだけ詳しく再現する必要があります。
  • 正常系テストと異常系テストの両方を実施しましょう。テストには、想定される結果の全体像と使用シナリオを網羅する必要があるため、開発者は計画の一部として、ポジティブテスト(想定される機能的な結果)とネガティブテスト(計画されたエラーにより予期しない結果を引き起こすテスト)の両方を考慮する必要があります。
  • APIレスポンスの包括的な追跡を使用して、透過的な結果を得ることができます。テストは時間がかかり、労力も必要な作業であり、大量のデータが発生した際にはその記録を省きたくなることもありますが、このデータを慎重に記録することで、すべての動作、挙動、テスト結果、有効性を確実に記録しておくことが重要です。
  • セキュリティとパフォーマンスの両方を確認します。機能は明らかに重要ですが、テストが機能することが証明されたら、セキュリティ(データおよびアクセス・リスク)とパフォーマンス(リソースの使用、スケーリングおよび効率的な処理)を確認するのも同様に重要です。

APIの構築やテストの準備はできていますか?Oracle Cloud InfrastructureのAPI管理サービスを無料で試して、APIライフサイクル全体を管理できるソリューションをぜひ体験してみてください。