Hyunjun Kim

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
給与計算式の変数(ハードコードではなく設定値)
異常検知ルール
5
異常検知ルール

⚡ アイデア→リリース

約9日

  1. 2026-09-08

    最初の指示

  2. +9 days

    2026-09-17

    最初の動作ビルド · 最新

アイデア → コアロジックの動作まで約9日(実作業 約5〜7日)。開発中、未デプロイ

01

アイデア・課題

最初の指示:「NFCタグとサーバーを組み合わせた勤怠アプリを、画面・機能の設計から細かく詰めよう。Flutter なら iOS も Android も両方いけるよね?」 原文(韓国語):「NFC 태그와 서버를 조합한 근태 앱을, 화면·기능 설계부터 디테일하게 끝내자. 플러터면 iOS·안드로이드 둘 다 되지?」

タイの小規模な歯科医院、カフェ、飲食店では勤怠を紙で管理しており、代理打刻や時刻のごまかしが起きやすく、給与計算にも手間がかかります。NFCタグと位置確認で勤怠を正確に記録し、その記録から給与を自動計算するアプリを目指しました。

02

企画と基準

このプロジェクトでは設計そのものが中核です。コードを書く前に、次の内容を設計しました。

  • 4層のセキュリティ:NFC動的トークン(NTAG424 DNA)+Wi-Fi信号(補助)+端末バインディング+root化/脱獄の検知
  • 5つの異常検知ルール:重大な違反(例:端末の不一致)のみ即時拒否し、それ以外は記録して管理者の Manual Review に回す
  • 給与計算式はコードではなく設定値に:管理者が画面上で計算式を設定し、安全なパーサーで計算。変数は9つに固定(基本給、残業、深夜、遅刻など)
  • プライバシー(PDPA):GPSと端末IDは一時的な検証にのみ使用し、永続的には保存しない
  • マルチテナント構成(1つのシステムで複数の企業を管理)

Fig. attennfc-02

給与をコードではなく設定値で — 計算式エンジン

管理者画面上で計算式を設定業種別テンプレートから開始

変数9つ(固定)

基本給残業深夜遅刻…
計算安全な数式パーサーハードコードなし
結果給与+リアルタイムの給与見込み
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.)

03

AIへの指示プロセス

Fig. attennfc-direction

AIへの指示プロセス

  1. 01 最初の指示

    上記の基準に沿って、DBスキーマ、状態管理(プロバイダー)、給与計算エンジンを作らせる。

  2. 02 確認したこと

    生成されたコードをレビューし、繰り返し起きる問題を見つけました — NFCライブラリのAPI不一致、company_id の欠落、フォルダの重複、給与変数が9つではなく5つしかない、GPS座標のハードコード。

  3. 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
AttenNFC — attennfc 04 mobile dark

04

つまずいた点と解決方法

  • 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

生成されたコードが基準に届いていなかった

  1. 症状

    生成されたコードが基準に届いていなかった — 給与変数が9つ中5つのみ、NFCライブラリのAPI不一致、GPS座標のハードコード、フォルダの重複。

  2. AIへの説明

    自分の基準(9つの変数、動的トークンのAPI、座標は設定値に)に照らして、ずれを1つずつ指摘した。Original내가 세운 기준(변수 9종·동적 토큰 API·좌표 설정값)을 조목조목 대조해 어긋난 지점을 지적.
  3. AIの最初の試み

    部分的な修正では同じ問題が繰り返し再発した。

  4. 自分が気づいた点

    SQLスキーマ・RLS・設計は残しつつ、問題のあるコードはパッチではなく書き直しが必要だった。

  5. 解決

    一からの書き直しを指示し、flutter analyze で問題ゼロを確認。

  6. 再発防止

    AIの出力は「基準チェックリスト」で確認し、ずれていれば書き直すルールを適用する。

05

成果

  • 4層のセキュリティと5つの異常検知ルールを、管理者の確認フローとともに設計・実装
  • ハードコードのない給与計算式エンジン(9つの変数、業種別テンプレート、リアルタイムの給与見込み)
  • インターネットがなくても時計の改ざんを検出できるオフライン時刻検証
  • コアロジックの第1段階が完了(flutter analyze で問題ゼロ)— 開発中

06

振り返り

このプロジェクトで最も重要だったのは、AIの出力を鵜呑みにせず、基準と照らし合わせてやり直しを指示する力でした。セキュリティや給与計算のように「間違いが許されない」領域ほど、まず基準を文書に書くことが答えでした。次は設計済みの画面をつなぎ、パイロット事業者で検証します。

その他の画面 · 8枚

AttenNFC — オンボーディング — Google Stitch でデザイン
オンボーディング — Google Stitch でデザイン
AttenNFC — 業種別テンプレート
業種別テンプレート
AttenNFC — 給与計算式エンジン
給与計算式エンジン
AttenNFC — 月次の給与精算
月次の給与精算
AttenNFC — 個人別の給与調整
個人別の給与調整
AttenNFC — 異常検知の確認キュー
異常検知の確認キュー
AttenNFC — 休日カレンダー
休日カレンダー
AttenNFC — 監査ログ
監査ログ

管理画面は 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個、スクリーンリーダー用ラベルはなし。

    改善計画 → リリース時ではなく、画面ごとに翻訳ファイルとラベルを追加していく。

次のプロジェクト →

AI動画ストリーミングプラットフォーム

Cloudflare のエッジ上で完結する完全サーバーレスの動画ストリーミングサービス — AIによる10言語の自動翻訳と暗号資産でのサブスクリプション決済を、AIと1人で構築

AI動画ストリーミングプラットフォーム desktop screenshot
AI動画ストリーミングプラットフォーム mobile screenshot
ケーススタディを見る
履歴書 PDF(英語)