AttenNFC 企画者の設計をAIで実装 — タイの小規模事業者向け、NFC+GPS勤怠管理と給与の自動計算
開発中 ⚡ アイデア→リリース 約9日
2026.09 – 現在(開発中) / 1人(AIをチームとして活用) / iOS · Android · Web
課題 タイの小規模事業者は紙で勤怠を管理しており、代理打刻・時刻のごまかし・給与計算の手間が生じている。
担当 企画 · アーキテクチャ/セキュリティ設計 · AIへの開発指示
使用技術 Flutter · Dart · Riverpod (code-gen) · Supabase · NFC (NTAG424 DNA) 成果
アイデア → コアロジックの動作(開発中) 約9日 アイデア → コアロジックの動作(開発中)
打刻の検証セキュリティ 4層 打刻の検証セキュリティ
給与計算式の変数(ハードコードではなく設定値) 9 給与計算式の変数(ハードコードではなく設定値) ⚡ アイデア→リリース
約9日
+9 days
2026-09-17
最初の動作ビルド · 最新
2026-09-08
最初の指示
+9 days 2026-09-17
最初の動作ビルド · 最新
アイデア → コアロジックの動作まで約9日(実作業 約5〜7日)。開発中、未デプロイ
最初の指示:「NFCタグとサーバーを組み合わせた勤怠アプリを、画面・機能の設計から細かく詰めよう。Flutter なら iOS も Android も両方いけるよね?」
原文(韓国語):「NFC 태그와 서버를 조합한 근태 앱을, 화면·기능 설계부터 디테일하게 끝내자. 플러터면 iOS·안드로이드 둘 다 되지?」
タイの小規模な歯科医院、カフェ、飲食店では勤怠を紙で管理しており、代理打刻や時刻のごまかしが起きやすく、給与計算にも手間がかかります。NFCタグと位置確認で勤怠を正確に記録し、その記録から給与を自動計算するアプリを目指しました。
このプロジェクトでは設計そのものが中核 です。コードを書く前に、次の内容を設計しました。
4層のセキュリティ :NFC動的トークン(NTAG424 DNA)+Wi-Fi信号(補助)+端末バインディング+root化/脱獄の検知
5つの異常検知ルール :重大な違反(例:端末の不一致)のみ即時拒否し、それ以外は記録して管理者の Manual Review に回す
給与計算式はコードではなく設定値に :管理者が画面上で計算式を設定し、安全なパーサーで計算。変数は9つ に固定(基本給、残業、深夜、遅刻など)
プライバシー(PDPA) :GPSと端末IDは一時的な検証にのみ使用し、永続的には保存しない
マルチテナント構成(1つのシステムで複数の企業を管理)
Fig. attennfc-02
給与をコードではなく設定値で — 計算式エンジン
管理者 画面上で計算式を設定 業種別テンプレートから開始
計算 安全な数式パーサー ハードコードなし
結果 給与+リアルタイムの給与見込み
Admins set the formula on screen and a safe parser computes it. Nine fixed variables, industry templates and live estimates. (The settings screen is still in development, so this shows the structure.) Fig. attennfc-direction
AIへの指示プロセス
01 最初の指示
上記の基準に沿って、DBスキーマ、状態管理(プロバイダー)、給与計算エンジンを作らせる。
02 確認したこと
生成されたコードをレビューし、繰り返し起きる問題を見つけました — NFCライブラリのAPI不一致、company_id の欠落、フォルダの重複、給与変数が9つではなく5つしかない、GPS座標のハードコード。
03 修正
SQLスキーマ、RLS、設計上の決定は残し、問題のあるコードは一から書き直すよう指示しました。書き直し後、flutter analyze が「No issues found」と報告することを自分で確認しました。
実際の指示(抜粋)
› まず全画面をデザインで揃えてから作り始めよう。同時に進めると混乱するから。Original 디자인을 전 화면 다 뽑은 뒤에 개발을 시작하자 — 병행하면 꼬여.› 強制的にブロックするより、怪しいものは管理者が確認できるようにしよう。Original 완전히 막기보다, 이상하면 관리자가 검토하게 하자.Fig. attennfc-03
AIの出力を基準と照合して修正する
Before
Only 5 of 9 payroll variables NFC library API mismatch Hard-coded GPS · duplicated folders 私の指示(要旨)
“ 設計とデータモデルは残して、問題のあるコードは一から書き直して”
Original 설계·데이터 모델은 유지하고, 문제 코드는 처음부터 다시 작성해After
✓ 給与変数9つをすべて反映 ✓ flutter analyze — No issues found
iOSでのWi-Fi検証の制約 :iOSはWi-Fiへのアクセスを制限しているため、補助チェックが失敗することがあります。その場合はGPSの範囲検証のみにフォールバックし、「Wi-Fiチェックをスキップ」と記録して監査できるよう指示しました。
オフラインでの時刻改ざん :端末の時計を変更する不正に対抗するため、最後のサーバー時刻と経過時間を組み合わせて正しい時刻を推定し、大きなずれは管理者の確認に回すロジックを指示しました。
Fig. attennfc-05
5つの異常検知ルール — ブロックではなく振り分け
入力 打刻の試行
判定 5つの異常検知ルール
正常 記録
異常 記録+管理者による確認 Manual Review
重大 即時拒否 例:端末の不一致
「強制的にブロックするより、怪しいものは管理者が確認できるようにしよう。」重大な違反のみ即時拒否し、それ以外は記録したうえで管理者が確認します。Original “완전히 막기보다, 이상하면 관리자가 검토하게 하자.” Fig. attennfc-06
オフライン時刻検証(TrueTime)
A 最後のサーバー時刻
+ B 端末の経過時間 時計の変更に影響されない値
= A + B 推定した正しい時刻
端末の時計を変更して時刻をごまかすケースに備え、最後のサーバー時刻と経過時間から正しい時刻を推定します。 Case 01
生成されたコードが基準に届いていなかった ! 症状
生成されたコードが基準に届いていなかった — 給与変数が9つ中5つのみ、NFCライブラリのAPI不一致、GPS座標のハードコード、フォルダの重複。
› AIへの説明
自分の基準(9つの変数、動的トークンのAPI、座標は設定値に)に照らして、ずれを1つずつ指摘した。Original 내가 세운 기준(변수 9종·동적 토큰 API·좌표 설정값)을 조목조목 대조해 어긋난 지점을 지적. ↺ AIの最初の試み
部分的な修正では同じ問題が繰り返し再発した。
◎ 自分が気づいた点
SQLスキーマ・RLS・設計は残しつつ、問題のあるコードはパッチではなく書き直しが必要だった。
✓ 解決
一からの書き直しを指示し、flutter analyze で問題ゼロを確認。
⟲ 再発防止
AIの出力は「基準チェックリスト」で確認し、ずれていれば書き直すルールを適用する。
4層のセキュリティ と5つの異常検知ルール を、管理者の確認フローとともに設計・実装
ハードコードのない給与計算式エンジン(9つの変数 、業種別テンプレート、リアルタイムの給与見込み)
インターネットがなくても時計の改ざんを検出できるオフライン時刻検証
コアロジックの第1段階が完了(flutter analyze で問題ゼロ)— 開発中
このプロジェクトで最も重要だったのは、AIの出力を鵜呑みにせず、基準と照らし合わせてやり直しを指示する力でした。セキュリティや給与計算のように「間違いが許されない」領域ほど、まず基準を文書に書くことが答えでした。次は設計済みの画面をつなぎ、パイロット事業者で検証します。
その他の画面 · 8枚
オンボーディング — Google Stitch でデザイン 業種別テンプレート 給与計算式エンジン 月次の給与精算 個人別の給与調整 異常検知の確認キュー 休日カレンダー 監査ログ 管理画面は Google Stitch(AIデザインツール)で設計し、Flutter での実装は進行中です。
(01) Review
Honest Review 開発者が作っていたら?
● 強み2
スピード — 7日間で技術スタック確定、バックエンド移行、基盤構築
最初の1週間で Firebase → Supabase への切り替えと、全面的な書き直しを1回、1人で実施。
ドキュメント — この段階としては一般的な仕様書より深い設計
PDPAに基づく90日間の保存期間、5つの異常検知ルール、9つの給与変数、プラットフォームの制約をコーディング前に文書化。
◐ 同等3
アーキテクチャ — クリーンアーキテクチャ構成
機能ごとに data / domain / presentation、リポジトリのインターフェース、依存性注入。
可読性 — クリーン
明確なコメントと命名、デバッグ出力の消し忘れなし。
パフォーマンス — 計測するには時期尚早
実際の負荷はまだなし。基本(アニメーションの破棄、定数ウィジェット)は実装済み。
↗ 次のステップ(改善中)4
機能の完成度 — 実装は設計の約10〜15%
先に深く設計したため、現在はモックデータで4画面が動く段階です。
改善計画 → 「ログイン → サーバーで検証された打刻1往復」に絞って完成させ、その後に拡張。
セキュリティ — 設計済み、実装はこれから
4層の検証とGPSの最小限の保存(PDPA)は設計済み。サーバー側のチェックはコアフローの一部として実装中です。
改善計画 → パイロット運用の前に、承認と検証を完全にサーバー側へ移行。
テストとCI — 未導入、リモートリポジトリも準備中
給与計算式はお金に直結するにもかかわらず、テストがありません。
改善計画 → まず給与計算式のテスト、その後プライベートなリモートリポジトリとCI。
多言語対応とアクセシビリティ — タイ語優先の設計、翻訳ファイルは未作成
ハードコードされた英語の文字列が31個、スクリーンリーダー用ラベルはなし。
改善計画 → リリース時ではなく、画面ごとに翻訳ファイルとラベルを追加していく。
Chapter 04
Chapter takeaway
このプロジェクトから得た教訓
01 「間違いが許されない」領域ほど、コードより先に基準を文書で決める。02 AIが書いたコードも基準と照合し、ずれていれば書き直しを指示する。03 実運用では、強制的なブロックより「記録+管理者による確認」のほうが安全な方針になりうる。次のプロジェクト →
Cloudflare のエッジ上で完結する完全サーバーレスの動画ストリーミングサービス — AIによる10言語の自動翻訳と暗号資産でのサブスクリプション決済を、AIと1人で構築
© 2026 Hyunjun Kim. Next.js・Tailwind CSS・Motion で、AIと一緒に作りました。
Back to top ↑