概要
POCOは、Javaクラスライブラリ、.NET Framework、AppleのCocoaなど、他の開発環境と同様のライブラリサポートをユーザーに提供するC++ライブラリ群です。POCOはネットワーク中心のアプリケーション領域に特化しており、最新のANSI/ISO標準C++およびC++標準ライブラリの機能と技術を用いて開発されています。強力な機能性、使いやすさ、一貫性を重視しています。コード品質、一貫したスタイル、単体テストを主軸とするPOCOは、高い移植性を持ち、既に様々なプラットフォームに移植されています。
POCOはBoostの代替ではなく、BoostやC++標準ライブラリと補完的に使用できると説明しており、「Boostに関しては、機能的に重複する部分があるものの、POCOは(代替ではなく)Boostの補完と考えるのが最適である。BoostとPOCOを並行して使用することは非常に一般的である」と述べている。[ 3 ]
図書館
多くの目標設定における設計目標の一つは、POCO C++がすぐに使える使いやすいコンポーネントライブラリを提供することに基づいている。2017年現在ライブラリは、基本版と完全版の 2 つのパッケージ形式で提供されています。完全版には、NetSSL、Crypto、Zip、データ機能などが含まれています。基本版にはこれらの機能は含まれていないため、OpenSSL、ODBC、MySQL などの外部機能への依存がなくなります。名前空間とモジュール名はどちらも ですPoco。
オープンソースであることは、ライブラリ機能のさらなる開発を可能にし、促進します。既存および今後のライブラリサポートの設計と開発は、ユーザーベースの実用的なニーズに基づいて行われます。ライブラリへの追加はサンドボックス開発環境で行われ、コア開発チームによる承認と貢献者からの意見に基づいてレビューされ、メインライブラリのリリースに統合されます。
POCO は、独自の「POCO PRO C++ Frameworks」ライブラリも提供しており、Web サービス フレームワーク、Web アプリケーション サーバーを備えたオープン サービス プラットフォーム、OAuthとワンタイム パスワードによる認証、データ ポイント API とJavaScriptエンジンによる IoT エッジ コンピューティング、リモート アクセス ( HTTP、Secure Shell (SSH)、Secure Copy Protocol (SCP)、SSH ファイル転送プロトコル(SFTP)) 、 macchina.ioを介したリモート デスクトップなどを提供しています。[ 4 ]無料で使用できますが、ホーム ディレクトリにライセンス ファイル ( poco.license ) を配置する必要があります。このファイルは POCO プロジェクトの Web サイトから入手できます (ソース コード ライセンスを購入すると、ライセンス ファイルは必要ありません)。[ 5 ]
ライブラリ階層
2025年現在POCO C++ ライブラリは、5 つのコアライブラリに分割されており、各リリースでオプションのアドオンライブラリが利用可能です。Java標準ライブラリや.NET 標準ライブラリに似せて設計されています。その設計と階層構造は、よく設計されていると考える一部の人々から賞賛されています。[ 6 ] [ 7 ]
コンポーネントライブラリは、完全版に含まれる以下の分野を網羅しています。
ファウンデーション(ポコ)
- プラットフォームの抽象化 – 基本型などの移植に関する問題を軽減します。
- メモリ管理 –リソース取得は初期化(RAII)、スマートポインタ、参照カウントガベージコレクションなど。
- 文字列ユーティリティ
- エラー処理 – 拡張例外クラス
- ストリーム– エンコード、デコード、フィルタリングのサポート
- スレッド– 並行処理のサポート
- 日付と時刻 – 日付と時刻のサポート(書式設定および高精度タイマーを含む)
- ファイルシステム– 抽象化されたファイルシステムのサポート
- ロギング – アプリケーションおよびシステムのロギング、フィルタリング、ロギング戦略
- プロセス – プロセス間通信とメモリ共有
- 共有ライブラリ– 動的ライブラリのサポート
- 通知 – 抽象化された通知サポート
- イベント – 抽象化されたイベントサポートと戦略
- テキスト – Unicodeエンコーディングのサポート
- 正規表現– Perl互換の正規表現に基づく
- URI(ユニバーサルリソース識別子)のサポート
- UUID(Universally Unique Identifier)のサポートと生成
- キャッシュサポート – 抽象化された戦略のサポート
アクティブレコード(Poco::ActiveRecord)
C++ パーサー ( Poco::CppParser )
JSON ( Poco::JSON )
- JSON(JavaScript Object Notation)データ形式の読み書きを行うためのAPI
MongoDB ( Poco::MongoDB )
PDF ( Poco::PDF )
- PDF(Portable Document Format)ファイル形式を解析および操作するためのAPI
プロメテウス ( Poco::Prometheus )
Redis ( Poco::Redis )
- Redis(リモート辞書サーバー)ソフトウェアと連携するためのAPI
7-Zip ( Poco::SevenZip )
- 7-Zipファイルアーカイブソフトウェアとのやり取りおよび操作のためのAPI
リリース履歴
POCOは2004年の設立と2005年の発売以来、長いアップデートの歴史を辿ってきた。[ 8 ]
- 2004年 – ギュンター・オビルシュニッヒは、ネットワーク中心のプログラミング向けにC++クラスライブラリで利用可能なものに不満を感じ、クラスライブラリの開発からPOCOを始めた。
- 2005年2月21日 – SourceForgeでSleepycatライセンスの下で公開された最初のリリースには、FoundationライブラリとXMLサポートライブラリが含まれていました。
- 2005年5月 – アレクサンダル・ファビヤニッチが最初の投稿を行った。
- 2006年1月19日 – POCO 1.0がリリースされました。これにはNetライブラリが含まれています。
- 2006年7月 – POCOはBoostライセンスの下で再ライセンスを取得しました。
- 2006年8月 – POCO 1.2がリリースされ、ライブラリの名前空間が分割されました。
- 2007 年 5 月 – POCO 1.3 がリリースされ、データライブラリ
HashMapとHashSetサポートが追加されました。 - 2010年12月 – 多くの改良を含むPOCO 1.4がリリースされました。
- 2012年10月 – POCO 1.5がリリースされ、JSONライブラリとCMakeのサポートが追加されました。
- 2014年12月 – POCO 1.6がリリースされました。これにはJSONおよびMongoDBライブラリ、その他多くの改良が含まれています。
- 2016年3月 – 多くの改良を含むPOCO 1.7がリリースされました。
- 2017年11月 – POCO 1.8がリリースされ、UnixドメインソケットとXMLストリームパーサー、およびZip64のサポートが導入されました。Redisライブラリも追加されました。
- 2018年3月 – POCO 1.9がリリースされました。これには、国際化ドメイン名のサポートや、サポートされるテキストエンコーディングの追加が含まれています。
- 2020年1月 – POCO 1.10がリリースされ、最小バージョンがC++14に変更され、JSON Webトークンライブラリが追加され、生ポインタからスマートポインタに移行されました。
- 2021年6月 – POCO 1.11がリリースされ、アクティブレコードパターンフレームワークが導入されました。
- 2022年7月 – POCO 1.12がリリースされ、Prometheusライブラリが導入されました。
- 2023年12月 – POCO 1.13がリリースされ、最小バージョンがC++17に変更され、SQLパーサーのサポートが導入されました。
- 2024年12月 – POCO 1.14がリリースされ、いくつかの古い機能が非推奨となり、バージョン6および7のUUIDのサポートが追加されました。
- 2026年2月 – POCO 1.15がリリースされ、リアクターベースのHTTPサーバー、MongoDBレプリカセットのサポート、C++モジュール、ULID(普遍的に一意な辞書式ソート可能な識別子)のサポート、最小バージョンをC++20に移行しました。
参考文献
- ↑ 2005年2月21日: SourceForgeでの最初の公開リリースはSleepycatライセンスの下で、FoundationとXMLサポートライブラリが含まれていました。
- ↑ "リリース - pocoproject/poco" . 2026-07-11に取得。
- ↑ "README.md" . pocoproject.org. 2024年10月16日。
- ↑ "POCOpro C++ Frameworks" . pocoproject.org . POCO Project . 2025年10月17日取得.
- ↑ Applied Informatics (2018). "Applied Informatics POCO PRO C++ Frameworks 入門ガイド" (PDF) . appinf.com . Applied Informatics.
- ↑ 「POCOがうまく実装され、設計されている理由とは?」 2009年9月24日。
- ↑ Merkle, Bernhard. Stop the Software Architecture Erosion (PDF) . ACCU 2009 . 2024年7月12日取得.
- ↑ "POCO C++ ライブラリの変更履歴" . raw.githubusercontent.com . POCO プロジェクト。2025 年 5 月 12 日。
- ↑ "トピックを表示 - 既知の POCO C++ ライブラリ ユーザーのリスト| POCO C++ ライブラリ フォーラム"。2013年 8 月 26 日にオリジナルからアーカイブされました。2011年 2 月 1 日に取得。
- ↑ POCOプロジェクト。「POCO C++ライブラリ - 概要」。pocoproject.org 。 2026年1月10日取得。