hmPython3 (秀丸マクロ用 スクリプト via Python)

概要

秀丸マクロで「Pythonを秀丸マクロとしてシームレスに近い形で利用する」ためのライブラリとなります。

秀丸のインプロセスで動作するため、秀丸の「組み込み言語」として動作します。

このため、hmPython3では、Pythonと秀丸マクロとの「値のやりとり」や、
「Pythonの中で秀丸マクロを実行」や「秀丸マクロの中でPythonを実行」をすることが、 とても簡単になっています。

  • Python

    Pythonは「データ分析」「機械学習・AI学習」「コンピュータグラフィック」
    「データ収集系のWeb API」 「システムの稼働テストプログラム」など、
    Webに偏らないスクリプト言語であり、見通しが良いスクリプト記述となる傾向があるため、
    「多目的な汎用スクリプト」としては、世界で他のスクリプト言語の追随を許さないほどの利用シェアを誇っています。

  • hmPython3は最もスタンダードなPythonを秀丸用言語として組み込む

    hmPython3は、www.python.orgで配布している最もスタンダードなpythonを秀丸に組み入れます。

  • 2020年からはIT国家試験・情報処理試験の選択言語

    2020年春 からは現場での利用率が減少してきているCOBOLが、選択対象から廃止され、 C言語、JAVA言語とならび、Python言語が採用されました。
    国内においても、ますますPythonの利用率は高まっていくことでしょう。

  • Python の文法概要

    https://docs.python.org/ja/3/にPython文法のうち主要なものが日本語で解説されています。

ダウンロード

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

動作環境

  • 秀丸

    秀丸エディタ ver8.73以上
    秀丸エディタ 8.98以上を強く推奨
    新しいバージョンであるほど多くの機能が使えます。

  • 備考

    あなたのPCにすでにPythonがインストールされていたとしても、
    そのPythonとは一切干渉しません。
    又、既存のPython環境の妨げになるようなこともありません。

インストール

  • hmPython3_setup_x86.msi(or x64.msi)をダウンロードする。
  • ダウンロードした hmPython3_setup_x86.msi(or x64.msi) を実行。
    インストール先は、「必ず秀丸があるフォルダ(hidemaru.exeがあるフォルダ)と同じフォルダにする必要があります。
    サブフォルダや別フォルダでは動作しません。
  • インストールすると、 秀丸直下に「hmPython3.dll」「hmPython.py」「python39.dll」がコピーされます。
    又、「HmPython3というサブフォルダ」が出来上がり、
    その中にpythonインタプリタが「フルライブラリ」込みでまるまる配置
    されます。

