[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-deep-evm-22-rust-di-service-locator-arc":3},{"article":4,"author":55},{"id":5,"category_id":6,"title":7,"slug":8,"excerpt":9,"content_md":10,"content_html":11,"locale":12,"author_id":13,"published":14,"published_at":15,"meta_title":16,"meta_description":17,"focus_keyword":18,"og_image":19,"canonical_url":19,"robots_meta":20,"created_at":15,"updated_at":15,"tags":21,"category_name":35,"related_articles":36},"d4000000-0000-0000-0000-000000000122","a0000000-0000-0000-0000-000000000046","Deep EVM #22：Rustでの依存性注入 — ServiceLocator、Arc、トレイトオブジェクト","deep-evm-22-rust-di-service-locator-arc","フレームワークなしでRustの依存性注入を実装。コンポジションルートパターン、Arc\u003Cdyn Trait> vsジェネリクス、テスト用モック実装、ServiceLocatorパターン。","## RustでのDI問題\n\n依存性注入は基本的な設計原則です。Rustには標準DIフレームワークがなく、所有権モデルがナイーブなDIパターンを困難にします。\n\n## パターン1：Arcとトレイトオブジェクト\n\nトレイトで振る舞いを定義し、`Arc\u003Cdyn Trait>`でランタイム多態性を受け入れる。テスト用にモック実装を提供。\n\n## パターン2：ジェネリクス（ゼロコスト抽象化）\n\nパフォーマンスクリティカルなパスで動的ディスパッチオーバーヘッドが問題になる場合に使用。\n\n## コンポジションルートパターン\n\n`main()`ですべての依存関係を作成し、下方に渡す。グローバル状態なし。\n\n## ServiceLocatorパターン\n\n複雑なシステムで数十のサービスがある場合、`TypeId`ベースのレジストリを使用。\n\n## まとめ\n\nRustのDIにフレームワークは不要です。トレイトが契約を定義し、Arc\u003Cdyn Trait>がランタイム多態性を提供し、コンポジションルートがすべてを結合します。","\u003Ch2 id=\"rust-di\">RustでのDI問題\u003C\u002Fh2>\n\u003Cp>依存性注入は基本的な設計原則です。Rustには標準DIフレームワークがなく、所有権モデルがナイーブなDIパターンを困難にします。\u003C\u002Fp>\n\u003Ch2 id=\"1-arc\">パターン1：Arcとトレイトオブジェクト\u003C\u002Fh2>\n\u003Cp>トレイトで振る舞いを定義し、\u003Ccode>Arc&lt;dyn Trait&gt;\u003C\u002Fcode>でランタイム多態性を受け入れる。テスト用にモック実装を提供。\u003C\u002Fp>\n\u003Ch2 id=\"2\">パターン2：ジェネリクス（ゼロコスト抽象化）\u003C\u002Fh2>\n\u003Cp>パフォーマンスクリティカルなパスで動的ディスパッチオーバーヘッドが問題になる場合に使用。\u003C\u002Fp>\n\u003Ch2 id=\"\">コンポジションルートパターン\u003C\u002Fh2>\n\u003Cp>\u003Ccode>main()\u003C\u002Fcode>ですべての依存関係を作成し、下方に渡す。グローバル状態なし。\u003C\u002Fp>\n\u003Ch2 id=\"servicelocator\">ServiceLocatorパターン\u003C\u002Fh2>\n\u003Cp>複雑なシステムで数十のサービスがある場合、\u003Ccode>TypeId\u003C\u002Fcode>ベースのレジストリを使用。\u003C\u002Fp>\n\u003Ch2 id=\"\">まとめ\u003C\u002Fh2>\n\u003Cp>RustのDIにフレームワークは不要です。トレイトが契約を定義し、Arc\u003Cdyn Trait>がランタイム多態性を提供し、コンポジションルートがすべてを結合します。\u003C\u002Fp>\n","ja","b0000000-0000-0000-0000-000000000001",true,"2026-03-28T10:44:27.261275Z","Rustでの依存性注入 — ServiceLocator、Arc、トレイトオブジェクト","Arc、トレイトオブジェクト、コンポジションルートパターン、ServiceLocatorでフレームワークなしのRust依存性注入を実装。","依存性注入 rust",null,"index, follow",[22,27,31],{"id":23,"name":24,"slug":25,"created_at":26},"c0000000-0000-0000-0000-000000000004","Nuxt","nuxt","2026-03-28T10:44:21.513630Z",{"id":28,"name":29,"slug":30,"created_at":26},"c0000000-0000-0000-0000-000000000005","PostgreSQL","postgresql",{"id":32,"name":33,"slug":34,"created_at":26},"c0000000-0000-0000-0000-000000000001","Rust","rust","エンジニアリング",[37,43,49],{"id":38,"title":39,"slug":40,"excerpt":41,"locale":12,"category_name":35,"published_at":42},"d0000000-0000-0000-0000-000000000671","2026年、なぜBaliは東南アジアのインパクトテックハブになりつつあるのか","naze-bali-2026-tonan-ajia-inpakuto-tekku-habu","Baliは東南アジアのスタートアップエコシステムで第16位にランクイン。Web3ビルダー、AIサステナビリティスタートアップ、エコトラベルテック企業が集積し、この島は地域のインパクトテック首都としてのニッチを確立しつつあります。","2026-03-28T10:44:49.081179Z",{"id":44,"title":45,"slug":46,"excerpt":47,"locale":12,"category_name":35,"published_at":48},"d0000000-0000-0000-0000-000000000670","ASEANデータ保護パッチワーク：開発者のためのコンプライアンスチェックリスト","asean-deta-hogo-pacchiwaku-kaihatsusha-kompuraiansu-chekkurisuto","7つのASEAN諸国が包括的なデータ保護法を有し、それぞれ異なる同意モデル、ローカライゼーション要件、罰則構造を持っています。マルチカントリーアプリケーションを構築する開発者のための実用的なコンプライアンスチェックリストです。","2026-03-28T10:44:49.074910Z",{"id":50,"title":51,"slug":52,"excerpt":53,"locale":12,"category_name":35,"published_at":54},"d0000000-0000-0000-0000-000000000669","Indonesiaの290億ドルデジタルトランスフォーメーション：ソフトウェア企業のチャンス","indonesia-290oku-doru-dejitaru-toransufomeshon-sofutowea-kigyo-chansu","IndonesiaのITサービス市場は2026年に290.3億ドルに達すると予測されており、2025年の243.7億ドルから増加します。クラウドインフラ、AI、電子商取引、データセンターが東南アジアで最も速い成長を牽引しています。","2026-03-28T10:44:49.055660Z",{"id":13,"name":56,"slug":57,"bio":58,"photo_url":19,"linkedin":19,"role":59,"created_at":60,"updated_at":60},"Open Soft Team","open-soft-team","The engineering team at Open Soft, building premium software solutions from Bali, Indonesia.","Engineering Team","2026-03-28T08:31:22.226811Z"]