プログラム・プロブレム

ティータイム 5 ライブラリ紹介(その1)


I はじめに

初(以下H):初(はじめ)です。
涼(以下S):涼(すず)だ。
H:今回は便利なライブラリの紹介です。
S:よく使うと思うから、ちゃんと聞いてくれ。
H:……
S:…やっぱり、やめましょう。疲れます。
H:インパクトあるかと思ったが、費用対効果が悪すぎるな。
S:作者も、書いててすごい違和感があるみたいですしね。
H:というわけで、いつも通りの口調で本編に行かせてもらおう。

II ログ取得用ライブラリ

S:まずは、なんだかんだで一番よく使われるログライブラリです。
H:通常のログ記録用途はもちろん、デバッグのお供にも役立つぞ。
S:ログのレベルによって出力するかどうかを決められるのが普通ですね。
H:そして出力先もいろいろ選べるのが多いぞ。

S:一番の有名どころは Java の Log4j です。
H:類似品が各言語に移植されてるな。
S:ええ。C++ では Log4cxx とか Log4cpp とか複数ありますね。
H:その他には .Net 用の Log4net、PHP の Log4php とかだな。
S:作者さんは C++ ではネットを彷徨っていて見付けた pantheios を使おうと思ってるみたいですよ。
H:あー、なんか ACE とか Log4cxx とかとも同時利用できるらしいな。
S:実際にはまだ使ってないんで、評価はできないというお話ですが。
H:むぅ…使えない作者だな。

S:さて、それぞれの詳しい解説は他の方々が既に書いているので、そちらを参考にしてもらうとして…
H:概要だけ紹介しておこうというわけだ。
S:とりあえず、ライブラリの設置手順に従って、環境の設定をするわけです。
H:環境変数にパス書いたり、プロジェクト設定をいじったりするんだな。
S:その次にソースコードで利用を宣言するのが一般的ですね。
H:C 系だったら #include するとか、Java なら import とかだ。
S:そして、いよいよログを出力するわけです。
H:ログ出力オブジェクトである Logger を取得して、そいつに向かってログレベルを指定しながらログを吐く。
S:これを必要な所で、妥当なログレベルを指定して行うことを繰り返すだけです。

H:で、プログラムを実行するとログが出てくるわけなんだが…
S:その時に、ログ用の設定ファイルが必要になります。
H:ホントに出力するログレベルはどこからか(指定より優先度の低いレベルは出力されない)とか。
S:あとはどこに出力するかですね。画面だったりファイルだったりネットワークだったり。
H:設定ファイルを書き換えるだけで、ソースコードを変えなくてもログ出力方法を変えられるのが特徴だ。

III ユニットテスト

S:さて、お次はユニットテストライブラリです。これも重要ですね。
H:最近のアジャイル開発とかでは必須になってるアクティビティだからな。
S:ログライブラリと同じように xUnit ファミリと呼ばれる各言語への移植があります。
H:Java なら JUnit、.Net は NUnit、その他 CppUnit とか PhpUnit とかだな。
S:もちろん、これら xUnit ファミリ以外にも色々とユニットテストライブラリが存在します。

H:基本概念としては、コードの部分ごとにチェック用のプログラムを作るのがユニットテストだ。
S:ある仕事をする関数に対して、正常系・異常系・例外発生時などのテストを作ります。
H:テスト方法については、専門書が何冊もあるから参考にするといいぞ。
S:基本的には、境界値付近のチェックやエラー条件のチェックをよく行いますね。

H:ちなみにユニットテストを突き詰めていったプラクティスとして「テストファーストプログラミング」がある。
S:実際のコードよりもテスト用のコードを先に書くようにする手法なんですよ。
H:たしかに、テストコードを考えることで関数のインターフェースが具体化されて便利だ。
S:テストコードの作成をサボれなくなるのも利点ですね。
H:工数コストがかかるような気がするが、実際はデバッグにかかる時間を大幅に削減できる場合が多い。
S:些細な変更がバグの原因になった時、テストにひっかかるので早期発見できるわけです。

IV GUI ライブラリ

H:最後は GUI ライブラリだ。
S:今時のアプリケーションは GUI が主流ですからね。
H:特に Windows アプリはほとんど GUI だからな。CUI は使えるヤツが少ない。
S:Java はマルチプラットフォームで GUI も自前で持ってますね。AWT とか Swing とか。
H:その他の言語では、大概は外部ライブラリを使わないといけないんだよな。
S:一番充実してるのは C 系のライブラリですね。当然と言えば当然ですが。
H:作者が知ってるだけで GTK、FLTK、Qt、Fox と四つもある。
S:あとは GTK の各言語バインディングとか、言語特有の GUI ライブラリとかですね。

H:いずれにしても、ウィンドウ上にコントロールを組み合わせるようになってるのが普通だな。
S:使えるコントロールの種類が GUI ライブラリの特色になってますね。
H:あとは見た目。スタイル(テーマ)を変えることで、見栄えを変更できるライブラリもある。
S:だいたいは、ユーザがコントロールを操作するとイベントが発生するので、それに対応して処理をするコードを書くわけです。
H:俗に言う「イベントドリブン」ってヤツだ。Visual Basic が一番分かりやすいかもな。
S:言語とライブラリによって、GUI 利用の難易度が違うので見積り時には気を付けて下さいね。

V 終わりに

H:といった所でライブラリ紹介その 1 は終了だ。
S:よく使いそうなのをピックアップしたつもりですが、参考になったでしょうか?
H:リンク集にある「脳味噌ぶら~ん Wiki」がライブラリについて詳しいからな。
S:メインは C とか C++ ですが、他でも参考になるかと。
H:便利なライブラリを自分の道具箱に入れておくのはプログラマの嗜みだぞ。
S:いいライブラリを見付けたら作者さんに教えてあげると喜ぶと思いますよ。
H:じゃあ、今回はここまでだ。
S:また、お会いしましょう。

ティータイム 5 終了


一覧に戻る