【初心者向け】もう迷わない!curlコマンド超入門:APIテスト、ファイルダウンロード、Ubuntu 24.04 での実践活用術

「ドキュメント通りにAPIを叩いているはずなのに、なぜか動かない…」
「Webサイトから特定のファイルだけをサクッとダウンロードしたい…」
「Webサイトから特定の情報を自動で収集したい…」

Web開発の学習を進める中で、こんなケースに遭遇したことはありませんか?
もしあなたが、これらの悩みを抱え、「コマンドラインツールは難しそう…」と感じているなら、この記事はまさにあなたのためのものです。

多くのチュートリアルではフロントエンドや強力なバックエンドフレームワークに焦点が当てられがちですが、その裏側では、地味ながらも非常にパワフルなツールが活躍しています。その代表格が、curlです。

curlは、コマンドラインインターフェース(CLI)またはターミナルからWebサイトの情報取得、ファイルのダウンロード、APIとの対話、さらにはWebスクレイピングや簡単な自動化スクリプトの作成まで、HTTP通信に関するあらゆる操作を可能にする、まさに「Web開発者のためのスイスアーミーナイフ」だと言えます。

この記事を読み終えた後のあなた

  • curlがどのようなツールで、なぜ多くの開発者に愛用されているのかを説明できる。
  • 自身のUbuntu 24.04環境にcurlをインストールし、バージョンを確認できる。
  • curlを使ってWebページのコンテンツを取得し、その内容をターミナルに表示したり、ファイルとして保存したりできるようになる。

この記事の対象読者

  • Web開発を学び始めたばかりで、コマンドラインツールに慣れていない方
  • APIのテストをしたいが、PostmanなどのGUIツールしか使ったことがない方
  • curlという名前は聞いたことがあるが、実際に何ができるのかよく知らない方
  • Ubuntu 24.04で開発環境を構築している、またはこれから構築しようとしている方

動作検証環境

この記事で紹介するcurlコマンドの動作は、以下の環境で検証しています。

  • OS: Ubuntu 24.04.3 LTS
  • ハードウェア: VAIO VJP131

目次


curlとは?

curl(カールと読みます)は、Client for URLs の略で、その名の通り、さまざまなプロトコルを使ってURLリソースとデータをやり取りするためのコマンドラインツールです。より詳細な情報は、curl公式ドキュメントを参照してください。

[NOTE]
プロトコルとは、コンピュータ同士が通信するときの「お作法」や「言語」のようなものです。curlはHTTPやHTTPSだけでなく、FTP, SMTP, Telnetなど、非常に多くのプロトコルに対応しています。

多くのツールは特定の目的に特化していまずが、curlの設計思想は「何でもできること」。非常に多機能で、そのオプションは数百にも及びます!

curlは、スウェーデンのプログラマーであるDaniel Stenberg氏によって開発が始められ、25年以上の歴史を持つ非常に安定したツールです。Stenberg氏は、curlのメンテナーとして現在も活発に開発を続けており、その活動は彼のブログなどで確認できます。その心臓部であるlibcurlというライブラリは、スマートフォン、自動車のインフォテインメントシステム、スマートテレビなど、世界中の何十億ものデバイスで利用されています。これは決して大げさな表現ではなく、curlを学ぶことは、現代のWebを支える基盤技術の一つに触れることと同義です。

ファイルを再帰的にダウンロードするならwgetサーバーと複雑な対話(ヘッダーのカスタマイズ、多様なHTTPメソッドの利用など)をするならcurl、という使い分けが基本です。
例えるなら、wgetは「図書館で本を借りてくる専門家」のように、特定のファイルを効率的に手に入れることに特化しています。
一方、curlは「図書館で本を借りるだけでなく、司書と会話したり、特定の情報をピンポイントで探したりできる万能な研究者」のように、より柔軟でインタラクティブなWebとの対話が可能です。特にcurlは結果を標準出力に返すため、後続のコマンド(例えばJSONを整形するjqなど)とパイプラインで連携させやすく、プロの開発現場で重宝される大きな理由となっています。

