今すぐJavaScriptを動かしたい!
JavaScriptはシンプルな規格で、いろんな場所に実行環境があることをなんとなくご存知でしょう。
この投稿では、JavaScriptの実行に使えるランタイムをまとめます。
この投稿を覚えておくと、
- ツールをぱっと作って動かしたい。
- 別の環境を使っているあの人にツールを書けることを教えてあげたい。
- プログラミングのさわりを気軽に教えてあげたい。
こんな時に何を使えばよいか見えて、教えてあげることができて、ニンマリできます。
Mac用
Macは標準でJavaScriptを動かすことができます。
osascript -l JavaScript sample.js
また、標準アプリである「スクリプトエディタ」を使ってもJavaScriptを書くことができます。
このランタイムは、アプリの自動化のために用意されているようで、自動操作機能が強力です
仕様書はこちらです。
Windows用
Windowsも標準でJavaScriptを動かすことができます。
wscript sample.js
もしくは
cscript sample.js
で実行できます。cscriptの方がコマンドライン用です。
この実行だと、WSHという様々なスクリプト言語を実行するランタイムで実行するため、VBScriptと同等のいろいろな機能が用意されていて、たとえばZipの圧縮/解凍などもできます。
WSHの仕様はこちらで見ることができます。
ブラウザ上で
最も簡単で誰もが持っているJavaScript実行環境は、ブラウザかも知れません。
上部のURLエリアに
javascript:alert("Hello");
のようにJavaScriptを入力すると、実行されます。
ブックマークにスクリプトを保存することで、ブックマークレットを作ることもあります。
PCのブラウザだけではなく、大抵のスマフォ用ブラウザでも実行することができます。
また、大抵のブラウザは開発者モードを持っていて、開発者モードで表示されるコンソールにJavaScriptを入力すると実行することができます。
Chromeですと、「表示」→「開発/管理」→「JavaScriptコンソール」でコンソールを表示することができます。
node.js
待っていました。我らがnode.jsです。LinuxでJavaScriptを動かしたい場合は第一候補に上がるでしょう。
WindowsにもMacにもLinuxにもインストールすることができます。きちんとしたJavaScriptのアプリケーションを作る場合にはnode.jsで作ることをおすすめします。
nodeは、インストール後、
node sample.js
で実行できます。
npmというパッケージマネージャにより、様々な機能を追加することができます。
実行エンジンにはChromeでも使われている、V8というものを使っています。V8を利用している実行環境は他にもたくさんありますので、興味がある方は調べてみるとオモシロイですね。
Javaと共に
Javaは8から標準でJavaScriptが実行できるようになりました。
いろんないろんないろんな環境で動かすことができます。
Javaを利用したJavaScript実行環境としてPacifista等がありますね(問答無用)。
Javaの豊富な機能を利用することができるため、GUIの作成でも、サーバの作成でも、環境構築でもお手のものです。
PacifistaはJavaおよびPacifistaをインストール後、
pacifista sample.js
で、実行できます。
iPhone/Android
もはや「今すぐ使える」ではないですが、JavaScriptフリークのために。
iPhone(iOS)、Android上でもJavaScriptを動作させることが可能です。
iPhone、Androidとも、「組み込みブラウザ」という仕組みを持っていて、そのブラウザにJavaScriptを実行させることができます。
[webView stringByEvaluatingJavaScriptFromString:@"alert(\"Hello\");"];
webView.evaluateJavascript("alert(\"Hello\");", null);
JavaScriptを利用するフレームワークなどを作成する時や、JavaScriptとやりとりする時に使えそうですね。(苦しい)
各環境で使える関数に差異はありますが、簡単にツールを作るにはとても使えます。
頭の片隅に残していただけると良いと思います。
また、ここではJavaScriptや、同じような構文で書ける類似の言語をまとめてJavaScriptと言い切ってしまいます。細かいことは、気にしないでください。
草々不一