SlideShare a Scribd company logo
1 of 22
独りガラパゴス開発
概要
 独りガラパゴス状態な自分が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

More Related Content

Viewers also liked

LUCIFERの設計コンセプトと 導入予定の機能紹介
LUCIFERの設計コンセプトと 導入予定の機能紹介LUCIFERの設計コンセプトと 導入予定の機能紹介
LUCIFERの設計コンセプトと 導入予定の機能紹介道化師 堂華
 
Prism.Formsについて
Prism.FormsについてPrism.Formsについて
Prism.Formsについて一希 大田
 
10分でわかる無料になったXamarin
10分でわかる無料になったXamarin10分でわかる無料になったXamarin
10分でわかる無料になったXamarinYoshito Tabuchi
 
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2Yoshito Tabuchi
 

Viewers also liked (7)

LUCIFERの設計コンセプトと 導入予定の機能紹介
LUCIFERの設計コンセプトと 導入予定の機能紹介LUCIFERの設計コンセプトと 導入予定の機能紹介
LUCIFERの設計コンセプトと 導入予定の機能紹介
 
バグベアード入門
バグベアード入門バグベアード入門
バグベアード入門
 
C++0x総復習
C++0x総復習C++0x総復習
C++0x総復習
 
Prism.Formsについて
Prism.FormsについてPrism.Formsについて
Prism.Formsについて
 
10分でわかる無料になったXamarin
10分でわかる無料になったXamarin10分でわかる無料になったXamarin
10分でわかる無料になったXamarin
 
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
 
Xamarin.forms入門
Xamarin.forms入門Xamarin.forms入門
Xamarin.forms入門
 

Similar to 独りガラパゴス開発

Silverlight 4 → 5における不具合の状況
Silverlight 4 → 5における不具合の状況Silverlight 4 → 5における不具合の状況
Silverlight 4 → 5における不具合の状況Yu Wakabayashi
 
Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Taiji Miyabe
 
LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2Tomofumi Yagi
 
“debug.gem”の 利用体験・開発効率の向上
“debug.gem”の 利用体験・開発効率の向上“debug.gem”の 利用体験・開発効率の向上
“debug.gem”の 利用体験・開発効率の向上Naoto Ono
 
“debug.gem”の 利用体験・開発効率の向上.pdf
“debug.gem”の 利用体験・開発効率の向上.pdf“debug.gem”の 利用体験・開発効率の向上.pdf
“debug.gem”の 利用体験・開発効率の向上.pdfNaoto Ono
 
超効率的フロントエンドデバッグ術
超効率的フロントエンドデバッグ術超効率的フロントエンドデバッグ術
超効率的フロントエンドデバッグ術Shinji Hashimoto
 
Microsoft Edge F12 開発者ツール
Microsoft Edge F12 開発者ツールMicrosoft Edge F12 開発者ツール
Microsoft Edge F12 開発者ツールYoshihisa Ozaki
 
Chrome Developer Toolsを使いこなそう!
Chrome Developer Toolsを使いこなそう!Chrome Developer Toolsを使いこなそう!
Chrome Developer Toolsを使いこなそう!yoshikawa_t
 
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1Atsushi Tadokoro
 
Chromeデベロッパーツール
ChromeデベロッパーツールChromeデベロッパーツール
ChromeデベロッパーツールKeiichi Kobayashi
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929hiro345
 
EmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べたEmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べたkyon mm
 
19. camel tooling
19. camel tooling19. camel tooling
19. camel toolingJian Feng
 

Similar to 独りガラパゴス開発 (16)

Silverlight 4 → 5における不具合の状況
Silverlight 4 → 5における不具合の状況Silverlight 4 → 5における不具合の状況
Silverlight 4 → 5における不具合の状況
 
Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Java fx勉強会lt 第8回
Java fx勉強会lt 第8回
 
LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2
 
“debug.gem”の 利用体験・開発効率の向上
“debug.gem”の 利用体験・開発効率の向上“debug.gem”の 利用体験・開発効率の向上
“debug.gem”の 利用体験・開発効率の向上
 