ソース例

  • (DoString関数の中身の記述は)Pythonで動作するソースは原則的には動作します。
  • Python内から秀丸マクロが実行可能です。
  • Pythonと秀丸マクロとの変数のやり取りも、Pythonで記述します。
  • .mac1つのファイルに埋め込んだ場合

    HTMLにJavaScriptを埋め込むような感覚で、秀丸マクロにPythonを文字列として埋め込むことが出来ます。
    複数個所に埋め込んでも、記述の内容は持続性を持っています。
    又、HTMLに対するJavaScript同様に、中に埋め込むのではなく、別ファイルとして記述してもかまいません。

    mytest.mac
    #DLL = loaddll( hidemarudir + @"\hmPython3" );
    
    #r = dllfuncw(#DLL, "DoString", R"PY(
    from hmPython import hm
     
    import random
    r = random.random()
    
    ret = [ x*2 for x in range(1, 10) ]
    hm.debuginfo( ret )
    
    # 秀丸マクロ変数の「date」という定義済みの値を使う
    hm.debuginfo( hm.Macro.Var["date"] )
    
    hm.Macro.Var["$mes"] = "秀丸のマクロの変数「$mes」へと値を代入";
    
    # Python側から秀丸マクロを実行する
    hm.Macro.Eval(r'''
        message $mes;
    ''')
    
    )PY"
    );
    
    freedll(#DLL);
    
  • .macと.pyの2つのファイルに分けた場合

    特に支障がなければ、マクロとは別ファイルに記述するのを推奨します。
    エラーの行やファイルの位置がわかりやすくなります。

    mytest.mac
    #DLL = loaddll( hidemarudir + @"\hmPython3" );
    #r = dllfuncw(#DLL, "DoString", "import mytest");
    freedll(#DLL);
    
    mytest.py
    from hmPython import hm
     
    import random
    r = random.random()
    
    ret = [ x*2 for x in range(1, 10) ]
    hm.debuginfo( ret )
    
    # 秀丸マクロ変数の「date」という定義済みの値を使う
    hm.debuginfo( hm.Macro.Var["date"] )
    
    hm.Macro.Var["$mes"] = "秀丸のマクロの変数「$mes」へと値を代入";
    
    # Python側から秀丸マクロを実行する
    hm.Macro.Eval(r'''
        message $mes;
    ''')
    

from hmPython import *

from hmPython import hm

ではなく、

from hmPython import *

後者を記述すると、秀丸エディタのマクロの関数・文・キーのほとんどが、pythonの関数としてインポートされます

mytest.mac
#DLL = loaddll( hidemarudir + @"\hmPython3" );

#r = dllfuncw(#DLL, "DoString", R"PY(
from hmPython import *

test = "あいうえお\r\n";
hm.OutputPane.Output(test);
message(hm.version)

pos_lineno = lineno()
pos_column = column()

hm.OutputPane.Output([pos_lineno, pos_column])

selected_menu = menu("あいうえお", "かきくけこ")
hm.OutputPane.Output(str(selected_menu) + "番目を選択しました")

)PY"
);

freedll(#DLL);

秀丸エディタ 9.19以降だと...

以下のように、"""""を使ってソースを挟むことで、少し見やすくすることも出来ます。

mytest.mac
#DLL = loaddll( hidemarudir + @"\hmPython3" );

#r = dllfuncw(#DLL, "DoString",
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
from hmPython import *

test = "あいうえお\r\n";
hm.OutputPane.Output(test);
message(hm.version)

pos_lineno = lineno()
pos_column = column()

hm.OutputPane.Output([pos_lineno, pos_column])

selected_menu = menu("あいうえお", "かきくけこ")
hm.OutputPane.Output(str(selected_menu) + "番目を選択しました")

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
);

freedll(#DLL);

特徴

  • インプロセスで動作する!!

    これまで秀丸マクロライブラリなどに、よくあがっていたPythonが実行可能と称していたマクロは、
    「別途インタプリタが別プロセスとして実行され、その実行結果を表示します」
    といったものが大半でした。
    (例えば、別途Pythonインタプリタが入っていれば、それを別プロセスとして呼び出し、解釈し、結果をアウトプット枠に表示します、など)

    しかし、このhmPython3は違います!!
    「秀丸マクロと同じプロセス空間」で動作し、秀丸のマクロ変数とも自由にやり取り出来ますので、ガッチリ秀丸と完全連携しています。

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

hmPython3はストアアプリ版には本来対応していませんが、
特別に設定をすれば、利用する方法を確保しています。
詳細は左メニューのストアアプリ版での利用などを参照してください。

hmPython3とは別にhmPyもある

このhmPythonとは別に、「.NET」が利用可能な「IronPython」で記述する「hmPy」もあります、
既存資産やライブラリに関する知識、制作目的に応じて、選択してください。
又、hmPython3とhmPyを1つのマクロで同時に利用することも可能です。

ライセンス

  • hmPython3

    全て Apache License 2.0となります。

    ソースの場所

    • Githubにソースがあります。
      コンパイルの詳細は左メニューより「他のバージョンのPythonを使えるようにする」を参照してください。
  • Python一式

    原則的には Python Software Foundation ライセンスとなります。
    詳細は、インストールした際に含まれる「LICENSE.txt」を確認してください。