テキストエディター「Mery」ベータ版 v3.8.8 を公開

v3.8 系のアップデートも、気づけばそれなりのボリュームになってきました。

どこかで区切りをつけたいとは思いつつ、細かいところに手を入れ始めると、結局もう少しだけ…となってしまいます。

今回も、そんな流れの中での更新です。派手な変更はありませんが、気になっていた部分にひとつずつ手を入れています。

マクロ機能の今後について

今回のアップデートは、いつもの細かな改善だけでなく、Mery のマクロ機能にとって少し特別な意味を持っています。

ご存じの方もいるかと思いますが、2024年5月に Microsoft が VBScript の廃止を発表しました。

理由はいろいろあるようですが、この発表で「JScript や Active Script 全体は、この先どうなるの…?」という不安が、一気に現実味を帯びてしまいました。

これまで Mery は、JScript や VBScript、Python Script などでマクロを書けるようにしてきました。しかしどれも、Active Script という同じ仕組みを土台にしています。

つまり、その土台が不安定になれば、Mery のマクロも一緒に揺れてしまうわけです。

そこで今回の v3.8 では、Mery のマクロを 「これからも安心して使ってもらえるかたち」 にするために、思い切ってエンジンの載せ替えをすることにしました。

【Amazon.co.jp限定】Elgato Stream Deck MK.2 エルガトストリームデック MK.2【15キー配列】ライブコンテンツ作成用のコントローラー 配信者向けデバイス OBS/Twitch /YouTube連携 Mac/PC対応
Elgato
カスタマイズ自在のキーで、アプリ操作や自動化をスムーズに。デスクワークからクリエイティブ用途まで幅広く活躍します。
Amazon で探す 楽天市場で探す

スポンサーリンク

PR

それから、ネットショッピングが日常になってきたなら、配送料を気にせず注文できる Amazon プライム会員に登録しておくのは、とても効率的な選択です。

30日間のプライム無料体験はこちら!

Amazon プライム、実は「無料配送」だけのサービスではありません。

映画や音楽が楽しめることは有名ですが、意外と知られていないのが Amazon Luna Standard (旧 Prime Gaming) です。

これがなかなか侮れません。毎月、PC ゲームやゲーム内アイテムが追加料金なしでもらえます。最新作ばかりではありませんが、ときどき「えっ、これももらえるの?」と思うようなタイトルが紛れているのが魅力です。

たとえば、「Tomb Raider IV-VI Remastered」は7月18日まで。気になっていた人は忘れないうちに受け取っておきましょう。

さらに、現時点 (7月5日) の Prime Video のラインアップもかなり充実しています。

まず驚いたのが「ドラゴンボールZ」。久しぶりに見返していますが、気を溜める時間が長いこと長いこと…。子どものころはよく毎週あれを待てていたものです。それでもサイヤ人編やフリーザ編は、何度見てもやっぱり面白い。ベジータやフリーザの登場シーンはいま見てもワクワクすっぞ。

そして気付いたのですが、「はたらく魔王さま!」まで見放題になっているではありませんか。これは見ないわけにはいきません。

現在配信中の作品の中で個人的に特におすすめしたいのが、湊かなえさん原作、榮倉奈々さん主演の「Nのために」です。

犯人は誰なのか。あの島で何が起きたのか。第 1 話から父親と母親のインパクトが強烈で、一気に物語へ引き込まれます。登場人物それぞれの「N」が少しずつつながっていく構成も見事です。

ある理由から地上波での再放送は難しいともいわれている作品なので、今見られるうちにチェックしておきたいところです。Prime Video で配信されるのはかなり久しぶりではないでしょうか。

配送特典だけでも十分便利な Amazon プライムですが、ゲームや映像作品まで含めて考えると、あらためて「元は取れているな」と感じます。

Nのために Blu-ray BOX
TCエンタテインメント
美しい島の風景と丁寧な人間ドラマが心に残る作品。出演する窪田正孝さんの演技も見どころの一つです。
Amazon で探す 楽天市場で探す

バイナリ モードの ASCII 表示に対応

おまけ機能として搭載しているバイナリ モードですが、細々と手を入れています。

バイナリ データを眺めていると、「このあたり、何か文字列っぽいものが入っていそうだな」と感じることが意外とあります。でも、16 進数だけを見ていると、どこに何があるのか分かりづらいんですよね。

そこで、右側に ASCII プレビューを表示できるようにしてみました。文字列部分を視覚的に追いやすくなったので、ちょっと中身を確認したいときには便利になったと思います。

なお、ASCII 表示は閲覧専用です。直接編集することはできませんが、バイナリを読むときの補助として使っていただければと思います。

バイナリ モード用のルーラーを実装

あわせて、バイナリ モード用のルーラーも実装しました。

通常のテキスト編集用ルーラーとは違い、バイナリ モードでは「今どの位置を見ているか」が重要なので、16 進数表示に合わせた専用レイアウトにしています。

ただし、本格的なバイナリエディターのように入力枠が固定されているわけではありません。編集してスペースが入ったり、1 行が 16 バイト単位でなくなった場合は、アドレスとしての意味は崩れてしまいます。

また、現時点では以下の制限があります。

  • 16 進数で使用される文字 (0 ~ 9A ~ Fa ~ f) は固定幅で描画されます。
  • エディターコンポーネントの仕様上、大きなファイルの編集には向きません。
  • バイナリエディターとして本格的に機能強化していく予定はありません。

あくまで「ちょっと中身を覗いてみる」ための、おまけ的な機能としてお楽しみいただければと思います。

