なでしこを明後日の方向に

日本語プログラム言語なでしこを応援しています

なでしこ3のwebkit版からnakoファイルを起動する

なでしこ3webkit版には特殊命令がいくつか実装されています。
ブラウザ版などにないwebkit版専用の命令です。

特殊命令のなかに非同期命令の「起動時には」と非同期でない版「起動」命令があるので使ってみます。
なでしこ1のプログラムであるnakoファイルを「起動」してみましょう!

ここではwindows用のwebkit版v3.4.13を使用しています。
未来のバージョンでは仕様が変更になる可能性があります。

なでしこ3webkit版とは

ダウンロードはここ。

github.com

win-nako3-chrome.zipのほうはなぜか起動後に落ちるので
win-nako3-webview2.zipを解凍して使います。(2023年7月現在うちの環境にて)

中にはexeファイルとwebappフォルダがあります。 exeファイルを実行すると普通のアプリのようにウィンドウが開きます。

ウィンドウの中身はブラウザのような部品でできており、フォルダ内のindex.htmlの内容が表示されます。
webapp内のmain.nako3に書いたなでしこ3のプログラムが動きます。

webkit版専用の命令について

なでしこ3webkit版にはブラウザ版にはない特殊命令があります。
公式の解説はこのへんに。

https://nadesi.com/doc3/index.php?%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92PC%E3%82%A2%E3%83%97%E3%83%AA%E3%81%A8%E3%81%97%E3%81%A6%E9%85%8D%E5%B8%83#h9d62f71d

https://github.com/kujirahand/nadesiko3webkit/blob/main/batch/res/README.md#%E7%89%B9%E6%AE%8A%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

特殊命令にはwebkit版v3.4.13になって増えたものがあります。
以前のバージョンは非同期の命令(~~時には)だけでした。
マニュアル類はその頃に書かれたもののようで、非同期じゃない命令のマニュアルはないようです。(2023年7月現在)

この特殊命令のうち、「起動した時には」と「起動」について解説していきます。
「内部情報取得」もやろうとしたけど次回にまわします。

「起動」命令の引数に気を付ける

注意:なでしこ3マニュアルには「起動」(コンソール版用)の命令が載っていますが、webkit版の「起動」は別の実装となっています

非同期命令の「起動した時には」と、
そうじゃない「起動」があります。

webkit版のサンプルでは電卓を起動しています。windows版だとこう書く模様。

//なでしこ3webkit版v3.4.13
「calc」起動した時
  「電卓起動」表示。
ここまで

…このサンプルは非同期実行の命令、「起動した時には」ですね。 「起動」のサンプルはないようです。

やってみましょう。こうでしょ!

「calc」起動

実行結果

[実行時エラー]main.nako3(22行目): json: cannot unmarshal string into Go value of type []string

は?

エラーが異国語で書かれているのではっきりわかりませんが「stringをunmarshalできませーん」と言っている気がします。

unmarshalとは

Unmarshalは、ネットワーク越しに送信されたデータをGoの構造体に変換します。
Unmarshalは、JSON形式で受け取った値を指定した構造体に格納することができます。
第1引数にJSON形式のデータを、第2引数に格納したい構造体を指定します。2022/10/02

よし、わからない。
わからないのででたらめに試した結果

["calc"]起動

起動の引数を配列にすると動くことがわかりました。
ついでに ["calc"]起動した時 も動くことがわかりました。

テキストファイルやnakoファイルを起動する

次はテキストファイルを起動してみましょう。
なでしこ1ではテキストファイルのフルパスを起動するだけでした。

//なでしこ1
"C:\test\aaa.txt"起動

なでしこ3webkit版では配列に実行ファイルとテキストファイルを指定する必要があるようです。

//なでしこ3webkit版v3.4.13
["notepad","C:\test\aaa.txt"]起動した時 //非同期命令

//なでしこ3webkit版v3.4.13
["notepad","C:\test\aaa.txt"]起動

nakoファイルを起動する場合は
 [vnako.exeのパス,nakoファイルのパス]を起動
でできるようです。

vnako.exeのパスは、なでしこv1のエディタを起動し、

//なでしこ1
ナデシコランタイムパス言う

を実行することで取得できます。

//なでしこ3webkit版v3.4.13
ナデシコランタイムパス「C:\Program Files (x86)\nadesiko_lang\vnako.exe」 //環境による
nakoファイルパス「C:\test\テスト.nako」
[ナデシコランタイムパス,nakoファイルパス]起動 //なでしこv1起動待機に相当?
「起動しました」表示 //ウィンドウを閉じてから表示される

まとめ

(なでしこ3webkit版v3.4.13)
・「起動した時には」(引数は文字列か配列)

「calc」起動した時 //文字列 うごく  
["calc"]起動した時 //配列 うごく

・「起動」(引数が文字列だとエラー)

「calc」起動 //文字列 エラー json: cannot unmarshal string into Go value of type []string
["calc"]起動 //配列 うごく

・テキストファイルを起動する場合、配列にする

["notepad","C:\test\aaa.txt"]起動

・nakoファイルを起動する場合、ランタイムのvnako.exeのパスとnakoファイルのパスを配列にする

[ナデシコランタイムパス,nakoファイルパス]起動