Web APIのテストやデータ取得、ファイルダウンロードなど、開発や運用インフラの現場で頻繁に使われるcurl(カール)コマンド。
この記事では、curlの基本概念から主要なオプション、実務で役立つ具体的なコマンド例までを体系的に解説します。
1. curlとは?
curl(Client URL)は、コマンドラインから各種プロトコル(HTTP, HTTPS, FTP, SFTPなど)を利用してデータの送受信を行うためのオープンソースツールです。
- マルチプラットフォーム対応: Linux、macOS、Windowsの主要OSに標準搭載(または容易にインストール可能)。
- Web API検証の標準: 認証付きリクエストやリクエストヘッダーのカスタマイズが容易で、API動作テストのデファクトスタンダード。
- 自動化に適している: シェルスクリプトやCI/CDパイプラインに組み込んで処理を自動化可能。
2. 基本的なリクエスト手法
HTTP GET リクエスト
オプションなしでURLを指定すると、デフォルトでGETリクエストが送信されます。
Bash
curl https://api.example.com/usersHTTP POST リクエスト(JSONデータの送信)
-X POST でメソッドを指定し、-H で Content-Type、-d で送信データを渡します。
Bash
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name": "Taro", "role": "developer"}'3. 実務でよく使われる主要オプション一覧
| オプション | 短縮形 | 用途・解説 |
--request | -X | HTTPメソッド(GET, POST, PUT, DELETE等)を明示指定 |
--header | -H | リクエストヘッダー(認証情報やContent-Type等)を追加 |
--data | -d | 送信データ(POST/PUTのペイロード)を指定 |
--include | -i | レスポンスヘッダーも本文と一緒に表示 |
--verbose | -v | 送受信の全詳細(ハンドシェイク、ヘッダー等)をデバッグ表示 |
--output | -o | 取得データを指定したファイル名で保存 |
--location | -L | 301/302などのリダイレクトを自動追跡 |
--silent | -s | プログレスメーターやエラー表示を非表示にする |
4. 実践的なユースケース
API認証(Bearer Token)を伴うリクエスト
APIキーやアクセストークンを Authorization ヘッダーにセットしてアクセスします。
Bash
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
https://api.example.com/v1/me表示例:
JSON
{
"id": "usr_99823",
"name": "Taro Yamada",
"email": "[email protected]",
"status": "active"
}ファイルのダウンロード
-o(小文字)で出力ファイル名を指定してダウンロードします。
Bash
curl -o file.zip https://example.com/downloads/file.zip表示例:
Plaintext
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 15.2M 100 15.2M 0 0 3850k 0 0:00:04 0:00:04 --:--:-- 3852k詳細ログ(デバッグ)の確認
接続エラーやHTTPステータスコードの原因調査には -v オプションが有効です。
Bash
curl -v https://api.example.com/healthcheck表示例:
Plaintext
* Trying 192.0.2.1:443...
* Connected to api.example.com (192.0.2.1) port 443
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
> GET /healthcheck HTTP/1.1
> Host: api.example.com
> User-Agent: curl/8.4.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sun, 16 Aug 2026 01:24:22 GMT
< Content-Type: application/json
< Content-Length: 18
<
* Connection #0 to host api.example.com left intact
{"status":"ok"}まとめ
curl コマンドは、単なるWebページの取得にとどまらず、API開発やトラブルシューティングにおいて必須のツールです。
まずは基本的な GET / POST リクエストと、-i(ヘッダー確認) や -v(詳細表示) オプションを抑えておくことで、日常の開発・運用効率を大きく向上させることができます。



コメント