Skills: ファイル操作スキル

最終更新:2026-08-31

ファイルはコードの担い手——ファイルを操作できない Skill は、手のないデザイナーのようなものです。


1. ファイル操作ツールボックス

(1) 読み込み操作

操作 ツール 使用例
単一ファイル読み込み Read 特定ファイルのレビュー
ファイル名検索 Glob ファイル範囲の特定
ファイル内容検索 Grep コードパターンの位置特定

(2) 書き込み操作

操作 ツール リスク 使用例
精密編集 Edit 🟡 バグ修正、小規模調整
作成/上書き Write 🔴 新規ファイル、完全書き直し
バッチ修正 Edit + ループ 🟡 リネーム、一括置換

(3) 実行操作

操作 ツール 使用例
コードフォーマット Bash(prettier) コードスタイルの統一
スクリプト実行 Bash(python) データ処理、バッチ操作
Git 操作 Bash(git) バージョン管理

2. ファイル操作モード

(1) 読み取り専用分析モード

ファイルを一切変更せず、分析結果のみを出力:

YAML
---
name: code-metrics
description: "コードメトリクス分析"
tools:
  - Read
  - Grep
  - Glob
---
MARKDOWN
## 実行フロー
1. Glob でプロジェクトファイル範囲を特定
2. Grep でコードパターンを集計(クラス、関数、TODO)
3. Read でキーファイルを深く分析
4. メトリクスレポートを出力、ファイルの変更は行わない

(2) 安全な変更モード

変更前にバックアップし、変更後に検証:

MARKDOWN
## 安全な変更ルール
1. 現在のファイル内容を読み込む
2. 何を変更すべきか分析する
3. Edit で精密に変更、対象行のみ修正
4. Bash でテストを実行して検証
5. テストが失敗した場合、問題を説明しロールバックを提案

(3) バッチ操作モード

MARKDOWN
## バッチリネームのフロー
1. Glob で対象ファイルリストを取得
2. すべての変更計画をリストアップ
3. Edit で1つずつ変更を実行
4. Bash でフルテストスイートを実行して検証

3. 検索戦略

(1) 検索先行の原則

TEXT 📖 参照専用
間違った方法:全ファイルを読み込む → 1つずつチェックする
正しい方法:検索で位置を特定 → 的を絞って読み込む

(2) 一般的な検索パターン

検索対象 Grep パターン
関数定義 `def \w+ function \w+`
TODO コメント TODO|FIXME|HACK 技術的負債を見つける
セキュリティリスク eval(|exec(|subprocess 危険な呼び出しを見つける
型定義 class \w+|interface \w+ 型構造を見つける
テストファイル test_|_test|\.spec\. テストファイルを見つける

(3) 検索と読み込みの連携

100%
graph TD
    A[Glob: ファイルリストを特定] --> B[Grep: キーパターンを検索]
    B --> C{対象を発見?}
    C -->|はい| D[Read: 深く読み込む]
    C -->|いいえ| E[検索範囲を拡大]
    D --> F{修正が必要?}
    F -->|はい| G[Edit: 精密に修正]
    F -->|いいえ| H[分析結果を出力]

4. ファイル操作の実践

▶ 例:プロジェクトマイグレーション Skill

Alice はプロジェクトを JavaScript から TypeScript に移行する必要があります:

YAML
---
name: js-to-ts-migration
description: "JS ファイルを TS に移行"
tools:
  - Read
  - Write
  - Glob
  - Grep
  - Bash
---
MARKDOWN
## マイグレーションフロー
1. Glob ですべての .js ファイルを見つける
2. 各ファイルについて:
   a. 内容を読み込む
   b. 依存関係とエクスポートを分析
   c. Write で対応する .ts ファイルを作成
   d. 型アノテーションを追加
3. Bash で tsc --noEmit を実行して検証
4. マイグレーションレポートを出力

Bob は言います:「ファイル操作で最も怖いのは誤削除や誤変更——検索で位置を特定し、精密に編集し、事後に検証する。この3ステップが不可欠だ。」


❓ よくある質問

Q Edit と Write のどちらを選ぶべきですか?
A 既存ファイルの修正には Edit(行レベルで精密)を優先してください。新規ファイルの作成には Write を使用します。大きなファイルの一部を書き換えるために Write を使わないでください。
Q バッチ操作でファイルを見落とすのを防ぐには?
A まず Glob ですべての対象ファイルをリストアップし、範囲を確認してから1つずつ操作してください。各ステップで進捗を記録し、中断後も再開できるようにします。
Q 大きなファイルはどう扱えばいいですか?
A Grep で対象の行番号を特定し、Read に行番号範囲を指定して該当部分だけを読み込みます。ファイル全体を読み込んでコンテキストを浪費するのは避けてください。

📖 まとめ


📝 練習問題

  1. 基礎問題(難易度⭐):読み取り専用分析 Skill を作成し、プロジェクト内の TODO/FIXME の出現回数と分布を集計してください。
  2. 応用問題(難易度⭐⭐):安全な変更 Skill を作成し、Python 関数に型アノテーションを自動追加し、変更後にテストを実行してください。
  3. チャレンジ問題(難易度⭐⭐⭐):バッチマイグレーション Skill を作成し、CommonJS の require を ES Module の import に変換し、循環依存などのエッジケースも処理してください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%