
2026/06/07 5:03
SEM:コード理解のための新しい素型——LSP は不要で、Git を基盤とするエンティティです
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Sem-cli は、Git に意味論的層を導入し、コードエンティティ(関数、クラス、メソッドなど)を解析することで、生テキスト行に依存する従来の方法を変えることでソフトウェア開発を変革します。 この根本的な変化により、AI エージェントはコード文脈を大幅に理解できるようになり、標準的な行ベースの差分と比べて 2.3 倍の精度を達成します。本ツールは Homebrew を介して既存の Git 環境に直接統合され、従来の
git diff コマンドを自動的に置き換えるとともに、設定不要で 26 のプログラミング言語と 5 つのデータ形式をサポートします。複雑なエンティティレベルの差分をわずか 8 ミリ秒で処理します。基本的な差分機能に加え、sem blame コマンドでコード変更の著者を帰属させたり、sem impact コマンドでクロスファイル依存関係や影響を受けるテストを可視化したり、sem entities コマンドでファイル内のすべての関数またはクラスをリストしたりといった特殊なコマンドを提供します。さらに、AI 相互作用に最適化されたトークン節約型のコンテキストウィンドウ(sem context)を提供し、自動化パイプラインの効率化のために機械可読な JSON 出力(--json フラグ)をサポートします。今後予定されている sem log 機能などにより、コード履歴への可視性がさらに向上します。本文
Semantic Git: 変更内容を関数単位で理解するツール「Sem」の紹介
Git の操作を従来の「行単位」から「関数・エンティティ単位」へ進化させ、開発者の意図を明確に可視化するツールです。
📦 インストール(Homebrew)
標準的なパッケージマネージャーを使用してください。
$ brew install sem-cli
💡 代替案 (Cargo):
cargo install --git https://github.com/Ataraxy-Labs/sem sem-cli
🔄 パラダイムの転換:視点の拡大
Git は行ベースの変更を記録しますが、Sem は エンティティ(関数・クラス) 単位で変化を検出します。
従来の Git () | Semantic Diff () |
|---|---|
| **左側:**生のテキスト差分 空白ノイズあり 構造の変化も「行追加/削除」として処理される | **右側:**実際の意図を反映 リネーム検出付き 構造的ハッシュングによる明確なエンティティ変化 |
AI ベンチマークの向上
sem diff の出力を使用すると、AI エージェントのコード理解正確さは 2.3 倍向上します。
🛠️ 6 つのコマンド、1 つのバイナリ
設定不要・プラグイン不要で、あらゆる Git リポジトリに対応しています。すべてのコマンドには機械可読な出力 (
--json) をサポートします。
1. sem diff
— 何が変更されたか?
sem diff構造的ハッシュングと行内ハイライトを用いたエンティティレベルの差分表示。
[追加]⊕ function validateToken
[修正]∆ function authenticateUser
[削除]⊖ function legacyAuth
2. sem blame
— 誰が変更したか?
sem blame関数やメソッドごとの「最後に変更があったコミット」を示します。
- エンティティ単位の Blame(行番号ベースではない)
- 著者、コミットハッシュ、日付が明確に把握可能
3. sem impact
— どう影響するか?
sem impact特定の関数を変化させると、何が変わるかを可視化します。
- 依存関係グラフ(クロスファイル)の自動解析
- 関連するテストや使用箇所の提示
- 「42 エンティティが間接的に影響を受けました」といった定量的なリスク評価
4. sem log
— どう進化してきたか?
sem log特定の関数の Git ヒストリをエンティティ単位で表示します。
- ロジックの変更やバグ修正の軌跡を追跡可能
- 「〜02-05 追加」「〜02-08 修正(ロジック)」のように意図が見える
5. sem entities
— パスに何が含まれているか?
sem entities指定されたファイル内の関数、クラス、型をリストアップします。
- 行番号の範囲付き表示 (e.g.,
)L12-24 - コード構造の即時把握
6. sem context
— AI 用のスマートコンテキスト
sem contextLLM に渡すプロンプト用トークン预算管理されたコンテキストウィンドウです。
- **対象:**コード本体 (〜705 トークン)
- **依存先:**呼び出し元/関数 (〜256 トークン)
- **依存元:**呼び出される側 (〜812 トークン)
- 合計でのトークン予算内で完結
🌐 あなたのスタックをカバー
1 つのバイナリで多言語・マルチフォーマットに対応します。
サポートされている言語 (26 カ国語対応)
TypeScript, JavaScript, Python, Go, Rust, Java, C/C++, C#, Ruby, PHP, Swift, Kotlin, Elixir, Bash, HCL, Fortran, Vue, Svelte, XML, ERB, Dart, Perl, OCaml, Scala, Zig
サポートされているデータ形式
JSON, YAML, TOML, CSV, Markdown
パフォーマンスと統計
- 差分処理時間:8ms (典型的)
- 設定不要:0
- ダウンロード数:4,000 件以上
⚡ 10 秒で試してみよう
セットアップはシームレスです。以下のコマンドを実行するだけで、全リポジトリが Semantic に変換されます。
$ brew install sem-cli $ sem setup ✓ ワラッパースクリプトを作成 ✓ git config --global diff.external = sem に設定 ✓ Pre-commitフックをインストール済み 完了!今後はどのリポジトリでも `git diff` を実行すると Sem が使用されます。 元に戻すには:sem unsetup
今後、
を実行すれば自動的に Semantic Diff が表示されます。git diff