rules-common リポジトリのセットアップ自動化スクリプト作成(開発日記 No.081)
関連リンク
はじめに
昨日は既存のルールファイルをYAML形式に変換し、英語への翻訳を行いました。今日は、明日から始める新規リポジトリでの開発をスムーズにするため、rules-common リポジトリのセットアップを自動化するスクリプトを作成します。
背景と目的
これまで作成してきたルールファイルを共有する仕組みを利用して、新しいリポジトリで開発を始める際に、毎回同じような初期設定を行うのが手間でした。具体的には、cursor
、windsurf
、cline
のアダプターファイルや各種ルールファイルの Git サブモジュールとシンボリックリンクの作成です。これらの作業を自動化することで、新規リポジトリ作成時の手間を大幅に削減し、開発効率を向上させることが目的です。
検討内容
まずは、新しいリポジトリのルートでスクリプトを実行すると、rules-common
リポジトリが Git サブモジュールとして展開され、.cline
、.cursor
、.windsurf
などのディレクトリが自動的に作成されるようにすることを考えました。そして、各 AI ツールのアダプターファイルが、シンボリックリンクによって作成される仕組みを実装することにしました。
実装内容
setup_rules_common.sh
という名前のスクリプトを作成し、以下の処理を実装しました。
-
rules-common
リポジトリを Git サブモジュールとして追加 -
.cursor
、.windsurf
、.cline
ディレクトリを自動作成 - 各 AI ツール用アダプターファイルへのシンボリックリンクを自動設定
当初、rules-common
フォルダが .cursor
フォルダの配下に配置されてしまうという問題が発生しましたが、スクリプトを修正し、ルートディレクトリ直下に配置されるように変更しました。
また、スクリプトの内容がローカルパスに依存していたため、汎用的に使用できるように、$(pwd)
を使用してカレントディレクトリを自動検出するように修正しました。
#!/bin/bash
# Git submodule として rules-common リポジトリを追加
git submodule add <rules-common_repository_url> rules-common
# サブモジュールの初期化と更新
git submodule init
git submodule update
# ディレクトリを作成
mkdir -p .cursor .windsurf .cline
# シンボリックリンクを作成
ln -s rules-common/adapters/cursor_adapter.py .cursor/cursor_adapter.py
ln -s rules-common/adapters/windsurf_adapter.py .windsurf/windsurf_adapter.py
ln -s rules-common/adapters/cline_adapter.py .cline/cline_adapter.py
echo "rules-common のセットアップが完了しました。"
技術的なポイント
-
Git サブモジュール: 外部リポジトリをプロジェクトに組み込むために使用。
git submodule add
コマンドで追加し、git submodule init
とgit submodule update
で初期化と更新を行う。 -
シンボリックリンク: ファイルやディレクトリへの参照を作成するために使用。
ln -s
コマンドで作成。 -
カレントディレクトリの自動検出:
$(pwd)
を使用することで、スクリプトが実行されたディレクトリを自動的に取得し、パスのハードコードを避ける。
所感
今回の開発では、シェルスクリプトの基本的な操作を再確認する良い機会になりました。特に、パスの取り扱いや、Git サブモジュールの挙動について、より深く理解することができました。また、自動化スクリプトを作成することで、今後の開発効率が向上することを考えると、非常にやりがいを感じました。
苦労した点は、スクリプトのパス依存性を解消し、汎用的に使えるように修正する部分でした。$(pwd)
を使用することで、この問題を解決できましたが、最初は少し苦戦しました。
今後の課題
今回のスクリプトは、基本的なセットアップを自動化するものであり、まだ改善の余地があります。例えば、以下のような課題が考えられます。
- エラーハンドリングの追加: スクリプト実行中にエラーが発生した場合の処理を追加する。
- 設定ファイルの自動生成: 各 AI ツール用の設定ファイルを自動生成する機能を追加する。
- より複雑な環境への対応: より複雑なプロジェクト構造にも対応できるように、スクリプトを拡張する。
まとめ
本日は、新規リポジトリにおける rules-common
リポジトリの導入を効率化するためのスクリプトを作成しました。このスクリプトにより、新しいプロジェクトを立ち上げる際の初期設定作業が大幅に効率化されることが期待されます。今後は、このスクリプトをさらに改善し、より使いやすいものにしていきたいと考えています。
Discussion