CurlはコマンドラインからHTTPリクエストを実行できるライブラリです。MacとWindowsでCurlを利用する基本の書き方はほぼ一緒ですが、WindowsとMacでのコマンドラインの仕様が完全に一緒ではないので、CURLのコードも少し違いがあります。また、CURLのWindowsとMacバージョンでは、インストール方法、URLスキーマにも違いがありますので、本文では、WindowsとMac上のCURLの違いを徹底的に探りたいと思います。

Curlとは
CURLとは、コマンドラインからHTTPリクエストを送信するためのオープンソースのライブラリやツールのことです。CURLはAPIテストにおいて重要なツールとして広く利用されています。Curlは、主に次のことを実現できます:
- さまざまなプロトコル(HTTP、HTTPS、FTP、SMTP等)に対応している
- GETやPOSTなどのリクエストメソッドを簡単に指定できる
- ヘッダーやリクエストボディのカスタマイズが簡単
- SSL/TLSによる暗号化通信に対応
- プロキシ経由の通信に対応
- リダイレクト、認証、Cookieの処理に対応
- レスポンスのヘッダやボディを表示できる
WindowsとMacのCURLの違い
それでは、同じCURLですが、WindowsとMacでのメカニズムなどが完全に一緒ですか?完全に一緒ではない場合、どこかが違っていますか?この部分では、WindowsとMacデバイスでCURLの違いを皆さんに紹介したいと思います。
インストール方法が違う
Curlのインストール方法は、WindowsとMacで随分違っています。Windows搭載のパソコンを利用している場合は、次のステップを参照して、CURLをインストールしてください。
Windowsの場合
Windowsパソコンなら、Curlのインストールファイルをダウンロードしてインストールします。
- https://curl.se/download.html からWindows用のcurl実行ファイルをダウンロード
- ダウンロードしたzipファイルを展開
- 展開したフォルダ内のcurl.exeをコピー
- コピーしたcurl.exeへのパスを環境変数PATHに追加

Macの場合
Windowsとは異なり、Macパソコンでは、Homebrewを通じてインストールする必要があります。
ステップ⒈ターミナルを開き、次のコマンドラインを入力します:
$ brew install curl

ステップ⒉ここでCurlが自動的にインストールされ、インストールに成功したかどうかを確認するには、次のコマンドを使用してください:
$ curl --version

CURLが成功にインストールされると、CURLのバージョン号が返されます。
SSL証明書の検証が違う
- Windows: デフォルトで検証しない
- Mac: デフォルトで検証する
デフォルトのURLスキーマが違う
- Windows: httpsでない場合に警告する
- Mac: httpとhttpsのどちらでも警告しない
CURLの書き方が違う
CURLのコマンド自体やオプションの使い方はWindowsとMacで基本的に同じです。例えば以下のようなリクエスト送信の例は、WindowsでもMacでも同様に動作します。
// GETリクエスト送信
curl https://example.com
// POSTデータ送信
curl -d 'name=John' https://example.com
// 特定のヘッダーを送信
curl -H 'Content-Type: application/json' https://example.com
// 出力をファイルにリダイレクト
curl https://example.com > response.txt
このように、CURL自体のコードや構文に関してはOSに依存しません。しかし、次のCURL実装コードをご覧ください。実行結果としては完全に同じ動作をしてに、MacとWindowsの記載方式は見た目は異なります。
Mac:
curl --location --request GET 'http://example.com' \
--header 'User-Agent: Apidog'
Windows:
curl --location --request GET "http://example.com" ^
--header "User-Agent: Apidog"
この2つは同じ処理をしていて、文字列の区切り文字が\とだけ違うという形式的な差異です。Macは\で行継続、Windowsはで行継続を表現していますが、これはOS標準の文字列処理の違いに基づいています。結果的には完全に等価なコードとなり、Curlの動作やオプション指定の意味合いはまったく同じです。
OSごとの行継続記法の違いに留意しつつ、同じCurlコマンドが実行できることを確認できたと思います。
Apidog:CURLに完全互換できるAPI管理ツール
Apidogは完全に日本語化されたAPI管理ツールとして、APIの設計、仕様書生成、テスト自動化などのことも実現できます。1クリックだけで、CURLリクエストを簡単にApidogにインポートして利用できますし、Apidogに保存しているAPIをもCURLに逆生成することもできますので、非常に便利なツールです。
Apidogを開き、左上にある「+」ボタンにガーソルを置き、「cURLをインポート」から、CURLからAPIを簡単にApidogをインポートできます。そして、APIドキュメントを生成したり、より簡単で直感的にテストしたりすることができるようになります。

既存のAPI仕様からCURLをも自動生成
API仕様がすでに定義された場合、Apidogのコード生成機能を使って、それを直接にCURLに変換することができます。また、CURLだけではなく、Axios、Fetch、JQueryなどの主流のクライアントコードを生成することもできます。クライアントコードにも留まらず、Apidogは、既存のAPI仕様から直接にExpress、Springなどのサーバーサイドコードを即生成することもできるので、開発者にとって非常に便利なツールになると思います。

まとめ
CURLは汎用のコマンドラインHTTPクライアントで、WindowsとMac全てに対応しています。コードの書き方や基本操作に大きな違いはありません。一方で、設定方法や細かな仕様の違いが存在します。
ApidogならGUI操作だけで直感的にCURLをインポートしてAPIの定義ができます。逆に既存APIからCURLコマンドを生成することも可能です。プラットフォームを意識することなくCURLベースのAPIを扱えることが大きなメリットです。Windows、Mac、LinuxでもシームレスにAPI開発できる環境をApidogが実現してくれるといえます。