[著者の経験談]
私も最初は、単にファイルをダウンロードするだけならwgetの方がシンプルで分かりやすいと感じていました。しかし、ある時、認証が必要なREST APIのデバッグで、ヘッダーのカスタマイズ、多様なHTTPメソッドの利用、JSONデータの送信といった複雑なタスクに直面しました。PostmanのようなGUIツールも便利ですが、CI/CDパイプラインに組み込む必要があったため、最終的にはcurlの柔軟性とパワフルさに助けられましたね。まさに「困ったときのcurl」です!

この「何でもできる」という哲学こそが、curlが世界中の開発者に愛され、スクリプトによる自動化やテストに不可欠なツールとなっている理由です。
例えば、多くのクラウドプロバイダー(AWS, Google Cloud, Azureなど)のCLIツールは、APIとの通信においてcurlと連携したり、curlで利用可能な認証情報を提供したりすることで、その強力な機能を活用しています。
あるいは、CI/CDパイプラインでの自動テストやデータ連携にも広く活用されています。


Ubuntu 24.04へのcurlインストール

それでは、早速あなたのUbuntu 24.04環境にcurlをインストールしましょう。
多くのLinuxディストリビューションではデフォルトでインストールされていますが、もし入っていなくてもaptコマンドを使えば非常に簡単です。

aptを使った簡単インストール

ターミナルを開き、以下のコマンドを1行ずつ実行してください。

# まずはパッケージリストを最新の状態に更新します
sudo apt update

# curlをインストールします
sudo apt install curl
[NOTE]
sudoは「SuperUser DO」の略で、管理者権限でコマンドを実行するためのものです。システム全体の設定変更やソフトウェアのインストールには、セキュリティ上の理由から特別な権限が必要となります。
aptは「Advanced Package Tool」の略で、UbuntuなどのDebian系Linuxディストリビューションでソフトウェアパッケージの管理を行うためのコマンドです。これにより、ソフトウェアのインストール、更新、削除などを簡単に行うことができます。

以下のように、curlのインストールログが表示されます。エラーが出ていなければ大丈夫です。

user-name@your-pc:~$ sudo apt install curl
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
状態情報を読み取っています... 完了        
以下のパッケージが新たにインストールされます:
  curl
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
226 kB のアーカイブを取得する必要があります。
この操作後に追加で 534 kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu noble-updates/main amd64 curl amd64 8.5.0-2ubuntu10.6 [226 kB]
226 kB  1 で取得しました (163 kB/s)
以前に未選択のパッケージ curl を選択しています。
(データベースを読み込んでいます ... 現在 150614 個のファイルとディレクトリがインストールされています。)
.../curl_8.5.0-2ubuntu10.6_amd64.deb を展開する準備をしています ...
curl (8.5.0-2ubuntu10.6) を展開しています...
curl (8.5.0-2ubuntu10.6) を設定しています ...
man-db (2.12.0-4build2) のトリガを処理しています ...

インストールの確認

インストールが正常に完了したかを確認するために、バージョン情報を表示するコマンドを実行します。

curl --version

以下のように、curlのバージョンや対応プロトコルが表示されれば成功です!

user-name@your-pc:~$ curl --version
curl 8.5.0 (x86_64-pc-linux-gnu) libcurl/8.5.0 OpenSSL/3.0.13 zlib/1.3 brotli/1.1.0 zstd/1.5.5 libidn2/2.3.7 libpsl/0.21.2 (+libidn2/2.3.7) libssh/0.10.6/openssl/zlib nghttp2/1.59.0 librtmp/2.3 OpenLDAP/2.6.7
Release-Date: 2023-12-06, security patched: 8.5.0-2ubuntu10.6
Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd
[TIP]
もし curl: command not found というエラーが表示された場合は、インストールがうまくいっていません。sudo apt install curl のコマンドが正しく実行できたか、スペルミスがないかなどを確認してみてください。

curlの基本的な使い方:GETリクエストでWebページを取得する

インストールが完了したところで、いよいよ最初のcurlコマンドを実行してみましょう。
ここでは、curlがHTTPリクエストを送信し、サーバーからレスポンスを受け取るという基本的な流れを図で確認しておきましょう。

