はじめに
こんにちは、未経験エンジニア1年目です!
4月から未経験でエンジニアになって、研修を2ヶ月やった後にFlutterの案件に入って約8ヶ月。
そしたら次の案件で 「Flutterできるの、私だけ」 という状況に…。
しかも 案件はまだ始動していない = 要件定義から関わる可能性大。
「え、私1人でやるの…?」
「要件定義って何すればいいの?」
「コードは書けるけど、プロジェクトの進め方とか全然分からない…」
って感じで不安だったので、
「案件参画前に何を準備すればいいのか?」を ひたすら調べてみた。
1. 要件定義ってめちゃくちゃ大事らしい
まず、調べてみて分かったのは、
「要件定義で何を決めるかで、開発の進めやすさが全然違う」 ということ。
要件定義とは 「何を作るかを決めるフェーズ」 のこと。
ここを適当にすると、「開発フェーズで仕様変更が連発して地獄を見る」 らしい。
そこで、Flutterエンジニアとして最初に確認すべきこと をリストアップしてみた👇
項目 | 事前に確認すること |
---|---|
UIデザイン | デザインツールはFigma?Flutter標準Widgetで作る? |
APIの仕様 | REST?GraphQL?Firestore?認証はJWT? |
状態管理 | Riverpod?Bloc? |
データの保存 | ローカルDBはHive?SQLite?Firestore? |
対応プラットフォーム | iOS/Androidだけ?Webやタブレットも対応? |
ネイティブ機能 | カメラ・通知・位置情報とか使う? |
開発が始まってから「仕様が曖昧です」ってなると辛いので、最初に確認すべきポイントを洗い出しておくのが大事とのこと。
2. プロジェクトの技術スタックを確認しないと詰むらしい
Flutterエンジニアが私1人 = 「技術選定を丸投げされる可能性がある」 ということ。
調べた感じ、最初にこれを決めておくと後で楽になるらしい 👇
Flutterのバージョン(2.x?3.x?)
状態管理 → Riverpod?Bloc?Provider?
API通信 → Dio?http?GraphQL?
ローカルデータ管理 → Hive?SQLite?Firestore?
パッケージの選定 → 認証、課金、通知など
ここが曖昧なままだと、開発途中で「やっぱりこれに変えよう」ってなって詰む らしいので、
最初に「こういう方針でいいですか?」と確認しておくのが大事っぽい。
3. Flutterの基本を復習しないと詰むらしい
「ちょっとFlutterのコードが書ける」レベルだと、
実装フェーズに入ってから詰まるポイントが結構ある らしい。
状態管理(Riverpod, Bloc)
Navigator 2.0(ルーティング)
非同期処理(async/await, Future, Stream)
Dartの基礎(mixin, extension, typedef など)
テスト(Unitテスト, Widgetテスト)
「ここを事前に勉強しといたほうがいい」っていうのを見たので、
公式ドキュメントやQiita記事を読んで サンプルコードを1つ書いてみる くらいはやっておこうと思った。
4. プロジェクトのディレクトリ構成を事前に確認すべきらしい
「いざ開発が始まったときに 「どこに何を置くの?」 ってなりがち」
っていう話を見たので、プロジェクトのディレクトリ構成もチェックしておくといいらしい。
🔹 クリーンアーキテクチャ型
lib/
├── presentation/ ← UI(Widget)
├── domain/ ← ビジネスロジック
├── data/ ← API, DB, Repository
🔹 Feature分割型
lib/
├── features/
│ ├── home/
│ │ ├── home_page.dart
│ │ ├── home_view_model.dart
│ │ ├── home_repository.dart
事前に「どういう構成でやるか決まってますか?」って聞けるようにしておくのがいいとのこと。
5. エラーの調査スキルがないと詰むらしい
「Flutterはエラーにハマると抜け出せなくなることがある」
という話を見かけたので、調査スキルを鍛えるのがめっちゃ大事っぽい。
エラーメッセージをGoogle検索(Stack Overflow, GitHub Issues)
Flutter公式フォーラム or Medium記事を読む
試しに print()
でデバッグしてみる
英語で検索できると情報量が増えるらしいので、英語の検索ワードも練習しておくのがいい っぽい。
まとめ
私みたいに 「Flutter経験8ヶ月で案件1人」 になったら、これをやる!
要件定義に向けて、質問リストを作る
プロジェクトの技術スタックを確認する
Flutterの基礎を復習(状態管理・非同期処理・ルーティング)
エラーの調査スキルを鍛える(Google検索 & GitHub Issues)
チームとのコミュニケーション準備をする
最後に
「私もまだやったことないけど、調べたらこうすればいいらしい!」
実際に参画してみて、「これはマジでやっといてよかった」 と思ったことがあれば、
また記事に追記しようと思う!
同じような状況の人、一緒に頑張りましょう