記事一覧に戻る

出席管理システムの進化 v2.6→v3.3

PythonFlaskKivyアーキテクチャ

2か月で6,300行

AI駆動開発(ChatGPT + Claude Code)を活用し、6,300行の大規模システムを2か月で完成させました。従来の開発手法では6か月以上かかるプロジェクトです。

要件定義フェーズでAIと壁打ちし、構造化された仕様書を作成。実装フェーズではClaude Codeによるリアルタイム実装とトライ&エラーの高速サイクルで開発しました。

システム構成

  • デスクトップアプリ(Python + Kivy): QRコード読み取りによる出席記録
  • Webアプリ(Flask + Bootstrap): 月次レポートの編集・確認
  • Google連携: Sheets APIでデータ管理、Drive APIでバックアップ
  • レポート生成: ReportLab(PDF)、openpyxl(Excel)
  • プリンター連携: Brother P-touch Editor 5.4

v2.6からv3.3への進化

v2.6: 基本機能

QRコードで出席を記録し、Google Sheetsに送信する基本的な機能を実装。

v3.2: Web版レポートエディタ追加

Flaskベースのレポートエディタを追加。ブラウザ上でレポートのプレビュー・編集ができるようになり、運用の効率が大幅に向上しました。

v3.3: スタンドアロン版

ユーザーから「インターネット接続が不安定な環境でも使いたい」というフィードバックを受け、Google API不要のスタンドアロン版を開発。ローカルCSVでデータ管理し、セットアップも簡単になりました。

アーキテクチャ変更から学んだこと

v3.3の開発で最も大きな学びは、外部サービスへの依存を最小化する設計の重要性です。

最初からGoogle連携版とスタンドアロン版の両方を想定して設計していれば、後からの移行がもっとスムーズだったはずです。この経験から、コア機能を外部依存から切り離す「ローカルファースト」の設計思想を意識するようになりました。

また、ユーザーフィードバックの重要性も実感しました。開発者の想定とユーザーの実際の環境は異なることが多く、実際に使ってもらうことで初めて見えてくる要件があります。

技術的なポイント

  • Kivy によるクロスプラットフォームデスクトップアプリ開発
  • ReportLab でのPDF生成(日本語フォント埋め込み、レイアウト調整)
  • openpyxl でのExcel出力(セルの書式設定、条件付きフォーマット)
  • Flask による軽量Webアプリケーション開発
  • Google Sheets API でのリアルタイムデータ同期と権限管理