2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SaaS 禁止の会社でも使える。「今週ヤバいタスク出して」と AI に頼める TODO 管理を、Markdown だけで作ってみた

2
Last updated at Posted at 2026-07-23

はじめに

僕の勤め先もそうなのですが、会社の PC って統制やセキュリティ規制で Jira や Notion みたいな SaaS のタスク管理ツールが使えないこと、ありませんか。

かといって社内公式のツールは微妙に使いにくく、結局 TODO.md を一枚置いて済ませる。最初はそれでいいんですが、タスクが 20 個を超えたあたりで見通しが悪くなってきて、「今週何が期限切れなのか」を目視で探すようになります。

それなら、外部に一切通信しない・データはただの Markdown・依存ゼロのタスク管理ツールを自分で作ればいいのでは、ということで作りました。ついでに、データがただのファイルであることを活かして、Claude Code に「今週ヤバいタスク出して」「これ完了にしといて」と頼めるようにしてあります。

作ったもの

Taskboard — localhost だけで完結するカンバン型のタスク管理ダッシュボードです。
https://github.com/t-tonton/local-taskboard
カンバンボード

タスクごとに GitHub の Issue 風の単一ページもあります。

タスク詳細ページ

起動はこれだけです。

node server.mjs
# → http://localhost:5757

npm install すら不要です。依存パッケージはゼロで、Node.js が入っていれば動きます。

一番のポイント: データがただの Markdown