curlがHTTPリクエストを送信し、サーバーからレスポンスを受け取るという基本的な流れ

curl example.com を実行してみる

最もシンプルな使い方は、引数にURLを渡すだけです。
以下のコマンドをターミナルに打ち込んでみてください。example.comの箇所を実在するURLに変更してください。

# 引数にURLを渡すだけで、そのWebページのコンテンツを取得できます
curl example.com

コマンドを実行すると、example.comのHTMLソースコードがターミナル上に一に表示されます。一般のWebサイトの場合は、一気にコードが表示されます。
実行すると、以下のようなHTMLソースコードが表示されます。()

<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="ja"><head><meta content="世界中のあ探しの情報を見つけてください。" name="description"><meta content="noodp, " name="robots"><meta content="text/html; charset=UTF-8" http-equiv="Content-Type"><meta content="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image"><title>Google</title><script nonce="UqbbHuajGnQ_6u_ehMH5pQ">(function(){var _g=

これがcurlの基本動作です。指定したURLに対してGETリクエストを送信し、サーバーからのレスポンスボディを標準出力(この場合はターミナル画面)に表示します。


ヘッダー情報だけを取得する -I オプション

Webサイトのコンテンツ全体ではなく、HTTPヘッダー情報だけを確認したい場合は、-I (大文字のアイ) オプションを使います。これは、Webサイトがどのようなサーバーで動いているか、キャッシュの設定はどうなっているか、リダイレクトは発生しているか、といった情報を素早く確認したいときに非常に便利ですし、APIのデバッグ時にも重要な情報源となります。

# -Iオプションで、HTTPヘッダー情報だけを取得します
curl -I example.com

実行すると、以下のようなHTTPヘッダー情報が表示されます。(www.google.comの例)

HTTP/2 200 <br>content-type: text/html; charset=ISO-8859-1<br>content-security-policy-report-only: object-src 'none';base-uri 'self';script-src 'nonce-hZLEb-6kTB0Muh1OYKKvXg' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp<br>accept-ch: Sec-CH-Prefers-Color-Scheme<br>p3p: CP="This is not a P3P policy! See g.co/p3phelp for more info."<br>date: Wed, 24 Sep 2025 05:41:22 GMT<br>server: gws<br>x-xss-protection: 0<br>x-frame-options: SAMEORIGIN<br>expires: Wed, 24 Sep 2025 05:41:22 GMT<br>cache-control: private<br>set-cookie: AEC=AaJuP4MaAzcKhPE; expires=Mon, 23-Mar-2026 05:41:22 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax<br>set-cookie: NID=525=kl14y63Xi1KYhYm24wRcXicS_HVYJK_-crythKFHB6j0blbeJwF9Tg09SJyReslW1YkgEsD_9aV2N48UPgiQSGVZ_Vm9208hv2C8KKNudRXE; expires=Thu, 26-Mar-2026 05:41:22 GMT; path=/; domain=.google.com; HttpOnly<br>alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000

-Iオプションは、--headの短縮形であり、サーバーにHEADリクエストを送信します。HEADリクエストはGETリクエストと同様に動作しますが、レスポンスボディは返さず、ヘッダー情報のみを返します。これにより、ネットワーク帯域を節約し、素早く必要な情報を得ることができます。

それでは、HTMLソースコードをじっくり見るための、コマンドを見ていきましょう。


-o オプションでファイルに保存

ターミナルに直接表示するのではなく、ファイルとして保存したい場合も多いですね。その場合は -o (小文字のオー) オプションを使います。

# -oオプションで、取得したコンテンツを`example.html`というファイル名で保存します
curl -o example.html example.com

このコマンドを実行しても、ターミナルには何も表示されません。代わりに、カレントディレクトリにexample.htmlというファイルが作成されています。lsコマンドで確認してみましょう。

ls
example.html

ファイルの中身は、先ほどターミナルに表示されたものと全く同じHTMLです。

[TIP]
-ooutput の略です。curlのオプションは、このように英単語の頭文字になっていることが多く、覚えておくと便利です。

curlのアップデートとアンインストール

curlのアップデート

curlは定期的にアップデートされ、新機能の追加やセキュリティ修正が行われます。常に最新の状態に保ち、安全かつ効率的にcurlを利用してください。

Ubuntuでは、aptコマンドを使って簡単にcurlをアップデートできます。

# まずはパッケージリストを最新の状態に更新します
sudo apt update

# curlをアップデートします
sudo apt upgrade curl

sudo apt upgrade curlコマンドは、curlパッケージがインストールされている場合、利用可能な最新バージョンに更新します。


curlのアンインストール

もしcurlが不要になった場合や、何らかの問題が発生して再インストールしたい場合は、以下のコマンドでアンインストールできます。

# curlをアンインストールします
sudo apt remove curl

このコマンドはcurlパッケージ本体を削除しますが、設定ファイルなどは残る場合があります。設定ファイルも含めて完全に削除したい場合は、purgeオプションを使用します。

# curlと関連する設定ファイルを完全に削除します
sudo apt purge curl

アンインストール後、再度curl --versionを実行して、「curl: command not found」と表示されれば、正常にアンインストールされています。


よくある質問(FAQ)

Q1: wgetとの違いは何ですか?

A1: wgetは主にファイルのダウンロードに特化したツールで、デフォルトでファイルに保存します。一方、curlはより多機能で、APIテストやスクリプトへの組み込みなど、サーバーとの柔軟なやり取りを得意とします。curlはデフォルトで結果を標準出力に表示するため、他のコマンド(例えば後々登場するjq)とパイプ(|)で繋ぎやすいのが大きな特徴です。

Q2: WindowsやmacOSでのインストール方法は違いますか?

A2: はい、異なります。macOSではHomebrewを使って brew install curl でインストールするのが一般的です。Windows 10/11では標準でcurlが搭載されているため、通常はインストールの必要はありません。また、Windows Subsystem for Linux (WSL) を利用している場合は、Ubuntuと同様にaptコマンドでインストールできます。本シリーズはUbuntu 24.04を対象としていますが、基本的なcurlコマンドの使い方はどのOSでも同じです。各OSでの詳細なインストール方法は、curl公式ドキュメントのインストールガイドも参照してください。

Q3: curl: command not found と表示されてしまいます。

A3: このエラーは、curlがインストールされていないか、インストールされていてもPATHが通っていない場合に発生します。「インストールの確認」セクションを参考に、sudo apt install curlが正しく完了しているかを確認してください。


まとめ:最初の一歩を踏み出そう

今回は、curlの世界への第一歩として、その哲学と基本的な使い方を学びました。

  • curlは「何でもできる」:Web開発におけるスイスアーミーナイフであり、その柔軟性から多くの開発者に愛用されている。
  • インストールは簡単:Ubuntu 24.04では sudo apt install curl で簡単に導入できる。
  • 基本はURLを指定するだけcurl example.com でWebページの内容を取得し、-o オプションでファイルに保存できる。

たったこれだけのことですが、あなたはもうコマンドラインからWebの世界と対話する力を手に入れました。これは非常に大きな一歩です!

今日からできるはじめの一歩として、まずはあなたの好きなWebサイトのURLをcurlに渡して、どんなHTMLが返ってくるか観察してみましょう!

この記事が役に立ったら
ぜひチームに共有したり、X(旧Twitter)で感想をポストしていただけると、執筆の励みになります!あなたの小さなアクションが、日本の開発文化をより良くする大きな一歩になるかもしれません。


本記事をご利用いただくにあたって

この記事は、公開時点(2025年9月)の情報に基づき、正確な情報を提供するよう努めています。
しかし、本記事で解説するソフトウェアやサービスの仕様は日々更新されるため、記事内で紹介している画面や手順が、ご覧いただいている時点では変更されている可能性があります。
もし内容に相違がある場合は、各サービスの最新の公式ドキュメントも併せてご参照ください。本記事の情報を利用される際は、ご自身の判断と責任においてお願いいたします。


SNSでもご購読できます。

コメントを残す

*