|
でるもんた・いいじまです。
傍論になりますが、議論が噛み合わないまま放置するのは後味が悪いので、
つらつらと書いていきます。
> あと、「サンプルコードに頼らずに」というのがよくわからないです。
利用者の技術レベルをどの位置に想定するか、という問題です。
いきなりお説教をするのは気が引けるのですが、どうも天翔記さんは
「自分の普通」が「世間一般の普通」と大半において一致すると思って
いる節があります。下には下がいるんです。だから私は何度も、開発
だけやっていないでユーザーサポートの仕事もしなさい、と繰り返して
いるのです。
☆ ☆ ☆
たとえば、今年の4月には
Subject: hidesoft.4:08096| クリップボードの使い方
Subject: hidesoft.4:08103| RE 08102 追加質問
という2つのスレッドがありました。これを読み返してみてください。
秀丸のヘルプには、文字列を + で結合できるとはっきり書いてあります。
一方で、"..." の中に変数名、たとえば $a をそのまま書いたらどうなる
のかについては、実は記載がありません。
で、この2つのスレッドの質問者さんたちは、たぶんPerlあたりからの
類推でマクロを書いているのでしょう、実は秀丸マクロの文法をきちんと
理解してはいなかったわけです。私は、そういうレベルの人でも既存の
マクロをコピペして使う程度のことは十分に可能性があるし、そういう
可能性を十分に想定すべきだという点から議論をしているつもりです。
☆ ☆ ☆
> 秀丸マクロのサンプルコードは、Web上にもヘルプにもありますよね?
確かにありますね。サイトー企画さんも公式に、「マクロライブラリ」
というサイトを運営しておられます。
> 有名汎用言語スクリプト言語自体のサンプルコードも、
> 秀丸マクロとは比べ物にならないぐらいありますよね?
確かに山のようにありますけど、入門級のサンプルのほとんどは
コンソールでの簡単な操作で、そのあとはUNIX系OS+Apacheでの
CGIプログラミングに進むのが通例ですよね。
スクリプトからWindows OSを操作するとなると、ある一定範囲の事柄
ならば別途用意したバイナリコード(レジストリ関係などは処理系に
標準添付されていたりしますね)をスクリプトから呼び出せば実現
できますが、「Windowsの大抵の機能」を「そのまま利用できる」と
いうことを実証する完動品のサンプルアプリ(問題部分を記述した
モジュールだけのサンプルではダメです)、しかも日本語でコードの
書き換えかたについて丁寧な説明つき(英語ではダメです)、となると、
絶望的に少ないと認識しています。
> 「秀丸マクロの『各々の変数や関数』を汎用スクリプトに移植した」
> とかであれば、これはサンプルコードが無いと大変ですが、
> 多分誰もそんなことはしないでしょう。
> (未来への互換性が保てないので)
これはその通りです。
> pythonであれば、単純に
...
> みたいになるだけです。
...
> これとは別に、秀丸マクロ変数とpython変数をやりとりする所だけ、
> 別途メソッドを用意するのが普通でしょう。
分かっている人には当然、その情報があれば十分でしょう。
でもね、繰り返しますけど、サンプルのコードに書いてある
「python使う人はpythonは知ってる。」というコメントは
事実認識が甘いです。そりゃ、最初にマクロを完成させる人は
当然Pythonをそれなりに使える人でしょうけど、それを上記の
ようなド素人さんが改造することになるんです。
そういう人だとたとえば、
| #! hidemarudir + @"\hmActivePython3.dll"
|
| def somefunc():
| x = 3
| hm.EvalMacro("""
| debuginfo 1;
| ##a = x; //ここが罠です
| messsage(str(##a));
| showvars;
| """)
とか書いちゃって、「message 文では『3』と表示されるはずなのに、
実際に動かしてみるとランダムな値が表示される」と延々思い悩む
ことになります。
#「x」だと文法エラーにもならないので、余計にややこしい。
☆ ☆ ☆
で、一番下に書いてある問題提起の部分。
> Visual StudioはデフォルトインストールオプションとしてC++を外した。
ふむふむ。でも、VSのインストール画面を見て、C++が外されている
ことに気づかずに、すべてデフォルトのままでインストールする、
という人は割合としてどのくらいいるんですかね。最近はフリー
ソフトと抱き合わせで余計なおまけを入れるインストーラーが
珍しくないので、VSをインストールするレベルの人なら「何か邪魔な
ものがデフォルトで入るようになっていないか」と疑ってかかる
ほうがむしろ自然だと思いますが。
もちろん、「ウチのプロジェクトではC++を使わないことにしたから、
職場の開発用PCには入れなくていい」という選択をすることは当然
あるでしょう。でも一方で、Windows・Mac・UNIX系OSの3つともに
対応しているライブラリ類は今でもC/C++が標準語なので、カスタム
インストールで入れる人も確実に存在するはずですよ。
> 即ち、C++で.dllを作成するなどというのは、
> 個々人にはあまり期待できなくなる。
> 現在プログラムを組んでいる人間に対してすら、
> Windowsでは期待できなくなっていくだろう。
どうなんでしょう。何も知らない新人社員をゼロからプログラマに育て
上げる、という職場なら「現場で使っている言語にひたすら習熟せよ」
で通るかもしれませんが(たとえば、Android向けのアプリを作っている
なら現状C++はどうでもよくて、今のところJavaとJavaScriptですね)、
大学や専門学校のカリキュラムではC/C++をそれなりに習うのが一般的
だと思います。
で、そのレベルのC++がそれなりに分かっていて、なおかつC#とかで
最近のWindowsの事情をそれなりに知っていれば、ごく薄いテキストと
サンプルコードとを読んでC++でDLLを作る(あるいは最低限、既存の
DLLのソースに手を入れる)のはそんなに難しくないはずです。
> 今のうちに、巨大なバッテリー(デフォルトライブラリ)を持つ
> スクリプト言語を秀丸マクロで使いやすくしておくべきだ。
「今のうちに」と言い切る理由が理解できません。
今すぐ手を打たないと手遅れになるとお考えでしょうか?
業界全体を見れば、C++プログラミングの需要は確かに頭打ちでは
あるでしょうけど、しばらくは横ばいでしょう。Windowsとスマホだけ、
しかもそれらのアプリ層だけがIT業界というわけではありません。
> そうすれば、C++で.dllを作成することなく、誰もが変更できる、
> 見通しが良いテキスト(=スクリプト)でありながらも、
> Windowsの大抵の機能がそもまま利用できるようになるだろう。
Pythonなどはテキストのインタプリタ言語(少なくとも見かけ上は)
だから見通しがいい、C++はコンパイラ言語だから見通しが悪い、
というのは完全なステレオタイプです。どちらを使うにしても、
見通しがいいか悪いかは結局、コーディング作法の問題です。
極端な例を一つ上げると、最近はHTMLのソースの中にJavaScriptで
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]
||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new
Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];…
というコードを仕込んであるサイトが結構あります。Googleのアクセス
解析サービスを利用するコードのようですが、上記のコードがいったい
何をしているのかは、少なくとも私には全く解読不能です。というか、
おそらくGoogleの社内には綺麗な読みやすいコードが存在していて、
それをわざと読みづらく加工して配布しているんでしょうね。
話を戻すと、「Windowsの大抵の機能」の大半を「そのまま利用」する
スクリプトなんて、そのスクリプト言語については本体のことを人並み
に知っているだけ(=Windowsの内部構造には明るくなく、処理系に
ついてくるWindows専用のライブラリの使い方も詳しくは知らない)
人から見れば、C++以上に複雑怪奇だと思いますよ。
☆ ☆ ☆
それにそもそも、「たかがエディタ」のはずの秀丸がWindows上の
すべてのリソースを一元的かつ直接的に制御する利点なんてどこにも
ありません。「餅は餅屋」ですから、必要に応じて別のアプリを使って、
必要に応じて、そういったアプリの間の橋渡しをする専門ツールを使う、
というのが、大半の人、つまり、本人が天翔記さんのような腕利きの
プログラマでなくて、そういうプログラマを専属で雇うだけのコスト
メリットのない人にとっての現実解ではないのですか?
たとえば、どうしても秀丸の編集ウィンドウ内で動画を観られなきゃ
嫌だ、という人はほとんどいないでしょう。録画・録音データから
スピーチの文章起こしをする仕事でも、Windows Media Playerなどの
「その分野に長けた一般的なアプリ」で再生して、文章の入力・編集
作業だけエディタなりWordなりで書き起こすほうが、トラブル発生
時の保守コストは安くなります。途中で再生を止めて数秒巻き戻し
たい、でもキーボードから手を離したくない、ということであれば、
秀丸マクロで一から実装するよりは、キー操作一発でWMPにPostMessage
できるツールを常駐させておくほうが、初期コスト、長期的な維持
管理コストの両面で明らかに安くつきます。
冒頭で述べたことの繰り返しになりますが、天翔記さんの諸々の想定は、
DLLなりスクリプト言語なりで高度なことができる人に客層を絞り込み
すぎです。秀丸ユーザの少なくとも99%まではそういう高度なことが
できない人だということをしっかり認識してください。
|
|