SwiftUI と自前の差分エンジンで動く macOS ネイティブの比較・マージアプリです。保存するまでディスクに 1 バイトも書き込まず、通信も一切行いません。すべての作業は内部バッファだけで完結します。
Left Right は、変更を理解するための道具です。
差分を調べる作業の目的は、変更の内容を正確に把握して次の行動を決めることです。ファイルを開いた利用者は、4 つの事柄を確認します。どこが変わったのか。なぜそう見えるのか。どちらの版を採るのか。何を保存するのか。Left Right は、この 4 つを迷わず判断できるように画面を整えています。
差分エンジンの上に単に見栄えの良い操作枠を置くような作り方はしていません。画面を開いた利用者が左右の対比に集中し、必要な変更だけを選んで迷わず作業を終えられることを第一に設計しています。作業を遮る余分な要素は画面から外しています。
ブラウザで差分の見え方を試すデモから実際の表示例を確認できます。
最初の版である v1.0 では、テキストとフォルダーの比較、および 3 つの版の統合に対応します。
2 つのテキストファイルを左右に並べ、行単位で追加・削除・変更の箇所を表示します。
フォルダー階層を調べ、片方にしか存在しない項目や内容が異なる項目を一覧表示します。
共通の起点となる祖先ファイルと双方の変更内容を突き合わせ、衝突を解消して統合します。
空白や改行コードの違い、空行の有無など、比較時に無視する項目を指定できます。
| 41 | - let configuration = DiffEngine.Configuration(strictMode: false) |
| 41 | + let configuration = DiffEngine.Configuration(strictMode: true) |
| 42 | let session = ComparisonSession(config: configuration) |
| 43 | + session.prepareBuffers() |
変更の内容を正確に確かめるには、作業に関係のない違いを除外する必要があります。Left Right の v1.0 では、以下の条件を指定して比較を行えます。
| 比較条件 | 指定できる内容 |
|---|---|
| 空白の扱い | そのまま扱う、変化を無視する、すべて無視する、の 3 段階から指定します。 |
| 大文字小文字 | アルファベットの大文字と小文字の違いを無視して比較します。 |
| 空行 | テキストに含まれる空行の違いを無視します。 |
| 改行コードの違い | 環境による改行コードの違いを無視して内容を照合します。 |
| 行の正規表現による除外 | 指定した正規表現に一致する行を比較の対象から外します。 |
| Unicode 正規化の違い | 文字コードの正規化形式の違いを無視して比較します。 |
差別化点を増やさない。9 個ある差別化点は差別化していないのと同じです。Left Right は 3 つだけに絞り込んでいます。
SwiftUI、AppKit、TextKit 2 を使用して構築しています。比較処理を行う差分エンジンも Swift の自前差分エンジンです。余計な中間層を挟まないため、起動からテキストの描画、差分の算出まで素早く動作します。
マージも編集も内部バッファのみで行われます。作業中のファイルが自動的に書き換わることはありません。利用者が ⌘S を入力して初めてディスクに触れます。
通信しません。アカウントも解析も収集もありません。すべてのデータはこの Mac の中だけで扱われます。
画面の配置を決めるときは「利用者は差分そのものを見たいのか、操作 UI を見たいのか」を基準に判断します。
利用者が求めているのは、左右に並んだファイルの内容と差分そのものです。操作ボタンや枠線ではありません。そのため Left Right では、ツールバーを簡素にし、不要な枠線を減らし、サイドバーは必要なときだけ表示します。本文の表示領域を広く取り、比較と確認に集中できる画面にしています。
画面で使う色も同じ基準で決めています。最も目立たせるべき色は「差分の意味を表す色」です。何が消え、何が加わり、どこに衝突があるかを示す色を最優先します。そのため Left Right は、v1.0 でプログラミング言語ごとの構文の色づけを搭載していません。構文の強調色が差分を示す色と混ざり、変更箇所の判別を妨げるのを防ぐためです。
最新の macOS 環境に対応し、安全性が確認された二系統の経路で配布します。
Left Right の配布経路は 2 つあります。Mac App Store を経由した導入と、公式サイトからの直販ダウンロードです。
どちらの経路から入手した場合でも、アプリは App Sandbox の保護下で動作します。アプリが読み書きできる対象は、利用者が開いたファイルやフォルダー、および保存先に選んだ場所だけに制限されます。また、直販ダウンロード版についても Apple の公証とステープルを済ませた状態で配布します。
本製品は未リリースです。配布の開始時期や詳細が決まり次第、このページでお知らせします。
Left Right · See both sides · macOS 26 以降対応