Repolode
tach-org

tach-org/tach

Rust製のPythonツール。コードベースのモジュール依存関係と公開インターフェースを可視化し、ルールを適用できます。

スター
2,861
フォーク
98
未解決の Issue
56
最終コミット
8 日前

これは何?

Tachは、Pythonプロジェクトでモジュール境界を保つためのツールです。どのモジュールがどのモジュールに依存できるかを宣言すると、インポートがその宣言に沿っているかを検査し、越えてはならない境界を越えるインポートを検出します。また、モジュール間の呼び出しを各モジュールで宣言した公開インターフェースに限定したり、依存関係グラフの循環を検出したりできます。

モジュラーモノリス向けに設計されており、段階的に導入できるため、追跡したいパッケージだけを対象にできます。`tach init` を使った対話形式のセットアップに対応し、違反があると `tach check` はゼロ以外のコードで終了するので、CIやpre-commit hookで簡単に実行できます。

依存関係グラフは、`tach show --web` によるWeb表示、またはローカルのGraphViz DOTファイルとして出力できます。また、`tach report` を使うと、指定したパスの依存関係と使用箇所を一覧表示できます。

主な機能

  • 01宣言されたモジュール依存関係に照らしてインポートを検査
  • 02モジュール間の呼び出しを公開インターフェースに限定
  • 03依存関係グラフの循環を検出
  • 04対象モジュールを選び、段階的に導入
  • 05依存関係をWebグラフまたはGraphViz DOT形式で可視化
  • 06違反時にゼロ以外のコードで終了し、CIやpre-commit hookと連携

ユースケース

  • 大規模なPythonモノリスでレイヤーやモジュールの境界を適用する
  • Pythonモノレポ内のパッケージ間で不要なインポートを防ぐ
  • 既存のコードベースにアーキテクチャ上のルールを段階的に導入する
  • 生成されたグラフでプロジェクトの依存関係を確認する

クイックスタート

  1. 1

    PyPIからTachをインストールする

    pip install tach
  2. 2

    対話型セットアップを実行して、モジュールの境界を設定する

    tach init
  3. 3

    プロジェクトのルートディレクトリから、設定した境界を適用する

    tach check

使う前に知っておきたいこと

  • Pythonのコードベースのみをサポートしています。
  • 境界は静的に適用されます。また、tach.tomlでモジュールの依存関係を手動で宣言する必要があります。

収録されている特集

トピック

よくある質問

tach とは?
Rust製のPythonツール。コードベースのモジュール依存関係と公開インターフェースを可視化し、ルールを適用できます。 Tachは、Pythonプロジェクトでモジュール境界を保つためのツールです。どのモジュールがどのモジュールに依存できるかを宣言すると、インポートがその宣言に沿っているかを検査し、越えてはならない境界を越えるインポートを検出します。また、モジュール間の呼び出しを各モジュールで宣言した公開インターフェースに限定したり、依存関係グラフの循環を検出したりできます。
tach は無料で使えますか?ライセンスは?
tach は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
tach は今もメンテナンスされていますか?
活発にメンテナンス中。tach の最終コミットは 2026年10月29日 です。
tach は何に使えますか?
大規模なPythonモノリスでレイヤーやモジュールの境界を適用する Pythonモノレポ内のパッケージ間で不要なインポートを防ぐ 既存のコードベースにアーキテクチャ上のルールを段階的に導入する 生成されたグラフでプロジェクトの依存関係を確認する
tach のインストール方法は?
PyPIからTachをインストールする: pip install tach 対話型セットアップを実行して、モジュールの境界を設定する: tach init プロジェクトのルートディレクトリから、設定した境界を適用する: tach check
tach はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/tach-org/tach

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト