hmLN (秀丸マクロ用 .NET Framework ライブラリ via Lua)

Lua言語を用いて、「C#」で作成した「マネージdll」を、
秀丸マクロで利用するためのdllとなります。

もちろん「C#のdll」だけではなく、「C++/CLI・VB.net・F#・JScript.net」などで作成したdllでも大丈夫です。

ダウンロード

Windowsのbit数ではなく、秀丸のビット数 Windows OSが64bit版か32bit版かは関係ありません。秀丸エディタが32bit版か64bit版かでダウンロード対象を選択してください。

動作環境

  • 秀丸

    秀丸エディタ ver8.66以上

  • Microsoft VC++ 再頒布可能パッケージ

    Visual Studio 2017 C++ ランタイム
    x86版をインストールしたことが無い方はインストールしてください。
    お手持ちのOSが64bitか32bitかには関わりなく、x86版のインストールが必要です。

  • Microsoft .NET

    .NET Framework 4.5以上。

  • 秀丸エディタ 64bit版について

    秀丸エディタ64bit版をご利用の方は、hmLN_x64.zipをダウンロードし、hmLN.dllを差し替えてください。
    (又、この場合は、Microsoft VC++ 再頒布可能パッケージは、64bit版をインストールしてください。)

  • 秀丸エディタ ストアアプリ版について

    hmLNはストアアプリ版でも利用することが出来ます。詳細は左メニューのストアアプリ版での利用などを参照してください。

インストール

  • hmLN.zipを解凍する。
  • 「hmLN.dllを秀丸エディタのディレクトリ内(hidemaru.exeと同じ場所)へと コピーする。
    (原則的には、hidemaru.exeと同じ場所である必要があります。これは.NET FrameWorkのdllを動作させる仕組みに拠るためです。)

秀丸でマネージdllを使うメリット

  • CPU非依存性

    32bitと64bitでプログラムを別々に作成する、などといったバカバカしいことから解放されます。
    プログラムが少ないうちはいいですが、多くなったり、他のモジュールを数多く利用するようになると、
    32bitと64bitでプログラムを分かれることは非常に足を引っ張ります。
    そういったことから解放されます。

  • メンテナンス性

    ご存知の通り、ほとんどすべてのことにおいて、ネイティブと.NET Frameworkでは、
    .NET Frameworkを利用したソースの方が簡単で、ソースがはるかに短く、難易度が低く、見通しが良いものとなります。
    メンテナンス性が非常に高くなります。

  • 十分な実行速度

    C#で作成された.dllはC++の半分~7割程度の速度しか出ませんが、
    エディタ用途のdllとしては十分に高速だと言えるでしょう。
    (ちなみに秀丸マクロは、C++の1/500ほどの速度しかありません)

  • 高い資産性

    マネージ.dllの開発速度やわかりやすさは、ネイティブC++では決して得られないものです。
    dll間で「複雑な型」の変数をそのまま簡単に渡しあえる、参照しあえるのも、計り知れないメリットです。

hmLNとhmPyと比較・違い

hmLNでもhmPyでも、どちらでも「C#・C++/CLI・VB.net・F#・JScript.net」のマネージdllを読み込むことが出来ます。
では、両者はどのような役割の違いがあるのでしょうか。比較してみましょう。

  • 最初の読み込み時間

    hmLNは比較的短い時間で最初の読み込みを終えることが出来ますが、
    hmPyは最初の読み込みには少し時間がかかります。

  • 機能

    hmPyはIronPythonをまるまる搭載していますので、 非常に豊富な機能を持っており、
    クラス機構や.NETのクラスライブラリとの相性の良さなど、
    .NET Frameworkとの親和性はスクリプト言語の中では他の追随を許しません。

    一方、hmLNは言語性能は、
    Luaというシンプルな言語のみを搭載しています。

  • まとめ

    このような性質から、hmLNでは、

    • hmLN層では複雑なことはしない
    • hmLN層はあくまでも「秀丸マクロ」と「マネージdll」の間の値の橋渡しが中心、
      処理のほとんどは「マネージdll」と「秀丸マクロ」でやる。

    といった使用シーンで使うのに向いています。

    一方、マネージdll内のクラスをスクリプト層で継承したり、長々とスクリプトを記述したり、
    ある程度複雑な構造を「スクリプト層で直接」扱うのであれば、hmLNよりhmPyの方が向いています。

ライセンス

  • hmLN

    hmLNは、Apache License 2.0となります。

    ソースはgithubにあります。

  • Neo.Lua

    hmLNはInternalアセンブリとしてNeo.Luaが利用されています。
    詳細は、https://neolua.codeplex.com/を見てください。