# プロジェクト概要
熊本県専門のグルメSNSアプリ『クマべる』は、熊本県民のリアルなクチコミや写真を通して人と人、人とグルメが繋がるコミュニティプラットフォームアプリです。
デザイン、設計、開発、運用、テストなどプロダクトに関わる全てのことを1人で担当しています。アプリは一般ユーザー用と加盟店用2つありますが、トータルの開発期間は約半年でリリースしました。
# 一般ユーザー用アプリ『クマべる』
- プラットフォーム
- iOS
- Android
# 加盟店用アプリ『クマべる加盟店』
- プラットフォーム
- iOS
- Webブラウザ
- Android
# 使用技術(共通)
- バックエンド
- Python 3.12
- Django 5.14
- MVC
- 使用ライブラリ(一部抜粋)
- Django REST Framework
- Stripe: # 決済
- psycopg2: # SQL
- Redis: # キャッシュ
- Celery: #非同期処理
- Clery-beat: # 定期実行
- boto3: # AWS
- oauth2client: # OAuth
- firebase-admin: # Firebase Auth
- jupyterlab: # Jupyter Lab
- flake8: # Lint
- フロントエンド
- Dart
- Flutter
- オニオンアーキテクチャ
- 使用ライブラリ(一部抜粋)
- flutter_test # テスト
- flutter_lints: # Lint
- freezed: # 型
- build_runner: # ビルド
- json_serializable: # API Json変換
- slang_flutter, intl # 多言語化
- flutter_riverpod # 状態管理
- json_annotation # スネークケース→キャメルケース
- go_router: # 画面遷移
- dio: # バックエンドAPI通信
- photo_manager: # 画像マネージャー
- image_cropper: # 画像切り取り
- cached_network_image: # キャッシュ画像
- syncfusion_flutter_charts: # Chart
- flutter_local_notifications: # 通知リクエスト
- shared_preferences: # ローカルデバイスにデータ保存
- google_maps_flutter: # Google Map
- firebase_core: # Firebase接続
- firebase_analytics: # アナリティクス
- firebase_auth: # Firebase認証
- firebase_messaging: # デバイス通知
- cloud_functions: # Cloud Functions
- google_mobile_ads: # Google AdMob
- インフラ
- AWS
- EC2
- RDS
- S3
- CloudFront
- ElastiCache
- Amazon WAF
- ELB
- Route53
- GCP
- Google Maps API
- Firebase
- ユーザー認証にFirebase Auth(Apple, Google, Email)
- プッシュ通知にFirebase Cloud Messagingを使用
# 開発内容一覧
- Firebaseを使った認証機能
- クチコミ投稿
- 画像切り取り
- 画像送信
- クチコミ対象店舗選択
- 評価
- Q&A形式のテキスト入力
- ハッシュタグ
- クチコミ一覧
- クチコミ削除
- フォロー、フォロー解除
- クチコミいいね
- クチコミお気に入り
- クチコミリアクション
- 店舗お気に入り
- プロフィール編集
- 店舗ページ
- 店舗のクチコミ一覧
- 店舗情報表示
- Google Map位置情報表示
- メニュー表示
- 店舗検索
- クチコミ検索
- ユーザー検索
- プッシュ通知機能
- 多言語対応
# デザイン
業務で担当担当したことがなかったが、独学でFigmaデザインを勉強してモックを作成した。
主に既存のプロダクトを参考しながらデザインをした。Instagram, X, 楽天Room, Google Map, などその他多数。
# コスト管理とパフォーマンスの改善
常に、コスト効率と最高のユーザー体験(UX)の両立を追求しています。バックエンド、フロントエンド、インフラと、それぞれの領域でコスト削減とパフォーマンス向上に取り組む必要があり、アプローチが多岐にわたり苦労しました。
また、UI/UXの改善として開発者の観点では気づきづらい点がたくさんありました。家族や友人に触ってもらいながらインタビューすることで新しいアイデアを見つけることができました。
# その他の課題
- 個人開発の課題と工夫
- 個人開発はリリースすることができずにプロダクトが終わることがあると一般的に言われているが、UXに関係することはこだわりを持って開発して、削るところは削ると明確な線引きをしてスピード感を持ってリリースまで持っていくことができた。
- 開発の課題と工夫
- ネイティブアプリの開発に初めて挑戦したが、Flutterの思想や世界観をうまく掴むことができフロントエンドの開発を進めることができた。分からないことが出てきた時は大体公式ドキュメントとYoutubeを見て開発していた。生成AIも活用して技術的な課題を解決できた。
- フロントとバック共通して言えることだが、Onion Architecture設計を取り入れることでプロダクトのスケールに柔軟に対応することができ、負債を抱えにくい構成にできたことはとても良かった。
- 個人開発にしては規模が大きいインフラ構成になったが、コストやセキュリティ、ネットワーク構成を意識して構築できた。
- 開発以外の観点
- 今までデザインの知識は皆無であり興味もなかったが、勉強することで新しく『ユーザー視点に立つ』ことの重要性を認識することができた。エンジニアのままでいると意識することがなかった領域であるためとても新鮮で世界観が変わりました。
- アプリを作って終わりではなくどのようにしてユーザーに使ってもらうかというマーケティング戦略を考え実践することがとても大変。まだまだ課題が山積みで引き続き試行錯誤を続けていきたい。
- 知り合いの50代の方にアプリを触ってもらった時に『ログインが分からない』『ログインってなに?』というフィードバックをもらったことがあり、自分の常識はユーザーには通用しないんだと反省しました。その後、『アカウントを作成する』というボタン名に変更したところ、反応が良くわかりやすいと言われた。