SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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

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

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のイベントログへの出力もできます。設計の面でも、オブジェクト指向的によく考えられており、洗練されたものになっています。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
Loggingフレームワークの構造

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
オープンソースC++用クラスライブラリPOCO活用講座連載記事一覧

もっと読む

この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1901 2007/12/05 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング