mcpField
C
cpp-pro

cpp-pro

github.com/404kidwiz開発121 回インストール
リポジトリ

cpp-pro について

C++20 の開発を支援し、現代的な言語機能、性能調整、システムレベルのプログラミングを扱うスキルです。高性能アプリ、組み込みソフトウェア、低レベルシステムの開発者向けです。

主な機能

  1. 01C++20 の言語機能
  2. 02性能とメモリーの最適化
  3. 03SIMD とロックフリー技術
  4. 04システムレベルのプログラミング
  5. 05クロスプラットフォームのライブラリーと SDK

活用シーン

  1. 01ゲームエンジンやシミュレーションの開発
  2. 02組み込み・システムソフトウェアの構築
  3. 03レガシー C++ コードの刷新
  4. 04性能が重要なコードの最適化

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/404kidwiz/claude-supercode-skills --skill cpp-pro

インストール後、Claude Code で/cpp-proを入力して読み込まれたか確認します。

同梱ファイルEXAMPLES.mdREFERENCE.md

詳細

C++ プロフェッショナル

目的

コンセプト、モジュール、レンジ、コルーチンなどのモダン C++ 機能、パフォーマンス最適化、システムレベルのプログラミングに特化した、C++20 の高度なプログラミング能力を提供します。メモリー安全性と最適なリソース利用を備えた、高性能アプリケーション、組み込みシステム、ゲームエンジン、低レベルのシステムソフトウェアの構築を得意とします。

使用するタイミング

  • C++ の速度が求められる高性能アプリケーション(ゲームエンジン、シミュレーション)の構築
  • システムレベルのソフトウェア(デバイスドライバー、オペレーティングシステム、組み込みシステム)の実装
  • パフォーマンスが重要なコード(SIMD、キャッシュ最適化、ロックフリープログラミング)の最適化
  • レガシーな C++ コードベースのモダン C++20 標準への移行
  • クロスプラットフォームの C++ ライブラリーや SDK の構築
  • テンプレートメタプログラミングとコンパイル時最適化の実装
  • モダン C++20 機能(コンセプト、モジュール、レンジ、コルーチン)の利用

クイックスタート

次のような場合にこのスキルを呼び出してください:

  • 高性能な C++ アプリケーション(ゲーム、シミュレーション、トレーディング)の構築
  • システムレベルのプログラミング(デバイスドライバー、組み込みシステム、OS)
  • パフォーマンス最適化(SIMD、キャッシュ、ロックフリー)
  • モダン C++20 機能(コンセプト、モジュール、レンジ、コルーチン)
  • テンプレートメタプログラミングとコンパイル時計算
  • クロスプラットフォームのライブラリー開発

次のような場合は呼び出さないでください:

  • ウェブ開発 → frontend-developer または backend-developer を使用してください
  • スクリプト作成のタスク → python-pro または javascript-pro を使用してください
  • パフォーマンス要件のない単純なユーティリティ → 適切な言語を使用してください
  • モバイル開発 → swift-expert または kotlin-specialist を使用してください

主な機能

C++20 のモダン機能
  • コンセプト:型制約とテンプレート要件
  • モジュール:ヘッダーファイルをインポート可能なモジュールに置き換え
  • レンジ:遅延評価アルゴリズムとビュー
  • コルーチン:co_await による非同期プログラミング
  • 三方比較演算子:三方比較 <=>
  • 指示付き初期化子:メンバー名による構造体メンバーの初期化
  • std::format:型安全な文字列フォーマット
  • std::span:所有権を持たない安全な配列ビュー
  • std::jthread:自動 join 機能を備えたスレッド
パフォーマンス最適化
  • テンプレートメタプログラミング:コンパイル時計算
  • SIMD プログラミング:並列処理のためのベクトル命令
  • メモリー管理:スマートポインター、アロケーター、メモリープール
  • キャッシュを考慮したアルゴリズム:データ指向設計パターン
  • ロックフリープログラミング:アトミック操作とメモリー順序
  • コンパイラー最適化:プロファイル誘導最適化、リンク時最適化
システムプログラミング
  • 低レベル I/O:ファイル記述子、ソケット、epoll/kqueue
  • メモリーマッピング:共有メモリー、メモリーマップドファイル
  • プロセス管理:Fork、exec、シグナル処理
  • システムコール:POSIX/Linux システムインターフェース
  • 組み込みシステム:ベアメタルプログラミング、リアルタイム制約

