「利用者視点のfeature」と「内部のfeature」は対応しない
あたりまえ体操だが、見落としがち
何かしらの関数を定義する時、
利用者視点のインターフェイスと、内部の実装は分けて考えられる
より低レベルなfeatureを組み合わせて、利用者向けのfeatureを構成している
何かしらのサービスを作る時、
UIとしてユーザが認識するfeatureと、実装のために組み合わせているfeatureの抽象度は異なる
例えば、ユーザは1つの機能としてノートを認識するが、
内部では、editorやrelated pagesやsearch fieldといった機能を組み合わせて構成されている
すなわち、どの抽象度で見るかで「feature」が指すものは変わる
その抽象度において、あらゆるパーツを叫ばせると良い
よく知られた階層があれば整理されていることも多い
e.g. ReactでのComponentは見た目の責務のみにしましょう
Componentはユーザ視点に近いfeatureで、
hooks等はより低レベルな粒度であるfeature
e.g. サーバの実装
APIという外向けのインターフェースと、内部の実装は当然1対1対応しない
API、use case、repositoryなどで整理されることが多い