“debug.gem”の 利用体験・開発効率の向上.pdf
“debug.gem”の 利用体験・開発効率の向上.pdf“debug.gem”の 利用体験・開発効率の向上.pdf
“debug.gem”の 利用体験・開発効率の向上.pdf
 
Selenium
SeleniumSelenium
Selenium
 
Developer tools
Developer toolsDeveloper tools
Developer tools
 
超効率的フロントエンドデバッグ術
超効率的フロントエンドデバッグ術超効率的フロントエンドデバッグ術
超効率的フロントエンドデバッグ術
 
Microsoft Edge F12 開発者ツール
Microsoft Edge F12 開発者ツールMicrosoft Edge F12 開発者ツール
Microsoft Edge F12 開発者ツール
 
Chrome Developer Toolsを使いこなそう!
Chrome Developer Toolsを使いこなそう!Chrome Developer Toolsを使いこなそう!
Chrome Developer Toolsを使いこなそう!
 
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
 
Chromeデベロッパーツール
ChromeデベロッパーツールChromeデベロッパーツール
Chromeデベロッパーツール
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929
 
Code Pack の話
Code Pack の話Code Pack の話
Code Pack の話
 
EmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べたEmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べた
 
19. camel tooling
19. camel tooling19. camel tooling
19. camel tooling
 

More from 道化師 堂華

Reflection with xamarin.forms
Reflection with xamarin.formsReflection with xamarin.forms
Reflection with xamarin.forms道化師 堂華
 
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編道化師 堂華
 
C++ tips2 インクリメント編
C++ tips2 インクリメント編C++ tips2 インクリメント編
C++ tips2 インクリメント編道化師 堂華
 
C++プログラマの為のセキュリティ入門
C++プログラマの為のセキュリティ入門C++プログラマの為のセキュリティ入門
C++プログラマの為のセキュリティ入門道化師 堂華
 
エラーハンドリング
エラーハンドリングエラーハンドリング
エラーハンドリング道化師 堂華
 
マスタリング バベル
マスタリング バベルマスタリング バベル
マスタリング バベル道化師 堂華
 
並列プログラミング 入門!&おさらい!
並列プログラミング入門!&おさらい!並列プログラミング入門!&おさらい!
並列プログラミング 入門!&おさらい!道化師 堂華
 

More from 道化師 堂華 (9)

Reflection with xamarin.forms
Reflection with xamarin.formsReflection with xamarin.forms
Reflection with xamarin.forms
 
C++ tips4 cv修飾編
C++ tips4 cv修飾編C++ tips4 cv修飾編
C++ tips4 cv修飾編
 
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編
 
C++ tips2 インクリメント編
C++ tips2 インクリメント編C++ tips2 インクリメント編
C++ tips2 インクリメント編
 
C++ tips1 #include編
C++ tips1 #include編C++ tips1 #include編
C++ tips1 #include編
 
C++プログラマの為のセキュリティ入門
C++プログラマの為のセキュリティ入門C++プログラマの為のセキュリティ入門
C++プログラマの為のセキュリティ入門
 
エラーハンドリング
エラーハンドリングエラーハンドリング
エラーハンドリング
 
マスタリング バベル
マスタリング バベルマスタリング バベル
マスタリング バベル
 
並列プログラミング 入門!&おさらい!
並列プログラミング入門!&おさらい!並列プログラミング入門!&おさらい!
並列プログラミング 入門!&おさらい!
 

Recently uploaded

部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員Sadaomi Nishi
 
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)keikoitakurag
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一瑛一 西口
 
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayersToru Tamaki
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑Akihiro Kadohata
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521Satoshi Makita
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdfAyachika Kitazaki
 
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose EstimationToru Tamaki
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptxssuserbefd24
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計atsushi061452
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )iwashiira2ctf
 

Recently uploaded (11)

部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
 
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
 

独りガラパゴス開発