マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】Curl

【OSS情報アーカイブ】Curl

※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。

「Curl」とは

「Curl」基本情報

■概要

Curl(カール)とは、URLを使用してデータ転送するためのコマンドラインツールです。ライブラリ「libCurl」をベースとして動作します。多くのプロトコルに対応して、さまざまなソフトウェアのデータ転送バックボーンとして利用されています。

■基本説明

Curlはインターネットプロトコルを使用してURLとして指定されたリソースのインターネット転送を行うツールです。

「Curlコマンドラインツール」と転送ライブラリ「libcurl」により転送機能を提供しています。

何千ものソフトウェアアプリケーションのインターネット転送バックボーンとして利用されています。

■主要開発元

Curlプロジェクトは「インターネットプロトコルで信頼性のあるデータ転送を行う」という共通の使命により、何千もの貢献者およびスポンサーによって支えられています。

→Curl →Thanks for Your Contribution to the curl Project!

→Curl →Sponsors

■経緯

Curlプロジェクトでは、1998年3月20日をCurlの誕生日としています。

以前は「cURL」という名称でしたが「Curl」に変更されています。

プログラミング言語「Curl」

転送ツール「Curl」の登場後に、プログラミング言語「Curl」が登場しています。

「Curl」という名称がどちらを指しているのか注意が必要となる場合があります。

→プログラム言語「curl.com」

■オフィシャルサイト情報

オフィシャルサイト

→Curl

ライセンス情報

Curlのライセンスは「The curl license」です。

詳細について、こちらを参照ください。
→Curl →Copyright – License
→Curl →License Mixing

動作環境

Curlコマンドラインツールとして「Windows」「Linux」「macOS」用のバイナリが提供されています。

ダウンロード

→Curl →Releases and Downloads

■同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「GNU Wget」など。

「Curl」のユースケース

Curlは、膨大な数のソフトウェアに組み込まれて利用されており、結果として、毎日何百万ものエンドユーザーが利用しています。

■組み込み用途

Curlは、インターネットの転送が必要とされるあらゆる種類の組み込み機器で使用されています。

映像オーディオデバイス

・テレビ
・オーディオ機器
・セットトップボックス
・メディアプレーヤー
・ブルーレイプレーヤー

ITデバイス

・ルータ
・プリンタ

モバイルデバイス

・スマートフォン
・タブレット

その他

・ゲームシステム
・自動車

■開発用途

Curlは、シェルやバッチスクリプトで、世界中のプログラマーによって広く使用されています。

・サーバのデバッグやテスト
・プロトコル変更
・新プロトコル開発

■PHPWebサイトのバックエンド

PHP用のlibcurlバインディングは、PHPユーザーがデータを転送するためのデフォルトの方法として採用されており、多くのPHPWebサイトにおいてバックエンド機能として利用されています。

FacebookやYahooのWebサイトも利用実績があるとのことです。

「Curl」の主な特徴

「Curl」の主な特徴

■コマンドラインツール

Curlはコマンドラインツールとして、スクリプトやその他の自動手段から機能するように設計されています。テキストインおよびテキストアウト以外の他のGUIまたはUIでは機能しません。

Curlは信頼できるコマンドラインツールの1つとしての地位を確立しています。

バイナリ実行可能ファイル

コマンドラインツール「Curl」はバイナリ実行可能ファイルです。

バイナリファイルはシステム固有であるため、プラットフォームごとに用意されます。

■コマンドラインオプション

Curlには200を超えるコマンドラインオプションが用意されています。

オプション数は時間の経過とともに増え続けています。

→Curl →Docs →Tool Documentation →Man Page

■ライブラリ「libCurl」ベース

コマンドラインツール「Curl」は、ライブラリ「libCurl」が提供する安定したAPIによって動作します。

■セキュリティ

セキュリティに対するスタンス

Curlプロジェクtにおいて、セキュリティは重要な関心事項としています。

プロジェクトでは、ユーザーを危険にさらさないために、セキュリティの重要性について真剣に捉えています。

すべてのプロトコルと関連コードの安全な実装を提供するために最善を尽くして取り組んでいます。

セキュリティリリース

Curlプロジェクトでは、セキュリティ関連問題(疑わしい問題)に関する情報が得られ次第対処し、次の保留中のリリースまでに修正とセキュリティの通知を提供するよう努めています。

開示ポリシー

Curlプロジェクトでは、セキュリティ問題について責任ある開示ポリシーを使用します。

■開発ロードマップ

Curlプロジェクトではロードマップを設定して開発を進めています。

ロードマップは、フィードバックおよび開発参加者のためのガイドラインとして役立つことを意図しています。

「HTTP/3対応」や「パラレル転送機能」などがリストされていますが、バグ修正や新機能開発などは、開発者に大きく依存しています。

→Curl →Development →Roadmap

「Curl」の主な機能

「Curl」の主な機能

■パイプ機能

Curlは、UNIXの「catコマンド」のように、「すべてパイプである」というスタイルで設計されています。

「他のツールとの連携を容易にするためにデータを標準出力に送る」というのが、標準出力または標準入力を利用する理由です。

ほぼすべてのCurlコマンドラインオプションでは、「ファイルからの読み取り」または「ファイルへの書き込み」を可能としています。

■接続プール機能

Curlは、確立されたホストへの接続を再利用できるように、以前に使用された接続を存続させる接続プールを有しています。

