このページの本文へ

前へ 1 2 次へ

Windows Info 第234回

Windows 10で標準で用意されるようになったcurlを使ってみる

2020年07月26日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

Windows 10には、マイクロソフトが実装したcurl.exeコマンドが同梱されている。公開されているソースを元に作られた公式のcURLとはバージョンなどが異なっている

 Windows 10には、2018年のWindows 10 Ver.1803(RS3)からcurl.exeコマンドが標準で付属している。curl(カール)は、cURLの意味で、URLを使って指定するプロトコルを実行するコマンドラインツールである(以後記事中ではcURLをオリジナルの表記として使う)。

 curlは1990年代後半に開発が始められ、当初はUnix(SunOS)上で、名前もhttpgetだった。開発が進むとともに、複数のプロトコルをサポートするなどして「cURL」となったのは1998年で、この頃にLinuxにも移植されたようだ。

 Windows 10に付属しているのは、cURLの仕様からMicrosoftが作った独自バージョンのようである。というのもMicrosoft社内には、Windowsに「オープンソースソフトウェア」を載せないというルールがあり、こうしたコマンドやAF_UNIX、9pサーバー/クライアントなどは、すべてMicrosoftが仕様を元に自社内でゼロから作ったプログラムであるようだ。実際、Windows 10に付属のcurl.exeと、オープンソース版cURLのWindows公式配布バイナリではバージョン表記などに違いがある。

 Linuxと同じ使い勝手を必要とするなら、Windows 10付属のcurl.exeは使わずにオープンソース版curlのWindows用64bitバイナリを使えばいいだろう。しかし、簡易な利用ならば、Windows 10付属のcurl.exeでも十分ではある。今回は、Windows 10 Ver.1909に付属しているcurl.exeを使った。

実際にcurl.exeを使ってみる

 Windows 10付属のcURL(以下、curl.exe)は、C:\Windows\System32にあるので、そのまま実行できる。対応しているプロトコルは、バージョン表示で見ることが可能だ。

curl.exe --version

 オリジナルの最新版(ver.7.71.1)のほうが対応プロトコルが多いが、別途open-sslなどのインストールも必要なのに対して、curl.exeは、単体で動作可能な点が違う。使い方は、オンラインヘルプ(curl.exe --help)や公式ドキュメント

●curl - Documentation Overview(英語)
 https://curl.haxx.se/docs/

などを参考にしていただきたい。簡単には、引数にURLを付ければOKで、URLのスキーマ部分(先頭から:までの部分)を見てプロトコルを選択してくれる。たとえば、「https://ascii.jp/」をアクセスしたいなら、

curl.exe https://ascii.jp/

とする(詳細は後述)。

 なお、PowerShell内でcurlを使うのには注意が必要だ。デフォルトで「Invoke-WebRequest」コマンドのエイリアスとしてcurlが設定されている。このため、PowerShell内でcurlコマンドを使うには、フルパスを指定するか、curl.exeと指定する必要がある。

PowerShellはデフォルトAliasでcurlという名前を使っているため、PowerShellから使う場合には、curl.exeと指定する必要がある

 もちろん、cmd.exeで使うなら、こうした問題は起きないが、逆に、PowerShellのほうが、curl.exeのコマンド出力を処理しやすい。cmd.exeなら単純な表示程度にとどまる。まあ、処理の内容次第だが、curlを使ってインターネット側から取得した情報を処理して必要な情報を取り出すなんて場合にはPowerShellが必要だが、単純にサーバーにコマンドを送る、ちょっとした情報を取得するだけなら、cmd.exeでも構わない。

 少し注意したいのは、cmd.exeではコマンドラインの引数にあるスペースなどをエスケープするときに文字列を囲むことができるのはダブルクオートだけで、シングルクオートは普通の文字扱いでそのままコマンドに渡ってしまう点だ(PowerShellはシングルクオートも使える)。curlは、UnixやLinuxでの利用が多いため、インターネットなどで実行例を示すとき、シングルクオートで文字列をくくることが少なくない。しかし、そのままではcmd.exeでエラーになるので注意されたい。

curlでWebページを取得する

 Webサーバー(HTTP)にアクセスするには、以下のようにする。ただし、Windowsのコンソールは標準では日本語文字コードとしてシフトJISを表示するようになっているため、先にコードページをUTF-8に切り替えておく。