判断フレームワーク

C++ 機能の選択
C++20 Feature Decision
├─ Type constraints needed
│   └─ Use concepts instead of SFINAE
│       • Clearer error messages
│       • More readable templates
│
├─ Header file management
│   └─ Use modules for new projects
│       • Faster compilation
│       • Better encapsulation
│
├─ Data transformations
│   └─ Use ranges for lazy evaluation
│       • Composable algorithms
│       • Memory efficient
│
├─ Async operations
│   └─ Use coroutines for I/O-bound work
│       • Efficient state machines
│       • Readable async code
│
└─ Error handling
    ├─ Recoverable errors → std::expected
    ├─ Exceptional cases → exceptions
    └─ Low-level code → return codes
パフォーマンス最適化マトリクス
ボトルネック解決策複雑さ
CPU バウンドの計算SIMD、並列処理高
メモリー割り当てメモリープール、アロケーター中
キャッシュミスデータ指向設計高
ロック競合ロックフリー構造非常に高
コンパイル時間モジュール、プリコンパイル済みヘッダー低

ベストプラクティス

モダン C++ 開発
  • 継承より合成を優先:値セマンティクスと合成を使用します
  • const の正確性:可能な場合はメンバー関数に const を付けます
  • 適切な場合は noexcept を使用:例外を送出しない関数に印を付けます
  • 明示的であることを優先:explicit コンストラクターと変換演算子を使用します
  • あらゆる場所で RAII を使用:すべてのリソースを RAII オブジェクトでラップします
パフォーマンス最適化
  • 最適化の前にプロファイリング:perf、VTune、またはTracyを使用します
  • ゼロの法則:デストラクター、コピー、ムーブは必要な場合にのみ定義します
  • ムーブセマンティクス:値で返し、ムーブセマンティクスに頼ります
  • インライン化は慎重に:コンパイラーに任せ、キャッシュフレンドリーなデータに注力します
  • キャッシュ効率の測定:キャッシュミスは、多くの場合、より大きなコストになります
テンプレートメタプログラミング
  • SFINAEよりConcepts:テンプレート制約をより明確にするためにConceptsを使用します
  • 可能な場合はconstexpr:計算をコンパイル時に行います
  • 型特性:コンパイル時のイントロスペクションにはstd::type_traitsを使用します
  • 可変長テンプレート:柔軟な関数を実現するためにパラメーターパックを使用します
並行処理と並列処理
  • 早まったロックを避ける:競合が激しい場合は、ロックフリーを検討します
  • メモリーオーダーを理解する:std::memory_orderを明示的に使用します
  • Future/Promiseパターン:非同期の結果にはstd::futureを使用します
  • I/Oにはコルーチン:非同期I/OにはC++20のコルーチンを使用します
  • スレッドプール:スレッドを生成するよりもプールを優先します
システムレベルのプログラミング
  • ゼロコスト抽象化:効率よくコンパイルされる高水準のコードを記述します
  • エラーを明示的に処理する:例外を使わずにstd::expectedを使用します
  • リソース管理:一貫してRAIIを適用します
  • プラットフォームの抽象化:プラットフォーム固有のコードを分離します
  • テスト戦略:単体テスト、ファジング、プロパティベーステストを使用します

アンチパターン

メモリー管理
  • raw new/delete:代わりにスマートポインターを使用します
  • 手動でのリソース管理:RAIIを適用します
  • ダングリングポインター:所有権セマンティクスを使用します
パフォーマンス
  • 早すぎる最適化:まずプロファイリングを行います
  • 仮想関数呼び出しのオーバーヘッド:パフォーマンスが重要な場合はCRTPを使用します
  • 不要なコピー:ムーブセマンティクスと参照を使用します
コードの構成
  • すべてをヘッダーオンリーにする:モジュールまたは適切なコンパイル単位を使用します
  • マクロの乱用:constexpr、テンプレート、インライン関数を使用します
  • グローバル状態:依存性注入を使用します

追加リソース

  • 詳細な技術リファレンス:REFERENCE.mdを参照してください
  • コード例とパターン:EXAMPLES.mdを参照してください

コメント