独りガラパゴス開発
概要
 独りガラパゴス状態な自分がC++での
Windowsソフトウェア開発で使っている独
自且つ自作のものを簡単にご紹介します。
独りガラパゴス開発 2
概要
 solomon
 独自ビルドフレームワーク
 trickerr.h
 独自エラーハンドリングフレームワーク
 バグベアード
 独自デバッグフレームワーク
独りガラパゴス開発 3
SOLOMON
独りガラパゴス開発
solomon
 Windows用コマンドラインビルドフレーム
ワーク。
 https://bitbucket.org/wraith13/solomon/
 ビルド結果別に作業ディレクトリのス
ナップショット(履歴)を作成。
 ビルド結果:コンパイル成否xテスト成否
独りガラパゴス開発 5
solomon
 スナップショット(履歴)
 なぜかエラーになる、あるいは、なぜかエ
ラーが消えたという場面でも、コンパイルの
成否およびテストの成否の状態別にスナップ
ショットが残っているのでディレクトリ比較
することで問題箇所が簡単に明白になる。
独りガラパゴス開発 6
solomon
 スナップショット(履歴)
 お一人プロジェクトや、新プロジェクトの初
期段階で、スナップショットがバージョン管
理ツール代わりになって重宝します。
独りガラパゴス開発 7
solomon
 スナップショット(履歴)
 スナップショットは最終版だけを残したり、
自動的にzipファイルに固めたり、テストは無
しでコンパイルの成否だけを見るようにした
りといろいろカスタマイズできます。
独りガラパゴス開発 8
solomon
 自動ビルド
 ファイルの更新を監視してファイルが更新さ
れたら自動的にビルドを行うこともできます。
独りガラパゴス開発 9
solomon
 おまけ
 エクスプローラの[送る]メニューに登録してお
くことで簡単に日時ZIPを作成する機能もあり
ます。
独りガラパゴス開発 10
TRICKERR.H
独りガラパゴス開発
trickerr.h
 C++用エラーハンドリングフレームワーク
 http://tricklib.com/cxx/dagger/trickerr.h
公開場所を bitbucket に移行予定。
独りガラパゴス開発 12
trickerr.h
 例外と同じく関数呼び出しのインタ
フェース上には現れずにリスナーによっ
てエラーをハンドリング。
独りガラパゴス開発 13
trickerr.h
 エラー発生時に処理の中断・継続を呼び
出し側に設置するリスナーで制御可能。
 例外のthrowのように処理を中断すべきかどう
かは呼び出しのコンテキストに依存すること
が多く、末端の関数内では決めようがない問
題を回避。
独りガラパゴス開発 14
trickerr.h
 ツリーエラーモデル
 エラー情報をツリー構造で扱う。
独りガラパゴス開発 15
trickerr.h
 RAIIが真価を発揮できる。
 RAII的にはデストラクタで後処理を行うのが必
然だがデストラクタには戻り値もなく例外を
使ってしまうと二つ目のエラーが発生した時
点でアウトだが、エラーのハンドリングをリ
スナーで行いエラー情報をツリー構造で扱う
ことによりRAIIがその真価を発揮できる。
独りガラパゴス開発 16
バグベアード
独りガラパゴス開発
バグベアード
 C++用デバッグフレームワーク
 http://tricklib.com/cxx/ex/bugbeard/
公開場所を bitbucket に移行予定。
独りガラパゴス開発 18
バグベアード
 ステートメントハックを使った暴力的な
機能。
 トレーサー
プログラムがどのような挙動をしたのかログ
ファイルから詳細に追跡できます。
 プロファイラ
プログラムのどこで時間を喰ってるのかホット
ポイントが一発で分ります。
独りガラパゴス開発 19
バグベアード
 ステートメントハックって?
 #define if(X) if (省略) のような形で予約語の多
くを改ざんし、ソースコード全体にわたって
強制的にデバッグの為の埋め込みを行う。
独りガラパゴス開発 20
まとめ
独りガラパゴス開発
独りガラパゴス開発 まとめ
 solomon
 ビルドの結果別にスナップショットを作成。
 ソースコードが保存されたら自動ビルド。
 trickerr.h
 ツリーエラーモデル。
 末端のコードでは処理の中断・継続の設計判断が不要で、
呼び出し側のリスナーで制御。
 バグベアード
 ステートメントハックによるコード全体のトレース。
 ステートメントハックによるコード全体のプロファイル。
独りガラパゴス開発 22

独りガラパゴス開発