DI に DI コンテナは不要か?
@ababupdownba すみません。意図が伝わりにくい文章でした。同じ量のコードを書いたとしてもJSよりもElmのほうが複雑度が低そうという意図です。
2020-07-02 23:10:17@nojima ふむふむ さらに突っ込んで聞きたいのですが、すなわちいずれかはelmも複雑度がjs同等となり DIが必要になると言う仮説でしょうか?
2020-07-02 23:12:05@nojima おそらく違うのではないかと言う仮説を持ってます。 fringeneer.hatenablog.com/entry/2019/12/… 日本だと最大規模に近いelmプロダクトのuniposで、いろんな課題を聞いてますが そのような話を聞いたことがないのですよね
2020-07-02 23:21:32@nojima もうちょっと情報が欲しいです 例えば、代数的データ型構造の変更や型の変更はコンパイラが確実に検知するので、そう言った変更は漏らしません しかし、言われているDIカバーするコードの変更はまた別なニュアンスな気がします
2020-07-02 23:38:41@ababupdownba 例えば「軽減税率を実装するためにあるロジックを書き換えたんだけど、思いもよらないところに影響が出たりしないだろうか」みたいなやつです。 自分で書いといてなんですが、Elmだと型で大体わかりそうな気がしてきました。
2020-07-02 23:43:40@nojima んー その場合、テスト気付けると思います。 DIでテストが書きやすくなるの文脈であれば、elmでテストが書けない状況を作る方が難しいので
2020-07-02 23:49:54@nojima または、軽減税率をした後という値に型を作ればコンパイル時に型で防げますね qiita.com/arowM/items/01…
2020-07-02 23:51:36@ababupdownba そうですね。DIが欲しくなるケースって「テスト書きたいのに依存が邪魔で書けない」みたいなパターンが多いので、これが回避できるのならDIなしでも大丈夫なのかもしれません。
2020-07-03 00:07:23@nojima はい elmをやると今までの常識が常識で無くなることが多いのでオススメです …と言っても自分はまだ上手く言語化出来ていないので、とても良い気付きをありがとうございました。楽しい議論でした!
2020-07-03 00:11:27それはそう。 LispなりHaskellなりで書かれたアプリケーションは大抵DIとか意識してないでしょうし(継続なりReaderなりで簡単に依存を分離できるので twitter.com/ababupdownba/s…
2020-07-03 00:38:53DIってDIするしか解決策がない もしくは、DIしないとやってられない状況だから使ってるだけで DIがないとアプリケーションが作れない つまり必要条件?ではないよね
2020-07-02 22:19:50WikipediaのDIのページ見るとWebComponentのslotもある種のDIだよねと書かれてて面白いですね。ElmにもSlotの概念て有るんでしたっけ?もし有るならElmにもDIが存在してると言える???
2020-07-03 00:48:35@ababupdownba package.elm-lang.org/packages/edkv/… これは標準ではなくサードパーティライブラリですかね?
2020-07-03 00:56:20@gakuzzzz おそらく…そうですね というのも、今はsignalの考えをしていないので、だいぶ古いelmのパッケージでどう言った使われ方をしていたか知らないためです
2020-07-03 01:08:49@gakuzzzz DIの実装手段として高階関数が使えるという意見です。(任意の高階関数がDIであるという主張ではないです)
2020-07-03 01:18:23@nojima なるほど、ありがとうございます!高階関数でモジュールの依存関係を切り離せるというのは僕も同様の認識です。様々ある依存関係を分離するための手段のうち、特定の手段のみを世間がDIと読んでいるように思えており、レコードに関数を持たせるのをDIと呼んでいいのか個人的に迷っておりました
2020-07-03 01:41:42あー elmがアクターモデル説が正しいなら scalaでもakkaで 例えばrepositoryをアクターとしておけばDIとかせずに依存をきっちり分離できるじゃんか DBをカプセル化できるからメッセージが投げられたらただのデータを保存するインスタンスになるわけだ
2020-07-03 01:11:15