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

Mery のデフォルトの正規表現エンジンには鬼雲を採用していますが、鬼雲は 2019 年頃から更新が止まっており、新しい Unicode などには対応していません。

そこで、新たな移行先として鬼車への乗り換えを検討し、試験的な実装や検証を進めていました。

フォーラム 鬼車と鬼雲のどちらをメインにしたほうが良いのか

…ところが、その鬼車もメンテナンスが終了してしまいました。

せっかく移行先を見つけたと思った矢先の出来事で、正直なところ途方に暮れました。

もちろん、メンテナンスが終了したライブラリでも、すぐに使えなくなるわけではありません。しかし、新しい Unicode への対応や、将来的に脆弱性が発見された場合のことを考えると、安心して使い続けるのは難しくなります。

実際、Mery に搭載している鬼車は、開発終了時点のソースコードをもとに Unicode 17.0 へ対応させています。ただ、今後も私一人でメンテナンスを続けていくのは現実的ではありません。

そこで今回、新しい正規表現エンジンとして PCRE2 に対応しました。

PCRE2 は Perl と高い互換性を持つ正規表現ライブラリで、多くのプログラミング言語やツールで採用されています。現在も継続的にメンテナンスされており、将来にわたって安心して利用できる正規表現エンジンです。

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

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

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

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

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

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

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

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

ところで、夏の終わりのちょっとしたお買い物にもぴったり。Amazon の「スマイル SALE」で、秋に向けた準備をお得に楽しんでみませんか?

スポンサーリンク

PR (8月28日更新)

Amazon でスマイル SALE が開催されます。夏の暑さが少しずつ和らぎ、秋の気配を感じ始めるこの季節。日用品やファッション、家電まで、人気アイテムがセール価格で登場するお得なチャンスです。

スマイル SALE

  • 2026年8月28日 (金) 9:00 ~ 2026年9月3日 (木) 23:59

セール会場はこちらからチェック!

ふだん使いのアイテムはもちろん、夏の疲れを癒やすアイテムや、これから迎える秋に向けて気になっていた商品をお得に手に入れるチャンスです。セールは期間限定なので、気になるものは早めのチェックがおすすめです。

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

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

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

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

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

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

まず、「タッチ」が全話解放されていますね。久しぶりに 1 話目を見ていますが、南ちゃんの第一声、「あー、いい天気じゃのー」って、南ちゃん、そんなに訛ってましたっけ?😅

オープニングはもちろんですが、作中の BGM も 80 年代らしい雰囲気があっていいですね。久しぶりに見ると、こういうところも楽しめます。

そして、現在配信中の作品の中で、個人的に特におすすめしたいのが、藤原竜也さんと松山ケンイチさん主演の「ノイズ」です。

特産品の黒イチジクで活気づく島を舞台にしたサスペンス。事件をきっかけに浮かび上がる、閉鎖的な島社会の結束と独特の空気感が、なんともいえない怖さを感じさせます。人の怖さがじわじわ迫ってくる、ひと味違ったサスペンスですね。

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

ノイズ

藤原竜也×松山ケンイチ、久しぶりの共演! 過疎化が進む島を舞台に、事件の恐怖とともに浮かび上がる「人の怖さ」にゾッとするサスペンス。
Amazon で探す 楽天市場で探す

PCRE2 に対応

v3.8.9 では、新しい正規表現エンジンとして PCRE2 に対応しました。

これまでの鬼雲・鬼車による正規表現に加え、Perl と高い互換性を持つ PCRE2 を利用した検索・置換が行えます。

PCRE2 を使うには?

以下の手順で PCRE2 を使用できます。

  1. [ツール] メニューから [オプション] を選択し、[オプション] ダイアログを表示します。
  2. [基本] カテゴリの、[正規表現エンジン] で [PCRE2] を選択します。
  3. 右下の [OK] ボタンをクリックして設定を適用します。

あとは検索ダイアログで [正規表現] を有効にして検索するだけです。

Perl 互換の豊富な構文

PCRE2 では、Perl と高い互換性を持つ豊富な正規表現構文を利用できます。

従来は複雑になりがちだった検索・置換も、よりシンプルに記述できる場合があります。

可変長の後読み

PCRE2 では、最大長が有限な可変長の後読みに対応しています。

