0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人開発が増えすぎて迷子になる前に ― 8カテゴリ台帳とsymlinkツリー

0
Last updated at Posted at 2026-06-23

「Claude Code環境」シリーズです。前回はClaude Codeを無人で自律改善させる autopilotを書きましたが、そちらで登場した「自動化スクリプト群」の整理が済んでいないと autopilot に何を渡すかも迷います。今回はプロジェクトの分類と場所を管理する仕組みの話です。

いまの台帳 ~/PROJECTS.md を数えると、Webアプリ・Chrome拡張・iOSアプリ・デジタル商品・受託・AI基盤・PC自動化・OSS評価合わせて40本超が並んでいます。ここまで増える前に「8カテゴリ + 台帳 + symlinkツリー」という体制を作りました。この記事はその設計の話です。

困りごと:プロジェクトは「ある」のに「どこにある」か分からない

~/dev/~/Projects/~/digital-products/~/oss-trial/ に散らばったディレクトリを、Claude Codeが毎回 find ~ で探していました。探す時間だけでなく、状態(live/stalled/retired)・本番URL・収益化の有無も散逸していて、「あのアプリどうなってたっけ」を聞くたびに文脈から再構成していました。

台帳を1ファイルに集約して「聞いたらすぐ答えが出る」状態を作ることが目標です。

8カテゴリの切り方

~/PROJECTS.md の定義表をそのまま引きます。

コード 定義
01-webapp デプロイして使うWebアプリ/Webゲーム
02-chrome-ext Chrome拡張(MV3)+専用バックエンドAPI
03-ios-app iOSネイティブ/配信ラッパー
04-digital-product noteマネタイズ・デジタル商品・コンテンツ販売物
05-client-work 業務委託・受注・会社repo(第三者owner remote = push注意)
06-claude-tooling Claude/AIエージェント自体に作用する基盤・スキル・連携
07-pc-automation PC自動化・スクレイパー・CLIスクリプト
08-oss-eval 外部OSSの評価・実験・サンドボックス

カテゴリが増えると意味が薄れるので、新設は「8つのどれにも本質的に収まらない時だけ」としています。

判定は名前でなく提供形態で決めます。たとえば autolike-license-server はAPI名称ですが、Chrome拡張のライセンス検証専用バックエンドなので 02-chrome-ext に入れています。名前で判断すると「API → サーバー → 01-webapp」と誤分類します。

核心:なぜ実体dirを動かさないか

「整理 = フォルダ移動」と思いがちですが、個人開発では絶対パスへの依存が3箇所に潜んでいます。

  1. .vercel/project.json — Vercelとのリンクに絶対パスが入る。移動すると vercel deploy が別プロジェクトに向く。
  2. launchd plistProgramArguments に書いたスクリプトパスが実パスで登録される。移動するとcronが死ぬ。
  3. git worktreegit worktree add で作ったworktreeのメタデータが .git/worktrees/<name>/gitdir に実パスを持つ。

実体ディレクトリの物理移動は厳禁。.vercel・launchd plist・git worktreeが絶対パス依存で壊れます。「分類」はsymlink+台帳で表現します。

運用:台帳+symlinkで分類を表現する

実体は触らず、~/Desktop/All-Projects/<カテゴリ>/ にsymlinkを張るだけです。

# 新規プロジェクトを分類する(実体は動かさない)
ln -sfn ~/dev/takugumi ~/Desktop/All-Projects/01-webapp/

# 確認
ls ~/Desktop/All-Projects/01-webapp/
# takugumi -> ~/dev/takugumi  のように出る

ln -sfn-f は既存symlinkの上書き、-n はリンク先がディレクトリでも末尾に潜り込まない指定です。この2フラグがないと二重ネストになります。

台帳 ~/PROJECTS.md は1行1プロジェクトで、パス・状態・収益化・本番URL・注意を持ちます(現在は現在は8カテゴリ × 合計40本超)。Claude Codeはこのファイルを読めば即座に「就活トラッカーのiOSアプリはどこ?」「live状態のものは?」を答えられます。

Claudeに分類させる手順

~/.claude/skills/auto/project-categorization/SKILL.md に手順を書いてあり、新規プロジェクトを作るたびに自動発火します。手順の核はこれだけです。

新規プロジェクト着手時、コードを書き始める前に:

1. 何を作るか確定 → 上の8カテゴリのどれかを選ぶ
   (提供形態で決める。名前や第一印象でなく)
2. 既存8つに収まらない時のみ 09-<kebab> を新設
3. 実体を適切な親dir に作る
   Webアプリ/拡張 → ~/dev か ~/Projects
   商品 → ~/digital-products
   OSS評価 → ~/oss-trial
4. ln -sfn <実体パス> ~/Desktop/All-Projects/<カテゴリ>/
5. ~/PROJECTS.md の該当カテゴリ表に行を追加

CLAUDE.md にも「新規プロジェクトを作る時は着手前に必ず8カテゴリへ分類する」と書いてあるため、Claudeは指示しなくても分類から始めます。

検証コマンド

# symlinkが正しく張れているか
ls ~/Desktop/All-Projects/01-webapp/

# 台帳に追記されているか
grep "takugumi" ~/PROJECTS.md

# client-workの場合:機密がignoreされているか
git -C ~/dev/<project> check-ignore credentials.json

踏んだ落とし穴

auto-skill の Pitfalls 節にまとめてあるものから引きます。

  • 名前で分類して誤カテゴリautolike-license-server(Chrome拡張バックエンド)を「サーバー = 01-webapp」と入れかけた。package.json や README を読んで提供形態で判断する。
  • 05-client-work の秘密鍵漏洩リスクtoc-seo/credentials.json(GCP鍵)が会社repo直下に裸で置かれていた。client-work を作るたびに .gitignore に秘密鍵パターンが入っているか確認する。
  • 第三者ownerのremoteにpushababa-pr/*fujibee/*05-client-work 扱いでpush厳禁。git remote -v でownerを確認してからpushする。
  • カテゴリを増やしすぎる — 迷ったら無理やり8つに収める。新設カテゴリは「8つのどれにも本質的に入らない」時だけ。

まとめ

  • プロジェクトが増えると「ある」のに「どこにある」「状態は何か」が分からなくなる
  • 実体dirは絶対に動かさない(.vercel・launchd・git worktreeが壊れる)。分類はsymlink+台帳で
  • 8カテゴリは提供形態で決める。名前で判断すると誤分類する
  • 台帳 ~/PROJECTS.md + ~/Desktop/All-Projects/<カテゴリ>/ symlinkツリーが正典
  • CLAUDE.mdに「着手前に分類」と書けば、Claudeが毎回自動でやってくれる

次回は、こうして整理したプロジェクト群を毎朝Mermaid図に自動生成してDesktopに置く仕組みを書きます。


Lily@bokuwalily)― 個人開発者。Claude Code で自動化基盤を組みながら、iOSアプリやWebサービスを量産しています

皆さんの ❤️ やシェアが励みになります!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?