Unsplash

Unsplash API 使い方ガイド【日本語】登録・認証から検索実装まで

ⓘ本ページはプロモーションが含まれています

お得なお知らせ

スポンサードリンク
デザイン本が読み放題

Figma・UI/UX・配色の深いノウハウを

動画・記事の断片情報より、1冊の体系書籍のほうが圧倒的に速い。Kindle Unlimited対象のデザイン書籍が豊富です。

Kindle Unlimited 30日無料▶ Audible|デザイン発想本を耳で▶

▶ デザイン→エンジニアリングの橋渡しに興味があれば プログラミング / エンジニア転職 もどうぞ。


タイプ別にすぐ選べる

クリエイティブの引き出し、どう増やす?

Figma・UI/UX・配色・タイポグラフィ。"手を動かす"学びと"発想力を磨く"学びは、使うサブスクが違います。

▷ Figma・UI/UX・配色の具体テクニックを体系化したい実務デザイナー

Kindle Unlimited 30日無料|デザイン本読み放題▶

▷ ブランド・発想・ディレクション系のインプットを"耳で"増やしたい人

オーディオブックAudible

※無料期間中の解約で料金発生なし

▶ デザイン→エンジニアリングの橋渡しに興味があれば プログラミング / エンジニア転職 もどうぞ。


Contents

スポンサードリンク

1. Unsplash API の概要

項目 内容
提供形態 完全無料(商用・非商用問わず利用可)
レートリミット 1 時間あたり 50 リクエスト(認証済み)
※ 未認証の場合は 5000 リクエスト/日 が上限です
画像のライセンス すべてロイヤリティフリー。利用規約で「作者名と Unsplash のリンクを表示」すれば商用利用も可
有料プラン 現時点(2025 年)では公式に有料プランは提供されていません。一部エンタープライズ向けのカスタム契約があるケースがありますが、公開情報としては「無料」だけです

1‑1. レートリミットの取得方法

Unsplash のレスポンスヘッダーに以下が含まれます(公式ドキュメントと同一表記):

ヘッダー名 意味
X-Ratelimit-Limit 1 時間あたりの上限リクエスト数
X-Ratelimit-Remaining 残りのリクエスト数
X-Ratelimit-Reset リミットがリセットされる UNIX タイムスタンプ

実装例(JavaScript)
js
fetch(url, { headers })
.then(res => {
const limit = res.headers.get('x-ratelimit-limit');
const remaining = res.headers.get('x-ratelimit-remaining');
console.log(残り ${remaining}/${limit} リクエスト);
return res.json();
});


2. 開発者登録とアクセストークン取得

2‑1. アカウント作成 & メール認証

  1. https://unsplash.com にアクセスし「Sign up」でメールアドレスを入力。
  2. 受信した認証メールのリンクをクリックして認証完了。

この時点で Developer Dashboard が利用可能になります。

2‑2. アプリケーション登録

  1. ダッシュボード左側メニューの Your Applications を選択。
  2. New Application」をクリックし、以下を入力します。
フィールド 設定例
Application name MyPortfolio
Description ポートフォリオサイトで Unsplash 画像を表示
Redirect URI https://example.com/auth/callback(OAuth が必要な場合)

ポイント
- Redirect URI は OAuth 認可コードフローで使用します。不要なら空欄でも構いません。
- 取得した Access KeySecret Key は後述の環境変数へ保存してください。

2‑3. アクセストークン(OAuth)取得手順(任意)

Unsplash の公開 API キーだけで多くのエンドポイントは呼び出せますが、ユーザー固有情報や書き込み系 API を利用する場合は OAuth が必要です。

2‑3‑1. 認可コード取得

ユーザーが上記 URL に遷移し、認可後に code パラメータが付いたリダイレクト先が呼び出されます。

2‑3‑2. アクセストークン交換(サーバー側)

成功すると JSON で access_token が返ります。取得したトークンは 環境変数 に保存し、コードからは直接参照しないようにします。

例).env
dotenv
UNSPLASH_ACCESS_KEY=your_access_key
UNSPLASH_SECRET_KEY=your_secret_key
UNSPLASH_OAUTH_TOKEN=oauth_token_here # 必要な場合のみ


3. 主なエンドポイントと実装サンプル

エンドポイント 用途 主なパラメータ
/search/photos キーワード検索 query, page, per_page, orientation
/photos/random ランダム画像取得 count, collections, orientation
/collections/:id/photos コレクション内の写真一覧 page, per_page

3‑1. キーワード検索(/search/photos)

日本語検索のポイント

  • 必ず encodeURIComponent() でエンコードする。
  • 空白は %20 に変換されるため、複数単語でも正しく検索できます。

3‑2. ランダム取得(/photos/random)

  • collections パラメータで特定コレクション内のランダム画像に絞り込めます。
  • orientation=landscape|portrait|squarish で向きを制御可能です。

3‑3. コレクション取得(/collections/:id/photos)


4. 日本語検索・エンコードとフロントエンドでの CORS 対策

4‑1. URL エンコード実務例

