🫧

チーム分けアプリ「チームる」の構成とリリース後の感想

2024/08/31に公開

作ったもの

アプリ名: チームる

アカウント登録などは不要でチーム分けを簡単に行えるシンプルなアプリです。(※iOS版のみ対応しております。)

https://apps.apple.com/jp/app/チームる-手軽にランダムにチーム分けを実行/id6481116810

主な機能としては以下があります。

  • グループ機能(事前にチーム分けを行うメンバーリストの作成)
  • カスタムチームリスト機能
  • チーム分け結果の共有(クリップボードコピー/シェア)
  • チーム分け後の点呼機能(チェックリスト)

スポーツや、席決め、ワークショップなど幅広く使っていただくことができます。

UI

まず個人的に類似アプリのUIの使いにくさを感じていたことが、本アプリの開発動機としてありました。
そのため本アプリでは、ユーザーが使いやすいUIを意識して、アプリ体験を阻害しないように気をつけています。

  • チーム分けをスムーズに行えるような動線を設計(数タップでチーム分けを行える)
  • なるべくインタースティシャル広告を減らす
起動画面 結果画面
設定画面 グループ画面

技術スタック

技術スタックも軽く紹介しておきます。

  • フロントエンド: Flutter

    • 状態管理: riverpod, flutter_hooks
    • 画面遷移:go_router
    • ローカルDB: sqflite
    • コード自動生成: freezed, riverpod_generator
      etc...
  • バックエンド: Firebase

    • Analytics
    • Firebase Crashlytics
    • Remote Config
    • Performance Monitoring
  • バージョン管理: fvm

ディレクトリ構成

package by featureをベースに構成しています。
アプリで共通で使用するものに関しては、coreディレクトリ、このアプリ特有の機能に関してはfeatureディレクトリに格納しています。
必要な処理やクラスが1箇所にまとまっていて見通しもよく、個人的には package by layer よりおすすめです。

./lib
├── l10n/
├── main.dart
└── src/
    ├── app.dart
    ├── core/
    │   ├── environment.dart
    │   ├── firebase
    │   │   ├── analytics.dart
    │   │   └── remote_config.dart
    │   ├── google_ad.dart
    │   ├── local_db.dart
    │   ├── shared_preferences.dart
    │   └── theme.dart
    ├── exception
    ├── features
    │   ├── custom_team
    │   │   ├── application # ビジネスロジック
    │   │   │   ├── team_service.dart
    │   │   │   └── team_service.g.dart
    │   │   ├── data # データアクセスに関する処理
    │   │   │   └── team_repository.dart
    │   │   ├── domain # 固有のデータクラス
    │   │   │   ├── team.dart
    │   │   │   ├── team.freezed.dart
    │   │   │   └── team.g.dart
    │   │   └── presentation # 画面と画面固有の状態
    │   │       └── team_list
    │   │           └── widgets
    │   │               ├── announce_bar.dart
    │   │               └── team_list_tile.dart
    │   ├── group
    │   ├── setting
    │   └── version
    ├── utils # 共通で使用する処理やextension
    │   ├── async_value_extension.dart
    │   ├── snackbar.dart
    │   └── text_controller_extension.dart
    └── widgets # 共通で使用するウィジェット
        ├── app_bottom_sheet.dart
        ├── google_banner_ad.dart
        └── swipe_bar.dart

リリースしてみての感想

まずは認知&インストールをしてもらうことが大切だと考え、優先して対策を考えました。

  • ストア画像のA/BテストでCVR改善
  • キーワードを選定でASO対策

なかなか難しいですが、最近ようやく「チーム分け」というワードでで上位に来るようになってきました。(上位といっても5~10番目くらいですが。)

次は数値的な内容です。
リリースして4ヶ月~5ヶ月でインストール数は現時点で850インストールくらいとまだまだの数値となっております。
日々ダウンロードが伸びているわけではなく、たまにダウンロードが伸びている日がある程度です。(この辺は分析必要だと考えています。)
DAUは多い時で30〜40くらいです。

日本語、韓国語、英語、中国語の4言語で多言語化を行っており、
テリトリ別でみると、意外にも韓国語が全体の20%のダウンロード数を占める結果となっております(iPhoneのユーザーの割合が多いからかも?)

さいごに

ありがたいことにユーザー様からアプリ改善のご意見や感謝のメールもいただくこともあります。
これからもそういったフィードバックをモチベーションにしてアプリをより良いものにしていきたいと思っています。
アプリの良さを保ちつつ、コンセプトが崩れない程度に意見はどんどん取り入れていきたいです💪
(なんでも意見を取り入れないことも大切です)

最後まで読んでいただき、本当にありがとうございました🙇🏻‍♂️

Discussion