概要
2023-02-13に公開された「gihyo.jpのMisskey連載第1回: 分散型SNS「Misskey」、それを支える技術スタック | GNU social JP」の連載に続く2回目の連載「MisskeyにおけるNest.jsを使ったDI | gihyo.jp」が公開されたので紹介します。
以下の投稿で告知されていました。
Misskey連載第二回が出た Nest,jsを使ったDIについて解説しています MisskeyにおけるNest.jsを使ったDI | gihyo.jp本連載では分散型マイクロブログ用ソフトウェアMisskeyの開発に関する紹介と、関連するWeb技術について解説を行っています。第2回はMisskey v13から採用されたNest.jsおよびDependency Injection(DI)と呼ばれる設計手法について紹介します。
k_taka?|k_taka@mstdn.jpMisskey & Webテクノロジー最前線「MisskeyにおけるNest.jsを使ったDI」。執筆は @syuilo さんです。
第2回はMisskey v13から採用されたNest.jsおよびDependency Injection(DI)と呼ばれる設計手法について紹介しています。 https://gihyo.jp/article/2023/03/misskey-02
なお、私はこの公開の認知に遅れ、2023-04-01の以下の投稿で存在を認知しました。
ぐぬ管 (GNU social JP管理人)|gnusocialjp@gnusocial.jp!sns 3/22にgihyo.jpのMisskey連載第2回が公開されたようです。全然気づきませんでした。 MisskeyにおけるNest.jsを使ったDI MisskeyにおけるNest.jsを使ったDI | gihyo.jp本連載では分散型マイクロブログ用ソフトウェアMisskeyの開発に関する紹介と、関連するWeb技術について解説を行っています。第2回はMisskey v13から採用されたNest.jsおよびDependency Injection(DI)と呼ばれる設計手法について紹介します。
内容
内容はMisskey v13で導入されたNest.jsによるDI (Dependency Injection) の説明でした。DIはメンバー関数間のクラスの依存関係を緩和する方法で、関数の単体テストをしやすくする手法です。
ファイルグローバル関数や、インスタンスのメンバー関数などを、他の関数内で使うと、その関数・クラスに依存してしまい、単体で動作させる場合に依存部分のモック・スタブへの置換が困難になります。
この回避には、例えば関数の引数にデリゲートインスタンス (Delegate=代理、代表。使用したいクラスのメンバー関数、コールバック関数を寄せ集めただけの代理のクラス) を渡して、関数内部でデリゲートインスタンスのメンバー関数を使います。こうすることで、引数のデリゲートインスタンスを置換することができ、単体試験がしやすくなります。
詳細プロフィール。SNS: X Twitter/GS=gnusocialjp@gnusocial.jp/WP=gnusocialjp@web.gnusocial.jp。2022-07-17からgnusocial.jpとweb.gnusocial.jpのサイトを運営しています。WordPressで分散SNSに参加しています。このアカウントの投稿に返信すると、サイトのコメント欄にも反映されます。
Comments