キーワード encodeURIComponent 結果
桜 幕末 %E6%A1%9C%E3%80%80%E5%B9%95%E6%9C%AB
東京 夜景 %E6%9D%B1%E4%BA%AC%20%E5%A4%9C%E6%99%AF

Tips
- UTF‑8 が前提なので、サーバー側で文字コードを変換しないこと。

4‑2. CORS エラー回避のプロキシ実装(Node.js/Express)

Unsplash は Access-Control-Allow-Origin: * を返すエンドポイントが多いですが、一部ヘッダーや認証情報が付くとブラウザ側で CORS がブロックされることがあります。安全策として自前の軽量プロキシを置くと確実です。

フロントエンドは以下のように呼び出すだけで CORS を回避できます。


5. Rate Limit の監視・エラーハンドリング

5‑1. リミットに近づいたらバックオフする実装例(fetch)

5‑2. 再試行ロジックのベストプラクティス

項目 推奨設定
最大リトライ回数 3 回まで(それ以上は失敗としてハンドリング)
バックオフ方式 指数バックオフ (base * 2^n) + ジッターを加えると同時リクエストが集中しにくい
404/401 の扱い ユーザー入力ミスや認証失敗の可能性が高いため再試行せず即エラーハンドリング

6. セキュリティとキー管理

6‑1. 環境変数で安全に保管

  • .env をプロジェクト直下に置き、必ず .gitignore に追加。
  • CI/CD(GitHub Actions, GitLab CI 等)では シークレット機能 を利用し、ビルド時に環境変数として注入。

6‑2. キー漏洩時の対策

  1. 即座にローテーション:ダッシュボードから新しい Access Key を発行し、古いキーを無効化。
  2. リクエストログの監視:予期せぬ大量アクセスがあれば速やかにレートリミット超過・課金リスクを把握できるようにする。

7. 商用利用時の必須クレジット表示

Unsplash のライセンスでは、以下情報を 目立つ形で 表示することが義務付けられています。

必要項目 表記例
作者名(ユーザー名) Photo by **John Doe**
Unsplash へのリンク on <a href="https://unsplash.com">Unsplash</a>
アプリケーションの UTM パラメータ(任意) ?utm_source=your_app&utm_medium=referral

7‑1. HTML 実装例

7‑2. Markdown 実装例(README・ブログ等)

ポイント
- target="_blank"rel="noopener" を付与してセキュリティ向上。
- 複数画像を表示する場合は、各画像ごとに同様のクレジットリンクを生成するとベストプラクティスです。


8. 完全サンプルコード集(実務で使える形)

8‑1. JavaScript (fetch) – キーワード検索 & クレジット付与

8‑2. Node.js (axios) – ランダム画像取得

8‑3. Python (requests) – コレクション画像一覧


9. まとめ

  1. Unsplash API は無料で利用可能(1 時間あたり 50 リクエスト)。有料プランは公式には存在しません。
  2. 開発者登録 → アプリ作成 → Access Key 発行 が最小の手順です。OAuth が必要なケースだけ別途認可フローを実装します。
  3. 主要エンドポイントは /search/photos, /photos/random, /collections/:id/photos。サンプルコードは JavaScript(fetch / axios)、Node.js、Python の3言語で提供しました。
  4. 日本語検索は encodeURIComponent() が必須です。フロントエンドの CORS 問題は軽量プロキシで安全に回避できます。
  5. レートリミットはヘッダー X‑Ratelimit-* で取得し、残量が少ないときは指数バックオフで再試行します。
  6. API キーは .env と CI シークレットで管理し、公開リポジトリに絶対に含めません。漏洩時は即ローテーションを実施してください。
  7. 商用利用時は必ず作者名と Unsplash へのリンク(UTM パラメータ推奨) を画像毎に表示します。

以上の手順とベストプラクティスに沿って実装すれば、Unsplash の高品質な写真を安全かつ合法的に自分のプロジェクトへ組み込めます。ぜひ試してみてください!

スポンサードリンク

お得なお知らせ

スポンサードリンク
デザイン本が読み放題

Figma・UI/UX・配色の深いノウハウを

動画・記事の断片情報より、1冊の体系書籍のほうが圧倒的に速い。Kindle Unlimited対象のデザイン書籍が豊富です。

Kindle Unlimited 30日無料▶ Audible|デザイン発想本を耳で▶

▶ デザイン→エンジニアリングの橋渡しに興味があれば プログラミング / エンジニア転職 もどうぞ。


タイプ別にすぐ選べる

クリエイティブの引き出し、どう増やす?

Figma・UI/UX・配色・タイポグラフィ。"手を動かす"学びと"発想力を磨く"学びは、使うサブスクが違います。

▷ Figma・UI/UX・配色の具体テクニックを体系化したい実務デザイナー

Kindle Unlimited 30日無料|デザイン本読み放題▶

▷ ブランド・発想・ディレクション系のインプットを"耳で"増やしたい人

オーディオブックAudible

※無料期間中の解約で料金発生なし

▶ デザイン→エンジニアリングの橋渡しに興味があれば プログラミング / エンジニア転職 もどうぞ。


-Unsplash