つくるフェーズ
API接続 外部システムとつなぐための、設計と実装
Flying High Works(FHW)では、API接続を「Web制作の延長で必ず出てくるもの」とは考えていません。
API接続は、何らかのデータ連携を必要とする場合に初めて登場する、システム寄りの技術領域です。
そのため、単純な画面実装とは異なり、接続先の仕様理解や責任範囲の整理が求められます。
FHWでは、外部システムと安全に連携するため、APIの仕様だけでなく、連携の前提条件や制約を理解した上で設計・実装を行います。
API接続は「手順」よりも「理解」が重要
API接続は、ドキュメントに書かれた手順をなぞるだけでは成立しません。
実際には、
- 認証方式の違い
- データ更新のタイミング
- 取得・送信できる範囲
- エラー時の挙動
など、仕様の背景にある考え方(ネゴシエーション)を理解する必要があります。
この過程を正しく把握できず、API接続自体を断念したり、敬遠したりするプログラマーも少なくありません。
FHWでは、これまでの実装経験を通じて、API接続にはいくつかの共通パターンがあると捉えています。
その構造を理解することで、特定のAPIに依存せず、比較的柔軟に対応できるようになります。
主な接続実績
これまでに、以下のようなAPI接続を行ってきました。
- Google API(各種Googleサービス)
- Salesforce API
- ZohoCRM API
- Porters API
- Kintone API
- カード決済系API
- 独自仕様の外部API
また、APIではない形であっても、CSV連携による既存システムとのデータ連携などの経験があります。
接続先の種類と考え方
API接続は、用途によって接続先の性質が大きく異なります。
CMS・ヘッドレスCMS
KurocoをはじめとするヘッドレスCMSとの連携は、API接続の一種と捉えています。
- コンテンツ取得
- 表示制御
- 更新頻度の調整
顧客・会員管理システム
Salesforce、ZohoCRM、Porters、Kintone などの顧客管理・業務システムとの連携では、
- データの正確性
- 更新責任の所在
- セキュリティ要件
を重視して設計します。
外部サービス・決済
Google系サービスやカード決済など、外部サービスとの連携についても問題はありません。
ただし、UXと安全性の両立を前提に、実装方法を選定します。
フロントエンド/サーバーサイドの使い分け
API接続は、処理内容に応じてフロントエンドとサーバーサイドを使い分けます。
フロントエンド(JavaScript)
- 郵便番号からの住所補完
- 外部サービスとの軽量な連携
- ヘッドレスCMSからのデータ取得
サーバーサイド(Laravel 等)
- Salesforce API
- ZohoCRM API
- Porters API
- Kintone API
機密情報や業務データを扱う場合は、サーバーサイドでの接続を前提とします。
両者を組み合わせた設計
要件に応じて、フロントとサーバーを組み合わせた構成を取ります。
セキュリティと責任範囲の整理
API接続において最も重要なのは、安全性と責任範囲を明確にすることです。
FHWでは、以下を前提とします。
- APIキーやトークンをフロントに直接出さない
- 必要に応じてサーバー側でラップする
- 環境変数で認証情報を管理する
どこまでをWeb側で扱い、どこからを外部システムに委ねるのか。
この切り分けを誤らないことが、安定運用につながります。
パフォーマンスと取得方法の考え方
API接続は、常にリアルタイム取得すればよいとは限りません。
- 即時性が必要なデータ
- 更新頻度の低いデータ
- 表示速度を優先すべきデータ
用途に応じて、
- リアルタイム取得
- キャッシュ
- スナップショット化
などを使い分けます。
※ データ量や負荷が懸念される場合には、Jsonスナップショットなどの手法を組み合わせることも可能です。
- Jsonスナップショットについては、 スクラッチ開発・機能開発
将来の拡張を前提にした設計
API接続は、初期要件だけで完結させるものではありません。
- 接続先の追加
- データ項目の増減
- 仕様変更
が起きることを前提に、構造を理解したうえで設計することが重要です。
FHWでは、将来の変更に対応しやすい形で、API接続を設計・実装します。
このページで伝えたいこと
API接続は、高度な実装を誇示するための技術ではありません。
- 外部システムを正しく理解する
- 安全性と責任範囲を整理する
- 実装方法を適切に選択する
こうした判断の積み重ねが、安定したシステム連携を支えます。
FHWでは、API接続をシステム連携を伴う専門領域として捉え、無理のない形でWeb制作に組み込んでいます。