リリースノートは、公開時の本文のまま載せています(日本語と英語が混在します)。
MrEditor のリリース履歴
1.22.1 — 2026-10-12
- Fixed: with MrEditor and MrkEditor both open, a stream piped into one opened in both. The signal that hands a second
| mreditorto the running window was shared by every app on the Mac, so both apps added a tab. It now carries the app's bundle ID, so the stream goes only to the app you piped it into. Nothing changes when only one of them is running.
1.22.0 — 2026-10-12
tail -f app.log | mreditornow opens at the first byte and follows the tail. Before, a pipe was read to the end before anything showed — for a log still being written, that never happens. Press ⌘F, typeERRORand switch on matching-lines-only: only the ERROR lines stay while the log keeps flowing. Following stops by itself when the input ends.- Run
| mreditora second time and the stream joins the window you already have as a new tab, instead of starting another process. Stream tabs are not put back at the next launch (only a frozen fragment would come back). - Narrowing resumes from the last complete line, so a file that keeps growing is scanned only for the part that is new.
- Help ▸ Use from Terminal… shows the install command (built from where the app actually is) and examples.
1.21.0 — 2026-10-08
- Click a line number to set or clear a bookmark, in the large-file viewer and in the editor. Bookmarks have been here since 1.13.0, but only through the menu or ⌘B, so few people found them.
- A bookmark button beside the funnel in the search bar shows only the marked lines. Search, mark, search again, mark — then look at just the marks. Press it again to bring the whole file back. It is exclusive with the funnel, and editing the search ends it. In this view a click on the gutter clears a mark but keeps the line (so you can put it back); a double click removes the mark and the line.
- Fixed: bookmarks set in a small file while a filter was on were stored by the row on screen, not by the line in the file, so they moved when the filter was lifted. They are kept by the line's position in the original file now.
1.20.1 — 2026-10-05
- New: Help ▸ Send a Request… opens a GitHub request form with your version and OS already filled in, and Help ▸ See Request Status… opens a public list of every request and where it stands. A GitHub account is needed to send one.
- Every request is answered within 7 days — adopted, considering, or not doing — and "not doing" always comes with the reason. Adopted requests are named in these release notes. How it works: docs/REQUESTS.md
1.20.0 — 2026-10-01
- Edit remote files in place: double-click a line, edit, ⌘S. Only the edited lines travel. Same byte length overwrites in place on the far side; a different length rebuilds the file through a same-folder copy after you confirm. Nothing is written if the line no longer matches what you opened.
- Point at a folder to get an expandable tree, with a file-name filter to find and open a file. The same tree opens for local folders (File ▸ Open Folder…, ⌥⇧⌘O, and Open by Path with a folder).
- A missing, unreadable or special remote target now says so instead of showing an empty list.
- The remote window remembers your last 10 connections (File ▸ Clear Remote Connection History), filters with a regular expression (grep -E), and keeps focus in the search field.
1.19.1 — 2026-09-29
- Search keeps the full document visible and highlights matches. The search panel can now be moved beyond the document window using its grab bar.
1.19.0 — 2026-09-28
- Open by Path… (⌥⌘O): paste a copied local path to open it. Files open in the editor; folders have nowhere to go inside MrEditor, so they are revealed in Finder instead.
1.18.0 — 2026-09-24
追加
- BYOK にローカルの Ollama を追加 — クラウドの鍵を持っていなくても、ローカルで動く Ollama をAI診断の送り先に選べるようになりました(環境設定 > AI)。鍵は不要です。
- 検索欄に「最近の検索」 — 過去に検索した語をメニューから選び直せます。
- Markdown と主要言語の構文ハイライト — 見出し・強調・コード・リンク(Markdown)、コメント・文字列・数値・予約語(Python/Swift/JS/Shell/YAML/JSON/SQL/CSS/Java/PHP/Go/Ruby/Perl)を色分け表示します。
修正
- 一致行だけ表示(フィルタ)を使った状態で検索バーを開き直すと、置換ボタンが実際には使えないのに押せる見た目のまま残り、押すとビープ音が鳴るだけで理由がわからない不具合を修正しました。読み取り専用バナーに「フィルタ中は編集できません」等、理由を表示するようにしました。
1.17.0 — 2026-09-18
クリップボードは、コピーした瞬間から次の1件に上書きされる
貼り付け先を間違えたとき、これまでは戻る方法がコピー元のアプリを開き直す以外にありませんでした。
編集メニュー→クリップボード履歴
直近のコピーを並べます。選べばそのまま貼り付きます。ツールバーにも任意で追加できます(既定では出ません)。
ディスクには残しません。 終了すれば消えます。1Password 等が付ける「見せない」の印(org.nspasteboard.ConcealedType)が立ったコピーは記録しません。
MrEditorCore に積んだので、Pro(MrkEditor)側も同じ動きを自動で引き継ぎます。
macOS 13+ / Apple Silicon・Intel 両対応(universal)/ MIT Developer ID 署名・公証済みなので、右クリックは要りません。
1.16.0 — 2026-09-16
閉じたファイルを、開き直す
ファイルを閉じてすぐ「しまった」と思っても、これまでは File ▸ 開く… でパスを記憶から打ち直すしかありませんでした。
⇧⌘T で直近の1件から
閉じたドキュメントは閉じた順にスタックで持ちます。押すたびに末尾から1件 pop して開くので、押し続ければどんどん前まで戻れます。
保存先が確定していない新規ドキュメント(まだ「名称未設定」のもの)は積みません —— ディスク上に開き直す先が無いためです。
MrEditorCore に積んだので、Pro(MrkEditor)側も同じ動きを自動で引き継ぎます。
macOS 13+ / Apple Silicon・Intel 両対応(universal)/ MIT Developer ID 署名・公証済みなので、右クリックは要りません。
1.15.0 — 2026-09-05
日本語の、大きいファイル
日本語の CSV は Shift-JIS・CRLF・引用符つきで届きます。これを検索するのに 1 行ずつ文字列へ変換していて、1GB で 26 秒かかっていました。しかも終わった合図がありませんでした。
24 秒・カットなし・等倍。1.06GB・581万行の Shift-JIS CSV を絞り込んで、1 行編集して、保存するところまで。5 秒あたりで検索バーの「件数 · %」が動きます。
Shift-JIS の検索が 11 倍速くなりました
| 前 | 後 | |
|---|---|---|
| Shift-JIS 1.06GB・581万行 | 26.2 秒 | 2.40 秒 |
| UTF-8 1.26GB | 1.2 秒 | 1.23 秒 |
26 秒のほぼ全部が String(data:encoding:) を 581 万回呼ぶ費用でした。release ビルドにしても縮みません(自分のコードではなく Foundation 側の費用だからです)。
探す語のほうを Shift-JIS のバイト列にして、直接走査するようにしました。Shift-JIS は 2 バイト目が ASCII と重なるので(「ア」は 83 41、語 "A" は 41)、当たった位置が文字の切れ目に乗っているかを確かめて誤爆を弾いています。EUC-JP も同じ経路です。
検索が終わったことが画面に出ます
前は 1 件当たった瞬間に「13 件」へ切り替わり、まだ増え続けるのに確定したように見えていました。
走査中 208,887 件 · 25%
1,365,744 件 · 56%
終わり 1,374,496 件中 2 件目
進み具合が消えたときが終わりです。
変わらないこと
保存したファイルは、編集した行の外が 1 バイトも変わりません。Shift-JIS も CRLF も引用符も BOM も、そのまま通り抜けます。形式を保持する処理は書いていません。
macOS 13+ / Apple Silicon・Intel 両対応(universal)/ MIT Developer ID 署名・公証済みなので、右クリックは要りません。
1.14.0 — 2026-08-30
見たいログはサーバーにある。落とさずに開く。
ssh host:/var/log/app.log を ファイル ▸ リモートを開く…(⌃⌘O) に入れると、そのまま開きます。
- ダウンロードしません。 見たところだけを取ってくるので、10GB でも待ちません(落としてから開くなら
scpで済みます) - 開くと、まず末尾。 障害は末尾にあります。行番号は本物です(
wc -lは向こうで走るので、来るのは数字 1 つ) - 絞り込みは向こうで走ります(
grep -n)。本文を 1 バイトも転送せずに、一致行と行番号が返ります ── 送らないぶん、手元で走査するより速い。±欄で前後の行も(grep -C相当) - 末尾追従(「追う」)。向こうの
tail -fを流し込みます。止めれば向こうも止まるので、あなたのサーバーにプロセスは残りません - ⌘C は本文だけを返すので、そのまま ⇧⌘D のクリップボード比較へ渡せます。遠隔で絞って、手元と見比べる
認証は /usr/bin/ssh 任せです ── ssh_config・ProxyJump・多段・ssh-agent がそのまま効きます(ターミナルで繋がるなら、繋がります)。秘密鍵は保存しません。
正直なところ
手元のビューアとは別の面です。 構造化表示・diff・しおりは、まだ遠隔では効きません。向こうのコマンド(head / wc / tail / grep)に依存するので、BusyBox などで欠けていればその機能だけを畳んで、畳んだ理由を出します。編集も、いまは狙っていません(/etc は root 所有で、sudo 経路は作らない方針です)。
macOS 13+ / Apple Silicon・Intel(universal)。Developer ID で署名・公証済みなので、ダウンロードしてそのまま起動できます。
1.13.0 — 2026-08-28
巨大なログを見るための道具なのに、そのログは素のファイルとして転がっていないことが多い。パイプの向こうにあるか、圧縮されている。中でどれだけ機能があっても、そこへ届かなければ意味がありません。
入口を開けました
kubectl logs -f pod/api | mreditor # パイプでそのまま
mreditor app.log.gz # gzip は展開して開く
mreditor logs.zip # zip も。複数入っていれば選ばせる
mreditor コマンドは 1 行で入ります(アプリ本体への symlink なので、アプリを更新しても張り直しは要りません)。
ln -sf /Applications/MrEditor.app/Contents/MacOS/MrEditor /usr/local/bin/mreditor
コマンドを使わなくても、ダブルクリックや「このアプリケーションで開く」で .gz や .zip はそのまま開けます。
判定は拡張子ではなく中身で行います。 .log のまま gzip されたファイルも、.gz という名前なのに素のテキストのファイルも、実際に世の中にあります。先頭の数バイトを見て決めるので、どちらも正しく開きます。
末尾が欠けていても、出せたところまでは開きます。 落ちたログの尻尾が切れているのは日常で、「壊れているので何も見せません」は、この道具が一番してはいけない返事です。
zip に複数のファイルが入っていれば、名前を並べて訊きます。1 つしか入っていなければ黙って開きます —— 選択肢が 1 つのダイアログは、確認ではなく手間でしかないので。__MACOSX/ と .DS_Store は出しません(Finder で圧縮すると必ず入るもので、並べると選択肢が実際の倍になります)。
しおり
⌘B で今の行に印。⌘; で次のしおりへ、⇧⌘; で前のしおりへ。印は行番号の左に出ます。
調査は往復します。 絞り込んで見つけた行から本文へ飛び、周りを読み、また戻る。戻り先を頭に置いておけるのは 1 つか 2 つで、それを超えると行番号をメモに書き写すことになります。
検索で言い表せる戻り先なら、⌘G のほうが速い。しおりが埋めるのは検索語にできない戻り先です ——「4000 行を眺めていて引っかかった 5 行」のように、共通する文言も時刻も無いもの。
セッション内だけで、ファイルには何も書きません。
変わらないこと
⌘; を使わなければ、これまでと同じです。パイプも圧縮も、渡さなければ動きません。
1.12.6 — 2026-08-27
⌘F を押すと、検索バーはいつも素の検索で開きました。構造化されたものを読んでいる間、やりたいのは「一致行へ飛ぶ」ことより 「絞る」 ことなのに、毎回そこへ 1 手かけて漏斗を入れ直すことになります。
もっと静かに効いていたのは往復のほうです。漏斗を使えないペイン(構造化・JSON)へ移ると、トグルは降ります。それ自体は正しいのですが、降りた理由が「本人が消した」のと同じ扱いで記録されていました。構造化と素のテキストを行き来するたびに、絞りたいという意図そのものが消えていたということです。
前に絞っていたなら、その状態で開きます
⌘F は、漏斗を最後に自分で押した状態で開きます。いつも絞って読む人は、最初の一度だけ押せば済みます。
覚えているのは意図であって、絞り込みそのものではありません。漏斗を使えないペインでは何も起きず、使えるペインへ戻ったときに当て直します。検索バーを閉じている間は当てません —— 開いていないのに本文が絞られるのは、事故にしか見えないからです。
何も変わらない人もいます
既定は off です。漏斗を使っていない人の ⌘F は、これまでとまったく同じように開きます。
変わるのは、一度でも自分で漏斗を押した後だけです。押していない状態に戻したければ、もう一度押して降ろせば、次からはその状態で開きます。
1.12.5 — 2026-08-22
絞り込むと、一致行しか残りません。でも調査は往復します。何が起きたかは、たいてい直前の行にあります。
これまでは、そこでフィルタを解除して、行番号を頼りに元の位置へ戻るしかありませんでした。絞り込んだ瞬間に文脈を失う道具だったということです。
一致行の、前後も出す
grep -C と同じことを、絞り込んだ画面の上で伸び縮みさせられます。
1481 │ INFO opening connection to db-03
1482 │ WARN pool exhausted, waiting
1483 │ ERROR connection reset by peer ← 一致行
1484 │ INFO retrying in 500ms
1485 │ ERROR connection reset by peer ← 一致行
入口は 2 つです。
- 検索バーの
±欄に行数を打つ - ⌥⌘] で 1 行広げる、⌥⌘[ で 1 行縮める
ボタンでもアイコンでもなく、文字と数字にしました。絞り込んだ画面に「±2」と出ていれば、いま何を見せられているのかがそこで読めます。記号だけの切り替えは、気づかれません。
打った値はアプリの設定として覚えます(上限 100 行)。次に開いたファイルでも同じ見え方になります。
決めたこと
- 窓が重なっても、行は重複しません。 一致が隣り合っていれば 1 本に繋がります。
- 区切り線は入れません。 行番号のガターに元の行番号がそのまま出ているので、飛んでいることはそこで分かります(
grepの--に当たるものは要りません)。 - いまの一致行に帯を敷きます。 文脈行と一致行が同じ見た目で並ぶと、どれが引っかかった行か分からなくなるためです(構造化表示中は行内のハイライトが出せないので、帯だけが手がかりになります)。
- 件数は一致行の数のままです。 「18 件中 1 件目」に文脈行は混ざりません。
- 時間分布のドラッグで絞ったときは、足しません。 選んだ時間帯の外の行が混ざると、「選んだ範囲」が嘘になるからです。
画面に出して、初めて分かったこと
テストは緑のままでしたが、配布するものと同じ .app で触って 3 つ見つけて直しました。
| 出たこと | 直し |
|---|---|
構造化表示中、文脈行だけが con… と潰れた |
列幅を一致行だけで測っていた。文脈行も同じ表に並ぶので、表示している行から測る |
| 「18 件中 1 件目」の末尾が切れて何件目か読めない | 詰まったときに縮むのは検索欄だけにした(打った語は自分で覚えている) |
| 出したはずの直前の行が画面の上に隠れる | 一致行を最上部に置いていた。前後を出しているぶんだけ上へ寄せる |
確認したこと
配布するものと同じ .app で、4 経路とも通しています。
| 条件 | 結果 |
|---|---|
| 小さいファイル(編集ペイン) | ± 欄・キーボードとも効く |
| 10GB・8642 万行、1 件に ±3 | 7 行が 0.1 秒未満で出る |
| 12.8MB・900,001 行の CSV、構造化+フィルタ+前後行 | 桁を保ったまま前後が出る |
| ⌥⌘] / ⌥⌘[ | 1 行ずつ伸び縮みする |
641 のテストが緑。Apple Developer ID で署名し、公証を通しています——ダブルクリックで開きます(Apple Silicon / Intel 両対応・macOS 13+)。
1.12.4 — 2026-08-21
桁を揃えたまま grep できる——それが 1.11 からの看板でした。ところが絞り込んだ結果の、肝心の値が読めていませんでした。
絞り込んだら、絞り込んだ行に桁が合う
列幅は、ファイルの先頭 1000 行と末尾 1000 行から決めていました。だから、長い値が中間にしか無いファイルでは拾えません。
45MB・300 万行の CSV を CSV 表示にして ERROR で 59 行に絞ると、こうなっていました。
id │ level │ note
50000 │ ERROR │ con…
100000 │ ERROR │ con…
note の中身は connection reset by peer - retrying で 34 桁。列幅は見出しの note と、先頭・末尾に並ぶ ok だけで決まって 4 桁でした。上限の 40 桁に当たっていたわけではありません。絞り込んだ後こそ読みたい列が、絞り込んだせいで読めない状態です。
いまは、フィルタが効いている間は一致行から列幅を決め直します。上の表示はこうなります。
id │ level │ note
50000 │ ERROR │ connection reset by peer - retrying
100000 │ ERROR │ connection reset by peer - retrying
- 一致が 400 行以下(ふつうの絞り込み)は全部見て決めます。近似ですらありません。
- 一致が多いときは両端 200 行ずつで止めます。一致行はファイル全体に散らばるので 1 行ずつ引くことになり、10GB で 2000 行なら 0.419 秒、400 行なら 0.084 秒。絞り込みが確定した瞬間に払う代金なので、上限を掛けました。
- 打っている途中で一瞬 0 件になっても、列名の帯は空にしません。
- 絞り込んでから構造化表示に入ったとき、一致行の 1 本目が列名になっていたのも直しました(列名は必ず先頭行から取ります)。
フィルタを解けば、元どおりファイル全体の桁に戻ります。
小さいファイルで、画面が食い違っていた
8MB 未満のファイルで、フィルタ ON のまま構造化表示へ切り替えると、画面の 3 箇所が別のことを言っていました。
| 見るところ | 出ていたもの |
|---|---|
| 本文 | 絞り込み前の生テキスト(整形もされない) |
| 列名の帯 | 一致行の 1 本目 |
| ステータス | 絞り込み後の行数 |
順番の問題でした。整形を組んだ直後に検索バーを閉じる処理が走り、退避してあった元の全文で本文を上書きしていました。整形結果だけが消えて、帯と行数が残る。整形の前にフィルタを畳むようにしました。
小さいファイルでは、絞り込みは維持されません。 本文そのものを整形後のテキストへ差し替える作りなので、両立できません(「桁を揃えたまま grep」は 8MB 以上のファイルの機能です)。
確認したこと
配布するものと同じ .app で、両方の順番を通しています。
| 条件 | 結果 |
|---|---|
| 45MB・300 万行 CSV、構造化 → 絞り込み | 34 桁の値が全部出る |
| 同、絞り込み → 構造化 | 同じ。列名も id / level / note |
| 絞り込みを解除 | 元の桁に戻る |
| 10GB・8642 万行、5134 万件ヒット | 詰まらない(漏斗を押して 0.30 秒で戻る) |
| 4.2MB CSV、絞り込み → 構造化 | 本文・帯・行数が一致 |
616 のテストが緑。Apple Developer ID で署名し、公証を通しています——ダブルクリックで開きます(Apple Silicon / Intel 両対応・macOS 13+)。
1.12.3 — 2026-08-19
テスト環境から取ったデータと、本番から取ったデータを並べる。値が違うのは当たり前で、見たいのは「日付の形が揃っているか」だけ。それなのに diff は全行を「違う」と言い、読める差分は 1 つも残りませんでした。
値ではなく、形を比べる
表示 ▸ 比較(diff)▸ フォーマットを比較(⇧⌘F)
数字は 1 桁ずつ、文字の並びは 1 個に潰してから比べます。だから:
2026-08-19 12:00:00 ERROR uid=41と2001-12-31 03:59:07 WARN uid=88は 同じ2026-08-19と2026/08/19は 違う(型の名前に置き換えないので、区切りの違いが残ります)007と7も 違う(ゼロ埋めの食い違いは、環境差の定番なので消しません)123と123も 違う(全角と半角)
仮名・漢字も値として畳みます。 日本語の CSV でこれを畳まないと、氏名や住所が全部差分になって「値は無視する」が嘘になります。ただし全角の記号と全角スペースは形として残します——、 と ,、全角空白と半角空白の食い違いは、まさに見つけたい違いだからです。
入口 4 つ(2 つのファイル・開いているドキュメント・クリップボード・URL)のどれから開いても効きます。5 つ目の入口ではなく、開いた後に切り替えるモードです。値の違いで読めない、と分かるのは開いてからなので。
この間、マージは封じます。 形が同じ=中身は違うので、片方を採ると中身が消えます。
メニューのチェックマークが、初めて出ます
validateMenuItem が AppKit から一度も呼ばれていませんでした(NSMenuItemValidation に適合していなかったため)。構造化表示がいまどのモードか、桁ルーラーが出ているか、末尾追従が入っているか——メニューを見ても分からない状態で出荷され続けていました。押せば動いていたので気づけませんでした。直したので、いまの状態がメニューに出ます。できない操作は灰色になります。
確認したこと
国税庁の法人番号 CSV から作った 20 万行で測りました(release ビルド)。
| 比べ方 | 結果 |
|---|---|
| 同じ行の値だけ差し替え | 完全一致(ハッシュ 0.14 秒) |
| 別のレコード同士 | 5,040 箇所が差分 |
下の行は正直に書いておきます。レコード自体が別物だと、空欄の有無や住所の桁ちがいで 1 行ごとに「形」が違うので、日付の差はその中に埋もれます。行が対応している比較(同じ抽出をやり直した、同じ行の値が置き換わった)では狙いどおりに効きますが、行が対応しない比較には「列ごとに形をまとめて突き合わせる」別の道具が要ります。それは次に作ります。
611 テスト green。配布と同じ .app で、4 つの入口・トグル・マージ封じまで通しました。
ダウンロード: MrEditor-1.12.3.dmg(署名・公証済み / macOS 13+)
1.12.2 — 2026-08-17
1.12 で桁ガイドを引けるようにしましたが、引いても本文は何も変わりませんでした。列として読むにはメニューを 3 階層たどる必要があり、「線を引いたけど、で?」で終わる道具でした。そこを作り直しました。
線を引いたら、そのまま表になる
固定長のデータは、もともと桁が揃っています。 だから列に見せるのに整形は要りません——項目が 1 つおきに薄く塗られるだけで表になります。整形しないので、読み取り専用になりません。見ながら、そのまま直せます。
字が動く
- Tab — 次の項目の桁まで空白が詰まり、後ろの字がその桁へずれます。⇧Tab で戻します(詰めた空白だけが消え、字は消えません)。タブ文字は入りません——固定長にタブが混ざると、他の道具で読んだ瞬間に桁が崩れるからです。
- ⌥Tab — 2 行目以降も同じ桁割りへ揃います。切れ目がまだ無ければ、中身から桁割りを作ります(各項目の一番長いものが収まる幅。
column -tと同じ考え方)。つまり、バラバラのテキストを開いて ⌥Tab を押すだけで表になります。 - 線を掴んで動かす — 桁割りが変わり、字もそこへ揃います(要らなければ ⌘Z)。
順番を覚えなくていい
入口はどれも単独で成立します。打つ → Tab / いきなり ⌥Tab / 目盛りをクリック / ⇧⌥⌘K で 1-8,9-14,15-40 と打つ。桁に触る操作はルーラーを連れてくるので、先に ⌥⌘K を押しておく必要はありません。
ルーラーにはキャレットのいる項目が帯で出ます。右端の「⌥Tab で 2 行目以降も揃います」は、押すと実際に変わる行があるときだけ出て、揃え終われば消えます。
確認したこと
593 tests green。配布物と同じ .app で確認しています。
Apple Developer ID で署名し、Apple の公証を通しています。Apple Silicon / Intel の universal。
1.12.1 — 2026-08-16
1.10.3 と 1.11.1 で残していた宿題を 2 つ片付けました。
浮いている小窓を、好きな場所へ
検索バーと構造化表示のバナーは同じ右上に浮いていて、1.11.1 では「バナーが出たら検索バーを下げる」で凌いでいました。浮かせる物が増えるたびに逃がし方を足していくやり方は、組み合わせのぶんだけ破綻します。
- 掴んで動かせるようになり、置いた場所を覚えます(次に開いてもそこに出ます)。
- 戻したくなったら 表示 ▸ 浮きパネルの位置を戻す。
- 窓を縮めても画面の外に残りません。広げれば元の場所へ戻ります。
構造化表示に、列名の帯
桁は揃うのに、300 万行目まで下がると「この列が何か」は分からなくなっていました。
- 列名が本文の上に固定されます(CSV/TSV はヘッダ行、NDJSON はキー、固定長は
1-8などの桁)。 - 帯の境界を掴むと列幅が変わります。 引きずっている間は線だけが動き、離したときに組み直すので、40 万行でも詰まりません。
変えた列幅はそのセッション限りです(構造化表示を抜けると既定に戻ります)。
確認したこと
553 tests green。配布物と同じ .app で、小ファイルと 40 万行の両方を通しています(掴んで動かす/終了して開き直しても同じ場所/構造化バナーを出しても動かした位置が消えない/CSV で列を広げる/固定長で列を詰めて 000… に切り詰まる/横スクロールで帯が本文と一緒に流れる)。
Apple Developer ID で署名し、Apple の公証を通しています。Apple Silicon / Intel の universal。
1.12 — 2026-08-15
固定長のデータを、数えられるようにしました。
区切り文字があるものは構造化表示で列に開けるのに、固定長のレコードには何も効きませんでした。桁を数えるのは、指で画面をなぞる仕事のままでした。
入るもの
- 桁ルーラー(表示 ▸ 桁ルーラー・⌥⌘K) — 本文の上に目盛りを出す。目盛りをクリックすると項目の切れ目に縦線(桁ガイド)が入り、掴んで動かせる。1 桁ずらすのに消して置き直す必要はない。
- 数値で打てる(表示 ▸ 桁の項目定義…・⇧⌥⌘K) — 仕様書があるなら
1-8,9-14,15-40。全角の数字・カンマ・波ダッシュも受ける(仕様書はそう書かれている)。読めない書き方は一部だけ通さず、直るまで同じシートに戻る。 - ファイルごとに覚える — 開き直すと、同じ定義とルーラーのまま開く。
- 構造化表示に 5 つ目のモード=固定長 — 置いた切れ目がそのまま列になる。列名は
1-8など桁そのもの。桁揃え・構造化中の検索/フィルタもそのまま効く。定義が無いまま選んだら、その場で訊く(中身から列を割り出せない唯一のモードなので)。
桁は文字数でなく表示幅(全角=2)で数えます。ガイド線は画面上の位置に引かれるので、文字数で数えると全角を含む行だけ線と中身がズレます。
確認したこと
537 tests green。配布物と同じ .app で、小ファイルと 40 万行の両方で通しています(定義 → 線が出る → ドラッグで桁を動かす → アプリを終了して開き直しても定義が戻る → 固定長で列として読める)。
Apple Developer ID で署名し、Apple の公証を通しています(ダブルクリックで開きます)。Apple Silicon / Intel の universal。
1.11.2 — 2026-08-14
他のアプリで直したのに、こちらは古い中身を見せ続けていた。エディタで書き換える・sed を回す・ブランチを切り替える —— ファイルは変わっているのに、開いたままの MrEditor は何も言わなかった。
- 開いているファイルを見張り、未保存の変更が無ければその場で読み込み直す(キャレットとスクロール位置は保つ)。
- 未保存なら潰さない。 「このファイルは他のアプリで変更されました」と帯で知らせ、読み込むかどうかを選ばせる。
- 巨大ファイルは追記された分だけ索引を伸ばす(
tail -fと同じ経路)。10 GB のログが 1 行増えるたびに 8 秒かけて張り直すことはしない。 - 監視は
statだけで内容を読まないので、10 GB を開いていてもコストは無視できる。書き込み途中を掴まないよう、同じ版を 2 回見てから取り込む。 - 環境設定 ▸ 一般でオフにできる。オフでも帯は出す(古い内容を黙って見せ続けない)。
あわせて、追記を取り込んだ後に編集すると追記分が消える穴を塞いだ(末尾追従にも前からあった)。
Fix it in another app and this one kept showing you the old bytes.
- Open files are watched: with no unsaved changes, the new contents load in place, keeping your caret and scroll position.
- With unsaved changes nothing is overwritten — a banner says the file changed and lets you decide.
- A large file that only grew extends its index instead of being reopened, so a 10 GB log does not pay 8 seconds per append.
- Watching costs one
statper file — the contents are never read — and a change is taken only after the same version is seen twice, so a half-written file is never loaded. - Preferences ▸ General turns the automatic part off; the banner still appears.
Also fixes a hole where text appended by another process vanished the moment you started editing (Follow mode had it too).
macOS 13+ · Apple Silicon / Intel universal · Developer ID 署名 + 公証済み
1.11.1 — 2026-08-05
構造化表示の帯が検索バーの上に乗って、漏斗ボタンも件数も次/前も隠していました。 1.11 の副作用です。構造化中も検索できるようにしたことで、この 2 つが初めて同時に画面へ出るようになったのに、どちらの置き場所も直していませんでした(1.11 以前は構造化に切り替えると検索バーを閉じていたので、重なりようがなかった)。
報告いただいた「検索できない」も、これが原因でした。検索は最初から走っていて、件数も漏斗も帯の下に隠れていただけです。
- 構造化バナーが出ている間は、検索バーをバナーの下へ下げるようにしました。
- 構造化中も一致行の帯を出すようにしました。行内のハイライトは整形後の文字位置が元のバイト位置と対応しないので出せませんが、帯まで消していると「打っても何も起きない」ように見えるためです。
浮いているパネルをドラッグで動かせるようにする件は、別途やります。
442 tests green / 公証 Accepted / 配布 dmg で実機確認済み(⌘F で検索バーが被らずに出て、1.18GiB の CSV から「岩見沢」2,766 件を桁揃えのまま絞り込めること)。
1.11 — 2026-08-05
ツールバーを付けました。既定の 6 つ(サイドバー・構造化表示・フィルタ・比較・末尾追従・AI 診断)が、このアプリが何者かの宣言です。中身は全部メニューとショートカットの中にあり、起動しただけの人にとっては存在しないのと同じでした。
画面に出したことで、自分のアプリの穴が 2 つ見えたので、両方塞いでいます。
- 構造化表示のまま検索・フィルタ・追従ができるようになりました。 これまでは桁を揃えた瞬間に全部死んでいて、CSV で一番やりたい操作が、CSV が一番読める状態でだけ使えませんでした。桁を揃えたまま grep できます —— 581 万行を一致行だけに絞っても、列は揃ったまま表で読めます。構造化中に断るのは置換だけです(桁揃えした見た目のまま書き換えると、見ているものと変わるものがズレるため)。
- 一致行だけ表示(live grep)が普通のサイズのファイルでも使えるようになりました。 これまでは巨大ファイル専用で、実際に編集する数 KB〜数 MB のファイルでは漏斗が常に灰色でした。絞り込んだまま保存しても、書き出されるのは元の本文全部です。
看板も変えました。「10GB も開ける」をやめます。 スペックであって状況ではないからです。新しい看板は「自分が書いていないテキストを、調べて、正す」。数字は薄めず入れ替えて、1.18GiB の CSV の実測(581 万 6535 行 / 51ms / 78MB)を前に出し、10GB は天井として残しました。
既知の制約: 列幅は先頭と末尾のサンプルで決めているので、絞り込むとファイル全体から行が集まり、幅が足りずに切れる列が出ます。行内の一致ハイライトも構造化中は出せません(整形後の文字位置と元のバイト位置が対応しないため)。
442 tests green / 公証 Accepted / 配布 dmg で実機確認済み。
1.10.3 — 2026-08-03
日本の全法人 581万6535行・1.18GiB の CSV を開いて初めて見えた 2 件を直しました。
- メニューバーが「ファイル・Edit・書式・View」と混ざっていた — この 2 つだけ翻訳テーブルを通っていませんでした。
- 構造化表示の列幅が先頭 1000 行だけで決まっていた — 後半で桁が伸びた列が切れていました(そのファイルの末尾付近で連番が
581…と省略)。列幅を両端から測るようにしました。
中間だけで極端に長くなる列は今も切れます。
388 tests green / 公証 Accepted。
1.10.2 — 2026-07-30
1.9 と 1.10 のリリースノートで、こう断っていました。
既知の穴: Anthropic・OpenAI のストリーミングは手元に鍵が無く、実機での通し確認ができていません(形は自動テストで検証済み)。
その穴を閉じるために API クレジットを入れて実機で通したところ、OpenAI が最初の一往復で落ちました。
o4-mini・o3 では動いていませんでした
✗ サーバエラー (HTTP 400)
Unsupported parameter: 'max_tokens' is not supported with this model.
Use 'max_completion_tokens' instead.
OpenAI では max_tokens は非推奨で、推論系のモデルは送られると拒否します。モデル一覧に o4-mini を載せておきながら、それを選ぶと必ず失敗する状態でした。max_completion_tokens に直しました。
モデル名で振り分けてはいません。一覧に無いモデルも打ち込める作りなので、名前で判断すれば必ずどこかが漏れます。
同じ場所にあった、あと2つ
- 接続テストが、正しい鍵でも失敗し得ました。 出力の上限は「思考+本文」の合計です。接続テストは短い返事しか求めないので上限を 512 に絞っていましたが、推論系モデルは思考だけで使い切り、本文が空になります。上限は課金されない(実際に使った分だけ)ので、余裕を持たせました
- 「回答が空でした」が英語のまま出ていました。 1.10 で「失敗は利用者の言語で言う」と書いておきながら、この経路だけ
empty responseと英語で表示していました。日本語で、原因の可能性(上限/思考で使い切り)と次の一手まで言うようにしました
実機で通し確認しました
Anthropic・OpenAI とも、①接続テスト ②⌥⌘E の実診断(長い応答=複数チャンクの結合・端から流れる描画)を配布物で通しました。 1.9 から引きずっていた「実機未確認」は、これで解消です。
動作環境: macOS 13+ / Apple Silicon・Intel universal / 署名+公証済み 検証: 385 green(+3)。うち1本は今回の 400 の回帰テスト
1.10.1 — 2026-07-29
利用者からの報告で分かった不具合の修正です。
⌘F が効かなかった(8MB 未満のファイル)
MrEditor は 8MB を境に、大きいファイルは読み取り専用の高速ビューアで、小さいファイルは編集ペインで開きます。検索と置換は、この大きいファイル側にしか作られていませんでした。 そのため、実際に編集するようなサイズのファイルでは ⌘F がビープするだけで、編集メニューの「検索…」も灰色のまま。エディタを名乗っておきながら、普通のテキストを検索できない状態でした。
編集ペインに検索・置換を実装しました。
- 一致は全部ハイライト。件数は「3 件中 1 件目」まで出ます
- ⌘G / ⇧⌘G で次・前へ(末尾まで行くと先頭へ回り込みます)
- 複数語(スペース区切り)・正規表現(先読み・後読み、
^$は行頭行末)・大小区別(Aa) - 置換・すべて置換(すべて置換は 1 回の ⌘Z で戻ります)・ケース維持置換(aA) ――
timeout / TIMEOUT / Timeoutを一度にdelay / DELAY / Delayへ - 一致行だけ表示(漏斗)は巨大ファイル側の機能なので、編集ペインでは出しません
同じ穴が 2 つあったので、一緒に
- 行へ移動(⌘L) も編集ペインでは何も起きませんでした(メニューは有効なのに無反応)。直しました
- アンドゥが窓ごとの共有でした。1 つの窓で複数ドキュメントを開く作りなので、⌘Z が別のドキュメントの編集を巻き戻すことがあり、ファイルを開くと全ペインの履歴が消えていました。ドキュメントごとに持つようにしました
動作環境: macOS 13+ / Apple Silicon・Intel universal / 署名+公証済み 検証: 382 green(+21)。配布した .app で ⌘F・次/前・置換・すべて置換(ケース維持)・⌘Z・⌘L を実機で通しました
1.10 — 2026-07-29
1.9 の AI エラー診断(BYOK)を、待ち時間と設定の両面から磨きました。
答えが書かれる端から流れてくる
待って一気に出るのをやめました。実測(Gemini・実機)で初トークンまで 4.6 秒、そこから約 0.8 秒で 328 字が流れ込みます。
- 読むために上へスクロールしている間は、勝手に追随しません
- Esc で閉じれば受信も止まります(通信を残さない)。解析し直しは前の流れを捨てて仕切り直し
- 途中で失敗しても、そこまで読めていた本文は消えません
モデルは選んで、確かめる
- モデル欄がドロップダウンに。一覧に無い ID は直接入力できます
- 接続テストボタン:本番と同じ経路で一往復し、鍵・モデル ID・エンドポイントをその場で確かめます
- テストに通ったモデルは覚えて、次から一覧の先頭に出ます(通らなければ覚えないので、打ち間違いで一覧が汚れません)
失敗が読める
プロバイダの英語をそのまま出すのをやめました。何が起きたかを日本語で言い切り(401=キーが拒否/404=モデルが見つかりません/429=レート上限/5xx=プロバイダ側)、原文は手がかりとして下に小さく残します。
対応プロバイダ: Anthropic / OpenAI / Google (Gemini)。キーは Keychain 保管、原価はご自身の鍵持ち(BYOK)です。
macOS 13+ / Apple Silicon・Intel universal / Developer ID 署名+公証済み。
既知の穴: Anthropic・OpenAI のストリーミングは手元に鍵が無く、実機での通し確認ができていません(形は自動テストで検証済み)。何かあれば Issue でお知らせください。
1.9 — 2026-07-28
AI連携(BYOK・無料)
ログ/テキストの「今見ている箇所にAIをぶつける」単発解析を追加しました。
- エラーの原因を推測(⌘⌥E / AIメニュー / パネルの「解析」ボタン) エラーやスタックトレースを選ぶと、あなたの言語で「何が起きたか/原因/次の一手」を返します。移動可能なフローティングパネルに表示・Escで閉じ・都度解析・コピー可。大きなログの閲覧ペインでも選択があれば効きます。
- BYOK(自前キー=原価ゼロ): Anthropic / OpenAI / Gemini に対応。Geminiは無料キーでそのまま使えます。
- キーは Keychain に保存(平文で持ちません)。ベースURL上書きは https 限定。環境設定に「AI」タブを追加。
MIT・署名/公証済み。全 340 テスト green。
https://mr-tabata.github.io/MrEditor/
1.8 — 2026-07-27
巨大ファイルを落とさず開ける Mac エディタ、1.8。行まわりの表示とマルチカーソル編集を追加しました。
行表示
- 行番号ガター — 大ファイルは自前描画、小ファイルは NSRulerView(設定は 1 つ)
- 不可視文字の表示 — タブ・改行・全角スペース・行末スペース(本文は書き換えません)
- ステータスバーに行:桁 — キャレット位置を表示
編集ツールボックス
- 行の分割… — 区切り文字で 1 行を複数行へ(行の連結の逆操作)
- 連番のパラメータ化 — 開始・増分・0 埋め桁数・区切りを指定して採番
マルチカーソル(小ファイルの編集ペイン)
- ⌘クリックで追加 / ⌥⌘↑↓ で上下 / ⌘D で次の同一語 / Esc で解除
- 全キャレットの変更が 1 アンドゥに載ります
検索・置換
- ケース維持置換(aA トグル) — 一致した綴りの大文字小文字を置換文字列へ引き継ぐ
署名・公証済み(Notarized Developer ID)。ダブルクリックで開けます。macOS 13+。
1.7.1 — 2026-07-23
テキスト変換ツールボックス(書式メニュー)に3つの行操作を追加:
- 行を連結 / Join Lines — 複数行を1行に(改行を空白1つに畳み、各行前後の空白を除去、空行は落とす)
- 字下げ / Indent — 各行頭にタブ1段(空行は対象外)
- 字上げ / Outdent — 先頭タブ1つ、無ければ先頭スペースを最大4つ剥がす(字下げと往復可)
両ペインで動くので 10 GB ファイル内の選択にも効きます。
署名・公証済み(Developer ID / Apple notarized)。macOS 13+。
1.7 — 2026-07-19
M3 無料コアの最後の2項目を消化し、M3 を完結させるリリースです。
新機能
- 正規表現ルックアラウンド — 検索・置換で先読み
(?=)(?!)・後読み(?<=)(?<!)(可変長含む)に対応。 - ANSI カラー(ログ閲覧時) — ログ中の ANSI エスケープ(
ESC[…m)を色に変換して表示。エスケープ列は本文から除去。16色/高輝度/256色/truecolor・太字/斜体/下線に対応。環境設定 ▸ 配色 でオン/オフ(既定オン)。 - 背景透明度(ウィンドウ全体・iTerm 風) — 本文も周辺 UI も半透明にして背後のデスクトップを透かせます。環境設定 ▸ 配色 のスライダ(30〜100%)。
- 透明度・ANSI 設定は外観プロファイル(
.mreditortheme/mreditor://共有リンク)にも含まれます。
English
- Regex lookahead/lookbehind in search & replace.
- ANSI colors in logs: escape sequences are colorized while viewing and stripped from the text (16/bright/256/truecolor, bold/italic/underline). Preferences ▸ Colors.
- Window-wide background opacity (iTerm-style translucency), Preferences ▸ Colors.
Developer ID 署名+公証済み(Notarized)。macOS 13+。
1.6 — 2026-07-19
外観テーマと共有(環境設定 ▸ 配色)
- プリセットテーマ拡充: System / Solarized Dark・Light / Monokai に加え Dracula・Nord・Grass・Red Sands。本文の色と周辺 UI(サイドバー・ガター・ステータスバー)がまとめて切り替わります。
- 見た目の共有: 外観一式(テーマ・配色・フォント・体裁)を
.mreditorthemeファイルに書き出し/読み込み。あるいは リンクをコピー — 自己完結したmreditor://リンクで、MrEditor を持つ相手がワンクリックで適用できます(適用は必ず確認をはさむ)。アカウントもサーバも不要。
Signed with Apple Developer ID and notarized — just double-click, no right-click needed.
Full changelog: https://github.com/MR-TABATA/MrEditor/compare/v1.5...v1.6
1.5 — 2026-07-18
Text toolbox (Format menu)
A new Format menu applies transforms to the current selection — one undo each, in both the small-file and 10 GB panes.
- Case — UPPER / lower / Title Case / tOGGLE cASE
- Encode / decode — URL, Base64, HTML entities (decoders leave invalid input untouched)
- Line ops — sort (ascending / descending), remove duplicate lines (keeps first-seen order), reverse, number lines
- Filter Through Command (⌥⌘R) — pipe the selection through any shell command (
jq .,sort,sed 's/a/b/g') and replace it with the output. Runs off the main thread with a timeout.
Also fixes a small-file status-bar byte count that didn't update after edits.
「書式」メニューから、選択テキストにその場で変換をかけられます(各1アンドゥ・小ファイルと 10 GB 両ペインで動作)。ケース変換/URL・Base64・HTML エンコード&デコード/行のソート・重複削除・逆順・連番、そして 外部コマンドに通す(⌥⌘R) で選択を jq・sort・sed などに流して置換できます。
Signed with Apple Developer ID and notarized — just double-click. Universal (Apple Silicon / Intel).
1.4 — 2026-07-17
JSON 整形+その場クエリ窓(⌥⌘J)。詳細は README のロードマップ 1.4 参照。
1.3 — 2026-07-16
MR Editor 1.3
- diff の入口に「URL と比較」を追加(https 限定)
- 性能値を 1.3 で測り直し(README/LP 更新)
macOS / Apple Silicon・Intel 対応。Developer ID 署名 + 公証済み。
1.2.1 — 2026-07-14
修正: マージが「できていなかった」
1.2 のマージは、矢印(→)を押しても画面上は何も動きませんでした。内部で印を付けて保存時にまとめて適用する作りだったためです。矢印が右を指しているのに右は変わらない —— マージできていないのと同じでした。
矢印の向きどおりに直しました。→ を押すと、左の内容がその場で右へ入ります。
| 差分 | → を押すと |
|---|---|
| 変更された行 | 右が左の内容になります |
| 左にしかない行 | 右へ入ります |
| 右にしかない行 | 打ち消し線が付いて落ちます(左に合わせる) |
保存(表示 ▸ 比較(diff)▸ マージ結果を別名で保存…)では、その右側が書き出されます。元の 2 つのファイルには触りません。
あわせて
- **ヘッダに「N 箇所を取り込み」**と出るようにしました(配色テーマによっては行の色の変化に気づけないため)
- 矢印が押しにくかったのを直しました — 差分の行なら、どこを押しても取り込めます
- 取り込んだ行の色を濃くしました
1.2 でマージを試して「動かない」と思われた方、申し訳ありませんでした。
Apple Developer ID で署名し、Apple の公証を通しています。ダブルクリックで開きます。macOS 13+。
1.2 — 2026-07-14
新機能: マージ
比較(diff)で見つけた差分を、取り込めるようになりました。
- 差分の横の矢印をクリックすると、その差分だけ右の内容を取り込みます(もう一度押すと取り消し)
- ⌥→ / ⌥← でも同じ操作ができます。⇧⌘] / ⇧⌘[ で差分から差分へ移動
- 左のファイルが土台です。採用した差分だけが入ります
- 表示 ▸ 比較(diff)▸ マージ結果を別名で保存… で書き出します
元の 2 つのファイルには触りません。 何も採用しなければ、左のファイルがそのまま出てきます。
巨大ファイルでも本文をメモリに抱えません(左右のソースからバイトを流し込むだけ)。
修正
- 差分間の移動(⇧⌘])が進まないことがありました — 画面に収まる小さなファイルで、何度押しても同じ差分に戻っていました
- 起動するたびにカラーパネル(色の選択窓)が開くことがありました — 環境設定で一度色を選ぶと、macOS がそれを毎回復元してしまうためです。もう開きません
- 他のアプリから切り替えた直後、矢印の最初のクリックが効きませんでした
Apple Developer ID で署名し、Apple の公証を通しています。ダブルクリックで開きます。Apple Silicon / Intel 両対応。macOS 13+。
1.1.1 — 2026-07-13
修正
「2 つのファイルを比較」(⇧⌘D)が、何も起きないことがありました。
1 つのパネルで ⌘クリックして 2 つ同時に選ぶ必要があり、普通に「1 つ選んで開く」と操作した場合は、パネルが閉じるだけで何も起きませんでした(エラーも出ません)。
1 つ目 → 2 つ目、と順に訊くようにしました。2 つ目を選ぶときは、1 つ目と同じフォルダから始まり、「◯◯ と比較するファイルを選んでください」と表示します。2 つまとめて選ぶ操作も、これまで通り使えます。
1.1 で比較(diff)を使おうとして開けなかった方、申し訳ありませんでした。
Apple Developer ID で署名し、Apple の公証を通しています。ダブルクリックで開きます。Apple Silicon / Intel 両対応。macOS 13+。
1.1 — 2026-07-13
新機能: 比較(diff)
表示 ▸ 比較(diff)。入口は 3 つあります。
- 2 つのファイルを選ぶ(⇧⌘D)
- 開いているドキュメント同士 — 未保存の本文もそのまま比べます(ディスクの中身ではなく、いま見えているものを比べる)
- クリップボードと比較 — コピーしてきたログと、開いているファイルを突き合わせる
左右に並べ、追加・削除・変更を色で出します。変更行は行内の文字差分まで示すので、status=200 が 500 に変わった 1 文字が色で分かります。
- ⇧⌘] / ⇧⌘[ で次/前の差分へ。先頭が何万行同じでも、開いた瞬間に最初の差分へ飛びます。
- スクロールバーに差分の位置が出ます(赤=削除・緑=追加・黄=変更)。数百万行のどこが違うか一目で分かります。
- 列の中で選択して ⌘C でコピー。相手側にしか無い行(画面では空白で埋めている行)は混ぜません —— 存在しない空行を貼り付けたら嘘になるので。
正直な限界
比較には 1 行あたり 16 バイトの索引が必要です。閲覧(ファイルを 1 バイトも抱えない)とは違い、これは実際にメモリを使います。
お使いの Mac に載らないサイズは、理由を表示して断ります(黙って落ちることはありません)。24GB の Mac なら、左右あわせて約 6,200 万行(1 ファイル ≒ 3.5GB のログ)まで。
実測: 1GB × 2(871 万行)で 5.4 秒・1.7GB。
Apple Developer ID で署名し、Apple の公証を通しています。ダブルクリックで開きます。Apple Silicon / Intel 両対応。macOS 13+。
1.0.3 — 2026-07-12
修正
日本語入力がONのとき、行ジャンプ(⌘L)が黙って失敗していました。
⌘L の入力欄に数字を打つと IME を通って全角「86,420,337」で入り、アプリはそれを数値として読めず、エラーも出さずに何も起きませんでした。変換候補に出る桁区切り付きの「86,420,337」を確定した場合も同様です。日本語で使っていれば確実に踏む経路でした。
全角数字とカンマを正規化してから読むようにしました。半角でも全角でも、カンマ付きでも跳びます。
そのほか
README と LP に載せていた性能値を、配布版で測り直して差し替えました(#23)。以前の値は 1.0 より前のビルドで測ったものを使い回しており、実メモリ 44MB は誤りでした。
| 指標 | 実測(10.00 GB / 86,420,337 行・配布ビルド) |
|---|---|
| 最初の行が出るまで | 65〜83 ms |
| 全索引の構築(背景・表示は止まらない) | 9.1〜9.5 秒 |
| ファイル本体のページ | resident 4.2 GB・dirty 0 バイト |
| アプリの実メモリ | 162 MB(何も開いていなければ 32 MB) |
10 GB を開くコスト自体は 0 です(mmap するだけでコピーしない)。162 MB の中身はウィンドウの描画バッファと、10 GB をマップするためのページテーブルであって、ログの中身ではありません。手元で再現する手順は README の「性能」節に置きました。
Apple Developer ID で署名し、Apple の公証を通しています。ダブルクリックで開きます。Apple Silicon / Intel 両対応。macOS 13+。
1.0.2 — 2026-07-11
未保存の書きかけを、クラッシュでも強制終了でも失わなくなりました。
何が変わったか
これまで、未保存の新規ドキュメントの本文が保存されるのはアプリを終了する瞬間だけでした。つまり強制終了・クラッシュ・電源断が起きると、書きかけは跡形もなく消えていました。
1.0.2 では、未保存の本文をそれ自体のファイルとして持ちます(~/Library/Application Support/MrEditor/Drafts/)。打鍵のたびに(1 秒ごとに落ち着いてから)書き出し、他のアプリへ切り替えたときにも書き出します。起動時は、開いていた一覧ではなく、この draft ファイルそのものを見にいきます。
そのため、たとえアプリが kill -9 で殺されても、開いていた一覧が壊れても、書きかけの本文はそのまま戻ります。1.0.1 からアップデートする場合、書きかけがあれば新しい形式へ自動で引き継がれます。
書きかけが消えるのは 2 つの場合だけです — ファイルに保存したときと、あなたがそのドキュメントを閉じて「保存しない」を選んだとき。
そのほか
編集・検索・構造化表示・巨大ファイルの扱いは 1.0 と同じです。
Developer ID で署名・公証済み。ダブルクリックで開きます。universal(Apple Silicon / Intel)。macOS 13+。
1.0.1 — 2026-07-11
1.0 を使っている方は、このリリースに更新してください。データ消失バグを直しました。
直したこと
ファイルを開いて MrEditor を起動すると(Finder の「このアプリで開く」・アイコンへのドロップ・コマンドライン引数)、前回開いていた未保存の新規ドキュメントが本文ごと消えていました。保存先を持たないドキュメントなので、消えたら二度と戻せません。
原因は、起動時に開いたファイルが、まだ読み込んでいない前回のセッションをその場で上書きしていたことでした。1.0 で Finder 統合(「このアプリで開く」)に対応したことで、この経路が初めて日常操作から踏めるようになり、表面化しました。
これからは、ファイルを開いて起動しても未保存の下書きは必ず戻ります(開いたファイルはそのままアクティブ)。
そのほか
コードの変更はこの修正だけです。編集・検索・構造化表示・巨大ファイルの扱いは 1.0 と同じです。
Developer ID で署名・公証済み。ダブルクリックで開きます(右クリックも xattr も不要)。universal(Apple Silicon / Intel)。macOS 13+。
1.0 — 2026-07-11
10 GB のテキストを、落ちずに開いて編集する Mac ネイティブのエディタ。
10 GB のログ ―― 86,420,337 行 ―― が 約 0.2 秒で開き、開いたままでも実メモリは 44 MB。末尾の行へのジャンプは 0.1 ms。その場で編集して atomic に保存できます。
1.0 に入っているもの
- 開く — 任意サイズの巨大テキスト(10 GB で検証)。mmap + 疎な行インデックスで、表示開始はほぼ一瞬
- 編集・保存 — サイズ不問。巨大ファイルは piece table でその場編集、atomic 書き込み。UTF-8 / Shift-JIS / EUC-JP の変換保存、EOL 追従
- 検索 — mmap をストリーム走査。複数語 AND・正規表現・フィルタ表示 / live grep・
tail -f - 構造化表示 — CSV / TSV を等幅カラムに桁揃え、NDJSON をフィールド投影(東アジア文字幅対応)
- ワークスペース — 複数ドキュメント・サイドバー・セッション復元(未保存の新規も本文ごと)・Finder 統合・印刷 / PDF 出力
- カスタマイズ — フォント・配色テーマ(本文+UI)・表示設定
- 日本語 / 英語 UI
インストール
MrEditor-1.0.dmg を開き、MrEditor を Applications にドラッグしてください。
Apple Developer ID で署名し、Apple の公証を通しています。 右クリックも xattr も不要です。ダブルクリックするだけで開きます。Apple Silicon / Intel の両対応(universal)。
macOS 13 以降。MIT ライセンス・オープンソース。
Full Changelog: https://github.com/MR-TABATA/MrEditor/compare/v0.9...v1.0
0.9 — 2026-07-10
✅ ダブルクリックで開きます
Apple Developer ID で署名し、Apple の公証(notarization)を通しました。
これまで必要だった「右クリック →『開く』」も xattr -dr com.apple.quarantine も、もう不要です。ダウンロードして Applications にドラッグし、ダブルクリックするだけで開きます。
$ spctl -a -t install MrEditor-0.9.dmg
accepted
source=Notarized Developer ID
.app と dmg の両方に公証チケットを焼き付けてあるので、オフラインの Mac でも Gatekeeper を通ります。
これまでのバージョンについて
- v0.7 以前 — ダウンロードした Mac で起動しません(
.appバンドルが未署名で、署名の封が矛盾していたため)。 - v0.8 — 起動しますが、初回だけ右クリック →「開く」が必要です(ad-hoc 署名)。
- v0.9 — 署名・公証済み。その操作も不要です。
v0.8 をお使いの方は、入れ替えをおすすめします(アプリの「MrEditor ▸ アップデートを確認…」からも辿れます)。
中身は v0.8 と同じです
v0.8 で入った Finder 統合・印刷/PDF 出力・アップデート確認・新アイコン・universal ビルド(Apple Silicon / Intel)は、そのまま入っています。変わったのは署名と公証だけです。
インストール
MrEditor-0.9.dmg を開き、MrEditor を Applications にドラッグしてください。それだけです。
Full Changelog: https://github.com/MR-TABATA/MrEditor/compare/v0.8...v0.9
0.8 — 2026-07-10
ℹ️ より新しい v0.9 があります
v0.8 は起動しますが、ad-hoc 署名のため 初回だけ右クリック →「開く」が必要です。 v0.9 は Apple Developer ID で署名・公証済みで、ダブルクリックするだけで開きます。 中身の機能は同じです。
⚠️ v0.7 以前をお使いの方へ
v0.7 以前の dmg は、ダウンロードした Mac で起動しません。「アプリケーション“MrEditor”は予期しない理由で終了しました」と表示され、「再度開く」を押しても再びクラッシュします。
.app バンドルに署名を施していなかったため署名の封が矛盾し、macOS が quarantine の付いたアプリを検証してプロセスを終了させていました。開発機では quarantine が付かないため、この不具合は長らく見えていませんでした。
v0.8 で修正しました。 お手数ですが、こちらを入れ直してください。
あわせて Apple Silicon / Intel の universal ビルドになりました。従来は arm64 専用で、Intel Mac では一度も起動できていませんでした。
新しいこと
- Finder 統合 — Finder の「このアプリケーションで開く」に MrEditor が並びます(
.log/.txt/.csv/.jsonなど)。既定のアプリは奪いません。 - 印刷・PDF 出力 — ファイル ▸ プリント…(⌘P)。プリントダイアログの「PDF ▸ PDF として保存」で PDF になります。巨大ファイルは数百万ページになるため無効です。
- アップデート確認 — 新しい版が出たら知らせます(起動時・1日1回まで)。置き換えはせず、ダウンロードページを開くだけ。環境設定 ▸ 一般 でオフにできます。
- 新しいアイコン — プロンプト
>_。Dock の他のアプリと大きさが揃うようになりました。 - 表示の修正 — 構造化表示の帯が半透明で、下の本文が透けて読めなくなっていた問題を修正。
インストール
MrEditor-0.8.dmg を開き、MrEditor を Applications にドラッグしてください。
Apple Developer ID による署名・公証はまだしていません(証明書が未取得のため)。初回起動時に macOS が開発元を検証できず警告するので、MrEditor を右クリック →「開く」→ ダイアログで「開く」を選んでください。または:
xattr -dr com.apple.quarantine /Applications/MrEditor.app
Full Changelog: https://github.com/MR-TABATA/MrEditor/compare/v0.7...v0.8
0.7 — 2026-07-09
⚠️ このバージョンは起動しません
v0.7 の dmg は、ダウンロードした Mac で起動しません。「アプリケーション“MrEditor”は予期しない理由で終了しました」と表示されます。
.appバンドルに署名を施していなかったため署名の封が矛盾し、macOS が quarantine の付いたアプリを検証してプロセスを終了させていました。開発機では quarantine が付かないため、長らく見えていませんでした。→ v0.9 をお使いください。 修正済みで、Apple Silicon / Intel の universal ビルドになっています。
v0.6 に寄せられた不具合報告2件の修正と、その過程で必要になったセッション復元の実装です。
修正
- 「MrEditor について」が開かない — アプリメニューの項目が無効化されていて、クリックしても何も起きませんでした。標準の About パネルが名前とバージョンを表示して開くようになりました。
- 復元直後に本文が空に見える — ドキュメントを切り替えた直後、操作するまで本文が描画されないことがありました。
新機能
- セッション復元 — 起動すると、前回終了時に開いていたドキュメントがサイドバーに並び直ります。順序とアクティブなタブも復元し、消えたファイルは黙って読み飛ばします。
- 未保存の新規ドキュメントも本文ごと復元 — ⌘N で作った書きかけのタブは、保存しなくても次回起動時に中身ごと戻ります。そのため終了時に新規タブの保存を促されることはありません(保存済みファイルの未保存編集は従来どおり確認します)。
インストール
MrEditor-0.7.dmg を開き、MrEditor を Applications にドラッグしてください。
コード署名・公証をしていないため(Apple Developer ID 未取得)、初回起動時に Gatekeeper に弾かれます。開くには MrEditor を右クリック →「開く」→ ダイアログで「開く」、または:
xattr -dr com.apple.quarantine /Applications/MrEditor.app
Full Changelog: https://github.com/MR-TABATA/MrEditor/compare/v0.6...v0.7
注記(2026-07-09 追記): 公開している
MrEditor-0.7.dmgは、アイコンを新デザイン(プロンプト>_)に差し替えたものへ再ビルドして置き換えました。コードは v0.7 リリース時から一切変わっていません(アイコン素材のみ)。タグ
v0.7が指すコミットはアイコン刷新より前のため、タグからソースをビルドすると旧アイコンになります。新アイコンを含むソースはmain(PR #11)にあります。
0.6 — 2026-07-08
新機能(v0.6)
構造化表示(読み取り専用・表示 ▸ 構造化表示 で切替)
- CSV / TSV を等幅カラムに桁揃え、NDJSON はキーごとに列へ投影。
- 列幅はサンプルから固定するので 数百万行でも一瞬で整形・スクロールでもブレない。
- 東アジア文字幅対応 — 全角の日本語列もピタリ揃う。
- 表示だけの変換でファイルは変更しない(保存しても元の CSV/JSON のまま)。有効中は「元のテキストに戻す」ボタン付きの帯を表示。
v0.5(フォント・表示設定・配色テーマ)までの機能はすべて継続。
未署名ビルド(Apple Developer ID 未取得)のため、初回は 右クリック →「開く」、または
xattr -dr com.apple.quarantine /Applications/MrEditor.app で起動してください。
🤖 Generated with Claude Code
0.5 — 2026-07-08
新機能(v0.5)
カスタマイズ
- フォント選択 — 任意の等幅ファミリ+サイズ(環境設定 ▸ 表示)。起動をまたいで保持。
- 表示設定 — タブ幅(2/4/8)・行間・現在行ハイライト・カーソル形状(バー/ブロック/アンダーライン)・折り返し。
- 配色テーマ — System(ライト/ダーク自動)・Solarized Dark / Light・Monokai・完全カスタム。本文だけでなく**周辺 UI(サイドバー・ガター・ステータス・タイトルバー)**まで連動。
ワークスペース
- サイドバー各行に閉じる(×)ボタン。未保存のドキュメントは色分け表示。
v0.4(編集・保存)までの機能はすべて継続。
未署名ビルド(Apple Developer ID 未取得)のため、初回は 右クリック →「開く」、または
xattr -dr com.apple.quarantine /Applications/MrEditor.app で起動してください。
🤖 Generated with Claude Code
0.4 — 2026-07-07
巨大ファイルを編集・保存できるようにした大型リリース。ビューアから本格エディタへ。10GB / 8,600万行クラスでもその場で編集し、ストリーム書き出し→原子的差し替えで保存する(PieceTable バック)。
新機能
- 巨大ファイル編集 — GB〜10GB 級でも挿入・削除・IME・Undo/Redo・Cut/Copy/Paste。mmap した原本に piece table を被せるので、開くのも編集するのも一瞬。
- 保存 — ストリーム書き出し → atomic rename。非同期・進捗表示・キャンセル対応。
- 置換(Find & Replace) — すべて置換・正規表現(
$1参照)・反復。 - 長い行 — 折り返し/横スクロールを設定で切替。
- ダブル/トリプルクリック選択(単語/行)+ Shift+クリックで範囲拡張。
- 改行コード追従 — 読込時に CRLF/LF/CR を検出し、挿入・貼り付け・保存をファイルの改行に揃える(Windows の CRLF を黙って壊さない)。
- エンコーディング指定で開き直す — 自動判定ミスの文字化けを、指定エンコードでの再デコードで直す。
- エンコード変換保存 — ファイル ▸ テキストエンコーディングで保存先を設定 → 次の保存で変換書き出し(表現不能文字は警告)。
- Window / Help メニュー(Minimize・Zoom・ウィンドウ一覧、ヘルプ)。
- 保存済みへ戻す(Revert)。
インストール
MrEditor-0.4.dmg をダウンロードして開き、MrEditor を Applications にドラッグ。
未署名ビルドのため初回は右クリック →「開く」、または
xattr -dr com.apple.quarantine /Applications/MrEditor.app。
macOS 13+ / MIT。
0.3 — 2026-06-29
巨大ファイルビューアの表示まわりを磨き込んだリリース。
新機能
- 複数ドキュメント — 複数ファイルを同時に開き、左サイドバーのリストで切り替え。
- 行番号ジャンプ(⌘L) — 開いた直後にそのまま行番号を入力して移動。
- フォント拡大縮小(⌘+ / ⌘- / ⌘0) — 起動をまたいで保持、全ドキュメント共通。
- 最近使った項目(ファイル ▸ 最近使った項目を開く)。
- 大文字小文字の区別検索トグル。
- ウィンドウへのファイルのドラッグ&ドロップで開く。
インストール
MrEditor-0.3.dmg をダウンロードして開き、MrEditor を Applications にドラッグ。
未署名ビルドのため初回は右クリック →「開く」、または
xattr -dr com.apple.quarantine /Applications/MrEditor.app。
macOS 13+ / MIT。
0.2 — 2026-06-28
読む・探すに全振りした「無料コア」。前回(v0.1)の「10GBを44MB・210msで開く」ビューアに、本格的な検索系を追加しました。すべて mmap をストリーム走査し、ファイルを読み込みません。10GB・全エンコーディング(UTF-8/SJIS/EUC)で検証済み。
追加機能
検索(⌘F)
- 可視行の即時ハイライト + 背景の全文走査で正確な件数(一致行は上限100万)
- 複数語 AND(スペース区切り)/正規表現(
.*トグル・無効パターンは安全表示) - 次/前へ移動して各一致行へジャンプ(「N件中M件目」)
フィルタ表示 / live grep
- 一致行だけを表示。ガターには非連続の実行番号。走査中も結果がストリームで増える
tail -f(末尾追従・⌥⌘F)
- ファイルが伸びるのを 0.5s ポーリングで検知 → 再マップ+索引の増分拡張 → 末尾にいる時だけ自動スクロール
コピー(⌘C)
- 可視範囲をプレーンテキストでクリップボードへ
まだ作らないもの
編集・保存。MrEditor は根っこが「速いリーダー」です。
インストール
MrEditor-0.2.dmg をダウンロード → 開く → Applications へドラッグ。
未署名のため初回は右クリック →「開く」、または xattr -dr com.apple.quarantine /Applications/MrEditor.app。
0.1 — 2026-06-26
Mac ネイティブの巨大テキストビューア(v0.1 はビューア専用、編集なし)。 10GB のテキストを落ちずに表示することを目標に、Swift / AppKit で実装。
実装済み
- mmap でファイルを仮想マップ(全文をメモリに乗せない)
- 疎な行インデックス(行頭オフセットを STRIDE 行ごとに保持、背景で全索引構築)
- 可視行のみ Core Text 描画(巨大 documentView 高さに頼らず float 精度限界を回避)
- 自前スクローラ(単位=行)・キー操作
- 文字コード自動判定:UTF-8 / Shift-JIS / EUC-JP(実ファイルで判定確認)
- ⌘O・Finder で開く・ドラッグ&ドロップ
このリリースの主な修正
本文領域が真っ白になる問題を解決。custom draw(_:) を持つビューに
AppKit コントロールを同居させると、同一ウィンドウ内の別カスタム描画ビューの
画面合成が壊れる挙動を回避(StatusBarView をレイヤ描画へ変更)。
v0.1 スコープ外(v0.2 以降)
編集・保存・検索/grep・シンタックスハイライト・サイドバー/タブ・設定・横スクロール・文字コード手動切替。
既知の未検証項目
10GB 実機ファイルでの 3 秒以内表示・体感スクロール・リサイズ耐性・長時間メモリ常駐は未測定。
