コード比較オンライン — 構文を理解するAST差分ツール
2つのソースコードを左右並べて瞬時に比較。WebAssembly上のTree-sitterパーサーにより、変数のリネームやリファクタリングを本質的なロジック変更と自動識別。ブラウザ完結で機密コードも安全。
本番コードベースのリファクタリングのために設計
従来の行単位diffでは、変数の改名や関数の順序変更で画面がノイズに埋もれます。Tree-sitter構文解析により言語構造を正しく把握し、本質的なロジック変更だけに集中できます。
100% ブラウザ内完結のプライバシー
機密性の高いプロプライエタリコード、APIシークレット、社内アルゴリズムが外部サーバーへ送信されることは一切ありません。すべての構文解析と差分計算はお使いの端末内で完結します。
AST(抽象構文木)構文解析
JavaScript、TypeScript、Python、JSON、HTML、CSSを構文木として解析。空白の違いや改行のズレと、意味のあるコード変更を的確に切り分けます。
識別子正規化によるリネーム検知
デュアルハッシュ照合により、スコープ内で一括リネームされた変数や関数を検知。「全行書き換え」ではなく「変数名の変更」として賢く判定します。
移動した関数・クラスブロックの認識
ファイル内で並び替えられた関数やメソッドを視覚的インジケーターで紐付け。無関係な「削除と追加」としてバラバラに表示されるのを防ぎます。
左右対比でのインタラクティブ・マージ
差分ブロックごとの適用・破棄をワンクリックで実行可能。エディタ上で直接調整し、完成したコードをクリップボードやIDEへ即座にコピーできます。
コードを数秒で比較する3ステップ
コードを貼り付けまたはドロップ
左パネルに元のコード、右パネルに変更後コードを貼り付けるか、ファイルを直接ドラッグ&ドロップします。
構造的な差分を確認
シンタックスハイライトされた追加・削除・リネーム・移動ブロックを、単語単位の精度と類似度スコアで確認します。
差分をマージして結果をコピー
変更を左右間で適用するか、整理された最終コードを1クリックでコピーしてリポジトリに反映します。
Text Compare Toolでコードを比較する理由
Tree-sitter AST構文比較 vs 単純な行単位差分
一般的なdiffツール(および標準の git diff)はソースコードを単なるプレーンテキストの行として扱います。PrettierやBlackによる整形、ifブロックへのインデント変更、引数のリネームが入ると、ブロック全体が削除・再生成されたかのように表示されてしまいます。
Text Compare Toolはブラウザ内でWebAssembly版Tree-sitterパーサーを実行します。JavaScript、TypeScript、Python、JSON、HTML、CSSの具象構文木を構築して構文トークンを解析するため、コミットがプログラムの挙動を変えたのか、単なる表記揺れなのかを即座に見抜けます。
識別子正規化:ノイズなしで変数名変更を検出
リファクタリングで頻繁に行われる変数名の変更(例:dataからuserProfileへ)。行単位diffではすべての出現箇所が変更行として強調され、紛れ込んだ重要なバグ修正を見落とす原因になります。
当ツールの構文エンジンは、各ユニットに対して「リテラルハッシュ」と「識別子を正規化したハッシュ」の2系統を計算します。構文構造とキーワードが一致していれば、リネームされたコードでも高い類似度スコアを保ち、構造的一致として扱います。
自社コードの外部漏洩ゼロ:完全クライアントサイド実行
独自のアルゴリズムや未公開機能のコードをクラウド型のdiffサービスに貼り付けることは、知的財産の流出やSOC 2、GDPR、企業セキュリティポリシー違反のリスクを伴います。
Text Compare Toolは100%クライアントサイドで動作します。文法定義、差分アルゴリズム、エディタバッファはすべてブラウザのサンドボックス内(WebAssemblyおよびWeb Worker)で稼働し、コードがサーバーに送信されることは一切ありません。
オンラインコード比較に関するよくある質問
AST構文解析差分に対応しているプログラミング言語は何ですか?
JavaScript、TypeScript、TSX、Python、JSON、CSS、HTMLに対応するTree-sitterパーサーを内蔵しています。その他の言語やプレーンテキストは、高速な行・文字単位のStrictエンジンで高精度に比較されます。
入力したソースコードが外部サーバーに送信・保存されることはありますか?
いいえ、一切ありません。構文解析および差分計算の全処理がブラウザ内のWebAssemblyで完結するため、コードがネットワーク経由で送信されることはゼロです。
リネームされた変数や関数はどのように認識されますか?
識別子を抽象化した正規化ハッシュとリテラルハッシュを併用することで、構文木構造が保たれている場合は「書き換え」ではなく「変数名変更」として認識されます。
コードの差分をその場でマージ・編集することはできますか?
はい。各差分ブロック横のマージ矢印をクリックして変更を一方から他方へ反映でき、エディタ内で直接手直ししたうえで最終コードをコピーできます。
移動した関数やブロックはどのように表示されますか?
ファイル内で別の場所に移された関数やクラスは、構文木の一致から「移動ブロック」として識別され、元の行番号を示すインジケーターが表示されます。
ASTコード比較の仕組みについてさらに詳しく知りたいですか?
Tree-sitter構文木、デュアルハッシュ、移動ブロック判定アルゴリズムの仕組みと、リファクタリング確認のベストプラクティスを解説しています。