POCO C++ Libraries

POCO C++ Libraries は、C++のネットワーク対応でポータブルなオープンソース・クラスライブラリのコレクション。 POCOは、POrtable COmponentsの略である。ライブラリは、スレッド、スレッドの同期、ファイルシステムへのアクセス、ストリーム、共有ライブラリとクラスのロード、ソケットとネットワークプロトコル（HTTP、FTP、SMTPなど）などの機能をカバーし、HTTPサーバや、SAX2とDOMインタフェースを含む XMLパーサ、SQLデータベースなどを含む。モジュラーかつ効率的な設計および実装は、組み込みシステム開発に適したライブラリである。

概要
POCO は、Javaクラスライブラリ、.NET Frameworkの基本クラスライブラリ、AppleのCocoaのような他の開発環境に似たライブラリをユーザーに提供す C++ライブラリのコレクション。 POCOは、ネットワーク中心のアプリケーションドメインを中心に、近代的なANSI / ISO標準に準拠して開発されたC++とC++標準ライブラリの元に、強力な機能、使いやすさ、一貫性に重点を置いている。コードの品質に重点を置いて管理され、一貫したスタイルとユニット·テストによって、POCOはこれまでに異なる様々なプラットフォームに移植された、移植性の高いオープンソースのソフトウェアで、Boost Software Licenseの下でリリースされている。

POCO C++ライブラリの階層
POCO C++ライブラリは、現在、各リリースで利用可能な4つのコアライブラリとオプションのアドオンライブラリに分割される。POCO C++の設計と階層はうまく設計されたと見なされているhttps://cppdepend.wordpress.com/2009/09/24/why-poco-is-well-implemented-and-designed/https://accu.org/content/conf2009/ACCU2009_Bernhard_Merkle_StopTheSoftwareArchitectureErosion.pdf。Basic Editionでは、4つのコア·コンポーネント·ライブラリを扱っている。

Foundation
プラットフォームの抽象化 - 基本的な型の移植性の問題を容易にするなど
メモリ管理 - RAII (SharedPtr)、AutoPtr、参照カウント、ガベージコレクションなど
文字列ユーティリティ
エラー処理 - 例外クラスの拡張
ストリーム - エンコードとデコードおよびフィルタリングのサポート
スレッド - 並行処理のサポート
日付と時刻 - フォーマットと高精度のタイマーを含む日付と時刻のサポート
ファイルシステム - ファイルシステムのサポートを抽象化
ロギング - アプリケーションとシステムのログ、フィルタリング、ロギング戦略
プロセス - プロセス間通信とメモリ共有
共有ライブラリ - 動的ライブラリのサポート
通知 - 通知のサポートを抽象化
イベント - イベントのサポートや戦略を抽象化
暗号 - 乱数の生成、ダイジェスト（暗号学的ハッシュ関数）と暗号化/復号エンジン
テキスト - Unicodeエンコーディングのサポート
正規表現 - Perl互換の正規表現に基づいて
URI - ユニバーサルリソース識別子のサポート
UUID - 汎用一意識別子のサポートとジェネレータ
キャッシュのサポート - 戦略の抽象化
Net
 - 低レベルのネットワークサポートを抽象化
リアクターパターン - 一般的なネットワーク抽象化パターンのサポート
MIMEメッセージ - エンコードのサポート
HTTP - クライアントとサーバの高レベルのHTTPサポート
FTP - 高レベルのFTPサポート
メール - POP3、SMTPストリームベースのサポート
HTML - フォームのサポート 
XML
SAX2
DOM
XMLライター 
Util
コンフィギュレーション·ファイル
コマンドラインオプション
ツールやサーバーのアプリケーション·フレームワーク 

POCO に関しての多くの標的決定の一つの設計目標は、箱から出してすぐに動作する簡単に使えるコンポーネントライブラリを提供することにある。POCO C++ライブラリには、Basic EditionとComplete Editionという2つのパッケージ形式で現在利用可能。Complete Edition はNetSSL、暗号化、Zip、Dataをカバーする。Basic Editionは含まないので、OpenSSL、ODBC、MySQLなどの外部ライブラリへの依存を排除する。

歴史
2004年 - Günter Obiltschnigが、ネットワーク中心のプログラミングのための C++クラスライブラリで提供されていたものに不満を持っていた結果としてのクラスライブラリの開発が開始した。
2005年2月21日 - 最初の公開リリース (0.91.1)。SourceForge.netで公開。FoundationとXML ライブラリが含まれていた。 POCOは、Sleepycatライセンスでリリースされた。
2005年5月 - Aleksandar Fabijanicが、最初の貢献をした
2006年1月19日 - POCO 1.0はNetライブラリを含めて、リリースされた
2006年3月23日 - POCO 1.1リリース
2006年7月 - POCOは Boostライセンスの下で再ライセンスされた
2006年8月29日 - POCO 1.2リリース
2007年5月7日 - Data ライブラリを含む1.3がリリースされた
2010年12月14日 - POCO 1.4リリース
2012年10月14日 - POCO 1.5リリース
2014年12月22日 - POCO 1.6リリース
2016年3月7日 - POCO 1.7リリース
2017年11月10日 - POCO 1.8リリース
2018年3月7日 - POCO 1.9リリース

参照

外部リンク
 POCO 公式サイト
 POCO 公式ドキュメンテーション
 POCO SourceForge プロジェクトサイト
 ソースコード
 なぜ POCO は上手に設計・実装されているのか？
 Aleksandar Fabijanic, Dynamic Any, Part 1, ACCU Overload 86 (August 2008)
 Aleksandar Fabijanic, Dynamic Any, Part 2, ACCU Overload 87 (October 2008)
 CodeGuru Interview - Bjarne StroustrupがPOCOについて言及
 POCO Fanatic

Category:ライブラリ (プログラミング)
Category:C++
Category:オープンソースソフトウェア