3月2日、CodeIQで解いた問題のフィードバックが来ました。そこには、「プログラムとしては合っているけど、Ideoneではエラーになってしまったので不合格」というメッセージが書いてありました。Ideoneとは何なのでしょうか?また、プログラムが合っているのにエラーとは何なのでしょうか?調べてみました。
Ideoneとは
Ideoneは、環境環境を用意することなくネット上で書いたプログラムを実行できるWEBサービスです。javascriptは、PCとメモ帳があれば開発環境が整いますが、phpなどはPCに必要なツールをダウンロードしないと開発環境が整いません。
しかし、Ideoneは、これらの手間を省きプログラムを実行することができるのがポイントです。URLが生成されるので、第三者に見られても良いコードに限るといった注意点については、Ideoneの使い方をご覧ください。
なぜ、IdeoneでJavaScriptがエラーになったのか?
それは、僕がchoromeを使っているにも関わらず、Ideone上で実行するときのコードの種類をjavascript(rhino)、あるいはJavaScript(spidermonkey)を選択していたからでした。実は、プログラムはブラウザなどの実行環境に影響を受けるんだそう。そして、ブラウザによってJavaScriptの種類が違うということも知りました。
クロノス・クラウン代表 柳井 政和さん
rhinoはJavaで記述され、Mozilla Foundationで管理配布されています。spidermonkeyは同じ Mozilla FoundationでC実装です。これらは、FirefoxやJavaを利用した環境で使われます。
ChromeはV8で、これはnode.jsにも利用されています。IEでは、また違うエンジンです。
こうして、chromeはnode.jsと関連があるということがわかりました。chromeにFirefoxのJavaScriptを指定していたら、エラーが起きるはずです。そして、chromeとnode.jsで、無事にプログラムを実行することができました。
まとめ
JavaScriptでも実行環境によって、動作が違ってくることを初めて知りました。他のブラウザでは確認してないですが、chromeでJavaScriptを使うときは、Node.jsを使うと正常動作することを紹介しました。