禁則処理のカスタマイズに対応

今回のアップデートでは、禁則処理のカスタマイズに対応しました。

Mery はこれまで「シンプルで分かりやすいこと」を重視しており、禁則処理についても Unicode のルールに基づいた自動処理に任せる設計としていました。

そのため、ユーザーさん側で細かく設定を変更する機能は、あえて用意していませんでした。

しかし、「禁則処理を調整したい」というご要望を多くいただいたこともあり、今回、カスタマイズ機能を追加することにしました。

これにより、行頭や行末に配置したくない文字を指定したり、特定の文字をぶら下げ表示にしたりと、用途に応じた柔軟な調整が可能になります。

設定方法

以下の手順で禁則処理をカスタマイズできます。

  1. [ツール] メニューから [オプション] を選択し、[オプション] ダイアログを表示します。
  2. [編集] カテゴリの、[禁則処理を行う] をオンにします。
  3. [既定] をオフにします。
  4. [行頭禁則文字]、[行末禁則文字]、[ぶら下げ文字] を設定します。
  5. 右下の [OK] ボタンをクリックして設定を適用します。

[既定] をオンにしておけば、従来どおり Unicode の仕様に基づいた禁則処理が適用されます。

各項目について

  • 行頭禁則文字

    行頭に配置できない文字を指定します。

  • 行末禁則文字

    行末に配置できない文字を指定します。

  • ぶら下げ文字

    行末にぶら下げて表示する文字を指定します。

    同一文字が [行頭禁則文字] に含まれる場合、[ぶら下げ文字] が優先されます。

英文ワード ラップについて

今回の変更に伴い、従来は禁則処理に含まれていた英文ワード ラップを、独立した設定として分離しました。

  • 英文ワード ラップを行う

    英単語の途中で不自然に改行されるのを防ぐ機能です。(既定ではオン)

  • 記号の後の折り返しを有効にする

    記号の後に英数字が続く場合に折り返しを許可します。

    $100100% など、記号と英数字の組み合わせのとき、その間で折り返しできるようになります。

これまで禁則処理をオフにしていた場合は、こちらの設定もあわせてご確認ください。

仕様上の制限

  • 対応している禁則処理は「追い出し」と「ぶら下げ」のみです。
  • 「追い込み」処理には対応していません。
  • 折り返しを超えてぶら下げられる文字は 1 文字までです。

従来のシンプルな使い勝手を保ちつつ、必要に応じて細かな調整も行えるようになりました。用途に合わせてご活用ください。

QuickJS に対応

今回のバージョンでは、Mery に 新しいマクロ エンジン「QuickJS」 を搭載しました。

QuickJS は、軽量で高速、そして新しい JavaScript 構文にも幅広く対応した、モダンで使い勝手の良いエンジンです。

この導入により、Mery のマクロ機能はこれまで以上にパワフルに。柔軟さも表現力もぐっと増して、「書いていて楽しい!」と思えるスクリプト環境になりました。

ちょっとした自動化はもちろん、本格的な編集機能の拡張まで、幅広いシーンで活躍してくれるはずです。

QuickJS とは?

QuickJS の魅力は、なんと言ってもその 「軽さ」。

とてもコンパクトなサイズながら、ES2023 仕様までしっかりサポートしていて、リソースが限られた環境でもサクサク動く優秀な JavaScript エンジンです。

しかも作者は、あの Fabrice Bellard 氏。

FFmpeg や QEMU といった巨大プロジェクトを手掛けてきた方で、技術的な信頼性はもう折り紙付きです。

外部 QuickJS Javascript Engine

Mery ではさらに、安定性向上やバグ修正が積極的に行われている QuickJS-NG を採用し、より安心して使える実行環境を選びました。

外部 Welcome to QuickJS-NG | QuickJS-NG

QuickJS を使うには?

Mery のマクロで QuickJS を使う方法は、とてもシンプル。

マクロ ファイルの先頭にこの 1 行を書く、それだけです。

QuickJS
#language = "quickjs"
alert("Hello World!");

はい、もう QuickJS です。

…とはいえ、この例は従来の JScript でも動くので、QuickJS らしさは伝わりにくいですよね。

QuickJS だからこそ動くサンプルいろいろ

ここからは、JScript では動作しなかった QuickJS ならではのコードをいくつか紹介します。

