Git ブランチで「安全網」を張りながら新機能を実装した話 〜月謝袋アプリ v1.11.0 開発記〜

目次

はじめに

先日リリースした「月謝袋アプリ」v1.11.0 で、待望の レッスン編集機能 を追加しました。
今回の開発は、私にとって個人的に「初めて Git ブランチをちゃんと活用した」案件でした。

データを壊すリスクのある機能だっただけに、慎重に進めたいと考えて、これまで以上に 安全策を意識した進め方 をしました。同じように個人開発で「機能追加が怖い」と感じている方の参考になれば嬉しいです ✨


なぜ慎重になったのか

レッスン編集機能は、見た目はシンプルですが、内部的には3つの場所のデータを同時に扱います。

  1. Firestore のレッスンレコード(日時・時間)
  2. Google カレンダーのイベント(連携している場合)
  3. 月謝の支払い記録(これだけは絶対に触らない)

特に3つ目の月謝データ。これを誤って壊したら、生徒さんの支払い履歴が消えてしまう可能性があります。先生方が長年積み上げてきた大切な記録です。

「もし何か間違えたら、すぐ元に戻せる状態にしておきたい」

そう考えて、今回は以下のような開発フローを採用しました。


安全策その1:作業ブランチを切る

これまでの私は、main ブランチで直接コードを書いて、できたらコミット、という単純なやり方でした。

でも今回は、機能ごと専用のブランチを作成しました。

git checkout -b feature/lesson-edit

これで「main(本流)はずっと安全なまま」「実験は支流でやる」という状態が作れます。

イメージ図にするとこんな感じです。

main ────────●────────────●────  ← 安全な本流
              \          /
               ●─●─●─●─●  feature/lesson-edit
                          (ここで自由に実験)

万が一何かを壊しても、

git checkout main
git branch -D feature/lesson-edit

これだけで「無かったこと」にできます。心理的に本当に楽になりました。


安全策その2:段階的に実装する

機能をいきなり全部実装するのではなく、3段階に分けて、各段階で動作確認を挟みました。

Stage 1:UIだけ実装(データには触らない)

  • 編集ボタンとダイアログを表示するだけ
  • 「保存」を押しても何もしない
  • まず「見た目」だけ確認できる安全な状態を作る

Stage 2:保存処理を追加(慎重に)

  • Firestore 更新
  • 月またぎ警告ダイアログ
  • Google カレンダー同期

Stage 3:UX の磨き上げ

  • 警告ダイアログに「変更前」「変更後」の日付を表示
  • 完了通知に更新後の日時を含める

各段階で動作確認をすることで、もし問題があってもどこで起きたかすぐ特定できる状態を作りました。


安全策その3:架空の生徒でテスト

これは超基本ですが、改めて大事だなと感じました。

実際の生徒さんのレッスンデータでテストすると、もし何かあった時に取り返しがつきません。なので、アプリ上に「バナナさん」という架空の生徒を作って、その人のレッスンで全テストを行いました。

✅ 時間だけ変更(10:00 → 11:00)
✅ 日付だけ変更(24日 → 28日)
✅ 月をまたぐ変更(2月 → 3月)→ 警告ダイアログ
✅ 警告のキャンセル動作
✅ 警告の続行動作
✅ バナナさんの月謝履歴が無傷であることを確認 ← 一番重要!

特に最後のテスト。レッスンを編集した後に、わざわざ月謝スタンプの画面に行って「履歴がちゃんと残っているか」を目視確認しました。データ保護の最終チェックです。


結果として無事完了

すべてのテストをクリアした後、main ブランチにマージしてリリースまで進めました。

git checkout main
git merge feature/lesson-edit
git push origin main

「Fast-forward」というメッセージを見た時の安心感、なかなかのものでした。

何より、作業中ずっと「いつでも戻れる」という安心感があったのが大きかったです。これまで main で直接作業していた頃の「失敗できない」というプレッシャーから解放されました。


学んだこと

今回の経験で、Git ブランチの本当のありがたさが分かりました。

ブランチは「コードを管理する仕組み」というより、「精神的な安全網」だった。

これに尽きます。

個人開発だと「自分一人だから main で直接でも別にいいや」と思いがちですが、「自分一人だからこそ、自分を守るために」ブランチを使うんだなと実感しました。


✨ 月謝袋アプリ v1.11.0:レッスン編集機能の紹介

ここからは少しだけアプリの宣伝をさせてください 🙏

ピアノ・ギター・ヨガ・英会話など、月謝制の教室を運営している先生方なら、こんな経験ありませんか?

生徒さんから急に「来週のレッスン、日にち変更できますか?」と連絡が…

これまでの月謝袋アプリでは、こういう時:

  1. レッスン一覧から該当レッスンを 削除
  2. 上のメニューからレッスンを 新規登録

という二度手間が必要でした。実は私自身が普段からこの方法でやっていて、「もっとスムーズにできたら…」とずっと思っていたんです。

v1.11.0 からは、レッスンリストの ✏️ ボタンをタップするだけで、日付や時間を直接変更できます。

しかも、

  • 📅 Google カレンダーも自動で更新(削除→再作成じゃなくて、ちゃんと更新)
  • ⚠️ 月をまたぐ変更には警告ダイアログ(月謝管理との整合性を守るため)
  • 🛡️ 月謝の支払い記録は絶対に触らない設計(データ保護を最優先)

7言語(日本語・英語・スペイン語・韓国語・繁体字・簡体字・フランス語)に対応しています。


おわりに

レッスンの日程変更って、本当によくありますよね。生徒さんの体調、お仕事の都合、家族のイベント…。先生としては柔軟に対応してあげたいけど、毎回「削除して再登録」だと手間がかかる。

そんな小さなストレスが、今回のアップデートで少しでも軽くなれば嬉しいです 🎵

今回も最後まで読んでいただきありがとうございました!


記事中のGit手順は、初心者の方でも真似できるように具体的に書きました。同じように個人開発で「失敗が怖い」と感じている方の背中を、ほんの少しでも押せたら嬉しいです。

Flutter #個人開発 #Git #ブランチ運用 #月謝袋アプリ #indiedev

目次