シロクマ C++開発自動化ラボ
C++開発の泥臭い作業、全部「全自動化」しませんか?
Python、Docker、CI/CDを活用してC++開発の泥臭い手作業を全自動化。開発者のための実務効率化・自動化エコシステム構築ガイド。
🎯 MISSION: テストの全自動化
「このプロジェクトのテストを毎回手動で実行するのをやめたい」――手動ビルド ➔ CMake ➔ 自動テスト ➔ ASan ➔ Docker ➔ GitHub Actions による完全自動CI/CDのワークフローを構築せよ。
📚 全12章カリキュラム一覧
- 【Chap 1】C++と自動化の重要性 - C++開発における「ビルド→手動実行→目視確認」の泥臭いループを脱却!なぜコンパイル言語こそテストとビルドの自動化が必要なのか、手作業の限界と自動化の絶大な効果を徹底解説。
- 【Chap 2】Docker環境構築 - 「自分のPCでは動いた」を根絶する!Ubuntu環境をDockerコンテナ化し、aptパッケージの自動インストールとgcc/g++ビルド基盤をチーム共通で再現する手法をマスター。
- 【Chap 3】CMakeビルド自動化&CTest統合 - 生の手書きMakefileと格闘するのはやめましょう。CMakeを使ってプロダクトコードとテストコードを綺麗に分離してビルドし、CTestで一括実行するモダンな設計を学びます。
- 【Chap 4】GoogleTestによるC++網羅テスト - GoogleTestを用いて数理ロジックをテスト。浮動小数点の丸め誤差を考慮したEXPECT_NEARの使い方と、テストしやすい疎結合な設計を解説。
- 【Chap 5】PythonからC++を直接叩く - C++の共有ライブラリ(.so)をpybind11でラップしてPythonモジュール化!ヘッダと型変換を自動バインドし、PythonからC++の超高速ロジックを1行で呼び出す架け橋を構築。
- 【Chap 6】Python統合の実践 - pybind11でバインドしたC++モジュールをPythonスクリプトから対話的に操作!ctypesやシェルスクリプトとの違いを比較し、C++の計算速度とPythonの柔軟性を融合した実務設計を学ぶ。
- 【Chap 7】Pytestによる評価自動化 - C++のロジックテストをあえてPythonのpytestで自動化!@pytest.mark.parametrizeを使った大量テストデータの一括投入や、NumPy・Matplotlibによる数理検証とグラフ可視化を実践。
- 【Chap 8】AddressSanitizerメモリチェック - リリース後に発覚すると致命傷になるC++のメモリバグ。GCC/ClangのAddressSanitizer(ASan)をコンパイラオプション1つで有効化し、バッファオーバーフローやUse-after-Freeを実行時に即死検知。
- 【Chap 9】Sanitizerによるメモリ解析 - テストはパスしたのにメモリが解放されていない……。ASanのLeakSanitizer(LSan)を活用し、CI実行時にメモリリークを自動検知してパイプラインを即座に失敗させる防御ラインを構築。
- 【Chap 10】GitHub Actionsによる自動化 - GitHub Actionsで完全自動のCI/CDパイプラインを構築!コードをgit pushするだけでDockerビルド、CTest、ASan、pytestが全自動実行されるゲートウェイを構築。
- 【Chap 11】HILシミュレーションへの応用 - 実機ハードウェアとシミュレータを組み合わせたHardware-in-the-Loop(HIL)テスト。Pythonでモックを作成し、実機レスでC++コアロジックを全自動検証する車載・組み込みの極意を解説。
- 【Chap 12】自動テストシステム構築の実践 - C++開発における「泥臭い手作業」を完全駆逐した全自動化システムの総括。開発環境からCI/CD・品質保証までを統合したモダンC++エンジニアのベストプラクティス。
📖 付録・逆引き実践リファレンス
- 【付録】GoogleTest 逆引き実践リファレンス - C++実務で必須となるGoogleTestの主要構文を網羅。EXPECT vs ASSERTの使い分け、アサーション一覧、TEST_F(フィクスチャ)、TEST_P(パラメータ化テスト)、例外テスト、コマンドライン実行オプション、gtest_discover_tests連携までを完全整理。
- 【付録】CTest 逆引き実践リファレンス - CMake標準のテストランナー「CTest」を使いこなすための実践チートシート。コマンドライン引数(-R絞り込み、-j並列実行、--output-on-failure)、CMakeLists.txtでのテストプロパティ(タイムアウト、依存関係、環境変数)、gtest_discover_tests連携、CI向けJUnit出力までを完全網羅。