Next.js + サーバーサイドTypeScript + 関数フレーバーでクリーンなアプリを作ったので実装意図とか書く Advent Calendar 2022
の3日目。株式会社mofmofに生息しているshwldです。
前日はshwld is 誰。このアドベントカレンダーの技術レベルの前提について紹介しました。
実装方針
設計する上で優先度高めに設定しているのは以下です。
ただし、満たすものを作るというよりは願望です。
- 新規プロジェクト開発時に初速が出ること
- 中規模くらいまではスケールできること
- 依存パッケージを増やさないこと
前日に書きましたが、作るものはPivotalTrackerです。
これを作るうえで、どこまで作るかを判断するポイントは以下です。
- よくある処理の実装方法を知るために一つ以上実装する
- 認証
- ファイルアップロード(未実装ですが...)
- 非同期処理
- バックグラウンド処理
- リアルタイム処理
- メール送信
- バッチ処理
- ロギング(未対応ですが...)
- MVPになっている
- 最低限プロジェクト運用を回せる機能が揃っている
依存パッケージを増やさないこと
普段はRailsを書いていることが多いのですが、メジャーバージョンアップなどの対応は依存が多いほど大変です。
とはいえRailsはもはや枯れていて、大変なのはバージョンアップのタイミングくらいですが、JavaScript、Node.jsなどはそうではなく、ライブラリや周辺環境は目まぐるしく変わります。
そうなるとパッケージのバージョンアップの機会も自ずと多くなります。
この環境において依存パッケージを増やすのはリスクが大きいです。
- 小さなパッケージは使わず極力自分で書くなどし、制御可能な状態を保つこと。
- 依存はなるべく安定したものを選択する。
これらを意識することが重要だと思います。
まだこのプロジェクトもNext.jsを13にアップデートできておらず、そこだけでも大変なのに、他の依存が増えたらアップデートだけで手が回らなくなります...
次回予告
明日はプロジェクトのアーキテクチャについて書きます。