Unsplash

Unsplash APIでPythonを使って高品質なフリー画像を取得する方法

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

お得なお知らせ

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

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

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

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

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


タイプ別にすぐ選べる

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

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

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

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

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

オーディオブックAudible

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

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


スポンサードリンク

Unsplash APIとは?

Unsplash APIは、高品質なフリー画像をプログラムで取得できるWebサービスです。データセット作成やプロジェクトの素材収集に利用可能なこのAPIは、Pythonなどプログラミング言語を通して簡単に活用できます。公式サイトでは「Unsplash API」と検索することでアクセス可能で、画像の検索・ダウンロードが可能です。以下では、具体的な使い方と注意点を解説します。


APIキーの取得方法

Unsplash APIを利用するためにまず必要なのはAPIキーです。以下に取得手順をステップ形式で説明します。

  1. https://unsplash.com/developers にアクセスし、「Get an API key」を選択
  2. ユーザー登録(またはログイン)後、アプリケーションの作成画面へ移動
  3. アプリ名を入力し「Create Application」をクリック
  4. 生成されたClient IDClient Secretをメモしておきましょう

注意: 無料枠では月に100回程度のAPI呼び出しが可能です。ただし、この制限はアプリケーションごとに適用されるため、複数アプリを作成する場合は別々にカウントされます。商用利用や高頻度アクセスの場合は、有料プランへの切り替えが必須です。


Python環境でのOAuth2.0認証設定

Unsplash APIはOAuth2.0認証でアクセス権を取得します。Pythonにおいては requestsoauthlib ライブラリを使用することで実装可能です。以下に手順を説明します。

必要なライブラリのインストール

以下コマンドで必要なパッケージをインストールしてください。


認証トークンの発行フロー

認証には2ステップが必要です。クライアントIDとシークレットを使用し、アクセストークンを取得します。

  1. 認証URLにPOSTリクエスト送信

セキュリティ注意: client_secret の値は絶対に第三者に漏らさないでください。本番環境ではシークレットをハードコーディングせず、環境変数や秘密管理サービスを使用する必要があります。

  1. アクセストークンを使用したAPIリクエスト


画像検索APIのパラメータ設定

Unsplash APIでは、検索キーワードやページネーションを指定できます。以下に具体的な使い方を解説します。

検索キーワード指定

query パラメータで検索キーワードを指定可能です。例えば「cat」で猫の画像が取得されます。

ページネーション処理

大量の画像を扱う際は、pageパラメータでページ指定が可能です。1ページあたり50件のデフォルト表示になります。

パラメータ 説明
query 検索キーワード(例:cat)
page 表示ページ(例:2)
per_page 結果件数(最大100)

重複画像防止策

Reddit投稿で指摘された「同じ画像が繰り返し表示される」課題に対応するには、URL管理による判定ハッシュ値比較が有効です。

URL管理による判定

取得した画像のURLを保存して重複チェックします。以下はシンプルな実装例です。

補足: 画像のURLが同一なら、内容も同じである可能性が高いです。ただし、URLの変更(サイズ指定など)で同じ画像が別々に取得されるケースもあり得るため、完全な重複防止にはハッシュ値比較を併用することを推奨します。


画像ダウンロード用コードサンプル

取得した画像データをファイルに保存するためのPythonコード例です。エラーハンドリングも含めて記載します。

注意: 実際に使用する際は YOUR_CLIENT_IDYOUR_CLIENT_SECRET を自身のAPIキーに変更してください。


GitHub Gistでの即時実験

以下に、上記コードを整理したGitHub Gistのリンクを掲載します。コピーして自分の環境で実行してみてください。

補足: 本記事で使用しているGistリンクは例です。実際のコードをGistにアップロードし、URLを変更してください。


注意事項と追加情報

無料枠の制限条件

  • 月間リクエスト数: 100回(アプリケーションごとにカウント)
  • リクエストが多すぎる場合、API側から 429 Too Many Requests エラーが返される
  • 商用利用や大量アクセスが必要な場合は、Unsplashの有料プランをご検討ください

安全な認証実装のポイント

  • client_secret をコードに直接記述しない(環境変数や秘密管理サービスを使用)
  • アクセストークンは短時間有効で、必要最低限のスコープを持つように設定
  • 不正アクセスを防ぐため、リフレッシュトークンを安全に保存

技術的制約について

  • URLベースの重複チェックは、画像サイズ変更などでURLが異なる場合に失敗する可能性がある
  • 完全な重複防止には、画像データ本体のハッシュ値比較(例: SHA256)を併用することを推奨

その他の実装例

  • ダウンロードした画像をAWS S3やCloud Storageにアップロードする場合のコードサンプル
  • 並列処理による効率的な画像取得(concurrent.futuresasyncioの利用)

スポンサードリンク

お得なお知らせ

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

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

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

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

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


タイプ別にすぐ選べる

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

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

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

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

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

オーディオブックAudible

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

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


-Unsplash