HDS#22 JScriptと.NET Framework

こんにちは、開発担当の杉原です。

 

近頃、自宅の自室を少しづつ片づけているのですが、その中でとても邪魔なものがありまして。

それは何かというと、技術書なんですね。ほとんどが学生の頃買ったようなもので、今では使わないものも多くて。

とはいえ、全く使えないものでもないので捨てるに捨てられず。ただ、少なくとも自宅では使わないなと思って、ちょこちょこ会社に持ち込んではその辺に放置して誰でも勝手に読める場所に置いています。

 

ただ、JScriptの参考書ってのがないんですよね。

というわけで今回はJScriptを勉強するうえでとても大事なお話。

やはりJScriptでのスクリプト作成に苦戦するお客様も多く、時折お問い合わせをいただいております。

 

そもそもの問題として「JScriptの資料がWEB上にほとんどない」という話になります。

これについてはMicrosoftの公開するドキュメントがすべてかなと、私も技術習得の中で感じました。

 

しかし問題はここから。

そのMicrosoftのドキュメントにあるJScriptとは何か違うんです。

あるお客様からそれに似たお問い合わせを実際にいただきましたし、私もその問題にぶち当たった経験があります。

 

実をいうと、Emulate3DのJScriptは、JScriptであってJScriptではないのです。

一体どういうことかといいますと、Emulate3Dはお手軽(かどうかはさておき)なプログラム作成言語としてJScriptという言語を採用してはいるものの、あくまで実装されているのはJScriptというプログラム言語の言語仕様だけであって、その関数までは実装していないのです。

自然言語で例えるなら、日本語を話せるけれど四字熟語を知らないようなものでしょうか?

 

Microsoftの公開するJScriptリファレンスには言語仕様のほかにも、純粋なJScript(Emulate3D上ではなくWindowsで実行できるもの)で利用できる関数も掲載されています。

そのため、このリファレンスの通りにやってもうまくいかないというわけなんですね。

 

じゃあ関数が使えないということは、やれることがとても限られてくるのではないか。そう感じるかもしれません。

しかし、Emulate3D上で実行されるJScriptでは、また違った関数を呼び出すことができるのです。

1つはEmulate3Dで定義された独自の関数。例えばメッセージ出力するprint()関数や、モデル上の時間で待機するwait()関数なんかが該当します。

そしてもう1つが、.NET Frameworkのクラスとその関数です。

 

.NET Frameworkが何なのかは、ここで説明するよりもグーグルに聞いてみるのが早くて正確だと思うため割愛します。

Emulate3D自体もこの.NET Frameworkを使用して作成されていますし、JScriptで書いたスクリプトも実行するときにはC#で書かれたコードに一度変換されますので、この.NET Frameworkを利用することができるのです。

.NET Framworkを使用するVisual BasicがVB.NETと呼ばれているので、さしずめEmulate3DのJScriptはJScript.NETと呼ぶべきなのかもしれませんね。

 

そうなると、途端にやれることが増えるのではないでしょうか?

Mathクラスを使えば三角関数の計算ができますし、System.IO名前空間のクラスを使ってファイルの入出力なんかもできると思います。

やりたいことを「〇〇 .net」とかで調べれば、結構サンプルコードなんかも出てくるのではないでしょうか?

まあ、出てくるサンプルコードは大体がC#だったりするので、これをJScriptに読み替える必要はあるのですが、そこまで大きく違うものでもないので、難しい話ではない……と、自分は思うのですが、プログラム慣れしてないと難しいですよね。

もしこんな絵のような感じで問題に直面しましたら、まずはお問い合わせいただければと思います。

しかし、内容によってはサポートとして回答しかねることもあることをご承知いただきたいです。その場合は、教育などの案内をさせていただくかと思います。

 

裏ワザとして、急ぎではなく、また公開されて問題がないようでしたら、この【How to Demo3D Scripting】へのご意見・ご要望という形でご連絡いただければ、このブログ上で何かしらのアクションができるかもしれません。

 

もちろん、そもそも問い合わせをいただかないようなコンテンツ作りもやっていければとは思っておりますので、よろしくお願いします。(まあ、それをブログでやるのはどうかとも思うのですがもにょもにょ。。。。。)


 

なんかいつもと違った感じになってしまいましたが、次回からはいつも通りやれたらと思います。

まあ、内容は未定なんですけれども。

更新は11/8(木)です。お楽しみに。