このプロジェクトは、AI(特にコーディングエージェント)と Denoを組み合わせたコード生成の実験場です。Denoプロジェクトにおけるコーディングルールとモードを定義するための設定ファイルを管理し、AIによるコード生成の品質と効率を向上させることを目的としています。
.clinerules と.roomodes が主ない生成物です。
- AI コーディングエージェント(CLINE/Rooなど)のための明確なルールとモードを定義する
- Deno プロジェクトにおけるベストプラクティスを確立する
- 型安全なコード生成と検証の仕組みを提供する
- テスト駆動開発(TDD)のワークフローを AI コーディングに適用する
- アダプターパターンなどの設計パターンを活用した実装例を提供する
コーディングルール定義
- 基本ルール(型と関数インターフェース設計、コードコメント、実装パターン選択)
- Deno 固有のルール(テスト、モジュール依存関係、コード品質監視)
- Git ワークフロー(コミット、プルリクエスト作成)
- TypeScript ベストプラクティス(型使用方針、エラー処理、実装パターン)
実装モード
- スクリプトモード: 一つのファイルに完結した実装
- テストファーストモード: 型シグネチャとテストを先に書く実装
- モジュールモード: 複数のファイルで構成される実装
ユーティリティモジュール
- type-predictor: JSON データから型を予測し、zod スキーマを生成するモジュール
- アダプターパターン実装例: 外部 API との通信を抽象化する実装
- Deno: TypeScript のネイティブサポート、セキュリティ機能、標準ライブラリ
- TypeScript: 静的型付け、型推論、インターフェース
- Zod: スキーマ検証、ランタイム型チェック
- Neverthrow: Result 型によるエラー処理
- Deno 標準テストライブラリ:
@std/expect、@std/testing/bdd - テストカバレッジ計測
- Deno タスクランナー:
deno.json での定義 - GitHub Actions: CI/CD パイプライン
JSONデータから型を予測し、zodスキーマを生成するモジュール。
特徴:
- JSONデータの構造を解析し、型を予測
- 配列、オブジェクト、Record型、列挙型などの高度な型を検出
- zodスキーマの自動生成
- 詳細な型情報の分析機能
使用例:
import{TypePredictor}from"./mod.ts";// インスタンスを作成constpredictor=newTypePredictor();// JSONデータから型を予測してスキーマを生成constdata={name:"John",age:30,scores:[85,92,78],};// スキーマを生成constschema=predictor.predict(data);// スキーマを使用してバリデーションconstresult=schema.safeParse(data);Zod を使用した型安全なコマンドラインパーサーモジュールです。
特徴:
- 型安全: Zodスキーマに基づいた型安全なCLIパーサー
- 自動ヘルプ生成: コマンド構造から自動的にヘルプテキストを生成
- 位置引数とオプションのサポート: 位置引数と名前付き引数の両方をサポート
- サブコマンドのサポート: gitのようなサブコマンド構造をサポート
- デフォルト値: Zodの機能を活用したデフォルト値の設定
使用例:
import{createCliCommand,runCommand}from"@mizchi/zodcli";import{z}from"npm:zod";constcli=createCliCommand({name:"myapp",description:"My CLI application",args:{file:{type:z.string().describe("input file"),positional:true,},verbose:{type:z.boolean().default(false),short:"v",},},});constresult=cli.parse(Deno.args);runCommand(result,(data)=>{console.log(`Processing${data.file}, verbose:${data.verbose}`);});TypeScriptでのAdapterパターンは、外部依存を抽象化し、テスト可能なコードを実現するためのパターンです。
実装パターン:
- 関数ベース: 内部状態を持たない単純な操作の場合
- classベース: 設定やキャッシュなどの内部状態を管理する必要がある場合
- 高階関数とコンストラクタインジェクション:外部APIとの通信など、モックが必要な場合
ベストプラクティス:
- インターフェースはシンプルに保つ
- 基本的には関数ベースを優先する
- 内部状態が必要な場合のみclassを使用する
- エラー処理はResult型で表現し、例外を使わない
| コンポーネント | ステータス | 進捗率 | 優先度 |
|---|
| ルールとモード定義 | 安定 | 90% | 低 |
| type-predictor | 開発中 | 60% | 高 |
| zodcli | 安定 | 100% | 中 |
| アダプターパターン例 | 安定 | 80% | 中 |
| テストインフラ | 安定 | 70% | 中 |
| CI/CD パイプライン | 開発中 | 50% | 中 |
| メモリバンク | 初期段階 | 30% | 高 |
| ドキュメント | 初期段階 | 40% | 高 |
type-predictor の基本機能完成(現在)
- 基本的な型検出と予測
- 基本的な zod スキーマ生成
- 基本的なテストケース
type-predictor の拡張機能(次のフェーズ)
- Record 型、列挙型、ユニオン型の検出
- エッジケースのテスト追加
- パフォーマンスの最適化
実装例の充実(将来)
- 新しい設計パターンの実装例
- モジュールモードの詳細な実装例
- ユースケースの例の追加
TypeScriptコードのコールグラフを生成するツールです。
使用例:
deno run -A ts-callgraph/cli.ts scripts/callgraph-sample.ts --format function-summary
- 完全なドキュメントとテスト(最終フェーズ)
- API ドキュメントの完成
- テストカバレッジ目標の達成
- チュートリアルとガイドラインの完成
- CI/CD パイプラインの完全自動化
このリポジトリの.cline ディレクトリは、Denoプロジェクトにおけるコーディングルールとモードを定義するための設定ファイルを管理しています。
.cline/├── build.ts - プロンプトファイルを結合して .clinerules と .roomodes を生成するスクリプト├── rules/ - コーディングルールを定義するマークダウンファイル│ ├── 01_basic.md - 基本的なルールと AI Coding with Deno の概要│ ├── deno_rules.md - Deno に関するルール(テスト、モジュール依存関係など)│ ├── git_workflow.md - Git ワークフローに関するルール│ └── ts_bestpractice.md - TypeScript のコーディングベストプラクティス└── roomodes/ - 実装モードを定義するマークダウンファイル ├── deno-script.md - スクリプトモードの定義 ├── deno-module.md - モジュールモードの定義 └── deno-tdd.md - テストファーストモードの定義
.cline/build.ts スクリプトを実行すると、以下のファイルが生成されます:
.clinerules -rulesディレクトリ内のマークダウンファイルを結合したファイル.roomodes -roomodes ディレクトリ内のマークダウンファイルから生成されたJSON ファイル
.cline/rulesディレクトリにコーディングルールを定義するマークダウンファイルを追加または編集します。.cline/roomodesディレクトリに実装モードを定義するマークダウンファイルを追加または編集します。.cline/build.ts スクリプトを実行して、.clinerules と.roomodesファイルを生成します。
deno run --allow-read --allow-write .cline/build.ts
- 生成された
.clinerules と.roomodes ファイルは、AIコーディングアシスタント(CLINE/Rooなど)によって読み込まれ、プロジェクトのルールとモードが適用されます。
プロジェクトで定義されているモードは以下の通りです:
deno-script (Deno:ScriptMode) - スクリプトモードdeno-module (Deno:Module) - モジュールモードdeno-tdd (Deno:TestFirstMode) - テストファーストモード
モードを切り替えるには、AIコーディングアシスタントに対して以下のように指示します:
モードを deno-script に切り替えてください。
または、ファイルの冒頭に特定のマーカーを含めることでモードを指定することもできます:
- スクリプトモード:
@script - テストファーストモード:
@tdd
例:
//@script@tdd// このファイルはスクリプトモードとテストファーストモードの両方で実装されます
Deno のインストール
# Unix (macOS, Linux)curl -fsSL https://deno.land/x/install/install.sh| sh# Windows (PowerShell)iwr https://deno.land/x/install/install.ps1 -useb| iex
エディタ設定
- VSCode + Deno 拡張機能
- 設定例:
{"deno.enable":true,"deno.lint":true,"deno.unstable":false,"editor.formatOnSave":true,"editor.defaultFormatter":"denoland.vscode-deno"}
プロジェクトのセットアップ
# リポジトリのクローンgit clone<repository-url>cd<repository-directory># 依存関係のキャッシュdeno cache --reload deps.ts# ルールとモードの生成deno run --allow-read --allow-write .cline/build.ts
新しいスクリプトの作成
# スクリプトモードでの開発touch scripts/new-script.ts# ファイル冒頭に `@script` を追加
テストの実行
# 単一ファイルのテストdenotest scripts/new-script.ts# すべてのテストの実行denotest# カバレッジの計測denotest --coverage=coverage&& deno coverage coverage
リントとフォーマット
# リントdeno lint# フォーマットdeno fmt
依存関係の検証
MIT