backend-development
C++およびElixir/Phoenixによるバックエンド開発のガイドラインを提供するスキルで、モダンな言語機能、ベストプラクティス、本番環境に対応したパターンを網羅します。APIの設計からパフォーマンス最適化まで、実務レベルの実装をサポートします。
description の原文を見る
Guidelines for backend development in C++ and Elixir/Phoenix, covering modern language features, best practices, and production-ready patterns.
SKILL.md 本文
Backend Development
You are an expert in backend development with C++ and Elixir/Phoenix.
C++ Development
Naming Conventions
- PascalCase をクラスと構造体に使用する
- camelCase を変数とメソッドに使用する
- SCREAMING_SNAKE_CASE を定数とマクロに使用する
Memory Management
- 生ポインタではなくスマートポインタ (
std::unique_ptr,std::shared_ptr) を優先する - 排他的所有権には
std::unique_ptrを使用する - 共有所有権が必要な場合にのみ
std::shared_ptrを使用する - すべてのリソース管理に RAII を実装する
- 不要なヒープアロケーションを避ける
Modern C++ Features
- 可読性が向上する場合は
autoを型推論に使用する - 範囲ベースの for ループを活用する
- 値が存在しない場合には
std::optionalを使用する - 型安全な unions には
std::variantを使用する - 構造化バインディングをより清潔なコードに適用する
- ムーブセマンティクスに
std::moveを使用する
Error Handling
- エラーハンドリングに例外を使用する
- ドメイン固有のエラーに対してカスタム例外型を定義する
- 適切な境界で例外をキャッチする
- すべてのコードで例外安全性を確保する
Best Practices
- コード全体で const 正確性を強制する
- C スタイルのキャストを避ける。
static_cast,dynamic_castなどを使用する - Google Test または Catch2 でユニットテストを作成する
- Doxygen コメントでドキュメント化する
Elixir and Phoenix Best Practices
Core Philosophy
- PragDave の philosophy を用いたドメイン駆動設計に従う
- 明示的なエラーハンドリングを備えた関数型プログラミングを使用する
- 「let it crash」の原則を取り入れる
Code Organization
- Phoenix contexts を使用してビジネスドメイン周辺のコードを組織する
- contexts を単一ドメインに焦点を絞った状態に保つ
- bounded contexts を使用して結合を防ぐ
- 各 context に対して明確な public API を実装する
Pattern Matching and Control Flow
- データ抽出に pattern matching を広範に使用する
withステートメントを用いた「railway-oriented programming」を適用する- pipe operator でオペレーションをきれいにチェーンする
- すべての pattern match ケースを明示的に処理する
Error Handling
- タグ付きタプル (
{:ok, result}または{:error, reason}) を返す withステートメントを使用してフェイラブルなオペレーションをチェーンする- 適切な supervision trees を実装する
- 予期されたエラーを明示的に処理する
Phoenix Contexts
- 関連機能を contexts にグループ化する
- contexts 間に明確な境界を定義する
- contexts をビジネスロジックの API レイヤーとして使用する
- controllers を薄い状態に保ち、contexts に処理を委譲する
LiveView
- LiveView を主な UI テクノロジーとして使用する
- 再利用可能な UI に関数コンポーネントを実装する
- LiveView モジュールでイベントを処理する
- assigns で状態を適切に管理する
Data Validation
Ecto.Changesetを使用して境界での検証を行う- changesets をデータベース context 外でも使用する
- 明確な検証ルールを定義する
- 有用なエラーメッセージを返す
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- mindrally
- リポジトリ
- mindrally/skills
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/mindrally/skills / ライセンス: Apache-2.0
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。