「
利用者:Sukemaru
」を編集中 (節単位)
ナビゲーションに移動
検索に移動
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
=== その他、拙作マクロについて === Kuro 氏の [[#引用符/コメント|「引用を追加」マクロのカスタマイズ]] をきっかけとしてマクロの改造に手を染め、 [[#アイコン|マクロのアイコン化のためにアイコンを量産]] していくうちにマクロの自作も始めて、マクロ制作のための補助的マクロの自作とか「タマゴ? ニワトリ?」状態になったりしています。 '''マウス派''' として Mery を便利に扱えるようにするつもりでマクロを作っていますが、マニアックな個人的要求(欲求)を自己解決していくうちに Mery の外観 が本来の姿からかけ離れてしまっているという…。 * sukemaru の Mery 運用環境はロースペックの '''Windows XP sp3 (32bit), JScript 5.8.20587''' のノート PC (CPU: Atom 1.7GHz, 1 コア, 2 スレッド) です。 : ※ 制作したマクロの動作テストは、この XP 機でしかおこなっていません。 : ※ マクロの動作テストに使用している Mery のバージョンは、"最新のベータ版" (および "最新の正式版" ver. 2.6.7 ) のみです。 基本的に ver 2.6.7 以降のバージョンで動作するように作成していますが、ver 2.6.6 以前のバージョンでの利用を想定していません( ver 2.6.6 以下での動作確認はしていません)。 : ※ とくに「[[#実験的マクロ・練習マクロなど|実験的マクロ・練習マクロなど]]」カテゴリに投稿した【自家用】/【実験】マクロにおいては、よその環境を考慮した動作テストをしていません。 : ※ マクロの動作速度のテストは [https://www.aozora.gr.jp/ 青空文庫] からダウンロードした『[https://www.aozora.gr.jp/cards/000148/card789.html 吾輩は猫である]』のルビを削除して1文ごとに改行させたテキストファイル(約 33 万文字/約 9500 行)でおこなっています。 1 メガバイト超のファイルでのテストはしていません ( ロースペ PC なので 2000 行を超えるあたりから動作速度が気になりだすのですが… [https://www.haijin-boys.com/discussions/4395])。 : ※ ZIP 版の Mery でマクロを作成・運用しているので、インストーラ版では正しく動作しないマクロがあるかもしれません。 * 開発環境が Windows XP なので、拙作マクロは基本的に JavaScript(JScript)マクロです。 : ※ 変数はすべて <syntaxhighlight lang="javascript" inline>var</syntaxhighlight> で宣言し、JScript 5.8 の環境で実行できるようにコーディングしています。 * Mery のオプション設定で「行の表示方法=論理座標 (論理行)」の状態で運用する前提でマクロを作っています。 公開しているマクロでは、「表示座標 (表示行)」ベースで Mery を運用している場合でも利用できるように設定項目(変数)を設けるか「行の表示方法」を自動判定するコードを追加していますが、動作が不完全になったり処理がおそくなったりすることがあります。 : <span style="color:#c00;"> ※「表示座標 (表示行)」ベースでの動作テストはほとんどしていません。</span> * ソースコード内ではしばしば unicode 文字を使用していますので、マクロの JS ファイルは UTF-8 形式で保存する前提となっています。 * ソースコード内の変数名の検索などで「[[ポップアップメニューで検索先にジャンプ]]」マクロを利用しやすいように(個人的にタグジャンプ系のマクロに馴染めないので)、マクロのコードには半角空白を多用しています。 * 基本的に、変数名は頭文字が小文字の '''camelCase''' に、関数名は頭文字が大文字の '''TitleCase''' にしてあります。 * 「[[includeライブラリ]]」(作成: ks 氏) を利用する【'''include 版'''】と利用しない【'''通常版'''】とがあるマクロでは、include 版を優先的にメンテ・更新しています(←自家用)。 * 外部実行ファイル「[[GetKeyState.exe(キー状態取得実行ファイル)]]」(作成: pizz 氏) の導入が必要なものもあります。 * ポップアップメニューマクロの「設定変更サブメニュー」など、複数のマクロで共通の自作関数を使用しているものがありますが、当面は「includeライブラリ」のような外部ファイルにまとめる予定なしです。 : ∴ すでに公開しているマクロが多いこと、公開用と自家用とでコードの内容がちがうマクロが複数あること、それぞれのマクロごとに自作関数のコードに改変をくわえていることなどの理由で、もはや関数・クラスを統一しなおして更新メンテするのが困難。 : <span id="Mery.ini を読みこむ"></span>∴ 「includeライブラリ」のように独自クラスでまとめたものをインクルードして利用するよりも、必要な関数だけをソースコード内にコピペして使用するほうが、マクロの処理速度的には僅かながらも有利?(な気がする… @ロースペ XP)。 :: →念のため確認してみたら、やはり差は僅かだった。 : ※「includeライブラリ」の MeryInfo.js と [[マクロ覚え書き(開発者向け)#includeライブラリの IO クラスを利用する|IO.js をインクルード]] したマクロで Mery.ini ( 31 万文字超/約 5600 行、約 320 kB ) から「行の表示方法 (LineColumnView キー)」を取得すると、平均 0.125 秒。 <syntaxhighlight lang="javascript"> #include "include/IO.js" #include "include/MeryInfo.js" var start = new Date(); // Mery.ini のテキストデータを読みこむ var iniText = IO.LoadFromFile( MeryInfo.GetIniPath(), "utf-8" ); // LineColumnView キーの値を検索する var lineColumnView = + /^LineColumnView=(\d)$/m.exec( iniText )[1]; Alert( "行の表示方法: " + ( lineColumnView ? "表示行" : "論理行" ) + "\n\n" + ( ( new Date() - start ) / 1000 ).toFixed( 3 ) + " 秒" ); </syntaxhighlight> : ※ [[Mery.iniのオプション値を取得#GetIniOption2() 関数|組み込み関数 GetIniOption2()]] を利用したマクロで「行の表示方法」を取得すると、平均 0.095 秒。 <syntaxhighlight lang="javascript"> var start = new Date(); // 関数の戻り値 iniOption[0][2] が LineColumnView キーの値 var iniOption = GetIniOption2( [[ "General", "LineColumnView" ]] ); Alert( "行の表示方法: " + ( iniOption[0][2] ? "表示行" : "論理行" ) + "\n\n" + ( ( new Date() - start ) / 1000 ).toFixed( 3 ) + " 秒" ); // ---------- ▼ 組み込み関数 ココから ▼ ---------- function GetIniOption2( keyArray ) { /* ~ 省略 ~ */ // https://www.haijin-boys.com/wiki/Mery.iniのオプション値を取得#ソースコード_2 } // ---------- ▲ 組み込み関数 ココまで ▲ ---------- </syntaxhighlight> : GetIniOption2() 関数は、<code>IO.LoadFromFile()</code> と <code>MeryInfo.GetIniPath()</code> のコードを翻案して作ったものなので、Mery.ini のパスを解決して [[マクロ覚え書き(開発者向け)#ADODB.Stream を利用する|ADODB.Stream で読みこむ]] 処理の部分はほぼ同じ。 Mery.ini のテキストデータから LineColumnView キーの値を検索する方法は異なるが、その部分は「includeライブラリ」を使用したコードの [https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec RegExp.exec( str ) メソッド] のほうが速いはず。 :: ※ GetIniOption2() 関数は [https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/search String.search( regexp ) メソッド] と、[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf String.indexOf( searchValue, fromIndex ) メソッド] ×3回でキーの値を取得する。 : … とはいえど、「includeライブラリ」は多種多様な各クラス同士でのプロパティ(関数)の相互参照により高度に効率化されていて、おいそれとアレンジできない部分がたくさんあるため、素直にインクルードして利用するほうがよいのかも。
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
利用者ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク