はじめに
私は普段、iOSエンジニアとして仕事をしています。
最近は個人開発でFlutterを触る機会が増えました。
3歳と5歳の娘がいて、自由に使える時間は多くありません。
開発できるのは、だいたい寝かしつけが終わった後の1〜2時間です。
この記事では、以下についてまとめます。
- Flutterをどうやって学び始めたか
- 実際に使っている状態管理の構成
- 講座学習から個人開発にどうつなげたか
- 子育て中でも続けられた理由
子育て中エンジニアの現実
子育てをしながらの個人開発は、こんな状況です。
- 開発時間は細切れ
- 途中で中断されることが多い
- 夜は子どもと一緒に寝落ちすることもある
- 土日の日中は、基本的に子どもたちと遊んでいる
実際、「今日は何もしない日」も普通にあります。
夜、絵本を読んで添い寝しているうちにそのまま寝てしまい
頭の中で画面や処理をなんとなく想像して終わる日もありました。
Flutterをどうやって学び始めたか(Udemy Business)
会社で Udemy Business に入っていたため、Flutter学習はUdemyの講座から始めました。
選んだ講座は、
- TODOアプリを作る内容
- Firebase連携まで扱っている
というものです。
なぜこの講座を選んだのか
- TODOアプリは基本的な仕組みを一通り学べる
- Firebase連携をまとめて理解できる
- 個人開発につなげやすいと感じた
講座 → 個人開発で感じた「足りなかった点」
講座を一通り終えたあと、そのままでは個人開発には足りないと感じた部分がありました。
特に大きかったのが、状態管理です。
また、
- Firebaseの設計
- Firestoreのルール
- UI構成や機能追加
については、講座の内容をベースにしつつ、自分で考えて実装しました。
実際に作っているアプリ
現在、個人開発で作っているのは ログ管理アプリ です。
- 自分が実際に使いたい
- 日々の記録を残したい
という目的で作っています。
iOS開発と比べて、Flutterが「ハマった」理由
個人開発という文脈では、iOS(UIKit)開発と比べて、Flutterには「今の自分に合っている」と感じる点がいくつかありました。
UI実装に入るまでが速い
iOS開発では
- StoryboardやAutoLayoutを考える
- ViewControllerの役割を分ける
- 表示確認までに少し時間がかかる
といった準備が必要になることが多いです。
一方、Flutter開発では
- Widgetを並べる
- すぐ画面が見える
- 試しながら調整できる
という流れで、「とりあえず触ってみる」までのハードルが低いと感じました。
ホットリロードによる試行錯誤の速さ
Flutterのホットリロードは、レイアウト調整や文言修正のテンポが非常に良いです。
寝かしつけ後の限られた時間では
- 少し修正
- すぐ確認
- ダメなら戻す
という細かい試行錯誤がしやすく、この体験が個人開発の継続につながりました。
マルチプラットフォームを前提に考えなくていい
個人開発では
- iOSだけ作るか
- Androidも作るか
を悩むことがあります。
Flutterでは最初から
「とりあえず1つ作れば両方動く」
という前提で考えられるため、判断コストが下がったのも大きなポイントでした。
「今の生活リズム」との相性が良かった
育児がある生活では
- 毎日同じ時間が取れない
- 集中できる時間も短い
という前提があります。
Flutterは
- 再開しやすい
- 文脈を思い出しやすい
- 小さな変更でも達成感がある
ため、今の生活リズムと相性が良かったと感じています。
実際に使っている状態管理の構成
個人開発では、Flutterの標準的な仕組みを中心に状態管理しています。
StatefulWidget + setState()
- フォーム入力
- ローディング表示
- 画面内の一時的なフラグ
を StatefulWidget と setState() で管理しています。
StreamBuilderでFirebaseのストリームを監視
Firebase Auth や Firestore などは StreamBuilder を使っています。
StreamBuilder(
stream: FirebaseAuth.instance.authStateChanges(),
builder: ...
)
シングルトンでアプリ全体の共有状態を管理
- UserCodeManager
- 設定情報
- 一時的なキャッシュ
状態管理でなぜProviderやRiverpodを使っていないのか
- 状態の規模がまだ小さい
- 学習コストを増やしたくない
- まずは作ることを優先したい
iOSエンジニアとして役立った知識
- UIを小さく分割する感覚
- 画面責務を意識する考え方
作業時間とモチベーションの話
- 夜:1〜2時間
続けられた理由は、
- 自分が実際に使いたいアプリだった
- リリース目標日を立てていた
- 学習そのものが目的だった
からです。
おわりに
子育てをしながらの個人開発は簡単ではありません。
それでも
少しずつでも前に進める環境
があると、続けられます。
育児でなかなか時間が取れない中でも
「何か作りたいけど手がつけられていない」
「始めても長続きしない」
そんな方の判断材料になれば嬉しいです。





