Caio Lins Home

勤怠をチャットで整理するようになった

2026年10月 約4分

月末の入力作業

毎月末、まず普段の勤務時間、10:00から19:00までを入れたCSVを作っていました。それからカレンダーを開き、どの日に休んだかを確認。その日をCSVから削除し、休暇はジョブカンで手動で申請します。最後に、整理したCSVを使ってcalendar2jobcanを実行していました。

使っていたのは、自分でフォークしたcalendar2jobcanです。

Raycast向けのジョブカン拡張機能も作り始めましたが、完成しないままアーカイブしました。ログインの流れと、アクセス先の記録は残っていました。

ある晩、その二つの古いプロジェクトを持ってClaudeと作業を始めました。そこでできたのが、AIエージェントからジョブカン勤怠管理を操作する非公式のオープンソースツール、jobcan-agentです。翌日には、自分の勤怠で使いました。

Claudeと作った一晩

古いコードを読むところから始め、Claudeと一晩かけて何度もやり取りしました。

ジョブカンとの通信には、通常のHTTPリクエストで十分でした。ブラウザを自動操作する必要はありません。まず、ジョブカンのページを模したテスト用の環境で、ロジックとテストを書きました。そのあと実際のサービスに読み取り専用で接続し、書き込みは最後に有効にしました。

できたのはMCPサーバーです。Claudeでも、MCPに対応した別のエージェントでも、ジョブカンの操作に使えます。SlackやGoogle Calendarと組み合わせるスキルも用意し、休暇の連絡や不在の予定作成に使えるようにしました。

翌日、仕事の合間に

翌日、ほかの仕事の合間に、チャット画面から次のことをしました。

  • 一か月分の勤怠を入力。15日分、出退勤の記録は計30件。
  • 自分のチャット投稿とカレンダーをジョブカンと照合し、伝えたのに申請していなかった休暇を3日分発見。
  • 4時間の時間休として登録していた半日休暇を、一日休暇に変更。
  • 新しい休暇を申請し、チームの休暇連絡用チャンネルのルールに沿って投稿。カレンダーには不在の予定を作成。

書き込みは毎回、変更案を確認してから承認しました。

出てきたバグ

ジョブカンの時間選択は、03:00から始まります。値が7の選択肢に表示されるのは10です。この値をそのまま時刻として扱ったため、最初の時間休申請は3時間ずれました。選択肢の表示を使って時刻を変換するように直しました。

休暇申請の取り下げは、GETリクエストの普通のリンクでした。「GETしか送らない」だけでは、読み取り専用になりません。今は、どのモードでも、あらかじめ決めたページ以外にはアクセスしないようにしています。

取り下げたあとにも問題がありました。ジョブカンがクライアントの知らないページへリダイレクトし、それを失敗と判断したため、代わりの申請が送られませんでした。約1分間、その日は休暇がない状態になりました。今は書き込み後の未知のリダイレクト先を追わず、一覧から結果を確認します。

手動で入力した打刻は承認待ちになり、その間、勤務表には時刻が表示されません。もう一度実行すると、一か月分を丸ごと二重に入力するところでした。承認待ちと分かる日は、今はスキップします。

Google Calendarの不在の予定には説明文を付けられないので、ジョブカンの申請IDは予定のタイトルに入れています。

どのバグも、修正前にテストにしました。最終的に、模擬ページに対するユニットテストは427件。実際のサービスを読み取り専用で確認するverifyコマンドも用意しました。

自分の設定は手元に

ジョブカンの設定は会社ごとに違います。普段の勤務時間、休暇の伝え方、誰をメンションするかは、自分のマシンにあるプリセットファイルに書いています。リポジトリには、僕の会社の情報を入れていません。

書き込みはすべて、表示された変更案を僕が承認するまではドライランです。認証情報はOSのキーチェーンに保存し、チャットにもモデルにも渡しません。

休暇申請に理由が必須で、僕が何も指定しなかった場合は、前回の申請理由を再利用します。そのことはプレビューにも表示されます。

まだ初期段階

今のところ試したのは、一社のジョブカン環境だけです。作ったときのセッションで、自分が使った範囲です。

READMEには、テスト済みのことと未確認のことを、英語・日本語・ポルトガル語で書いています。エンジニアではない人によるセットアップ、新しいセッションでスキル名を指定して使うこと、ほかの会社の設定、シングルサインオンは、まだ試していません。

次は、その人の働き方を質問しながら、プリセットを作ってくれるセットアップを用意したいです。

jobcan-agentは非公式で、ジョブカンを提供するDONUTSとの関係はありません。READMEでも、利用前に自社のジョブカン管理者へ確認するよう案内しています。規約はジョブカンと契約企業の間のもので、自動化への言及はないものの、サービスの「解析」を禁止しているためです。

コードは公開しています。Issueやプルリクエストも歓迎です。特に、どうテストしたかが分かるものは助かります。