株式会社ゆめみ Flutter エンジニアコードチェック課題 元のREADME.mdファイルはREADME_original.mdを参照してください。
Flutter: 3.22.0-0.1.pre ルーター: go_router API: retrofit, dio, freezed, json_serializable) DI, 状態管理: riverpod テスト: mockito リント: very_good_analysis
普段から使っているGit-flowを採用して、開発を行いました。 また、IssueやPull Requestなどの機能も用いて開発を行いました。
下記のリンクを参考にクリーンアーキテクチャで開発を行いました。(以前このアーキテクチャの採用経験あり) https://otakoyi.software/blog/flutter-clean-architecture-with-riverpod-and-supabase#heading-4
テストについては、MockitoやRobotパターンを用いて記述しました。
Robotパターンを採用したことで、共通部分の記述を少なくすることができているかと思います。
また、Codecovを導入してカバレッジを確認できるようにしました。
一部テストできない部分は// coverage:ignore
を使用していますが、カバレッジが高くなるように多くテストコードを記述しました。
Googleアプリをpubspec.yamlイメージして開発を行いました。 リポジトリの検索には、既存に存在しているSearchBarやSearchAnchorを用いたことでリッチなアニメーションになっているかと思います。 また、ダイナミックカラーやダークモードなどの対応も行いました。
テスト・リント: .github/workflows/analyze-and-test.yml ビルド・デプロイ: .github/workflows/deploy.yml
GitHub Actionsを使用して、テスト・リント・ビルド・デプロイを行えるようにしました。 また、ジョブやワークフローの分割を適切に行なって並列処理・キャッシュの導入などをすることで素早く完了するようにしました。 GitHub Actionsの時間制限を考慮して、時間のかかるデプロイは条件を使用して無駄なビルドが行われないようにしました。 特にiOSのビルドについてはLinux Runnerよりもかなり高いため、mainブランチでのみ実行するようにしています。 自動でのフォーマットは導入せず、手動でのフォーマットを行うようにしています。
very_good_analysisを使用しました。 個人的にリンターの設定はコードの統一性を高めるために可能な限り厳しくした方が良いと考えているため、この設定を使用しました。
FlutterについてはFlutter Webにおいてホットリロードが機能しなかったため、正しく動作するBeta版に変更しました。 なお、バージョン間での差異があるため、リリースビルド時はStable版・開発時はBeta版のような構成にはしておりません。 詳しくは下記のIssueをご参照ください。 #9
MacBook Air M2 24GB/512GB
Android Studio Iguana | 2023.2.1 Patch 1
Flutter 3.22.0-0.1.pre • channel beta • https://github.com/flutter/flutter.git
Framework • revision 29babcb32a (7 days ago) • 2024-04-03 17:17:04 -0500
Engine • revision 97550907b7
Tools • Dart 3.4.0 (build 3.4.0-282.1.beta) • DevTools 2.34.2