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

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

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

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

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

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

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

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

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

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

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

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

スポンサーリンク

PR

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

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

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

音楽や映画が楽しめるのは有名ですが、Amazon Luna Standard (旧 Prime Gaming) というサービスも付いてきます。

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

…うーん、うーん。今回はちょっと様子見かもしれません。(正直すぎ?Amazon さん、もうひと押しお願いします!)

さらに映像特典もなかなか充実しています。

最近は SAW シリーズが見放題になっていたので手を出してみたのですが、SAW 4 の途中で心が折れました。あの世界、思った以上に体力を使います。

あと、名探偵コナンの劇場版も見放題に。ここはもう「黒鉄の魚影」、一択でしょう。

さらに勢いで、「バトル・ロワイアル」→「デスノート」という流れをキメました。ジャンルは違うのに、不思議と成立します。

つづけて「ノイズ」と「モンスターズ」にも行きたかったのですが、残念ながらこの時期は配信されていないようです。(以前は見られたのに)

現在配信中の作品の中では、個人的にはジャック・ニコルソン主演の「恋愛小説家」がおすすめです。「結婚できない男」を見終わったあとの、あの微妙な喪失感。それをちょうどいい具合に回収してくれます。

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

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

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

ポータブル版

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

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

ZIP 版

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

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

以前のバージョン

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 で使用しているエディター コンポーネント 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に関するちょっとした雑談

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

おわりに 1

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

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

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

まずは Tag プロパティ。

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

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

次に ActiveXObject について。

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

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

外部 VBScript deprecation: Timelines and next steps

おわりに 2

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

おわりに 3

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

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

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

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

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

レンタルサーバー

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

カラフルボックス (PR)

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

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

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

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

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

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

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

CrowdWorks (PR)

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

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

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

ココナラ (PR)

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

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

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

スポンサーリンク

関連する記事

フォローする