4.

HTMLのAPI

編集

本稿は HTML5 が提供する API に関する記事です。APIApplication Programming Interface の略で、アプリケーションを実装する際に必要な機能をまとめて呼び出せるよう用意されたインタフェースのことです。HTML5 では、ブラウザネイティブで高度な機能を扱えるよう、多数の Web API が追加されました。

HTML5 で導入された主な API

API用途
Canvas API<canvas> に 2D 図形を描画 (ゲーム・グラフ等)
WebGLGPU を使う 3D グラフィック (OpenGL ES 互換)
Audio / Video<audio> <video> 要素とその JS API
Geolocation API位置情報の取得 (GPS / Wi-Fi 推定)
Web StoragelocalStorage / sessionStorage
IndexedDBクライアント側の構造化 DB
File API / FileReaderローカルファイルの読込
Drag & Drop APIドラッグ&ドロップ操作
Fetch APIHTTP 通信 (XMLHttpRequest の後継)
WebSocket双方向リアルタイム通信
Server-Sent Eventsサーバ → クライアントの一方向プッシュ
Web Workersバックグラウンドスレッド処理
Service Worker / PWAオフライン対応・プッシュ通知
WebRTCブラウザ間のリアルタイム通信 (P2P 音声/映像)
WebAuthnパスキー (生体認証・FIDO2)
Notifications APIOS 通知の表示
Page Visibility APIタブが見えているか判定
History APISPA のページ遷移 (pushState)
Intersection Observer要素が画面に入ったか検知 (遅延読込)
MediaDevicesカメラ・マイク・スクリーンキャプチャ
Permissions API位置・通知等の権限状態の問い合わせ

API の呼び出し基本例

// Fetch API でJSON取得
const res = await fetch("/api/users");
const json = await res.json();

// Geolocation で現在地
navigator.geolocation.getCurrentPosition(
  pos => console.log(pos.coords.latitude, pos.coords.longitude),
  err => console.error(err)
);

// LocalStorage で保存
localStorage.setItem("theme", "dark");
const t = localStorage.getItem("theme");

// Notification
Notification.requestPermission().then(p => {
  if (p === "granted") new Notification("Hello");
});

HTML5 以降に追加された注目 API

  • Clipboard API — 安全なコピー&ペースト操作
  • Web Share API — OS 共有メニューの呼び出し (モバイル)
  • Web Bluetooth / Web USB / Web Serial / Web HID — 周辺機器制御
  • Web Speech API — 音声認識・合成
  • Payment Request API — ブラウザ統合の決済 UI
  • Background Sync / Periodic Sync — オフライン同期
  • Web Animations API — JS でアニメーション
  • ResizeObserver / MutationObserver — DOM 変化を効率検知

「Web API」と類似する用語

用語意味
Web API (ブラウザ API)ブラウザが JS から提供する機能のインタフェース (本稿の主題)
REST API / HTTP APIサーバが HTTP 経由で提供する機能のインタフェース
外部 API / 公開 APISNS や決済サービスなど、第三者が提供する API
OS API / システム APIOS が提供する機能 (Windows API、POSIX 等)

使うときの注意点

  • ブラウザ・OS によって対応状況が異なる。MDN や Can I use で確認
  • 位置情報・カメラ等はHTTPS が必須のものが多い
  • ユーザの明示的な許可が必要な API は、初回呼び出しタイミングを工夫する
  • 古いブラウザ向けにはpolyfillや代替実装を用意
  • 非同期 API は async / await または Promise で扱う
  • iframe や Cross-Origin ではセキュリティ制約 (CORS) を意識

関連

編集
Post Share
子ページ
  1. Canvas API
  2. Drag and Drop API
  3. History API
  4. WebStorage API
  5. File API
  6. System Information API
同階層のページ
  1. 環境構築
  2. 文法
  3. 要素一覧
  4. API
  5. テンプレートエンジン
  6. <head>タグに書いた内容が<body>タグに移動する場合の解決方法
  7. 空白(スペース)の入力方法
  8. テキスト/セレクトボックス/ラジオボタン変更時にJavascriptの関数を呼び出す方法
  9. buttonでformをsubmitさせない方法

最近更新/作成されたページ