Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

5分で使えるLoggingフレームワーク - POCO::Foundation -

オープンソースC++用クラスライブラリPOCO活用講座(2)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2007/12/05 14:00

POCO(C++ Portable Componentsの略)というオープンソースのC++用クラスライブラリの中で、今回はPOCO::Foundationライブラリを取り上げます。名前の通り基本機能を集めたライブラリで、特に実用度の高いLoggingパッケージを中心に解説します。

目次

はじめに

 本記事ではPOCO(C++ Portable Componentsの略)というオープンソースのC++用クラスライブラリを紹介します。

 POCOに関する概要とその導入方法については、別稿『POCO::Netライブラリによる組み込みWebサーバの実装』を参照してください。POCOはコンポーネントとして6つのライブラリに分かれていますので、今回からは、ライブラリ単位で順番に紹介したいと思います。まずは、POCO::Foundationライブラリをとりあげます。名前の通り基本機能を集めたライブラリで、実際のアプリケーション開発にそのままでも使えるクラスが揃っています。

対象読者

 オブジェクト指向を理解し、C++のクラスライブラリを活用できる方を対象としています。

必要な環境

 POCOは、多様なプラットフォームで動作可能で、Windows、Mac OS X、Linux、HP-UX、Tru64、Solaris、QNXでの動作を保証しています。コンパイラは、いわゆる標準C++のコードに対応したものが必要です。POCO内部では、STLを使用しています。

 本記事では、Windows XP上で、Microsoft Visual C++ 2005 Express Edition(以下、VC 2005 Express)+Windows Platform SDKという環境で、動作検証を行いました。

パッケージとは

 POCOのライブラリは、内部のクラスをパッケージと呼ばれる単位に分類しています。機能単位にグループ分けしたもので、JAVA言語にあるパッケージという概念と似たようなものです。ただし、JAVA言語のような物理的なパス名にはなっていません。あくまでも論理的にクラスをまとめたものです(一部、ライブラリをまたがっているパッケージもあります)。

 POCO::Foundationは、ヘッダファイルだけでも270あり、POCOの中でいちばん大きなライブラリになっています。パッケージは、ライブラリ中に18個含まれています。次表にまとめてみました。

POCO::Foundationに含まれるパッケージ
名称概要
core最も基本的な機能を提供するクラス。例外処理、メモリ管理、文字列処理など。
Cacheキャッシュ機能の実装。
CryptMD5やSHA1アルゴリズム等による暗号処理の実装。
DataTime日付時刻処理。日付書式やタイマー機能の実装。
Eventsイベント通知処理の実装。
Filesystemファイル、ディレクトリ処理の実装。
Hashingハッシュ表の実装など。
Loggingログ書き込み処理の実装。
Notifications通知機能。Observerパターンの実装。
Processesプロセス関連、パイプ、イベント処理の実装。
Regular Expressions正規表現によるマッチング処理の実装。
Shared Librariesクラスを動的に読み込む処理の実装。
Streamsストリーム関連の実装など。
Tasks実行状況通知、キャンセル機能をもつ作業クラスの実装。
Text文字列処理、コード変換の実装。
Threadingスレッド関連処理の実装。
URIURI処理の実装。
UUIDUUID生成処理の実装。

 パッケージそれぞれが、とても興味深い実装になっています。ソース自体は、比較的読みやすく、ヘッダーに比べるとコメントは少なめながら、クラスの実装方法を学ぶにはちょうどよい教材だと思います。

 ひとつずつパッケージを紹介したいところですが、紙面に限りがあります。今回は、特に実用度の高いLoggingパッケージを中心に解説することにしましょう。

Loggingパッケージ

 ログ処理は、ほとんどのアプリケーションで必要になる機能と言えます。たいていは一般的な仕様で間にあいますので、すでに何らかのライブラリを使っている方も多いでしょう。

 JAVA言語なら、Log4JというJakartaプロジェクトで開発されているオープンソース のLoggingライブラリがおなじみです。一方、ネイティブのC++言語では、デファクトスタンダードとなるようなものはありません。Log4JをC++言語で実装したバージョンも公開されているものの、それほど普及していないようです。

 POCOのLoggingパッケージは、Log4Jに負けず劣らず、使いでのある機能を持っています。ログファイルのローテーションやバックアップはもちろん、Windowsのイベントログへの出力もできます。設計の面でも、オブジェクト指向的によく考えられており、洗練されたものになっています。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 高江 賢(タカエ ケン)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2012年2月時点での登録メンバは37名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:オープンソースC++用クラスライブラリPOCO活用講座
All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5