# プロジェクト概要
本プロジェクトはReact Native(Expo)とAWS Amplifyを使用してiOSおよびAndroidアプリを開発しました。プロジェクトメンバーは自分一人で、企画から設計、デザイン、QA, 実装、運営管理まで全て一人で行いました。担当範囲はフロントエンド、バックエンド、デザインであり、主に使用した技術はReact, TypeScript, AWS Amplify, React Native, Expoです。プロジェクトの中で特に苦労した点はDynamoDBのシングルテーブル設計での最適化とStripeのwebhook実装でした。また、アプリをGoogle Playで公開するプロセスも含まれています。
## 開発メンバー
- 開発者: 1人 (自分)
## 担当内容
- **フロントエンド**: React NativeとExpoを使用して、iOSおよびAndroidアプリのUI/UXを実装しました。
- **バックエンド**: AWS Amplifyを利用し、バックエンドの設計と実装を行いました。特にDynamoDBのシングルテーブル設計での最適化に焦点を当てました。
- **デザイン**: アプリのデザインコンセプトを作成し、UI/UXデザインを実施しました。
- **QA**: アプリの品質保証とテストを行いました。
- **運営管理**: アプリの運営と管理を行い、Google Playでの公開を含むリリースプロセスを管理しました。
## 使用技術
- **React**: UIコンポーネントの構築と管理を行いました。
- **TypeScript**: 型安全性を保ちながら効率的なコードを実写しました。
- **AWS Amplify**: バックエンドサービスとして利用し、データベース管理と認証を実装しました。
- **React Native**: モバイルアプリケーションの開発フレームワークとして利用しました。
- **Expo**: モバイルアプリケーションのビルドとデプロイメントを効率化しました。
- **Recoil**: 状態管理ライブラリとして利用し、アプリケーションの状態を効率的に管理しました。
## 苦労した点
- **DynamoDBのシングルテーブル設計**: DynamoDBのシングルテーブル設計での最適化を行い、パフォーマンスとスケーラビリティを確保しました。
- **Stripeのwebhook実装**: Stripeのwebhookを実装し、決済処理の自動化を実現しました。
- 初めはSolitoというReact Native + Next.jsのライブラリで一気にios, android, webを構築しようと考え実装したのですが、AWS-Amplifyとの連携が上手くいきませんでした。そこで、基本に立ち返りReact NativeでモバイルをNext.jsでwebを構築するというように、分けて実装するように方向転換しました。アプリ開発の良いところは、小さく分けてシンプルに、複雑にしないという教訓を得られました。
## アプリ公開
- Google Playを通じてアプリを公開し、ユーザーフィードバックとレビューを収集し、アプリの改善を続けています。
以上の取り組みを通じて、iOSおよびAndroid向けのアプリケーションを効率的に開発し、運営しました。