アプリを作るにはまず何を始めるか?

はじめまして、片岡と申します。

アプリを作りたいと言っても、必要なことが多すぎて最初に何をすることろから始めればいいのかわからない事が多いと思います。

ざっくりと頭の整理のためchatGTPにアプリを作るためにどんなドキュメントが必要なのかを聞いてみました。

私は以下のような条件のアプリを作成しようとしています。
開始前に作成が必要なドキュメントを教えてください。
また、質問があれば聞いて下さい。

------
# アプリ内容
購入馬券管理アプリ

# システム対象
フェーズ1: Webアプリ
フェーズ2: スマートフォンアプリ

# システム内容
バックエンド(API):rails
フロントエンド:
 フェーズ1:rails
 フェーズ2:react naitive

# システム詳細
Docker/AWS/

# 要件
1. 定期的に競馬情報サイトをクローリングし、レースの開催情報をDBに登録する機能
2.会員登録機能
3.馬券購入管理機能
4.定期的に競馬情報サイトをクローリングし、レースの結果情報をDBに登録する機能
5.購入した馬券の当選・払い戻し金の確認管理機能
6.馬券の払い戻しをグラフィカルに表示する機能
プロジェクトを開始するにあたり、以下のドキュメントの作成が推奨されます。これらは、プロジェクトの計画、開発、運用を効率的かつ効果的に行うために重要な役割を果たします。

### 1. プロジェクト計画書
プロジェクトの目的、範囲、目標、予算、スケジュールを定義します。また、利害関係者やプロジェクトチームの役割と責任も明記します。

### 2. 要件定義書
システムが満たすべき具体的な要件を記載します。機能要件だけでなく、非機能要件(性能要件、セキュリティ要件など)も含めることが重要です。

### 3. 技術仕様書
使用する技術スタック(Rails, React Native, Docker, AWSなど)の詳細と、システムのアーキテクチャ、APIの設計、データモデル、インフラ構成などを記述します。

### 4. クローリング方針文書
クローリングする競馬情報サイトの選定、クローリングの頻度、データの取り扱い方針(著作権に配慮した内容の取り扱いを含む)などを定義します。

### 5. プライバシーポリシーおよび利用規約
ユーザー登録機能や個人情報の取り扱いに関する法的要件を満たすための文書を作成します。ユーザーの権利と責任、サービス提供者の権利と責任を明確にします。

### 6. テスト計画書
テストの範囲、方法、スケジュールを定義します。単体テスト、統合テスト、システムテスト、受け入れテストなど、各テストフェーズの計画を立てます。

### 7. デプロイメント計画書
アプリケーションのデプロイメントプロセス、AWSなどのクラウドサービスへのデプロイメント戦略、ローリングアップデートやブルー/グリーンデプロイメントなどの展開方法を記載します。

### 8. セキュリティ対策文書
システムのセキュリティ対策(データ暗号化、認証・認可、脆弱性対策など)と、セキュリティインシデント発生時の対応計画を定義します。

### 9. 運用保守計画書
システムの日常的な運用保守活動(バックアップ、監視、パフォーマンスチューニングなど)と、システムアップデートや障害対応のプロセスを記述します。

### 10. プロジェクト終了報告書
プロジェクトの成果物、成果の評価、学んだ教訓、未来のプロジェクトに向けた提案などをまとめます。

これらのドキュメントは、プロジェクトの進行に伴い更新が必要になる場合があります。プロジェクトのライフサイクル全体を通じて、これらの

多い!!!!

多すぎます、法人でやるような本格的なプロジェクトの規模の想定が帰ってきてしました。

もしかしたら最初に作るドキュメントを聞いてしまったのが良くなかったのかもしれません、ドキュメントは書くフェーズで必要になってから用意する方法でも問題ないように感じます。

そのため、次は要件をまとめることを手伝ってもらいました。

プロジェクトの目的
購入馬券管理アプリのリリース

範囲
フェーズ1:Webアプリ
フェーズ2:iOSアプリ
フェーズ3:Androidアプリ

目標
6/1までにWebアプリをリリース

予算
特になし

スケジュール
フェーズ1:Webアプリ 6/1までにリリース
フェーズ2:iOSアプリ 8/1までにリリース
フェーズ3:Androidアプリ 9/1までにリリース
プロジェクトの目的、範囲、目標、予算、およびスケジュールに基づき、以下のステップでプロジェクト計画を進めることが考えられます。これらは、プロジェクト管理のための基本的なフレームワークを提供し、効率的な開発プロセスを確立するのに役立ちます。

プロジェクトの概要
プロジェクトの目的: 購入馬券管理アプリのリリースを通じて、ユーザーが競馬の馬券購入と管理を簡単に行えるプラットフォームを提供する。
範囲:
フェーズ1: Webアプリ
フェーズ2: iOSアプリ
フェーズ3: Androidアプリ
目標:
フェーズ1(Webアプリ): 6/1までにリリース
フェーズ2(iOSアプリ): 8/1までにリリース
フェーズ3(Androidアプリ): 9/1までにリリース
予算: 特になし(ただし、開発コスト、マーケティング、運用コストなどを考慮しておくべき)
スケジュールの詳細化
各フェーズの主要なマイルストーンを設定し、それぞれに対するタスク、責任者、および期限を明確にします。

フェーズ1: Webアプリ
要件定義: 競馬情報のクローリングから馬券購入管理までの詳細な要件を定義。
設計: システムのアーキテクチャ、API設計、データモデル、UI/UXデザイン。
開発: バックエンド(Rails)とフロントエンドの開発。
テスト: 単体テスト、統合テスト、システムテストの実施。
デプロイメント: Docker/AWSを使用した本番環境へのデプロイ。
リリース: 6/1まで。
フェーズ2 & 3: iOS/Androidアプリ
プラットフォーム固有の要件定義: iOS/Androidの特定の要件を考慮に入れる。
設計: モバイル向けのUI/UXデザインの調整。
開発: React Nativeを使用したクロスプラットフォーム開発。
テスト: プラットフォーム固有のテスト、パフォーマンステスト。
デプロイメント: App Store/Google Playへの配布準備。
リリース: iOSアプリは8/1、Androidアプリは9/1まで。
リスク管理
リスク評価: 開発遅延、技術的な障壁、セキュリティ問題などのリスクを評価。
軽減策: リスクに対する予防措置と対応策を計画。
進捗管理とコミュニケーション
定期的なステータス会議: プロジェクトの進捗、問題点、調整事項をチーム全体で共有。
進捗報告: 定期的な進捗報告

最近のchatGTPは重たく、質問文も回答文も途中で途切れてしまいましたが、なんとなくいい感じにまとめてはくれました。

これからより具体的に進める方法を聞いていきます。

~省略~
上記を踏まえた上で
なにから始めればよいか教えて下さい。
なお、開発人数は私1人です。
一人でこのようなアプリを開発する場合、計画的に段階を踏んで進めることが重要です。以下に、プロジェクトを進めるためのステップを提案します。これは、プロジェクトの初期段階からリリースまでをカバーする一般的なロードマップです。

1. 要件定義と仕様の詳細化
競馬情報のクローリングに関する要件:

対象とする情報(レース日程、出走馬、オッズ、結果など)を明確にします。
クローリングの頻度や自動化の方法を計画します。
クローリングに関する法的観点やサイトの利用規約を確認します。
馬券購入管理機能の詳細:

各機能(会員登録、ログイン、馬券購入、履歴閲覧など)のユーザーインターフェイスとユーザーエクスペリエンスを考慮した要件を定義します。
回収率計算、的中率計算、成績グラフ表示のロジックを明確にします。
2. 技術スタックの選定と設計
アーキテクチャ:

モノリシックアプリケーションかマイクロサービスアーキテクチャの選定。
システムの各コンポーネント(クローリング、バックエンド、フロントエンド、データベース)の相互作用を概念図で描きます。
API設計:

Swaggerを使用してRESTful APIの仕様を定義します。エンドポイント、リクエスト/レスポンスの形式、認証方法などを明記します。
データモデル:

MySQLを使用して、ユーザー情報、購入履歴、レース情報などのデータベーススキーマを設計します。
UI/UXデザイン:

ユーザーが直感的に操作できるデザインを目指し、ワイヤーフレームやモックアップを作成します。Tailwind CSSを使用してスタイルを定義します。
3. 開発環境のセットアップ
Rails、React Native(フェーズ2以降)、MySQL、Tailwind CSSの最新版をインストールし、開発環境を構築します。
Dockerを使用して、開発から本番環境まで一貫した環境を保証します。
4. 開発
バックエンド(Rails):
モデル、コントローラー、ビューを実装します。APIエンドポイントをテストします。
フロントエンド:
フェーズ1ではRailsのビューを、フェーズ2以降ではReact Nativeを使用してUIを構築します。
5. テスト
単体テスト:
モデル、コントローラー、ヘルパーなどの単体テストを実施します。
統合テスト:
システム全体の流れをテストし、機能が期待通りに動作するか確認します。
6. デプロイメント
DockerとAWSを使用

今回も途中で途切れてしまいました、noteに貼る時に段落などは崩れてしまいますが、見た目的にも読みやすく納得度の高い回答が帰って来ました。

このあと、各ステップについて詳しく聞きながら実際に開発に着手していきたいと思います。

この記事が気に入ったらサポートをしてみませんか?