メインコンテンツへ移動

テキストツール

これらのテキストツールは、プレーンテキストの比較や整形をブラウザ内で行います。ファイルの2つのバージョン、ログの抜粋、設定ブロックを貼り付けると、何が変わったのかを正確に確認できます。粒度は行・単語・文字から選べ、メールやチケットに貼り付けられるunifiedパッチもコピーできます。

18個のツール端末内で処理

比較

整形

検証

変換

編集

リファレンス

解析

ブラウザベースのテキストツールはどんなときに使うべきですか?

2つのテキストを比較する作業は、誰もが日常的に行うものであり、ほぼ必ず最悪のタイミングで発生します。あるホストでは動き別のホストでは動かない設定ファイル、デプロイの間に変わったレスポンスボディ、変更履歴を残さずに誰かが編集した契約書の条項、昨日のものとそっくりだが少しだけ違うログの1行。

目で見て探したくなります。3行ならそれでも通じますが、30行では静かに失敗します。人間の注意力は、期待するものを見つけることにおいて極めて優れているからです。この状況でdiffは便利機能ではありません。変更を見つけることと、変更などなかったと自分を納得させることの分かれ目です。

diffツールの良し悪しを分けるのは粒度です。行単位の比較が正しいデフォルトであり、バージョン管理で表示されるのもそれですが、2種類の入力ではむしろ誤解を招きます。1つは最小化されたファイルや1行ファイルで、文書全体が1行になるため、diffは「この行が変わった」と退化します。もう1つは長い文章行で、1語の編集が段落全体の書き換えとして表示されます。単語モードと文字モードはまさにこのためのもので、貼り付け直さずに3つのモードを切り替えられることこそが価値の大部分です。

もう半分は、出力が持ち運べることです。見るだけのdiffは、人に渡せるdiffより価値が下がります。そこでunifiedパッチの出力は、正しいhunkヘッダーを持つ標準的なパッチを生成します。patch(1)が受け付ける形式であり、コメントに貼り付ければコードレビューツールが正しく表示する形式です。

テキストは、このサイトで扱うものの中でも特にセンシティブになりがちです。JSONのペイロードはたいてい機械向けのデータですが、テキストのdiffは契約書の草稿、社内メモ、インシデントのタイムライン、顧客へのメールであることがよくあります。比較をサーバーではなくブラウザ内で行うのはこれが理由です。機能として謳うためではなく、ローカルで答えられる質問のためにその種の資料を知らないホストにアップロードするのは、いくら安くても割に合わない取引だからです。

比較対象が文章ではなくJSONであれば、代わりにJSON差分比較を使ってください。テキストではなく解析後の構造を比較するため、整形のし直しやキーの順序変更は、テキストdiffなら何百もの変更として報告されるものが、まったくの変更なしとして正しく表示されます。

よくある質問

行diff、単語diff、文字diffの違いは何ですか?

行diffがデフォルトで、gitの表示と一致します。行は存在する、しない、変更された、のいずれかです。単語diffは変更された各行をさらに細かく分解します。200文字の行全体が赤と緑に光るのではなく、動いた識別子が1つだけだとわかります。文字diffはさらに進んでおり、URL、ハッシュ、Base64の塊といった1本の長い文字列で、違いが中央の1文字だけのときにそれを見つけるのに適しています。

ファイル全体を貼り付けられますか、それとも抜粋でなければなりませんか?

メインスレッドの上限8 MBまでは、ファイル全体で問題ありません。比較にはMyers diffを使っています。gitと同じアルゴリズムで、コストは入力のサイズではなく差分の数に応じて増えるため、ほぼ同一の2つの大きなファイルはほぼ瞬時に比較でき、共通点のない2つは時間がかかります。

unifiedパッチはgitが出力するものと同じ形式ですか?

はい。出力は@@のhunkヘッダーを持つ標準的なunified diffで、patch(1)で適用でき、整形し直さずにそのままコードレビューのコメントやプルリクエストの説明に貼り付けられます。コンテキストの深さは慣例のデフォルトである3行です。

Windowsの改行コードにも対応していますか?

比較の前にCRLFをLFへ正規化するため、Windowsのエディタを経由したファイルで、すべての行が変更済みと報告されることはありません。ただし、調べているのが改行コードそのものであれば、この正規化は望ましくない動作です。代わりにHex表示に対応したツールで生バイトを比較してください。

入力したテキストはどこかへ送信されますか?

いいえ。比較はブラウザ内で実行されます。アップロードの手順もAPIルートも存在せず、ページは静的なファイル、diffアルゴリズムはすでに開いているタブで実行されるJavaScriptです。Networkパネルを開いてドキュメントを貼り付けてみてください。テキストを運ぶものは何も現れません。

ToolsByUsにはほかに何がありますか?

ToolsByUs — テキストツール