DB はありません。データソースは tasks/*.md(1 ファイル = 1 タスク)です。

---
number: 2
title: ログイン画面のバグ修正
status: doing        # todo | doing | done
due: 2026-07-23
tags: [bug, frontend]
assignee: 佐藤
project: webapp
created: 2026-07-21
---

パスワード入力欄でエラーメッセージが二重に出る問題を直す。

## メモ

2026-07-23: 再現手順を特定。バリデーションが二重登録されていた

frontmatter がメタ情報、本文の前半が「概要」、## メモ 見出し以降が進捗ログです。UI から編集しても、エディタでファイルを直接編集しても同じです。

これの何が嬉しいかというと:

  • grep できる。過去のタスクを横断検索するのに専用の検索機能が要らない
  • git 管理できる。社内 Git にコミットすればバックアップも履歴も付いてくる
  • ツールを捨ててもデータが残る。ただの Markdown なので、このツールをやめても読める

機能はこれだけ

個人用なので、必要十分に絞っています。

  • カンバン(Todo / Doing / Done、ドラッグで移動)
  • 統計タイル(未完了 / 進行中 / 期限切れ / 直近 7 日で完了。クリックでそのままフィルターになる)
  • フィルター(期限・担当者・プロジェクト)。プロジェクトはタブで看板ごと切り替え
  • タスクの自動採番(#1, #2, …)と、タスクごとの URL・単一ページビュー
  • 削除は確認ダイアログなしで即実行 + トーストの「元に戻す」方式

逆に、複数人での同時編集・認証・公開機能は最初から捨てています。チームで使いたくなったら素直に SaaS を使うべきで、これは「SaaS が使えない人」のためのツールなので。

AI エージェントから読み書きできるようにした

個人的に一番気に入っているのがここです。リポジトリに AGENTS.md を置いて、ファイル形式の不変条件と HTTP API の仕様を AI エージェント向けに書いてあります

これで Claude Code などに、こういう頼み方ができます。

  • 「◯◯というタスク追加しといて」→ POST でタスクが増える
  • 「#3 完了にして、進捗メモも書いといて」→ status 変更 + ## メモ に追記
  • 「今週期限切れそうなタスク出して」→ API を叩いて要約してくれる

データソースがただのファイル + ローカル API なので、人間と AI が同じデータを同じ作法で触れます。

そして、ここまで来ると気づくのですが、タスクの管理を頼めるということは、タスクの実行そのものを頼めるということです。

タスクは Claude Code が動いているのと同じマシンのファイルなので、「#3 やっといて」と言えば、エージェントが概要欄を読んで作業に着手し、終わったら status を done にして進捗メモに結果を書き残す、まで一気通貫でやれます。タスク票がそのまま AI への作業指示書になり、消化まで自動で閉じるわけです。人間の仕事は、着手可能な粒度でタスクを書くことと、上がってきた結果を確認することに寄っていきます。

ちょっとした工夫として、AGENTS.md には「タスク登録前に、その内容だけで実行に着手できるか点検しろ」というルールも書いてあります。「電話するタスク入れといて」みたいな曖昧な依頼だと、AI が「誰に・何の用件ですか?」と聞き返してくれます。未来の自分(や、実行を任される AI)が読んで着手できないタスクは、登録できても意味がないので。

実装の小ネタ

作りながらいくつか学びがあったので置いておきます。

依存ゼロでも意外と困らない。 サーバーは node:http の素の HTTP サーバー + 自前の frontmatter パーサー(正規表現数行)です。YAML の高度な記法を捨てて「値は 1 行プレーンテキストのみ」と割り切れば、パーサーは 30 行で済みます。

<dialog> 要素が便利。 タスク詳細のドロワーはネイティブの <dialog> で、Esc で閉じる・フォーカストラップ・閉じたら元の位置にフォーカスが戻る、が全部標準で付いてきます。ただし CSS で display: flex を当てると hidden 属性が効かなくなる罠があるので、[hidden] { display: none !important; } はお守りとして必要でした。

UI の状態は URL に載せる。 フィルターや選択中タスクを ?project=webapp&task=… のようにクエリに持たせると、ブックマーク・共有・ブラウザバックが全部タダで手に入ります。ローカルツールでもこれはやる価値がありました。

AI に組ませるなら「上書き事故」に気をつける。 開発中、「フォーカス中の入力欄は再描画で上書きしない」という最適化が原因で、別タスクを開いても前のタスクのタイトルが残って自動保存され、全タスクのタイトルが同じ名前に伝染する事故を起こしました。自動保存 UI では「同じオブジェクトの再描画」と「別オブジェクトへの切り替え」を区別しないと危ない、という教訓です。

今後やりたいこと(高度化の妄想)

データがただのファイル + ローカル API なので、拡張の余地はいろいろあります。

  • MCP サーバー化 — 今は AGENTS.md + HTTP API ですが、MCP 化すれば Claude Desktop など他の AI クライアントからも同じ作法で触れるようになります
  • 朝の定例ブリーフィング — cron で Claude Code をヘッドレス起動して、「今日の期限・積み残し・昨日完了したもの」の要約を毎朝ファイルに吐かせる。秘書の朝会です
  • 議事録からのタスク自動起こし — 会議メモの Markdown を渡して「アクションアイテムを登録しといて」。AGENTS.md の具体性チェックがあるので、曖昧な項目は聞き返してくれるはず
  • コミットとの紐付け — git hook で「#12 対応」を含むコミットを検知して、タスク #12 の進捗メモに自動追記

そして本当は Slack 連携の ChatOps がやりたい。「タスク積んどいて」と bot に投げて、昼に「進捗どう?」と聞かれたい。……ただ、それが許される環境なら僕はそもそも最初から Jira とか Github Issue を使っています。統制の壁の内側でどこまで快適にやれるか、が工夫のしどころです。

GitHub

👉 https://github.com/t-tonton/local-taskboard

クローンして node server.mjs するだけで動きます。

おわりに

「統制で SaaS が使えない」という制約は一見ネガティブですが、おかげで「データを全部自分のファイルシステムに置く」という設計に振り切れて、結果的に AI エージェントとの相性がすごく良くなりました。

ローカルのプレーンテキストは、人間にとってもエージェントにとっても一番扱いやすいデータベースなのかもしれません。同じ境遇の方の参考になれば嬉しいです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?