8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

3歳と5歳の娘を寝かしつけた後、Flutterで個人開発して学んだこと 〜iOSエンジニアがFlutterにハマった理由〜

Last updated at Posted at 2025-12-16

はじめに

私は普段、iOSエンジニアとして仕事をしています。
最近は個人開発でFlutterを触る機会が増えました。

3歳と5歳の娘がいて、自由に使える時間は多くありません。
開発できるのは、だいたい寝かしつけが終わった後の1〜2時間です。

夜のリビング.png

この記事では、以下についてまとめます。

  • Flutterをどうやって学び始めたか
  • 実際に使っている状態管理の構成
  • 講座学習から個人開発にどうつなげたか
  • 子育て中でも続けられた理由

子育て中エンジニアの現実

子育てをしながらの個人開発は、こんな状況です。

  • 開発時間は細切れ
  • 途中で中断されることが多い
  • 夜は子どもと一緒に寝落ちすることもある
  • 土日の日中は、基本的に子どもたちと遊んでいる

寝落ち.png

実際、「今日は何もしない日」も普通にあります。
夜、絵本を読んで添い寝しているうちにそのまま寝てしまい
頭の中で画面や処理をなんとなく想像して終わる日もありました。


Flutterをどうやって学び始めたか(Udemy Business)

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_1022001_9459b33f-8bd6-270a-3ec6-9a5451ba1f65.avif

会社で Udemy Business に入っていたため、Flutter学習はUdemyの講座から始めました。

選んだ講座は、

  • TODOアプリを作る内容
  • Firebase連携まで扱っている

というものです。

なぜこの講座を選んだのか

  • TODOアプリは基本的な仕組みを一通り学べる
  • Firebase連携をまとめて理解できる
  • 個人開発につなげやすいと感じた

講座 → 個人開発で感じた「足りなかった点」

講座を一通り終えたあと、そのままでは個人開発には足りないと感じた部分がありました。

特に大きかったのが、状態管理です。

また、

  • Firebaseの設計
  • Firestoreのルール
  • UI構成や機能追加

については、講座の内容をベースにしつつ、自分で考えて実装しました。


実際に作っているアプリ

現在、個人開発で作っているのは ログ管理アプリ です。

  • 自分が実際に使いたい
  • 日々の記録を残したい

という目的で作っています。

返済ログ.png


iOS開発と比べて、Flutterが「ハマった」理由

個人開発という文脈では、iOS(UIKit)開発と比べて、Flutterには「今の自分に合っている」と感じる点がいくつかありました。

UI実装に入るまでが速い

iOS開発では

  • StoryboardやAutoLayoutを考える
  • ViewControllerの役割を分ける
  • 表示確認までに少し時間がかかる

といった準備が必要になることが多いです。

一方、Flutter開発では

  • Widgetを並べる
  • すぐ画面が見える
  • 試しながら調整できる

という流れで、「とりあえず触ってみる」までのハードルが低いと感じました。


ホットリロードによる試行錯誤の速さ

Flutterのホットリロードは、レイアウト調整や文言修正のテンポが非常に良いです。

寝かしつけ後の限られた時間では

  • 少し修正
  • すぐ確認
  • ダメなら戻す

という細かい試行錯誤がしやすく、この体験が個人開発の継続につながりました。


マルチプラットフォームを前提に考えなくていい

個人開発では

  • iOSだけ作るか
  • Androidも作るか

を悩むことがあります。

Flutterでは最初から

「とりあえず1つ作れば両方動く」

という前提で考えられるため、判断コストが下がったのも大きなポイントでした。


「今の生活リズム」との相性が良かった

育児がある生活では

  • 毎日同じ時間が取れない
  • 集中できる時間も短い

という前提があります。

Flutterは

  • 再開しやすい
  • 文脈を思い出しやすい
  • 小さな変更でも達成感がある

ため、今の生活リズムと相性が良かったと感じています。


実際に使っている状態管理の構成

個人開発では、Flutterの標準的な仕組みを中心に状態管理しています。

StatefulWidget + setState()

  • フォーム入力
  • ローディング表示
  • 画面内の一時的なフラグ

StatefulWidgetsetState() で管理しています。


StreamBuilderでFirebaseのストリームを監視

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_1022001_e8018e11-84e6-aabd-a42b-a7d891b079d4.avif

Firebase Auth や Firestore などは StreamBuilder を使っています。

StreamBuilder(
  stream: FirebaseAuth.instance.authStateChanges(),
  builder: ...
)

シングルトンでアプリ全体の共有状態を管理

  • UserCodeManager
  • 設定情報
  • 一時的なキャッシュ

状態管理でなぜProviderやRiverpodを使っていないのか

  • 状態の規模がまだ小さい
  • 学習コストを増やしたくない
  • まずは作ることを優先したい

iOSエンジニアとして役立った知識

  • UIを小さく分割する感覚
  • 画面責務を意識する考え方

作業時間とモチベーションの話

  • 夜:1〜2時間

続けられた理由は、

  • 自分が実際に使いたいアプリだった
  • リリース目標日を立てていた
  • 学習そのものが目的だった

からです。


おわりに

子育てをしながらの個人開発は簡単ではありません。
それでも

少しずつでも前に進める環境

があると、続けられます。

達成.png

育児でなかなか時間が取れない中でも
「何か作りたいけど手がつけられていない」
「始めても長続きしない」
そんな方の判断材料になれば嬉しいです。

8
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?