さとまたwiki
💻

実践: CLIツール作成

ファイル整理ツールをNode.jsで作る

作るもの

ダウンロードフォルダなどの散らかったファイルを、拡張子別に自動整理するCLIツールを作ります。

# 使用例

$ organize ~/Downloads

Organizing files in /Users/you/Downloads...
📁 Created: images/ (23 files)
📁 Created: documents/ (15 files)
📁 Created: videos/ (5 files)
📁 Created: archives/ (8 files)
✅ Done! Organized 51 files.

1 プロジェクト初期化

# Claude Codeへの指示

"Node.js + TypeScriptでCLIツールを作成して。
名前: file-organizer
ビルドツール: tsup
CLI引数パーサー: commander
package.jsonのbinフィールドも設定して。"

2 基本ロジック実装

# メイン機能

"ファイル整理のメインロジックを実装して。
機能:
- 指定ディレクトリのファイルをスキャン
- 拡張子別にフォルダを作成(images, documents, videos, audio, archives, others)
- ファイルを適切なフォルダに移動
- 進捗をコンソールに表示
src/organizer.tsに実装。"

3 CLI インターフェース

# CLI実装

"commanderを使ってCLIを実装して。
コマンド: organize <directory>
オプション:
- --dry-run: 実際には移動せずプレビュー
- --config <file>: カスタム設定ファイル
- --verbose: 詳細ログ
src/cli.tsに実装。"

4 設定ファイル対応

# カスタマイズ機能

"JSON設定ファイル対応を追加して。
設定内容:
- カテゴリ名のカスタマイズ
- 拡張子とカテゴリのマッピング追加/変更
- 除外パターン
デフォルト設定も用意して。"

設定ファイル例:

{
  "categories": {
    "images": ["jpg", "png", "gif", "webp"],
    "documents": ["pdf", "doc", "docx", "txt"],
    "code": ["js", "ts", "py", "go"]
  },
  "exclude": ["*.tmp", ".DS_Store"]
}

5 仕上げ

# 完成させる

"以下を追加して完成させて:
- エラーハンドリング(権限エラー、存在しないディレクトリ等)
- カラー出力(chalk使用)
- npm link でグローバルインストールできるように
- README.mdも作成"

応用アイデア

日付別整理

ファイルの作成日/更新日で年月フォルダに振り分け

重複検出

ハッシュ値で重複ファイルを検出・削除

監視モード

フォルダを監視して自動整理(chokidar使用)

Undo機能

移動履歴を保存して元に戻せるように

この記事はClaude Opus 4.6によって作成されました