Webページの取得。cmd.exeで使うなら事前に「chcp 65001」でコードページをUTF-8に切り替えておくとそのままで表示が可能

chcp 65001
curl.exe -s curl.exe -s https://ascii.jp/serialarticles/839756/ | find "塩田"

 最近では、HTMLにUTF-8を使うところがほとんどなので、これでなんとかなる。cmd.exeの環境では、すべてのコマンドがコードページに応じて動くので、コードページを切り替えるとfind.exeもUTF-8の文字列を検索する 。

 なお、PowerShellを使うと、文字エンコードと表示エンコードの問題があって、結果を表示させるような場合に、ちょっと面倒なことになる。普通にコマンドを使うと表示が化ける。このあたり、いつもPowerShellで「憂鬱」になるところ。内部エンコードと出力エンコード、入力エンコードの問題なので、できれば関わりたくない。

PowerShellから同じことをするのはエンコーディングの関係でちょっと面倒。$OutputEncordingをシフトJISに切り替えておき、curlの出力をnkfでシフトJIS化しておく。これでほぼOKなのだが、一部表示が化けることがある

cmd.exe /c "curl.exe -s https://ascii.jp/serialarticles/839756/ | nkf -W8 -s" | Where-Object { $_ -like "*塩田*" } ;

 PowerShellでは、exeコマンドからはシフトJISで来ることを期待している。このため、curl.exeの出力(UTF-8)をnkfシフトJIS化する。ところが、PowerShellのパイプは、exeコマンドの出力はシフトJISと仮定して動作するようなので、cmd.exe側でnkfコマンドを使い、シフトJISを出力するようにした。

 そのためにnkf.exe(nkfコマンド)を使っている。nkfは文字コード変換などが可能なオープンソースのコマンドラインツールである。古いものだが、文字コードの変換やメールで利用するMIMEのquoted-printableやbase64のエンコード、デコードなどに対応していて、現在でもWindowsのコマンドラインで使うには十分な機能を持っているため、入れておくと重宝する。

●ソースコードなど
 パッケージ nkf - nkf Network Kanji Filter - OSDN
 https://ja.osdn.net/projects/nkf/releases/p533
 バイナリダウンロード
 nkf.exe nkf32.dll Windows用の詳細情報 : Vector
https://www.vector.co.jp/soft/win95/util/se295331.html

 PowerShellを使うならaliasに設定されているInvoke-WebRequestを使うほうが素直に動くが、cURLとは引数形式などがまったく違う。インターネット検索で探せば、さまざまな例が見つかるcURLに比べると情報量が違うのが問題だ。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,890
2
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥740
3
CIO フラットスパイラルケーブル CtoC 1m (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps (ライトブラック, 1m)
CIO フラットスパイラルケーブル CtoC 1m (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps (ライトブラック, 1m)
¥1,980
4
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
¥2,111
5
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
6
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
¥7,040
7
Verbatim バーベイタム 1回録画用 ブルーレイディスク BD-R 25GB 50枚+3枚増量パック インクジェットプリンタ対応 ホワイト 片面1層 1-6倍速
Verbatim バーベイタム 1回録画用 ブルーレイディスク BD-R 25GB 50枚+3枚増量パック インクジェットプリンタ対応 ホワイト 片面1層 1-6倍速
¥2,480
8
UGREEN USB Type Cケーブル PD対応 100W/5A 超急速充電 USB C ナイロン編み 断線防止 iphone17/16/15シリーズ/iPad/MacBook Pro/Galaxy S24/Matebook/iPad/Xperia等USB-C各種対応(1m, ブラック)
UGREEN USB Type Cケーブル PD対応 100W/5A 超急速充電 USB C ナイロン編み 断線防止 iphone17/16/15シリーズ/iPad/MacBook Pro/Galaxy S24/Matebook/iPad/Xperia等USB-C各種対応(1m, ブラック)
¥1,299
9
Amazon Kindle - 目に優しい、かさばらない、大きな画面で読みやすい、6週間持続バッテリー、6インチディスプレイ電子書籍リーダー、ブラック、16GB、広告なし
Amazon Kindle - 目に優しい、かさばらない、大きな画面で読みやすい、6週間持続バッテリー、6インチディスプレイ電子書籍リーダー、ブラック、16GB、広告なし
¥19,980
10
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥980

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン