個人開発者向けのサービスの開発記録 #34 20240219

tyshgc
·

本日の作業

  • 🚴 イベントストーミングとドメインイベントについて学習する

    • 🚴 zennにまとめる

  • 🚴 分報に関する設計・実装

    • 🚴 Model・Repository実装

    • UseCase Hooksと結合実装

    • Domain EventとPrismaの実装

Feature-Sliced DesignとCompound Patternでのテストについて

Feature-Sliced Designにおいて、sharedやentitiesでcompound patternを使用する際にテストで要素指定しやすくしたり、dev toolsでソースを見やすくするために以下のようなルールを敷くようにした。

Entities

data属性で data-entity="entity-name" を追加するようにしました。

尚、entitiesもCompound Pattern想定なので子要素が存在する場合は、data-entity="parentname.childname" とします。こうする理由は、再利用性がentitiesはsharedに比べ少ないことと、子要素単体で呼ばれることがないことが理由。

それとfeaturesやwidgetsも data-featureやdata-widgetで名付けすればよいかと。またこれらはcompoundである必要はないものなので各コンポーネントの同ページ内で再利用されることはないと思います。

Shared

sharedはユースケースが2通りで、indexのみのcompoundとwrapperが親として存在するcompoundとあります。

というわけでdata-sharedではなく、data-{basename}とし、その値にcomponent名をあてるようにします。

例)iconボタンの場合

iconボタン = button.icon // buttonがbasename, iconがcomponent name

=> data-button="icon"

例)Formで使うラベルの場合

Formで使うラベル = form.label // formがbasename, labelがcomponent name

=> data-form="label"

こうすることでテスト時に要素を指定しやすくなる。

という感じでだいぶFeature-Sliced Designをmonorepo環境で構築するナレッジ溜まってきたのでどこかのタイミングで記事にまとめたい。

そのほか、メモ

  • イベントストーミングとドメインイベントについて学習する記事をまとめ中

← #33 

@tyshgc
デザインファーム及びスタートアップ(上場)などを経てフリーランスとして、様々なスタートアップや大手企業の新規事業の立ち上げ期における事業設計・アプリケーションの設計・開発、サービスのUX分析とデザインとエンジニアリングの両軸でお手伝いさせていただいています。 現在、個人開発者向けの支援サービスを個人開発中。 X Account: @tyshgc