店舗運営をしていると、毎週の出勤確認は地味に面倒です。
スタッフに翌週の出勤希望を聞く。TimeTreeに予定が入っているか確認する。入っていない人を探す。個別に催促する。最後に日付ごとの出勤者をまとめる。
一つひとつは小さい作業です。ただ、毎週続くと管理する側の負担はかなり大きい。
これまでは出勤管理にTimeTreeを使っていました。TimeTree自体が悪いわけではありません。予定共有ツールとしては便利です。
ただ、現場で使っていると別の問題が出ます。
TimeTreeを開く習慣がない人。通知が来ても後回しにする人。性格的に細かい入力が苦手な人。そういうスタッフは、決められた日時までに出勤予定を入力できないことがありました。
そのときに出てくるのが「出勤を入れ忘れた」という言い訳です。
では、入れ忘れを防ぐにはどうすればいいのか。
考えた結論はシンプルでした。
確実に日常で使うツールに、出勤確認そのものを組み込む。
そして、未入力ならその場所で催促の通知が来るようにする。
そこで今回は、普段ほぼ確実に使うLINEグループを入口にして、翌週の出勤希望を回収・集計・催促できるBotを作りました。
僕は本職のエンジニアではありません。ただ、店舗運営の現場で何が面倒なのかは分かります。
その現場感をもとに、AIを使いながら要件整理、設計、実装、LINE Developers設定、Supabase設計、Vercelデプロイまで進めました。
何を作ったか
作ったのは、LINEグループ内で使える週次出勤確認Botです。
スタッフはLINEグループで 登録リンク や 入力リンク と送るだけで、出勤入力用の画面を開けます。管理者は 集計 と送るだけで、翌週の日付ごとの出勤者一覧を確認できます。
まだ入力していない人は 未入力 で確認でき、毎日12時には未入力者へ自動でメンション催促も送られます。
LINEトークだけで複雑なカレンダー画面を再現するのではなく、入口・通知・集計はLINEグループ、入力だけはLIFFフォームに分けました。
この分け方にしたことで、スタッフ側は「LINEから開いて押すだけ」、管理者側は「LINEで集計と送るだけ」というシンプルな運用にできます。
なぜLINEにしたか
今回一番大事にしたのは、機能の多さではなく「現場で使われるかどうか」です。
出勤管理ツールとして多機能なものを作ることはできます。時間入力、承認フロー、希望順位、履歴管理など、入れようと思えばいくらでも入れられます。
ただ、最初から機能を盛ると、入力する側が面倒になります。
今回の目的は、シフト管理システムを作ることではありません。
まずは「翌週の出勤希望を確実に回収すること」です。
だから入力対象は翌週の月曜から土曜に固定しました。日曜日は店休日の想定なので外しました。時間入力もやめました。
出勤するか、休みか、未定か。必要ならメモを書く。
それだけに絞っています。
LINEで管理し、未入力ならLINE上で通知が来る。この形にすれば「入れ忘れた」はかなり通りにくくなります。
LINEは日常的に見る。そこに未入力通知が来る。それでも入力しないなら、単なる入れ忘れではなく、見て見ぬふりに近い状態になります。
出勤確認の仕組みを作るというより、言い訳が生まれにくい運用を作る。そこが今回の一番の狙いでした。
技術的にやったこと
表面上は「LINEでリンクを返すBot」に見えますが、実際には小さな業務システムとして作っています。
使った主な技術は、Next.js、React、TypeScript、Supabase、LINE Messaging API、LIFF、Vercel、Vercel Cronです。
スタッフ登録では、LIFFからLINEのIDトークンを取得し、LINEユーザーIDとグループIDをSupabaseに保存します。同じ人が再登録しようとした場合は、重複登録ではなく「登録済み」として扱うようにしました。
出勤入力では、翌週の営業日ごとに 出勤 / 休み / 未定 を選びます。翌週に1回も出勤を選ばなかった場合は、出勤なし理由を必須にしました。
管理者が 集計 と送ると、日付ごとの出勤者、メモ、未入力者、翌週出勤なしの人と理由がLINEに返ります。
また、LINE Webhookの署名検証、Webhookイベントの重複処理防止、LIFFリンクの署名付きstate、Cron APIのBearer token保護も入れています。
単なる自動返信ではなく、実運用で使う前提の最低限の守りも入れた構成です。
非エンジニアがAIを使って作って感じたこと
今回やってみて感じたのは、非エンジニアでも「現場の課題を具体的に説明できる」なら、AIを使ってかなり実用に近いものを作れるということです。
ただし、AIに丸投げすれば勝手に良い業務システムができるわけではありません。
入力対象を今週にするのか翌週にするのか。日曜日を含めるのか。時間入力を必須にするのか。催促は個別DMなのかグループメンションなのか。1週間出勤しない人の理由を必須にするのか。
こういう判断は、技術の問題というより運用の問題です。
AIは実装を手伝ってくれます。でも、何を作るべきか、どこまで作るべきか、現場で使われる形は何かを決めるのは人間側です。
僕はコードだけを見ていたわけではありません。
これをスタッフが本当に使うか。管理者が毎週ラクになるか。入れ忘れの言い訳を潰せるか。
そこを見ながら、AIと一緒に形にしていきました。
この経験で対応できること
今回の経験をもとに、以下のような案件に対応できます。
- LINE公式アカウントBot構築
- LINE LIFFフォーム開発
- 店舗向け業務効率化システム
- 小規模チーム向けの出勤・シフト確認ツール
- 未入力者への自動催促Bot
- Supabaseを使った軽量な業務アプリ
- Vercel Cronを使った定期通知システム
- Webhook連携を含むサーバレスアプリ開発
「普段使っているLINEで業務を回したい」
「スタッフに新しいアプリを入れさせずに入力・集計をしたい」
「毎週の確認作業や催促を減らしたい」
こういう課題に対して、現場運用に合わせた小さな業務Botを設計・実装できます。
今回作ったものは、華やかなサービスではありません。
でも、現場で毎週発生する面倒を減らすための道具です。
僕にとっては、非エンジニアがAIを使ってどこまで実務に踏み込めるのかを試す、かなり実感のある開発になりました。