Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Angularと漸進的なリプレース

MOSH,Inc
October 18, 2023

 Angularと漸進的なリプレース

経験談から学ぶ Webフロントエンドリプレイスの進め方LTの登壇資料です。
登壇者: Mosh株式会社CTO村井亮介
https://offers.connpass.com/event/297461/

MOSH,Inc

October 18, 2023
Tweet

More Decks by MOSH,Inc

Other Decks in Technology

Transcript

  1. 1. 過剰なデータのバケツリレー 余計なレイヤーを作りすぎた 1. DTOから何も書かれていないモデルインスタンス への変換 右から左へ渡すだけのコードを何度も書かないといけない 2. モデルからプレゼンテーションのためのViewモデル への変換

    続・右から左へ渡すだけのコードを何度も書かないといけない 3. わざわざ変換しているモデルの責務がない まとめておきたいドメインロジックはそこにはない...
  2. 2. オレオレライブラリ デコレーターでUIを生成し、UIの揺れをなくしたかったが ... 1. 細かいデザインの調整がめんどい 微調整のためのデコレーターが増えまくる 動的なデータを扱うのが大変 2. キャッチアップコストがうなぎ上り

    新しく入ってくれた方が詰む ドキュメントがあればまだいいが、それでもキャッチアップが大変 世間で使われている事だけを使う方が良い カスタムコンポーネントは認知負荷が低い物だけを作るべき 3. アトミックなコンポーネントと組み合わせる指針 共通化をすごく頑張らなくていい どうしてもデザインの差分は出るので、絶対に揺れない部分を共通化 共通のロジックは純粋関数をサービスにまとめる あとは多少冗長的でも良い。認知負荷が下がる事が大事
  3. 1. 構成 1. リポジトリを新たに作成し、旧リポジトリが取り込む Route component群を独立したmosh-pageモジュールとして構成。 ライブラリとしてexportし、旧リポジトリ側libraryとしてimportする 2. 旧リポジトリと共有するモジュールは独立した libraryとしてexportする

    APIコールのためのサービスや、ボタンなどのコンポーネントは、直接新リポジトリ でも使用できる 3. NXは神だった 新リポジトリのライブラリ群を別のリポジトリとして管理シスつ、サブ モジュールで管理してシームレスに開発できる 4. リプレースだけではなく、新プロダクト作成にも活きる 部品や通信周りは共有できるなど
  4. 3. 反省 新/旧の境界を明示し、新世界のルールの適用範囲をわかるようにした。しかし ... 1. ビルドが面倒 サブモジュールをクローンしたり手間が増える 動的なデータを扱うのが大変 2. キャッチアップコストがうなぎ上り

    新しく入ってくれた方が詰む ソースコードが劇的に追いにくくなる 3. NX前は地獄だった LibraryProject毎にビルドするのが大変 HotReloadが効かなかったりもする ビルドプロセスが長くなって遅い