こんにちは。個人開発で100個作ることを目標として、学習を進めております。今回のSNS開発の反省点と次回やりたいことなどをまとめました。
反省点
-
要件定義をしっかり行うべきであった。
- 製品の概要やペルソナなどを最初に設定する必要がある。
-
OpenAPIでAPI設計管理をするべきだった。このAPI URLが何なのか分からなくなる時がある。
-
設計の段階でテストケースを考え、あらゆるケースに対応したコードを書いてリスク対策をするべきであった。設計段階でQAを行い、このテストが何のためにあるのか理由を考えることが重要である。
-
Figmaでディレクトリをしっかり管理し、デザインデータが消失しないようにする。
- 画面遷移やコンポーネント分割をするべきであった。コンポーネント分割を行うことで、後のReact開発がしやすくなる。atomic design思想に基づくディレクトリ構成やコンポーネントの再利用がしやすくなる。
- StoryBookでコンポーネントを再利用しやすく管理しておくべきであった。
-
MySQL WorkBenchで作成したスキーマ設計はしっかりと保存する。今回は保存のし忘れでデータが消失した。
-
Notionでタスクを分解してから、issue分解を行うべきだった。
-
作業を行う際は、作業ブランチを作成してそこで必ず作業を行うこと。
-
画像はS3に保存するようにする。Cloudflare R2は難しい。
-
製品が完成したら、発表用のスライドを作成するべきである。
-
基本設計と詳細設計を行うべきである。
-
Railsだけでなく、Golangなどを使用してみるのも一つの方法である。
-
テストコードをしっかりと、フロントとバックエンドで書くことをする。
-
しっかりドキュメントを作ることを訓練して覚えたい。
一般的なWeb開発のフローは以下の感じらしいです。(ChatGPT先生より)
要件定義
- ステークホルダーとの協議:製品の目的、ターゲットユーザー(ペルソナ)、主要機能などを明確にする。
- ユーザーストーリー作成:ユーザーがシステムをどのように利用するかを具体的に記述。
- 受け入れ基準の設定:各要件が満たされるための条件を明確にする。
2. 設計
- アーキテクチャ設計:システム全体の構造を設計(マイクロサービス、サーバーレス、モノリシックなど)。
- データベース設計:データモデルを設計し、ER図などを作成。
- API設計:OpenAPIを使ってAPIの設計とドキュメント化。
- UI/UXデザイン:FigmaやAdobe XDでプロトタイプを作成し、ユーザーテストを実施。
3. 開発
- 環境設定:開発環境、テスト環境、本番環境を設定。DockerやKubernetesを利用して環境を統一。
- コード管理:Gitを使用してバージョン管理。ブランチ戦略(GitFlow、GitHub Flowなど)を策定。
- テスト駆動開発(TDD):テストケースを先に書き、それに基づいて実装。
- ペアプログラミング:コードレビューを取り入れ、品質を向上。
4. 継続的インテグレーション(CI)/継続的デリバリー(CD)
- CIツールの設定:Jenkins、CircleCI、GitHub Actionsなどを使用して、コードがプッシュされるたびにビルドとテストを自動実行。
- CDパイプラインの構築:アプリケーションを自動デプロイするパイプラインを構築。KubernetesやTerraformでインフラのコード化(IaC)を行う。
5. テスト
-
ユニットテスト:個々のコンポーネントが正しく動作するか確認。
- バックエンドでは、RSpec。フロントではJestなどでテストしたいですね。
- フロント、バックでしっかりとテストをする。
- 統合テスト:複数のコンポーネントが連携して動作するか確認。
- エンドツーエンド(E2E)テスト:ユーザーが行う一連の操作が正しく動作するか確認。
- 負荷テスト:システムのパフォーマンスを検証。
6. デプロイ
- ステージング環境でのテスト:本番環境と同等の環境で最終テストを実施。
- 本番環境へのデプロイ:自動デプロイツールを使用して、本番環境に安全にリリース。
7. モニタリングとフィードバック
- モニタリング:Prometheus、Grafana、New Relicなどのツールを使用して、システムのパフォーマンスやエラーログを監視。
- ユーザーフィードバック収集:ユーザーからのフィードバックを収集し、改善に役立てる。
8. 継続的な改善
- 振り返り(レトロスペクティブ):定期的にチームで振り返りを行い、プロセスの改善点を見つける。
- バックログの管理:新しい要件やバグをバックログに追加し、優先順位をつけて処理。