SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Destaque

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
 

Destaque (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入門
 

Semelhante a 独りガラパゴス開発

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
 

Semelhante a 独りガラパゴス開発 (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
 

Mais de 道化師 堂華

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++プログラマの為のセキュリティ入門道化師 堂華
 
エラーハンドリング
エラーハンドリングエラーハンドリング
エラーハンドリング道化師 堂華
 
マスタリング バベル
マスタリング バベルマスタリング バベル
マスタリング バベル道化師 堂華
 
並列プログラミング 入門!&おさらい!
並列プログラミング入門!&おさらい!並列プログラミング入門!&おさらい!
並列プログラミング 入門!&おさらい!道化師 堂華
 

Mais de 道化師 堂華 (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++プログラマの為のセキュリティ入門
 
エラーハンドリング
エラーハンドリングエラーハンドリング
エラーハンドリング
 
マスタリング バベル
マスタリング バベルマスタリング バベル
マスタリング バベル
 
並列プログラミング 入門!&おさらい!
並列プログラミング入門!&おさらい!並列プログラミング入門!&おさらい!
並列プログラミング 入門!&おさらい!
 

Último

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 

Último (8)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 

独りガラパゴス開発