Flutterの理解もだいぶ深まったので、
売れる規模のアプリを作ってみたいと思います
作るもの
リバーシ(オセロ)
白と黒のコマを使って遊ぶあのゲームです
一番遊んでもらえるリバーシアプリを目指します
作業ログ
1日目 | 作ることにしました |
2日目 | リバーシが簡易版で動きました |
3日目 | コンピュータがイカサマをしてきます |
4日目 | コンピュータと正々堂々勝負できました でも弱い |
5日目 | コンピュータを少し強くしました |
6日目 | マルチプレイに対応しました |
7日目 | 遊べるボードを増やしました キャラクターにアニメーションを付けました |
8日目 | ヒントを増やしました |
9日目 | ゲームの結果を表示しました |
10日目 | コンピュータを待たせるようにした |
11日目 | アニメーションの設定に失敗しました |
12日目 | StateMachineでアニメーションの設定をしました 失敗しました |
13日目 | RiveのStateMachineでアニメーションが動くようになりました |
14日目 | animated_backgroundで背景にアニメーションを設定した |
15日目 | flutter_neumorphicで部分的にニューモフィズムUIを取り入れました |
16日目 | デザインを統一しました |
17日目 | lottieでアニメーションを設定しました |
18日目 | 結果画面に順位を表示しました |
開発環境
IDE | IntelliJ | VisualStudioでもいいですが使い慣れてるIntelliJを使います |
フレームワーク | Flutter | iOSとAndroidを同時開発するため |
言語 | Dart | ネイティブの処理は使う予定がないのでKotlinやSwiftは使いません Null Safetyなコードにしたいので2.12.0以上を使います |
コード管理 | github | |
CICD | 未定 | CodeMagicかgithub actionの予定 |
使う技術
ステート管理 | provider | Riverpodも良さそうでしたが理解できているProviderを使います |
ユニットテスト | test | |
Widgetのテスト | flutter_test | |
インテグレーションテスト | flutter_driver | |
アニメーション | rive | |
ユニークなIDの作成 | uuid | |
アニメーションの背景 | animated_background | Apache 2.0 |
ニューモーフィズムのUI | flutter_neumorphic | MIT |
フォント | Yusei Magic | |
アニメーション | lottie | MIT |
アーキテクチャ
MVVMとDDDを意識した感じ
ViewModelでView側に通知すると不要な通知がScreenやWidgetにされる可能性があるので、
Domain層から通知する仕組みにしました

Screen | 1つの画面を構成するScreen。Widgetの組み合わせで作る |
Widget | アプリケーションバーや、ドロワーなど画面の要素ごとに作る |
ViewModel | ボタンをタップしたときの挙動をここに書く |
UseCase | ビジネスロジックを書く 今回はこの層いらないかもしれない |
Repository | Domainの登録や変更をする APIを叩いたり、DBの情報を取得するときはここを経由する |
Entity | ドメインロジックを持つ 可変で識別IDが同じ時のみ同一 今日が誕生日かなどはこの層で判定する |
Value | 値は不変。値が同じものなら同一とみなせる ex) 男や女という性別の情報など |
コメント
スパイダーもつくってほしいです!