<div class="chatlog__message-group">
  <div id="chatlog__message-container-1136483555862655087" class="chatlog__message-container" data-message-id="1136483555862655087">
    <div class="chatlog__message">
      <div class="chatlog__message-aside"><img class="chatlog__avatar" src="https://cdn.discordapp.com/avatars/293624673265123328/accd07acc220a18568ba46a6e9ede18a.png?size=512" alt="Avatar" loading="lazy"></div>
      <div class="chatlog__message-primary">
        <div class="chatlog__header"><span class="chatlog__author" style="color:rgb(17,128,106)" title="koher" data-user-id="293624673265123328">koher</span> <a href="/channels/380329942505750529?category=コミュニティ&amp;channel=waiwai-swiftc&amp;message_id=1136483555862655087"><span class="chatlog__timestamp" title="Thursday, August 3, 2023 2:19 AM"></span></a><a href="#chatlog__message-container-1136483555862655087">8/3/2023 2:19 AM</a></div>
        <div class="chatlog__content chatlog__markdown"><span class="chatlog__markdown-preserve">
            <div class="chatlog__markdown-quote">
              <div class="chatlog__markdown-quote-border"></div>
              <div class="chatlog__markdown-quote-content">Storeが利用しないprotocolの群も含める事になるのが好ましくなさそう </div>
            </div> これは理想的にはそうですが、アプリ開発の現実としては、厳密に必要な依存だけ注入していると面倒なことになりがちじゃないですか?型パラインジェクションするかコンストラクタインジェクションするかに限らず。 たとえば、 <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">FooRepository</code> を使う <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">Container1</code> があったとして、仕様変更になったときに <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">BarRepository</code> も必要になったら、たとえコンストラクタインジェクションしててもコンストラクタ(イニシャライザ)の引数を増やさないといけないですよね? <code class="chatlog__markdown-pre chatlog__markdown-pre--multiline language-diff"> final class Container1 { - init(fooRepository: any FooRespository) { + init(fooRepository: any FooRespository, barRepository: any BarRepository) {</code> そうなると、 <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">Container1</code> の利用箇所に問題が波及しますし、もし <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">Container2</code> が <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">Container1</code> をイニシャライズするような場合、 <code class="chatlog__markdown-pre chatlog__markdown-pre--inline">Container2</code> のイニシャライザにも影響が出たりしませんか? <code class="chatlog__markdown-pre chatlog__markdown-pre--multiline language-diff"> final class Container2 { - init(fooRepository: any FooRespository) { + init(fooRepository: any FooRespository, barRepository: any BarRepository) { self.fooRepository = fooRepository + self.barRepository = barRepository - self.container1 = Container1(fooRepository: fooRepository) + self.container1 = Container1(fooRepository: fooRepository, barRepository: barRepository)</code> なので、ある程度広めにまとめて多少利用しないものが入っても気にしないようにしており、そうすると(型パラインジェクションする場合でも)DIのための型パラは大抵一つにおさまるので、そこまで型パラが問題になることは多くないのではないかと思います。
          </span> <span class="chatlog__edited-timestamp" title="Thursday, August 3, 2023 2:20 AM">(edited)</span></div>
      </div>
    </div>
  </div>
</div>