Unsplash

Unsplash API の使い方とPythonで画像取得 – 登録手順・検索・ダウンロード完全ガイド

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

お得なお知らせ

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

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

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

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

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


タイプ別にすぐ選べる

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

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

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

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

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

オーディオブックAudible

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

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


スポンサードリンク

1. Unsplash API の概要と登録手順

Unsplash の画像は高品質で商用利用も可能ですが、API 利用時には認証・クレジット表記・レートリミットを遵守する必要があります。このセクションでは、開発者アカウントの作成から基本的な利用規約までを順に解説します。

1‑1. 開発者アカウントの作成

Unsplash のデベロッパーポータル(https://unsplash.com/developers)で無料アカウントを取得します。

  1. Sign up」ボタンからメールアドレスまたは SNS で登録
  2. メール認証が完了すると、ダッシュボードへ遷移できるようになります

1‑2. アクセスキー(Access Key)の取得

API 呼び出しに必要なのは Public の Access Key だけです。Secret Key はサーバー側で保管し、決してフロントエンドに露出させません。

手順 内容
1 ダッシュボードの New Application をクリック
2 アプリ名・説明・利用目的を入力し Create Application
3 表示された Access KeySecret Key を確認(Access Key が API 認証に使用)

重要:Access Key は環境変数 UNSPLASH_ACCESS_KEY に保存し、コード上でハードコーディングしないことを徹底してください。

1‑3. 利用規約と必須クレジット表記

Unsplash の API を利用する際は、画像ごとに以下の形式でクレジットを表示する必要があります。

photographer(撮影者名) と profile URL は検索結果 JSON の user.nameuser.links.html に含まれています。

項目 内容
クレジット表記 画像を表示する全ページ・アプリで必須。上記テンプレートに従うこと
商用利用 無料プランでも商用プロダクトへの使用は OK。ただし大量ダウンロードや再配布は禁止
API の利用目的 Unsplash のサービス向上に資する用途であること(例:検索、表示、壁紙設定)

1‑4. 最新のリクエスト上限(2026 年時点)

公式ドキュメントによると、Free プランは 5,000 リクエスト / 時間 が上限です。過去に「1 時間あたり 50 リクエスト」という情報が流布していましたが、2024 年の大型アップデートで緩和されました。

  • 上限超過時は HTTP 429 Too Many Requests が返ります
  • レスポンスヘッダー X-Ratelimit-Limit, X‑Ratelimit-Remaining, Retry-After を活用すると、プログラム側で自動的に待機時間を算出できます

注記:有料プラン(Pro / Business)ではさらに高い上限が設定されます。最新の数値は必ず公式ページをご確認ください。


2. Python で API を呼び出す基本構成

Python の標準的な HTTP クライアント requests と、レートリミット制御に便利な ratelimit / backoff ライブラリを組み合わせると、堅牢かつ可読性の高い実装が可能です。

2‑1. 必要パッケージのインストール

  • requests:シンプルな HTTP クライアント
  • ratelimit:関数単位で呼び出し回数を制限
  • backoff:指数バックオフ付きリトライ機構

2‑2. 認証ヘッダー付き GET ラッパー

以下の unsplash_get() は、認証ヘッダー自動付与と共通エラーハンドリングを行います。
関数は @ratelimit.sleep_and_retry デコレータで 5,000 リクエスト/時(≈1.39 リクエスト/秒)に制限しています。

  • @limits が呼び出し回数を制御、超過時は自動的に待機
  • backoff.expo によりタイムアウトや一時的なネットワーク障害が起きても最大 4 回まで再試行(指数バックオフ)

3. 画像検索エンドポイントの利用方法

Unsplash の検索は /search/photos エンドポイントで実現します。このセクションではパラメータ解説と、取得結果から必要情報を抽出するサンプルコードを示します。

3‑1. /search/photos の主要パラメータ

パラメータ 説明 デフォルト 最大
query 検索キーワード(必須) 任意文字列
page ページ番号 1 任意(上限は API が返す total_pages
per_page 1 ページあたりの件数 10 30
orientation 画像向き (landscape, portrait, squarish)

使用例

3‑2. 検索結果から画像 URL とクレジット情報を抽出

取得した JSON の構造は公式ドキュメントと同様です。regular サイズの URL が汎用的に使いやすいので、以下関数で一括抽出します。


4. ページネーションとレートリミット対策

大量の画像を取得したい場合は ページングリクエスト数計算 が必須です。ここでは実装例と、ratelimit ライブラリによるスロットリング方法を紹介します。

4‑1. ページング実装例

4‑2. リクエスト数の事前計算例

キーワード per_page 取得したい総件数 必要ページ数 想定リクエスト数
nature 30 150 5 5 (検索) + 5 (画像ダウンロード) = 10

ポイント:検索リクエストはページ数分だけ、画像ダウンロードも同じだけ必要です。合計が上限 5,000 を超えないように設計しましょう。

4‑3. ratelimit デコレータで自動スロットリング

検索関数やダウンロード関数に以下のデコレータを付与すれば、呼び出しごとに自動的に待機時間が挿入されます。


5. 画像のダウンロード・ローカル保存ベストプラクティス

実運用では、エラーハンドリング・リトライ・クレジット情報の永続化が重要です。以下は完成度の高いダウンロード関数例です。

  • backoff.expo による指数バックオフで一時的な失敗に自動リトライ
  • ダウンロード完了後は 同名 .txt へクレジットを書き込み、法的要件を満たす

6. 実用サンプル:ランダム壁紙取得ツール

以下は「起動時にキーワードからランダムに画像を取得し、デスクトップの壁紙として設定」する最小実装です。Python 標準ライブラリ + 前述のヘルパー関数だけで完結します。

6‑1. フロー概要

  1. キーワードリストからランダムに 1 件選択
  2. fetch_all_images()max_pages=1, per_page=30)で候補画像を取得
  3. 取得した中からさらに 1 枚をランダム抽出
  4. download_image() でローカル保存し、クレジットテキストも生成
  5. OS に合わせた壁紙設定コマンドを実行

6‑2. 完全コード

ポイントまとめ

  • fetch_all_images() がレートリミットを自動的に考慮
  • 失敗時は backoff による最大 3 回リトライが働くため、安定稼働が期待できる
  • OS 別実装は最小限に抑えつつ、必要ならデスクトップ環境別のコマンドへ拡張可能

7. SDK の選択肢と比較(2026 年版)

7‑1. 現在提供されている公式・非公式 SDK

言語 公式 SDK 有無 主なパッケージ名 メンテナンス状況 (2026/06)
Python ❌(公式は未提供) unsplash-py(サードパーティ) 最終更新 2023 年、PR が少なく保守的
JavaScript / TypeScript unsplash-js アクティブにメンテナンス中
Ruby unsplash.rb 定期リリースあり
Go unsplash-go 2025 年に大幅改修

結論:Python 向けの公式 SDK は現在存在しません。安定性と柔軟性を求めるなら requests + ratelimit/backoff の組み合わせ が推奨です。サードパーティ SDK を使う場合は、メンテナンス状況・依存関係を必ず確認してください。

7‑2. unsplash-py と自前実装の比較

項目 unsplash-py(非公式) 自前実装 (requests + ライブラリ)
導入コスト 1 行でインスタンス生成可能 requests は必須、追加でレートリミット用ライブラリが必要
機能網羅性 基本的な検索・取得のみ。最新エンドポイントの対応遅れあり 任意エンドポイントに自由にアクセス可
エラーハンドリング 例外はシンプルだが再試行ロジックが無い backoff による指数バックオフ、最大リトライ回数設定可能
学習効果 抽象化が高く内部実装が見えにくい HTTP の基礎からレートリミットまで一通り学べる

まとめ

  • 開発者アカウントと Access Key を取得し、環境変数で安全に管理する
  • 公式ドキュメント(2026/06 時点) では無料プランでも 5,000 リクエスト / 時間 が上限です。X‑Ratelimit-* ヘッダーを活用して動的に待機させましょう
  • Python では requests + ratelimit + backoff の組み合わせが最も汎用的かつ保守しやすい実装となります
  • クレジット表記は必須。取得した user.nameuser.links.html を利用して、画像ごとにテキストファイルで保存すると管理が楽です
  • ページング・リクエスト数計算を行い、上限超過しない設計(例:30 件 × 5 ページ = 150 件 → 合計 10 リクエスト)を徹底する
  • 実務で使える ランダム壁紙取得ツール のサンプルコードは、OS 判定・リトライ・レートリミット制御がすべて組み込まれているので、そのままプロジェクトに取り込めます

このガイドをベースに、ぜひ自分だけの画像取得アプリやデザインツールを作成してみてください。質問や実装上の課題があれば、公式フォーラムや GitHub Discussions でコミュニティと情報交換することもおすすめです。 Happy coding!

スポンサードリンク

お得なお知らせ

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

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

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

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

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


タイプ別にすぐ選べる

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

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

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

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

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

オーディオブックAudible

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

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


-Unsplash