サンプル 1: クラスのプライベート フィールド/メソッド
QuickJS
#language = "quickjs"
class Person {
    #name;
    constructor(name) { this.#name = name; }
    #sayHello() { alert(`Hello, ${this.#name}!`); }
    greet() { this.#sayHello(); }
}
new Person("Alice").greet(); // Hello, Alice!

JScript 時代にはまったく使えなかった、新しいクラス構文もフル対応。

サンプル 2: ES Modules をそのまま import

Markdown を HTML に変換する例です。マクロ ファイルと同じフォルダーに marked.js を置いておけば import できます。

QuickJS
#language = "quickjs"
import { marked } from "marked.js";
const md = "# Hello\n\nThis is *Markdown*.";
alert(marked(md));
相対パスは「マクロと同じフォルダー」、「Mery の Macros フォルダー」の順で検索されます。
サンプル 3: JScript では不可能だった lookbehind

正規表現の後読み (lookbehind) が使えるようになり、テキスト解析の幅が一気に広がります。

QuickJS
#language = "quickjs"
const text = "abc123def456";
const result = text.match(/(?<=abc)\d+/); 
alert(result); // 123
サンプル 4: Proxy で魔法のようなラッパーを作る
QuickJS
#language = "quickjs"
const obj = { a: 1, b: 2 };
const proxy = new Proxy(obj, {
    get(target, key) {
        alert(`GET: ${String(key)}`);
        return target[key];
    }
});
alert(proxy.a); // GET: a → 1

プロパティ アクセスをフックする仕組みをサッと作れるのは QuickJS の強み。マクロのデバッグにもツール化にも応用しやすいです。

QuickJS を採用したことで、「書きやすい」「読みやすい」「できることが段違い」という、新しいマクロ開発体験が Mery で可能になりました。

QuickJS を使用するには Windows 7 以降が必要です。

変更ログ

本バージョンではいくつかの不具合修正や機能改善が含まれています。現在お使いのバージョンで問題がある場合はバージョンアップで改善されるかもしれません。

v3.8.8 (2026-07-07)

  • テーマのインポートおよびエクスポートで使用するカラー コードのキー名が誤って変更される問題を修正

    フォーラム テーマのカラー コードの項目の変更について

  • メイン ディスプレイのスケールが 125% または 175% のとき、クール バーのサイズが正しく適用されないことがある問題の対策

    Delphi XE2 の TCoolBar の仕様による問題ですが、まだ対策は完璧ではありません。

v3.8.7 (2026-07-06)

  • QuickJS を v0.15.1 に更新
  • バイナリ モード用のルーラーを実装
  • バイナリ モードに ASCII 表示を実装
  • タブ アイコンを拡張子から取得するよう仕様を変更

    .exe.ico など、ファイルごとにアイコンが異なる場合に正しいアイコンが表示されないことがあったため、取得方法を見直しました。なお、これらのファイルでは Windows の既定のアイコンが使用されます。

  • [読み直し] 実行時、UTF-8 (BOM 付き) ファイルでも、指定したエンコードで読み直せるようにした

    [読み直し] コマンドで、BOM を無視して読み直せるようにしました。なお、[開く] コマンドは対象外です。

  • [外部ツール] の引数 $(Dir) の仕様を変更し、末尾に \ を含まないようにした

    Windows API や一般的なパス表現では、ディレクトリ末尾の \ を省略することが多く、$(Dir)\file.txt のように自分で \ を付ける書き方のほうが自然と判断しました。

  • マクロの document.selection.FindRepeat メソッドの仕様を変更

    • meFindRepeatNext: 0
    • meFindRepeatPrevious: 1
    • meFindRepeatWord: 2
    • 戻り値: True/False

    フォーラム meFindRepeatNext = 1 の値について

  • ステータス バーなどに表示される制御文字の表示形式を変更

    正規表現との整合性を考慮し、制御文字は半角スペースに置き換えて表示するようにしました。

    フォーラム 引用符等を検索して見つからないときにステータスバーに表示されるメッセージの検索文字の前にバックスラッシュが追加される

  • タイトル バー文字列の解析処理を高速化

    あわせて、$(DirName:3) のような階層指定にも対応しました。

    フォーラム タイトルバーでのフルパス表示で表示階層を制限したい

  • タブのタイトルやメニュー項目などの文字列の省略処理をサロゲート ペアに対応
  • ハイコントラスト モードでスプリッターを移動したとき、描画の残像のようなものが残る問題を改善

    フォーラム Zenモードでアウトラインが出ないようにしたい

  • ポップアップ メニューの幅が自動調整されない問題の対策

    Delphi の仕様により、TPopupMenu の項目を動的に変更した場合でも最大幅が維持されるため、対策を行いました。

  • [ポップアップ メニューの設定] ダイアログのサイズを調整
  • [ポップアップ メニューの設定] ダイアログのドラッグ アンド ドロップ操作を改善

    サブ メニューへのドロップに対応し、右クリック時のポップアップ メニューを追加しました。

  • 正規表現検索で、サロゲート ペアの直後にカーソルがある場合の [前を検索] の動作を改善

    正規表現によっては、ハイサロゲートとローサロゲートの間にマッチしてしまうケースがありました。

  • 検索ダイアログのサイズ変更でコンボ ボックスの補完が動いていた問題を修正
  • Per-Monitor DPI でモニタ間を移動時にコンボ ボックスの補完が動作することがある問題を修正

    ダーク モード対応以降、再発していました。

  • 検索履歴に改行が含まれる場合の履歴のコピーおよび貼り付けに対応

    フォーラム 検索・置換ダイアログの利便性向上と履歴管理の仕様改善のご提案

  • [文字カウント] の仕様を Word 風に変更

    • 単語数: 英文は単語数、和文は文字数、混在する場合はその合計
    • 文字数 (空白を除く): 空白文字および改行を除いた文字数
    • 文字数 (空白を含む): 空白文字を含み、改行を除いた文字数
    • 行数: 論理行数
    • 表示行数: 表示行数
    • 半角英数の単語数: 和文を除いた英文の単語数
    • 全角文字 + 半角カナの数: 英文を除いた和文の文字数
  • 縦書きに切り替えたとき、スクロール バーが表示されないことがある問題を修正
  • ルーラーを非表示にしたとき、IME の変換ウィンドウがウィンドウ外に表示されることがある問題を修正

    フォーラム ルーラーのオン・オフでの日本語入力の挙動違い

  • その他、細かい修正

    PCRE2 対応に向けて、逆方向検索の改善および置換文字列への対応を行いました。

v3.8.6 (2026-05-06)
  • ワークスペース機能使用時、特定条件下でバイナリ モードの編集中ファイルが正しく復元されない問題を修正

    [元に戻す情報を保持する]、[終了前にファイルの保存を確認しない] が有効な場合に、ファイルが正しく復元されない不具合がありました。

v3.8.5 (2026-05-04)
  • タイトル バーの更新処理を v3.8.3 の仕様にロールバック (v3.8.4 の変更を取り消し)

    フォーラム タイトルバーに「「書き込み禁止」表示がほしい

  • 非同期マクロの実行中に、ステータス バーが更新されるようにした

    これまでは非同期マクロの実行中、ステータス バーの表示は更新されず固定されたままでしたが、自動でカーソルを移動するマクロなどでも、カーソル位置に応じて文字コード値などの表示が追従するようになりました。

v3.8.4 (2026-05-02)
  • QuickJS を v0.14.0 に更新

    …更新のペース、ちょっと早すぎませんか。

  • エンコードが UTF-16、UTF-8、UTF-7、バイナリ以外の場合、ステータス バーにエンコードに応じた文字コード値を表示するようにした

    フォーラム ステータスに表示される文字コード

  • ステータス バーの右クリックにポップアップ メニューを追加

    現状は [コピー] のみですが、文字コード値をそのままコピーできると便利かなと思い実装しました。

  • [印刷] ダイアログに [部単位で印刷] を追加 (対応しているプリンターのみ使用可能)

    フォーラム 部数単位で印刷したい

    • それに伴い、[印刷] ダイアログのレイアウトを変更
    • [部数] と [部単位で印刷] をプリンターの設定と同期するようにした
  • [印刷] ダイアログで [文字間] を変更後、0 に戻しても適用されない問題を修正
  • キーボード ショートカットの [表示] カテゴリに [文字コード値]、[文字カウント] コマンドを追加

    ステータスバーの文字コード値をダブルクリックでも表示できます。

    Unicode テーブルを持たずに Script や General Category を取得する方法を思いついたので、おまけ機能として実装してみました。

    なお、文字列を選択している場合は、同じ操作で [文字カウント] ダイアログが表示されます。

  • 色分け処理と禁則処理、文字幅テーブルを Unicode 17.0 に対応

    色分け処理と禁則処理のテーブルはもともと TNotePad 由来なのですが、仕様が分からず長年そのままになっていました。

    今回、UCD との比較などを地道に行い、ようやく中身の意味を把握できました。UnicodeData は 3.0.0、Blocks や LineBreak は 4.1.0 あたりがベースのようです。

    というわけで、ついに最新の Unicode へ更新できました。

  • [オプション] に [編集] カテゴリを追加

    ご要望の多かった禁則処理のカスタマイズに対応しました。また、禁則処理の項目は [編集] カテゴリへ移動しました。

    フォーラム 禁則その他について(要望)

    フォーラム 禁則処理について

    フォーラム 【質問】英文テキストで行頭に半角スペースが来るのを回避する方法について

    フォーラム 【要望】メニューカスタマイズ

    なお、禁則処理のカスタマイズ方法については、本記事に説明を追記しています。

  • [オプション] の [編集] カテゴリに [次の文字を英数字として扱う] を追加

    単語選択および単語数のカウント時に、英数字として扱う文字を指定します。[単語の最初の文字を大文字に変換]、[単語単位で検索]、色分け処理などには影響しません。

    フォーラム セパレーターを変えられるようにしてほしい

  • 隠しオプションの [Display] RegExMode=1 を廃止

    RegExMode=2 も廃止予定です。(標準機能で対応予定)

  • マルチ カーソルの状態でスクロールしたとき、カーソル位置の文字表示が一部欠けることがある問題への対策

    フォーラム 文字の一部が欠ける

  • スピンエディットの上下ボタンを押し続けたときの動作を修正

    ダーク モード対応以降、連続で値が変わらなくなっていました。

  • 保存できない文字における JIS 判定の精度を改善

    これまではシフト JIS ベースで簡易的に判定していましたが、正確に JIS 判定を行うようにしました。

  • 保存できない文字が含まれている場合に該当箇所へ移動するようにした

    Unicode での保存を案内する文言を確認ダイアログに追加しました。また、[いいえ] をクリックしたとき、該当箇所へ移動するようにしました。

    フォーラム ユニコード文字列でファイルが壊れる問題の対処方法希望

  • DirectWrite 有効時のデバイスロストおよび TDR への対策

    東京ディズニーリゾートではありません。

    Timeout Detection and Recovery、アプリ起動中にグラフィックスアダプターが削除またはリセットされた場合でも動作するようにしてみました。

    なお、検証は NVIDIA 製 GPU 2 種のみで、dxcap -forcetdr コマンドやドライバー削除により確認しました。他の環境での動作は未確認です。

  • その他、細かい修正
v3.8.3 (2026-03-22)
  • QuickJS を v0.13.0 に更新

    Unicode 17.0 への対応、パフォーマンスの改善、バグ修正などを含みます。

  • [オプション] の [記号] カテゴリに [ユーザー定義ガイド] を追加

    フォーラム 任意の桁に縦のガイド線を表示したい

    [ユーザー定義ガイド] は、7, 8, 73 のようにカンマ区切りで入力します。

    編集モードごとの設定というご要望もありましたが、Mery のシンプルな設計思想との相性があまり良くないこと、また Visual Studio Code でも共通オプションとして提供されていることから、本機能は共通オプションとして実装しました。

    表示の切り替えは、メイン メニューの [表示] > [記号] > [ユーザー定義ガイド] から行えます。ショートカット キーに割り当てることもできますので、必要に応じてご利用ください。

    また、ファイルごとに設定を変更したい場合は、EditorConfig (v1.0.5) で

    .editorconfig
    me_user_defined_guides = 7, 8, 73

    のように記述するか、マクロで

    JavaScript
    document.UserDefinedGuides = "7, 8, 73"

    のように指定することで、文書ごとに設定を変更できます。

    MeryWiki プラグイン:EditorConfig

  • [オプション] の [表示] カテゴリの [表示項目] に [ユーザー定義ガイド] を追加

    線の色はここから変更できます。

  • [水平罫線]、[行番号 (線)]、[ルーラー (線)]、[折り返し線]、[インデント ガイド] に [点線] の項目を追加

    インデント ガイドやユーザー定義ガイドは、ソリッドな線だとやや強く見える場合があるため、点線にできるオプションを用意しました。

    なお、スタイルの項目を流用している仕様のため、[太字] などの項目もクリックできるようになっていますが、現時点では効果はありません。その点はご愛嬌ということでご了承ください。

  • キーボードのメニュー キーを押したとき、常にエディターのポップアップ メニューを表示するよう仕様を変更

    フォーラム [質問] 行番号/ルーラーの右クリックポップアップメニューをOFFにする方法

  • ステータス バーなどに表示される制御文字の表示形式を変更

    フォーラム 引用符等を検索して見つからないときにステータスバーに表示されるメッセージの検索文字の前にバックスラッシュが追加される

  • ListView の項目編集後、Google 日本語入力の入力モード表示が画面左上に固定される問題への対策

    Mery.ini のGeneralセクションにImeCandidateFix=1 を追記します。

    Mery.ini
    [General]
    ImeCandidateFix=1

    フォーラム Google日本語入力での入力モードの表示位置が左上に固定されることがある

  • マクロの window.ShowTip で、初回のツールチップが表示されない問題への対策

    フォーラム ShowTip メソッドでテキストが表示されないときがある

  • [オプション] > [整形] > [HTML Tidy] の [新規タグ] セクションで設定が正しく反映されない問題を修正
  • 変換中の文字列が右端で折り返されるときの処理を修正
  • その他、細かい修正
v3.8.2 (2025-12-04)
v3.8.1 (2025-11-26)
  • UTF-8 (BOM 付き) のファイルをバイナリ モードで開けない問題を修正
  • バイナリ モード使用時、外部でファイルが変更されたときの再読み込みで、バイナリ モードで開くかどうかの確認ダイアログが表示されないようにした
  • QuickJS で window.ShowTip メソッドが未実装だった問題を修正

    フォーラム QuickJSやDelphiに関するちょっとした雑談

v3.8.0 (2025-11-17)
  • QuickJS に対応

    これに伴い、Tag プロパティ周りの仕組みを独自実装に変更し、複数のマクロ エンジン間でも値を共有できるようにしています。

    さらに、ベータ検証用として QuickJS をデフォルト言語にできる隠しオプションも追加しました。

    Mery.ini
    [Macros]
    UseQuickJS=1

    この設定を有効にすると、language を明示しないマクロは自動的に QuickJS で実行されます。

    逆に、従来のマクロを使いたい場合は、#language = "jscript9" と指定することで、JScript9 (Chakra) で実行することもできます。

    フォーラム QuickJSやDelphiに関するちょっとした雑談

  • 鬼車を Unicode 17.0 に対応

    開発が終わってしまった鬼車ですが、最新 Unicode に追従させました。

  • ルーラーの右クリックにポップアップ メニューを追加

    [ルーラーで行の文字数を指定する] をオフにしている場合でも、右クリックから折り返し位置を簡単に設定できるようになりました。

    フォーラム 【要望】指定文字数で折り返しについて

  • 行番号の右クリックにポップアップ メニューを追加

    ブックマークの追加や行の複製など、行関連の操作をより手軽に行えるようになりました。

  • 行番号のマウス ポインターを Per-Monitor DPI に対応
  • [オプション] の [記号] カテゴリに [行が削除された時にブックマークを保持する] を追加

    フォーラム ブックマークが消える

  • [ローマ字検索] で [置換]、[すべて置換] が正しく動作しない問題を修正

    フォーラム Meryで「すべて置換」が効かない

  • [編集モードの設定] ダイアログに [既定に設定] ボタンを追加

    フォーラム 新規作成したタブの編集モードについて

  • 編集モードの [プロパティ] ダイアログと [マーカーの設定] ダイアログに [色] の項目を追加

    フォーラム ■( Text プロパティ)内で、【 強調文字列(2)~(8)】の 【 欄 】が、見当たらない..

  • マクロに editor.FileDialog メソッドを追加

    マクロから [開く]、[名前を付けて保存] ダイアログを表示できるようになりました。

    マクロ リファレンス FileDialog メソッド

  • マクロに editor.ExecutePlugin メソッドを追加

    マクロからプラグインの実行、状態取得、ユーザー定義メソッドの呼び出しが可能になりました。

    マクロ リファレンス ExecutePlugin メソッド

  • プラグインに Editor_ExecPlugin メソッドを追加

    プラグインから別プラグインの実行、状態取得、ユーザー定義メソッドの呼び出しが可能になりました。

  • ShowCaret と SetCaretPos の呼び出し順を変更

    Wine (Linux 上で Windows アプリを動作させるソフト) の開発に関わっている方よりご提案いただき、対応しました。

    この変更により、Wine 側の IME 周りの問題が改善され、Mery の IME 動作も改善される可能性があるとのことです。

    フォーラム ShowCaretとSetCaretPos関数の呼び出し順序変更依頼。

  • 対応する括弧と、自動的に囲む括弧/引用符を設定できる隠しオプションを追加

    Mery.ini のGeneralセクションにBracketPairsSurroundingPairs を追記します。

    Mery.ini
    [General]
    BracketPairs=(<[{)>]}
    SurroundingPairs=(<[{`)>]}`

    SurroundingPairsを指定しない場合、"'`BracketPairs に加えたものが自動囲みの対象になります。

    フォーラム Meryのカッコに移動するコマンドについて

  • [エンコード] に [バイナリ] を追加

    Mery はそもそもバイナリ編集向きではないですし、大きなファイルもあまり得意ではありません。それでも「ちょっと試してみたい…」という個人的な興味が勝って、今回はおまけ機能としてバイナリ表示を追加してみました。

    • 行番号は「1 行 = 16 バイト」のアドレス風表示 (内容と連動しているわけではありません)
    • 改行などで 16 バイトから外れると、アドレス表示としての意味はなくなります
    • ASCII 表示はありません
    • 今後、機能を強化する予定もありません (本当に「おまけ」です)

    本格的にバイナリを編集したい場合は、専用のバイナリ エディターを使うことをおすすめします。

    フォーラム メニューの要望

  • ソフトウェア使用許諾書を更新

    Mery ベータ版が WinGet などのパッケージ マネージャーに、第三者によって無断登録されるケースがありました。

    Mery は、個人がレンタルサーバーで配布しているプロジェクトで、そのサーバー維持費は広告収益でまかなっている状況です。

    そのため、公式サイトを経由しないダウンロードが増えると、次のような問題が発生します。

    • 記事を読まれないまま、中身だけ持っていかれる
    • ダウンロード負荷がこちらのサーバーに集中する
    • サイト運営が難しくなる
    • 最悪の場合、Mery の公開を継続できなくなる可能性も…

    また、個人契約のレンタルサーバー上で、ブログと Wiki の両方を運営しているため、自動アップデートに対応できるような十分なスペックはありません。

    高負荷によるサーバー ダウンが発生することもしばしばあります。

    こうした事情から、WinGet などのパッケージ マネージャーへの無断登録はご遠慮ください、という内容を使用許諾書に追記しました。

    もちろん、WinGet などの便利なツールへの対応そのものは、前向きに考えています。

    たとえば、

    • 配布用ファイルを GitHub に置く
    • 最新ベータ版のリリースから一定期間を空けて登録を許可する

    といった方法は検討できます。

    ご理解とご協力をいただけると、とても助かります。

    フォーラム wingetでインストールできるバージョン(3.7.2)について

  • その他、細かい修正

    • コマンド名や項目名の調整
    • ルーラーのクリック位置の調整
    • Editor_SerialToLogical で引数の範囲チェックを追加
    • MI_GET_NEXT_BOOKMARK の引数で -1 を受け付けるように変更

    フォーラム プラグインから「タブ幅」と「論理行で表示する」の設定

ダウンロード

用途に応じて、インストーラー版、ポータブル版、ZIP 版を用意しています。使い方に合った形式をお選びください。

インストーラー版

解凍などの手間なく、すぐに使い始められるインストーラー版です。特にこだわりがなければ、こちらをおすすめします。

Mery v3.8.8 (64 ビット版) インストーラー Mery v3.8.8 (32 ビット版) インストーラー
ウイルス対策ソフトによっては誤検出される場合がありますが、配布ファイルは開発者本人が作成したものです。ファイルが改ざんされていないことは、上記の SHA256 ハッシュで確認できます。

ポータブル版

インストール不要で利用できます。設定ファイルを外部に作成しないため、USB メモリなどに保存して持ち運ぶことができます。

Mery v3.8.8 (64 ビット版) ポータブル Mery v3.8.8 (32 ビット版) ポータブル
ポータブル版は、解凍したフォルダー内に設定ファイルなどすべてのデータを保存します。必ず書き込み権限のあるフォルダーに配置してください。

ZIP 版

アーカイブを解凍するだけで利用できる ZIP 版です。レジストリを使用したくない場合に適しています。

Mery v3.8.8 (64 ビット版) ZIP Mery v3.8.8 (32 ビット版) ZIP
ZIP 版は、インストーラー版と同じ内容を ZIP 形式で配布しています。複数の Mery を使い分けたい場合は、ポータブル版の利用をおすすめします。

以前のバージョン

v3.8.7 Mery v3.8.7 (64 ビット版) インストーラー Mery v3.8.7 (32 ビット版) インストーラー Mery v3.8.7 (64 ビット版) ポータブル Mery v3.8.7 (32 ビット版) ポータブル Mery v3.8.7 (64 ビット版) ZIP Mery v3.8.7 (32 ビット版) ZIP
v3.8.6 Mery v3.8.6 (64 ビット版) インストーラー Mery v3.8.6 (32 ビット版) インストーラー Mery v3.8.6 (64 ビット版) ポータブル Mery v3.8.6 (32 ビット版) ポータブル Mery v3.8.6 (64 ビット版) ZIP Mery v3.8.6 (32 ビット版) ZIP
v3.8.5 Mery v3.8.5 (64 ビット版) インストーラー Mery v3.8.5 (32 ビット版) インストーラー Mery v3.8.5 (64 ビット版) ポータブル Mery v3.8.5 (32 ビット版) ポータブル Mery v3.8.5 (64 ビット版) ZIP Mery v3.8.5 (32 ビット版) ZIP
v3.8.4 Mery v3.8.4 (64 ビット版) インストーラー Mery v3.8.4 (32 ビット版) インストーラー Mery v3.8.4 (64 ビット版) ポータブル Mery v3.8.4 (32 ビット版) ポータブル Mery v3.8.4 (64 ビット版) ZIP Mery v3.8.4 (32 ビット版) ZIP
v3.8.3 Mery v3.8.3 (64 ビット版) インストーラー Mery v3.8.3 (32 ビット版) インストーラー Mery v3.8.3 (64 ビット版) ポータブル Mery v3.8.3 (32 ビット版) ポータブル Mery v3.8.3 (64 ビット版) ZIP Mery v3.8.3 (32 ビット版) ZIP
v3.8.2 Mery v3.8.2 (64 ビット版) インストーラー Mery v3.8.2 (32 ビット版) インストーラー Mery v3.8.2 (64 ビット版) ポータブル Mery v3.8.2 (32 ビット版) ポータブル Mery v3.8.2 (64 ビット版) ZIP Mery v3.8.2 (32 ビット版) ZIP

セキュリティについてのご案内

Mery は現在、デジタル署名 (コード署名証明書) が付与されていないため、初回実行時に Windows の SmartScreen により警告が表示される場合があります。

これは「発行元が不明なアプリ」として扱われるためであり、ソフトウェアに問題があることを意味するものではありません。

警告画面の対処方法

起動するには、以下の手順を行ってください。

  1. [詳細情報] をクリック
  2. [実行] をクリック

また、配布ファイルの安全性はハッシュ値 (SHA256) で確認できます。

  • SHA256 は、ファイルが改ざんされていないことを確認するための値です。
  • コード署名証明書の導入については、費用面の都合により未対応となっています。
Mery の公式バイナリは本サイトからのみ配布しています。それ以外のサイトで配布されているファイルについては、安全性を保証できませんのでご注意ください。

おわりに

今回は地味なアップデートとして、バイナリ モードの機能改善を行いました。

大きなファイルの扱いが得意ではないテキストエディター Mery では、これまでバイナリファイルの編集は想定しておらず、機能追加の予定もないとしていました。

しかし、最低限の機能は備えておきたいという思いが以前からあり、10 メガバイト程度のファイルであればぎりぎり実用的に扱えることから、バイナリエディターが手元にない場面での緊急用途として、今回の機能改善を行いました。

また、今回の更新ではバイナリ モード以外にも、細かな使い勝手の改善や不具合修正を行っています。

QuickJS の更新頻度も非常に高く、前回の Mery のバージョンアップ以降、すでに 2 回の更新が行われていました。鬼車のように開発が終了してしまうのも困りますが、QuickJS のように更新が活発すぎるのも、追従する側としてはなかなか大変ですね。

それでは、新しい Mery をお楽しみください。

禁則処理対応の裏側

今回、禁則処理のカスタマイズに対応しましたが、「いまさら?」と感じた方もいらっしゃるかもしれません。

実際、この機能はフォーラムやブログのコメントなどで、以前から継続的にご要望をいただいていました。振り返ってみると、「要望は多いのに、なかなか手を付けられていなかった機能」としては、これが一番大きかったように思います。

では、なぜ今まで対応してこなかったのか。少しだけ裏話を書いてみます。

Mery で使用しているエディター コンポーネント TNotePad には、もともと禁則処理の仕組みが備わっています。ただしそれは、Unicode の仕様に基づいて内部的にしっかり作り込まれており、外部から柔軟にカスタマイズすることは想定されていませんでした。

また、個人的にも禁則処理を細かく調整する機会はまったくなく、「本当にそこまで必要なの?」という感覚があったのも正直なところです。

さらに厄介だったのが、禁則処理に使われているテーブル (BreakMAP) の存在です。ソースコード上に簡単なコメントは残されているものの、その生成方法やメンテナンス方法は明確ではなく、いわば「ブラック ボックス」に近い状態でした。

転機になったのは、MECSUtils の Unicode 17.0 対応でした。

外部 MECSUtils

Unicode は毎年更新されるため、そのたびに Mery では MECSUtils を手作業で更新しています。

この作業を少しでも楽にするため、UCD (Unicode Character Database) から Delphi のソースコードを自動生成するツールを作っていたのですが、その過程でふと気付いたことがあります。

「TNotePad の禁則処理、もしかして古い Unicode を前提にしているのでは?」

ここから、テーブルの仕様を解析する作業が始まりました。

結果として、この禁則処理が Unicode 3.0.0 や 4.1.0 頃の仕様をベースにしていることが分かり、そこから最新の Unicode 17.0 への対応へとつながっていきます。同時に、禁則処理のルール自体もかなり深く理解できるようになりました。

こうした流れの中で、Unicode に依存する従来の処理とは別に、「ユーザーが自分で調整できる余地」を持たせられることが見えてきました。それが今回のカスタマイズ機能です。

なお、[既定] を選択した場合は、Unicode のルールに基づいたより細かな禁則処理が行われます。たとえば、「あぁ」は分割されませんが、「あ ぁ」は分割される、といった挙動です。

一方で、カスタマイズ時に指定できるのは「行頭禁則」「行末禁則」「ぶら下げ」のみであり、「直前がスペースの場合のみ」といった条件付きの制御は行えません。この点は仕様上の制限となります。

とはいえ、一般的な用途であれば、Microsoft Word の禁則設定に近いことは実現できます。実際、Word の「高レベル」設定ではかなり多くの禁則文字が定義されていますが、それと同程度の設定を行っても、従来の動作速度を維持できるようにしています。

Word の禁則文字設定

参考までに、Word の禁則文字設定の一例を載せておきます。

標準

行頭禁則文字:
!%),.:;?]}¢°’”‰′″℃、。々〉》」』】〕゛゜ゝゞ・ヽヾ!%),.:;?]}。」、・゙゚¢
行末禁則文字:
$([\{£¥‘“〈《「『【〔$([{「£¥

高レベル

行頭禁則文字:
!%),.:;?]}¢°’”‰′″℃、。々〉》」』】〕ぁぃぅぇぉっゃゅょゎ゛゜ゝゞァィゥェォッャュョヮヵヶ・ーヽヾ!%),.:;?]}。」、・ァィゥェォャュョッー゙゚¢
行末禁則文字:
$([\{£¥‘“〈《「『【〔$([{「£¥

少し長くなりましたが、禁則処理まわりの経緯はこのようなかたちです。

従来のシンプルさを保ちつつ、必要な方にはそれなりに応えられる機能になったと思います。用途に応じて、ぜひ活用してみてください。

VBScript と ActiveX の廃止で何が変わる?

いやー、長かったです。本当に。

VBScript の廃止で「どうしよう…」となっていたところ、ユーザーさんから「QuickJS がいいよ!」と教えていただき、そこから今回の開発が一気に動き始めました。

フォーラム QuickJSやDelphiに関するちょっとした雑談

フォーラムで協力してくださったみなさん、本当にありがとうございました!

QuickJS 対応を決めてから実装がかたちになるまで、気づけば 10 カ月。

ようやくお届けできて、今はほっとしています。

今回のアップデートでは、特にマクロ ユーザーさんに「おっ」と思ってもらえるポイントがいくつかあります。

まずは Tag プロパティ。

マクロ終了後も値を保持し続けられる便利なプロパティですが、QuickJS、V8、従来の JScript9 のどれからでも同じように扱えるよう、内部でこっそり調整しています。

異なるエンジン間で自然にデータを共有できるようにするのは、なかなか大変でした…。

次に ActiveXObject について。

Microsoft は ActiveX の廃止を進めていますが、実際には「今日から全部使えません!」という状況ではなく、扱いが非常に読みにくい状態が続いていました。

VBScript の廃止も範囲があいまいでしたが、公式ブログのコメントによると削除対象は vbscript.dll のみとのことで、今のところそれ以外には影響はなさそうです。

外部 VBScript deprecation: Timelines and next steps

つまり、「ActiveX が廃止される」=「ActiveXObject が使えなくなる」わけではない、ということですね。

既存のマクロ資産を活かすためにも、QuickJS で ActiveXObject を動かすことにこだわり、手応えのある実装に仕上がりました。

ただし、JScript9 と QuickJS は動作方式がそもそも違うため、従来のマクロがそのまま QuickJS で動くわけではない点だけは、ご理解いただけると助かります。

今回の取り組みは、今後 Microsoft の動向に振り回されずに済むよう、「マクロ言語そのものを Mery 側で用意する」 ための第一歩でもあります。

将来を見据えたアップデートとして、受け取っていただけたら嬉しいです。

それでは、新しい Mery をお楽しみください。そして、これからも Mery をどうぞよろしくお願いいたします。

ダイキン エアコン 6畳 S226ATES-W Eシリーズ 2026年モデル ルームエアコン 冷暖房 単相100V ホワイト (F226ATES-W+R226AES)
ダイキン
毎日使うものだからこそ、信頼できるメーカーを。2027年以降の価格動向が気になる今、早めの検討にもおすすめです。
Amazon で探す 楽天市場で探す

レンタルサーバー

「Haijin Boys Online」や「MeryWiki」など、Mery の最新版やマクロ、プラグイン、テーマなどのコンテンツを共有するプロジェクトは、レンタルサーバーで運営されています。

カラフルボックス (PR)

カラフルボックスは、業界トップクラスの信頼性を誇るレンタルサーバーです。

安定性と柔軟性に富んでおり、あらゆるニーズに応えることができます。

安心してご利用いただけるカラフルボックスは、Web サイトの構築やプロジェクトの展開に最適な環境を提供します。

クラウドソーシング サービス

個人向けの機能拡張やカスタマイズ、マクロやプラグインの開発、構文ファイルやテーマの制作について、お問い合わせをいただくことがあります。

しかし、現在は Mery 本体の開発に注力しており、個別のカスタマイズやその他の制作依頼にはお応えすることができません。

マクロやプラグイン、構文ファイルやテーマの制作は自由に行えますので、ぜひご自身で取り組んでみるか、あるいはクラウドソーシング サービスをご活用ください。

CrowdWorks (PR)

CrowdWorks は、日本最大規模のクラウドソーシング プラットフォームです。

アプリ開発やデータ入力、動画編集など、多岐にわたる仕事に対応しています。

数多くのプロフェッショナルが登録しており、高品質かつ迅速なサービスを提供しています。

ココナラ (PR)

ココナラは、手ごろな価格で高品質なクラウドソーシングサービスを提供しています。

プログラムの開発やロゴの作成、音楽制作など、幅広いニーズに対応しています。

クリエイティブなアイデアをかたちにするためのプロフェッショナルなサポートが用意されています。

スポンサーリンク

関連する記事

フォローする

スポンサーリンク