はじめに
私は開発に関してはにわか同然です。
今回はファイルをタグで分類・検索・移動・コピーできるCLIツールを作ってみます。ぶっちゃけWindows等のosの機能でよくねとなりますが初開発なのでちょうどいいと思いました。関数を一旦作ってみました。初開発なので至らぬ点がたくさんあると思いますがたくさんのフィードバックをお待ちしております。例として写真のデータを使います。
1. 概要
- 目的: ファイルへのタグ付け、検索、移動、コピーを直感的なCLIコマンドで実行し、ファイル管理を効率化する。
- 開発言語: C# (.NET)
- 開発手法: アジャイル開発(MVPから段階的に実装・拡張)
2. ターゲットユーザー
- 自分自身: 開発効率の向上、実践的なC#およびCLIツール設計の習得。
- エンジニア・ITに関わる人: 開発者、インフラ担当者、PC周りのファイル管理を効率化したい人。
3. 共通仕様 & アーキテクチャルール
-
参照形式の並び順:
tag→ext→dir -
引数の構造化: 関数形式かつ明確な引数名(
tag,ext,dir等)で入力を受け付ける。 -
省略時の挙動: 検索や処理の基準ディレクトリ(
dir)が省略された場合は、カレントディレクトリ(実行中のフォルダを自動で対象とする。 -
設定ファイル管理: OSの拡張属性に頼らず、対象ディレクトリ内に専用の管理ファイル(例:
tags.json)を置くことで、タグ情報を安全かつ独立して管理する。 - 省略性: すべての引数(tag, ext, dir)は省略可能(単体または任意の組み合わせで指定可能)
- 記述形式: インライン引数スタイル
各単語の意味
- tag: 対象のタグ名(ファイルの分類や目印)
- ext: 拡張子(ファイルの種類を指定、例: ".png", ".txt")
- dir 対象の基準ディレクトリ(検索や処理を行うフォルダのパス)
- run: アクションの種類("add" で付与、"remove" で削除)
- to_dir: 移動先またはコピー先の宛先パス
コマンド一覧と仕様
1. search(検索・表示系)
- 概要: 指定した条件にヒットするファイルを検索し、リスト形式で表示する。
- 仕様:
search(tag="写真",ext=".png",dir="C:/path/to/dir")
2. tag(タグ管理系)
- 概要: 条件に一致するファイルに対して、タグの付与(add)や削除(remove)を行う。
- 仕様:
tag(run="add",tag="写真",ext=".png",dir="C:/path/to/dir")
tag(run="remove",tag="写真")
3. move(ファイル移動系)
- 概要: 条件に一致したファイルを、指定した宛先ディレクトリへまとめて移動する。
- 仕様:
move(tag="写真",ext=".png",dir="C:/path/to/dir"),
to_dir="C:/path/to/dir")
4. copy(ファイルコピー系)
- 概要: 条件に一致したファイルを、指定した宛先ディレクトリへまとめて複製する。
- 仕様:
copy(tag="写真",ext=".png",dir="C:/path/to/dir"),
to_dir="C:/path/to/dir")