0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人開発で100個作る #1.5

Posted at

こんにちは。個人開発で100個作ることを目標として、学習を進めております。今回のSNS開発の反省点と次回やりたいことなどをまとめました。

反省点

  • 要件定義をしっかり行うべきであった。

    • 製品の概要やペルソナなどを最初に設定する必要がある。

    要件定義とはなんぞや? - Qiita

  • OpenAPIでAPI設計管理をするべきだった。このAPI URLが何なのか分からなくなる時がある。

    【備忘】(今更ながら)OpenAPIとは - Qiita

  • 設計の段階でテストケースを考え、あらゆるケースに対応したコードを書いてリスク対策をするべきであった。設計段階で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. 継続的な改善

  • 振り返り(レトロスペクティブ):定期的にチームで振り返りを行い、プロセスの改善点を見つける。
  • バックログの管理:新しい要件やバグをバックログに追加し、優先順位をつけて処理。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?