Contents
Unsplash APIとPythonの連携プロジェクトの概要
Unsplash APIは、高品質な画像を検索・取得できる無料のAPIサービスとして注目されています。特に猫画像データセット作成のような具体的な目的を持つプロジェクトでは、このAPIは効率的な画像収集手段となります。本記事では、Python初心者でも理解しやすい手順でUnsplash APIと連携する方法を解説します。
本記事で達成するゴールとして、APIキーの取得からOAuth認証までの流れ、実際の画像検索コードの作成、および利用規約に沿った使用法までを体系的にご紹介します。
APIキーの取得・管理方法
APIアクセスの前提となるAPIキー(Access Key)はセキュリティにおいて最も重要な要素です。その取得手順や管理方法について詳述します。
Unsplash公式サイトでのAPIキー発行手順
Unsplashでは、アプリケーションごとに一意のAPIキーが発行されます。以下に登録・取得手順を示します。
- https://unsplash.com/developersにアクセスし、「Get an API key」をクリック
- ユーザー登録(またはログイン)後、「Create New Application」を選択
- 必要事項(アプリケーション名、URLなど)を入力し、申請
- 承認後、APIキーが表示される
注意:APIキーは個人情報と同様に扱い、ソースコードやリポジトリに直接記載しないようにしてください。
セキュリティ上のベストプラクティス
- ローカル環境では
.envファイルなどに保存し、GitHubなどの外部共有は避ける - 環境変数を使用してAPIキーを暗号化する例(Pythonの場合):
python
import os
UNSPLASH_ACCESS_KEY = os.environ.get('UNSPLASH_ACCESS_KEY')
注意:不適切な使用は利用規約に違反し、アカウント停止の原因になります
OAuth認証フローの詳細手順
Unsplash APIでは、一部の機能(ユーザー投稿へのコメントや書き込み)を使用するためにはOAuth認証が必要です。以下に認証フローをステップ形式で解説します。
アプリケーション登録と必要な情報を確認
OAuth認証を利用するには、以下の情報が必須です。
- Client ID(アプリケーション識別子)
- Client Secret(秘密鍵。第三者に漏らさない)
- リダイレクトURL(例:
https://example.com/callback)
補足:
redirect_uriは認証後、ユーザーをリダイレクトするためのURLです。
アクセストークン取得の手順
-
認可コードを取得するため、以下のようなリクエストを行う
GET https://unsplash.com/oauth/authorize
?client_id=YOUR_CLIENT_ID
&redirect_uri=YOUR_REDIRECT_URI
&response_type=code
&scope=read_write -
ユーザーが認証後にリダイレクトされる
codeパラメータからアクセストークンを取得
python
import requests
payload = {
'client_id': 'YOUR_CLIENT_ID',
'client_secret': 'YOUR_CLIENT_SECRET',
'grant_type': 'authorization_code', # 認証のタイプ(一時トークンからアクセス権付与)
'redirect_uri': 'YOUR_REDIRECT_URI',
'code': 'RETURNED_CODE'
}
response = requests.post('https://unsplash.com/oauth/token', data=payload)
access_token = response.json()['access_token']
補足:
grant_typeはOAuth 2.0認証で用いられるパラメータの一つで、このケースでは「Authorization Code」フローを採用しています。
画像検索・ダウンロードのPythonコードサンプル
Unsplash APIと連携する際、requestsライブラリを使用した基本的な構文を把握する必要があります。以下のコード例は、search_cat_images関数を通じて猫画像を取得する方法です。
requestsライブラリを使った基本構文
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import os import requests UNSPLASH_ACCESS_KEY = os.environ.get('UNSPLASH_ACCESS_KEY') def search_cat_images(keyword, count=10): url = 'https://api.unsplash.com/search/photos' params = { 'query': keyword, 'count': count, 'client_id': UNSPLASH_ACCESS_KEY } response = requests.get(url, params=params) return response.json() # 実行例('cats'キーワードで10枚検索) results = search_cat_images('cats', 10) for image in results['results']: print(image['urls']['regular']) |
猫画像取得用のパラメータ設定例
query:'cats'と指定することで猫画像をフィルタリングcount: 取得する画像数(最大は30枚)orientation:'landscape','portrait'など指定可能
ヒント:検索結果からURLを取り出す際、
urls['regular']を使用すると適切な画質のリンクが取得できます。
URLパラメータによる画像品質制御
Unsplash APIでは、画像の解像度やフォーマットを指定するURLパラメータを使うことで、転送量の削減や処理効率化が可能です。以下に代表的なパラメータとその使い方を表にまとめます。
|
1 2 3 4 5 6 7 8 |
| パラメータ | 説明 | 例 | |-----------|------|----| | `?w=800` | 幅800ピクセルの画像に調整 | `https://.../image.jpg?w=800` | | `&h=600` | 高さ600ピクセルに設定(`w`と併用可) | `https://.../image.jpg?w=800&h=600` | | `&fit=crop` | 指定サイズで切り抜く | `https://.../image.jpg?w=800&h=600&fit=crop` | | `?fm=jpg` | JPEG形式に変換(転送量削減) | `https://.../image.jpg?fm=jpg` | | `?auto=format` | 自動で最適なフォーマットを選択 | - | |
注意:解像度調整による転送コスト削減率38%という数値は、Unsplash公式ドキュメントに明記されているか確認が必要です。本記事では例として示しています。
利用規約に基づく適切な使用法
Unsplash APIの利用には、利用規約に従うことが不可欠です。特に商用利用や著作権表示に関する以下の事項は注意が必要です。
商業利用時の制限事項
- フリーの画像を商用目的で使用する場合は、適切な出典表示が必須(例:
© [作者名] / Unsplash) - 許可なしでの再配布や変更は禁止されており、著作権侵害につながる可能性があります
著作権表示義務について
- 画像に使用許諾を明記していない場合は、利用規約違反とみなされることがあります
- 配布物(アプリや資料など)でUnsplash画像を使用する際は、必ず出典情報を明記するようにしてください
要点まとめ
本記事の要点を整理します。
- APIキーの管理
- セキュリティ確保と不正利用防止が必須です。環境変数や
.envファイルを使用して保存しましょう。 - OAuth認証フローの理解
client_id,client_secret,redirect_uriなどのキーワードを理解し、適切に設定してください。- 画像取得時のパラメータ設定
- 解像度やフォーマットを調整することで、転送コストと処理効率の最適化が可能です。
- 著作権表示義務
- 商用利用時でも出典表示が必要です。Unsplash™公式ガイドラインに従ってください。
以上が本記事で解説したUnsplash APIとPythonの連携プロジェクトにおける重要なポイントです。記事を参考に、Unsplash APIとの実装プロジェクトを始めてみましょう。