elixir-expert について
elixir-expert は Elixir と Phoenix の開発を支援するスキルです。OTP、LiveView、並行処理、BEAM VM 上のフォールトトレラントなシステム設計を扱います。
主な機能
- 01Elixir と Phoenix の開発ガイダンス
- 02OTP パターンとスーパービジョンツリー
- 03LiveView によるリアルタイム機能
- 04Ecto のデータベースアクセス手順
活用シーン
- 01Elixir アプリケーションの設計
- 02Phoenix Web アプリケーションの開発
- 03LiveView インターフェースの実装
- 04フォールトトレラントな OTP システムの計画
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ 404kidwiz/ claude-supercode-skills --skill elixir-expertインストール後、Claude Code で/elixir-expertを入力して読み込まれたか確認します。
詳細
Elixir エキスパート
目的
Elixir の開発、Phoenix Framework、OTP のパターンに関する専門知識を提供します。並行プログラミング、LiveView によるリアルタイム機能、BEAM VM 上での耐障害性に優れた分散システムの構築を扱います。
使用する場面
- Elixir アプリケーションを構築するとき
- Phoenix の Web アプリケーションを開発するとき
- LiveView でリアルタイム機能を実装するとき
- OTP のパターン(GenServer、Supervisor)を使用するとき
- BEAM 上で分散システムを構築するとき
- 耐障害性に優れたアーキテクチャを設計するとき
- データベースアクセスに Ecto を使用するとき
クイックスタート
このスキルを呼び出す場合:
- Elixir アプリケーションを構築するとき
- Phoenix の Web アプリケーションを開発するとき
- LiveView でリアルタイム機能を実装するとき
- OTP のパターンを使用するとき
- 耐障害性に優れたシステムを設計するとき
呼び出さない場合:
- Ruby on Rails アプリを構築するとき(rails-expert を使用)
- Node.js バックエンドを構築するとき(javascript-pro を使用)
- Python バックエンドを構築するとき(python-pro を使用)
- インフラストラクチャの自動化を行うとき(terraform-engineer を使用)
判断フレームワーク
Concurrency Pattern:
├── Stateful process → GenServer
├── Async work → Task
├── Background job → Oban or Task.Supervisor
├── Event streaming → GenStage / Broadway
├── Real-time UI → Phoenix LiveView
└── External service → Retry with exponential backoff
Supervision Strategy:
├── Process can crash independently → one_for_one
├── Processes depend on each other → one_for_all
├── Ordered restart needed → rest_for_one
└── Dynamic children → DynamicSupervisor
主なワークフロー
1. Phoenix アプリケーションのセットアップ
- Phoenix プロジェクトを生成します
- Ecto でデータベースを設定します
- スキーマとマイグレーションを定義します
- ビジネスロジック用のコンテキストを作成します
- コントローラーまたは LiveView を構築します
- 認証を追加します
- リリースを使用してデプロイします
2. OTP アプリケーションの設計
- 状態を持つコンポーネントを特定します
- スーパービジョンツリーを設計します
- 状態管理用の GenServer を実装します
- 適切なエラー処理を追加します
- グレースフルシャットダウンを実装します
- スーパービジョン戦略をテストします
3. LiveView によるリアルタイム機能
- LiveView モジュールを生成します
- assigns と状態を定義します
- handle_event コールバックを実装します
- ブロードキャストに pubsub を使用します
- temporary_assigns で最適化します
- 必要に応じて JS フックを追加します
ベストプラクティス
- クラッシュを許容し、障害からの復旧を前提に設計します
- 耐障害性を確保するためにスーパービジョンツリーを使用します
- GenServer の状態は最小限に保ちます
- ビジネスロジックの整理にはコンテキストを使用します
- 不変データの変換を優先します
- async: true を使用して並行コードをテストします
アンチパターン
| アンチパターン | 問題 | 正しいアプローチ |
|---|---|---|
| GenServer の状態が大きい | メモリとシリアライズの負担 | 外部ストレージ、ETS |
| 防御的なコーディング | バグを隠します | クラッシュを許容し、監督します |
| GenServer のブロッキング | プロセスのボトルネック | I/O には非同期タスクを使用します |
| スーパービジョンがない | 復旧できないクラッシュ | 適切なスーパービジョンツリー |
| 可変を前提とした考え方 | バグや競合状態 | 不変性を受け入れます |
コメント
Markdown 対応