たとえば、http://https:// のどちらにも一致する URL のドメイン部分だけを取得したい場合は、次のように記述できます。

(?<=https?://)\S+
対象文字列
http://example.com
https://www.haijin-boys.com
検索結果
example.com
www.haijin-boys.com

http://https:// を別々に記述する必要がなく、より自然な正規表現を書くことができます。

サブルーチン呼び出し・再帰パターン

サブルーチン呼び出しや再帰パターンを利用すると、入れ子になった構造も正規表現だけで扱えるようになります。

たとえば、対応する括弧だけを検索したり、Markdown や HTML のような階層構造を持つテキストを処理したりする場合に便利です。

バックトラック制御

PCRE2 では (*SKIP) をはじめとするバックトラック制御にも対応しています。

たとえば、HTML タグを無視して mery だけを検索したい場合は、次のように記述できます。

<[^>]+>(*SKIP)(*F)|mery
対象文字列
<img alt="Mery" src="mery.png">
Mery は Windows 用のテキストエディターです。

この例では、HTML タグ内に含まれる mery は無視され、それ以外の mery だけが検索対象になります。

Unicode 対応

PCRE2 は Unicode にも幅広く対応しています。

文字の種類やスクリプトを表す Unicode プロパティを利用できるため、日本語を含む多言語の文書でも柔軟な検索が可能です。

たとえば、絵文字だけを検索するには、次のような正規表現を使用できます。

\p{Extended_Pictographic}+

もちろん、これらは PCRE2 の機能のほんの一部です。

Perl や PHP、Git (git grep) など、PCRE2 を採用しているソフトウェアで使い慣れた正規表現を、Mery でも活用できるようになります。

高度な検索オプション

より柔軟な検索に対応するため、[検索] ダイアログの [正規表現] の右側に、[...] (高度なオプション) ボタンを追加しました。

このボタンをクリックすると、高度なオプション ダイアログが表示されます。

ここでは、正規表現による検索・置換の動作を細かく調整できます。

これまで隠しオプションとして提供していた機能や、PCRE2 の追加にあわせて新たに実装した機能を、分かりやすく設定できるようになりました。

パターン拡張形式を使用する

空白や改行、コメントを含めて正規表現を記述できます。

複雑な正規表現でもインデントやコメントを付けられるため、可読性が向上し、後から見直しやすくなります。

たとえば、次のような正規表現も、そのまま検索できます。

(?<paren> # 対応する括弧全体
    \( # 開き括弧
        (?:
            [^()] # 括弧以外の文字
          | (?&paren) # 入れ子になった括弧
        )*
    \) # 閉じ括弧
)

選択範囲の先頭を行頭とみなさない

選択範囲内で [すべて検索] や [すべて置換] を実行するとき、選択範囲の先頭を ^ の一致位置として扱わないようにします。

従来は [検索する文字列] の右側にある [>] ボタンから設定していたオプションですが、高度なオプション ダイアログへ移動しました。

選択範囲の終端を行末とみなさない

選択範囲内で [すべて検索] や [すべて置換] を実行するとき、選択範囲の終端を $ の一致位置として扱わないようにします。

こちらも、従来は [検索する文字列] の右側にある [>] ボタンから設定していたオプションです。

次を検索で重ならない文字列のみ一致する

[次を検索] を実行したとき、直前に一致した文字列の末尾から次の検索を開始します。

重複する一致を除外したい場合に便利です。なお、[前を検索] は従来どおり 1 文字ずつ検索を行います。これは Windows 標準のメモ帳と同じ動作です。

すべて置換で繰り返し置換しない

通常の [すべて置換] は、文書の最後まで [置換] を繰り返し実行します。

そのため、たとえば各行の先頭の _ を 1 つだけ削除したい場合に、検索文字列を ^_、置換後を空文字として [すべて置換] を実行すると、各行の先頭の _ がすべて削除されます。

対象文字列
___abc
__def
通常の [すべて置換]
abc
def

このオプションを有効にすると、置換後の文字列を再び検索対象としません。

そのため、一般的な正規表現エンジンのグローバル置換に近い動作で [すべて置換] を実行できます。

[繰り返し置換しない] を有効
__abc
_def

よくある質問 正規表現で行頭の置換が期待どおりに動作しない

バイナリ モードの 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.9 (2026-08-28)

  • PCRE2 に対応
  • QuickJS を v0.16.2 に更新

    v0.16.0 でメモリ管理の仕組みが変更されたようで、その影響により、これまで QuickJS のインスタンスをまたいで利用できていた Mery の Tag プロパティが利用できなくなってしまい、対応にかなり苦戦しました。

    この更新により、ベンチマーク (bench-v8) では 11% も高速化されたようです。

  • [検索] ダイアログに [...] (高度なオプション) ボタンを追加
  • [オプション] の [表示] カテゴリの [詳細] に以下を追加

    • [折り返しモードを同期する]

      メイン メニュー、ツール バー ボタン、またはルーラーのドラッグで変更した折り返しモードを適用する範囲を、[オフ]、[中間]、[オン] の 3 段階から選択できます。

      • [オフ]: 折り返しモードは現在のタブにのみ適用されます。
      • [中間]: 折り返しモードは現在のタブと [オプション] ダイアログに適用されます。
      • [オン]: 折り返しモードはすべてのタブと [オプション] ダイアログに適用されます。

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

    • [折り返しを超えて強調表示する]

      従来は、検索文字列の強調表示、編集モードの強調文字列、マーカーの文字列が折り返しをまたぐ場合、色分けに制限がありました。

      このオプションを有効にすると、その制限をなくし、折り返しをまたいでも色分けして表示します。

      ただし、複雑な正規表現を使用する場合や、巨大なファイルを対象とする場合など、処理負荷が高い状況では、動作が遅くなったり、最悪の場合はフリーズしたりする可能性があります。必要に応じてご利用ください。

      フォーラム 編集モードで折り返し時、3行目から意図した色にならない

    • [テキスト カーソル インジケーターを有効にする]

      テキスト カーソル インジケーターは、カーソルの上下にインジケーターを表示し、カーソルの位置を見つけやすくする機能です。

      この機能を使用するには、Windows の [設定] → [アクセシビリティ] → [テキスト カーソル] にある [テキスト カーソル インジケーター] をオンにする必要があります。

      ※ この機能は、Windows 10 (20H1) 以降、または Windows 11 で使用できます。

  • [オプション] の [ウィンドウ] カテゴリに [タイトル] を追加

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

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

  • Migemo の辞書ファイルを更新

    Migemo の辞書ファイルを最新版に更新しました。

  • TCoolBar を Per-Monitor DPI に対応

    Per-Monitor DPI 環境で、TCoolBar の高さを正しく計算するよう対応しました。

  • 高 DPI 環境で、ツール バー アイコンをスケールに応じて 48×48 ピクセル以上のサイズで表示できるように対応

    高 DPI 環境で、ツール バー アイコンをスケールに応じて 48×48 ピクセル以上のサイズで表示できるようになりました。

    これに伴い、隠しオプション [View] FixedSize=1 は廃止しました。もっとも、どこにも公開していない設定なので、使っている方はほとんどいないと思います。

    ちなみに、大きなアイコン素材を新たに用意したわけではありません。48×48 ピクセルを超えるサイズでは画像を拡大して表示しているため、画質についてはご容赦ください。

    フォーラム ノートPCの 4k 13~16インチのアイコンとMDプレビュー、V8+WASI-WASM

  • 異なる DPI 間でタブを移動したとき、書き換え禁止アイコンと閉じるボタンのサイズが正しくスケーリングされない問題を修正
  • 最大化した状態で最小化した後にファイルを開くと、最大化が解除されることがある問題を修正
  • [編集モード] の [Markdown] を改善

    水平線 (* * *) の色分けなどに対応

  • [オプション] ダイアログの表示速度をわずかに改善

    どうやら、[整形] ページで使用している HTML Tidy 向けの大量のオプションを保持するツリー ビューが、表示速度のボトルネックになっていたようです。

    実は、HTML Tidy を利用している方がいなければ、機能自体を廃止しようかとも考えていました。しかし、アンケートでは現在も利用されている方がいらっしゃることが分かったため、当面は機能を維持することにしました。

    アンケートにご協力いただいたみなさん、ありがとうございました。

  • スプリッターのサイズを修正

    3 px から 5 px に増やしてみました。6 px にすると外観がもっさりしてくるため、ひとまずご要望の最低ラインである 2 px 増ということで対応しました。

    フォーラム 【雑談】Markdown プラグインで遊ぼう

  • バイナリ モードのとき、[読み直し] で確認ダイアログが表示されないように修正
  • アウトプット バーに閉じるボタンを表示してみた

    コピーするときに邪魔にならないよう、アウトプット バーにフォーカスがないときだけ閉じるボタンを表示する仕様にしてみました。

    フォーラム Meryで生成AIを使ってみる雑談部屋

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

ポータブル版

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

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

ZIP 版

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

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

以前のバージョン

v3.8.8 Mery v3.8.8 (64 ビット版) インストーラー Mery v3.8.8 (32 ビット版) インストーラー Mery v3.8.8 (64 ビット版) ポータブル Mery v3.8.8 (32 ビット版) ポータブル Mery v3.8.8 (64 ビット版) ZIP Mery v3.8.8 (32 ビット版) ZIP
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 の公式バイナリは本サイトからのみ配布しています。それ以外のサイトで配布されているファイルについては、安全性を保証できませんのでご注意ください。

おわりに

今回の PCRE2 対応では、ユーザーさんから教えていただいた書籍を購入し、久しぶりに正規表現をじっくり勉強し直しました。

実装そのものも簡単ではありませんでした。

鬼車には後方検索の API がありましたが、PCRE2 には同等の機能がないため、検索処理を見直しながら、できるだけ性能を維持できるよう工夫しました。

それでも、新しい構文を試したり、サンプルを作ったりしながら学ぶ時間はとても楽しく、正規表現の奥深さを改めて実感しました。

詳説 正規表現 第3版
オライリージャパン
正規表現を本格的に学ぶなら、一度は読んでおきたい名著です。
Amazon で探す 楽天市場で探す

正規表現技術入門 ――最新エンジン実装と理論的背景 WEB+DB PRESS plus
技術評論社
今回の PCRE2 対応でも、実装や検証の際に何度も読み返した一冊です。
Amazon で探す 楽天市場で探す

今回紹介した 2 冊は、PCRE2 の実装で特にお世話になった本です。これから PCRE2 を活用してみたい方には、ぜひ読んでいただきたい 2 冊です。

ようこそ、正規表現沼へ

「詳説 正規表現 第3版」は、持っているだけで謎の安心感があります。

この本は最初から最後まで読み通すというよりも、必要になったときにインデックスから目的の項目を調べる、といった辞書のような使い方がおすすめです。

ただし、鈍器のような重さがあるので、寝ながら読んでいて寝落ちすると、顔面に落下して大変危険です。

一方、「正規表現技術入門」は、正規表現の歴史や実装方法など、「使う」だけでなく「作る」という視点からも詳しく解説されており、読み物としてもとても面白い一冊です。

特に、正規表現エンジンの実装については、Mery で採用している鬼雲の開発者である K.Takata 氏が執筆されており、正規表現エンジンの内部構造まで詳しく解説されています。私自身、PCRE2 の実装を進める中で何度も読み返し、とても参考になりました。

まずは「正規表現技術入門」で正規表現の考え方や用語を一通り理解し、その後、必要になったときに「詳説 正規表現 第3版」で詳しく調べる、という組み合わせがおすすめです。

正規表現の世界は、知れば知るほど奥が深いものです。今回の PCRE2 対応が、その面白さに触れるきっかけになればうれしく思います。

バイナリ モード改善の背景

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

大きなファイルの扱いが得意ではないテキストエディター 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 の禁則文字設定の一例を載せておきます。

標準

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

高レベル

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

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

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

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 をどうぞよろしくお願いいたします。

尾西食品 防災士監修 コンパクト非常食セット 目安:1人3日分 非常食 保存食 長期保存
尾西食品
夏の終わりは防災用品を見直すタイミング。もしものときのために、食料の備えもしっかり準備しておきましょう。
Amazon で探す 楽天市場で探す

レンタルサーバー

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

カラフルボックス (PR)

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

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

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

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

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

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

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

CrowdWorks (PR)

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

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

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

ココナラ (PR)

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

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

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

スポンサーリンク

関連する記事

フォローする

スポンサーリンク