Curlコマンドラインツールが動作している間は、接続プール内の情報を再利用できます。

■データ圧縮機能

Curlは、HTTP(HTTPS)サーバからデータの圧縮バージョンを送信してもらうと、データ受け取り時にデータの自動解凍を実行できます。

帯域幅が制限されている環境では、短時間でより多くのデータを受信できます。

「Curl」のライブラリ「libCurl」

「Curl」のライブラリ「libCurl」

■概要

「libcurl」はCurlコマンドラインツールのエンジンとして機能するライブラリです。

ライブラリ「libcurl」は、「プラットフォーム」「アーキテクチャ」「目的」を問わず、クライアントサイドのファイル転送機能を自分のソフトウェアに追加したい開発者のために設計され、自由に使えるように提供されています。

ライブラリ「libcurl」を利用すると、素早く簡単にアプリケーションにクライアントサイドのファイル転送機能を搭載できるため、何千もの「ツール」「サービス」「アプリケーション」などのデータ転送エンジンとして利用されています。

■C言語API

「libcurl」はC言語で書かれたアプリケーション用に「C API」で提供される関数のライブラリです。

「C++」からも簡単に使用できます

■転送指向

「libcurl」は転送指向となるように設計されています。

開発者は全員プロトコル専門家ではないため、ネットワーキングや関連するプロトコルについて詳細には把握していない場合が多々あります。

開発者が転送に関する具体的な情報を間違いなく「libcurl」に指示すれば、転送が実行されます。

■非依存性

「libcurl」は必要とする依存関係がほぼないため、組み込みシステムでも利用しやすい強みがあります。

■移植性

「libcurl」は移植性に優れているため、多種多様なプラットフォームで利用できます。

■バインディング

「libcurl」には多くのプログラミング言語用バインディングが用意されています。

これらのいずれかを使用することで、使用している言語もしくはシステム内からCurl機能を利用できます。

→Everything curl →Bindings

「Curl」のサポートプロトコル

「Curl」のサポートプロトコル

■概要

Curlは、一方向または双方向の「データ転送」を許可するアプリケーションプロトコルをサポートしています。

Curlは約22のプロトコルをサポートしています。

→Everything curl →The protocols curl supports

■サポートプロトコル

DICT

「DICT」は辞書ネットワークプロトコルで、辞書サーバに問い合わせできます。

FILE

「FILE」は実際にはネットワークプロトコルではなく、ローカルファイルシステムからファイル取得を可能とするURLスキームです。

FTP

「FTP」はクライアントとサーバ間でファイルをやり取りするためのプロトコルです。

FTPS

「FTPS」は「FTP」にSSL/TLSセキュリティ層を追加したプロトコルです。

Gopher

「Gopher」は「HTTP」の祖父とも呼べるプロトコルです。

HTTP

「HTTP」はWeb上およびインターネット上でデータを転送するために最も広く使用されているプロトコルです。

HTTPS

「HTTPS」は、SSL/TLS接続を介して行われる「HTTP」です。

IMAP

「IMAP」は電子メールにアクセスし、制御し、そして「読む」ためのプロトコルです。

IMAPS

「IMAPS」はSSL/TLS接続を介して行われる「IMAP」です。

LDAP

「LDAP」は分散ディレクトリ情報にアクセスして管理するためのプロトコルです。

LDAPS

「LDAPS」は、SSL/TLS接続を介して行われる「LDAP」です。

POP3

「POP3」はサーバからEメールを取り出すためのプロトコルです。

POP3S

「POP3S」はSSL/TLS接続を介して行われる「POP3」です。

RTMP

「RTMP」は「オーディオ」「ビデオ」「データ」をストリーミングするためのプロトコルです。

RTSP

「RTSP」はストリーミングメディアサーバを制御するためのプロトコルです。

SCP

「SCP」はリモートSSHサーバとの間でファイルをコピーするためのプロトコルです。

SFTP

「SFTP」はSSHファイル転送プロトコルです。

SMB

「SMB」は「ファイル」「プリンタ」「シリアルポート」用のアプリケーション層ネットワークプロトコルです。

SMTP

「SMTP」は電子メール送信用のプロトコルです。

SMTPS

「SMTPS」はSSL/TLS接続を介する「SMTP」です。

TELNET

「TELNET」は、仮想端末接続を使用して双方向の対話型テキスト指向通信機能を提供するアプリケーション層プロトコルです。

TFTP

「TFTP」はリモートホストとの間でファイルを送受信するためのプロトコルです。

 

参考元サイト

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

この記事のタグ一覧

おすすめの記事

【IT用語解説】「 デジタルヒューマン 」とは😊

IT用語解説

2024.01.26

【IT用語解説】「 デジタルヒューマン 」とは😊

【IT用語解説】「 デジタルヒューマン 」として、「デジタルヒューマンとは何か?」「どのようにして作成できるのか?」「私たちの世界にどのような影響を与えているのか?」などについて、まとめています。

【トレンド解説】超入門「 スマートファクトリー 」🏭

トレンド解説

2024.04.15

【トレンド解説】超入門「 スマートファクトリー 」🏭

「 スマートファクトリー 」への理解を深めるための解説として、初心者向けにわかりやすくまとめた記事です。「新しい工場の概念」「デジタルツインの活用」「IoT技術による最適化」など、現代の製造業に必要な知識を効果的に学べます。 スマートファクトリー の導入によるメリットを具体的に解説しています。