
「ドキュメント通りに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
とは?- Ubuntu 24.04への
curl
インストール - curlの基本的な使い方:GETリクエストでWebページを取得する
curl
のアップデートとアンインストール- よくある質問(FAQ)
- まとめ:最初の一歩を踏み出そう
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 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]-o
はoutput
の略です。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月)の情報に基づき、正確な情報を提供するよう努めています。
しかし、本記事で解説するソフトウェアやサービスの仕様は日々更新されるため、記事内で紹介している画面や手順が、ご覧いただいている時点では変更されている可能性があります。
もし内容に相違がある場合は、各サービスの最新の公式ドキュメントも併せてご参照ください。本記事の情報を利用される際は、ご自身の判断と責任においてお願いいたします。