gihyo.jpのMisskey連載第2回: MisskeyにおけるNest.jsを使ったDI

member/Bronze
概要

2023-02-13に公開された「gihyo.jpのMisskey連載第1回: 分散型SNS「Misskey」、それを支える技術スタック | GNU social JP」の連載に続く2回目の連載「MisskeyにおけるNest.jsを使ったDI | gihyo.jp」が公開されたので紹介します。

以下の投稿で告知されていました。

avatar
Misskey連載第二回が出た Nest,jsを使ったDIについて解説しています
MisskeyにおけるNest.jsを使ったDI | gihyo.jp
本連載では分散型マイクロブログ用ソフトウェアMisskeyの開発に関する紹介と、関連するWeb技術について解説を行っています。第2回はMisskey v13から採用されたNest.jsおよびDependency Injection(DI)と呼ばれる設計手法について紹介します。

なお、私はこの公開の認知に遅れ、2023-04-01の以下の投稿で存在を認知しました。

avatar
ぐぬ管 (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=代理、代表。使用したいクラスのメンバー関数、コールバック関数を寄せ集めただけの代理のクラス) を渡して、関数内部でデリゲートインスタンスのメンバー関数を使います。こうすることで、引数のデリゲートインスタンスを置換することができ、単体試験がしやすくなります。

この投稿は Bronze, Silver, Gold, Bronze (annual), Silver (annual), and Gold (annual) の会員限定です。記録が目的であり、元投稿の削除・炎上回避、運営費・GNU socialの開発資金調達などのため会員限定にしています。

このサイトでは分散SNSの話題を1年以上ほぼ毎日更新しています。最新動向・詳細情報を把握したい人は、会員登録/ログインをお願いします (About Member)。

Comments

Copied title and URL