普段思ったことや、雑記。

Menu & Search

DockerでJavaScriptシェル(Node.js実行環境)をつくる

2016年12月17日

JavaScriptがコマンドラインで動く環境が欲しかったが、Mozilla Developer Network公式で紹介されてるのがイケてないと思った

とりあえず、発端は見出しの通り。問題のMDNのページはこちらである。お手軽にやろうとして、エディタであるAtomのscriptパッケージも動かなかったというのが、そもそもの発端である。なんというか、新しいツールを入れるにあたり、いちいちアップデートをするのとかも面倒だし、メンテナンスされているツールなのか調査したりするのも面倒だった。そもそも、JavaScriptが走ればいいだけだったので、極力労力はかけたくなかった。ちなみに、JavaScriptの勉強とコーディングテスト向けにJavaScriptが走れさえすればよかったので、要件としてはそれほど高くはない。

 

基本的なJavaScript環境であるなら、Node.jsで良いじゃないか

Node.jsは、最近わりと色んなところにちょいちょい出現する。Node.jsはGoogle ChromeのV8エンジンで動いているので、JavaScriptシェルで試そうとする基本的な四則演算だったり、配列の処理だったり、そのあたりは問題なく動作する。コーディングテストとかでも、例えばCodilityであるなら、JavaScript環境はNode.js v6.4だったので(2016年12月11日時点)、やはりNode.jsでJavaScriptシェルとして代用することは問題はないものと思う。

 

DockerでNode.jsのコンテナを走らせ、CLIよりnodeコマンドでプログラムを実行することでJavaScriptシェルとする

というわけで、Node.jsの任意のバージョンを手間をかけずに構築するとしたら、Dockerの出番である。Dockerについて詳しくない人は、チュートリアル形式で説明した記事が別途あるので、そちらもぜひ参照してもらえればと思う。ここからは、既に使用マシンにはDockerがインストールされていることが前提で説明をする。今回は、Node.jsの長期サポートバージョンの6系(boron)の最新版環境を構築する。以下の2コマンドでNode.jsの環境を立ち上げることができる。

わずか2コマンドで任意のNode.jsの環境が手に入った。ちなみに、Node.jsの他のバージョンが欲しい人は、DockerHubのNode.js公式を参照して欲しい。2コマンド目のdockerコマンドの説明をすると、コマンドの意味は「node:boronというイメージがないかローカルを調べ、あればイメージを実行する。ローカルにない場合はDockerHubからイメージをダウンロードして実行する。その際(オプション)、コンテナ内のシェル/bin/bashを指定してコンテナにrootユーザでログインする。また、ローカルの~/Development/workをコンテナ内の/workと共有する。コンテナを終了すると、コンテナを破棄する」ということだ。

あとは、ローカルの~/Development/workにJavaScriptファイルを作り、お好きなエディタでいつもどおりコードを書いて、コンテナ内の/workで該当のJavaScriptプログラムに対して、ターミナルからnodeコマンドで実行すればOKである。使い終わったら、ターミナルでexitと打てば環境が終了する。

 

DockerはNode.jsだけじゃなく、他の試してみたいプログラミング言語にも使える

要はやったことは言語環境を、Dockerを使ってたったの2コマンドで構築してやった、というのが今回である。別にNode.jsでなくとも、これは応用可能である。例えば、環境構築が面倒なElixirならこうだ。

Node.jsとのコマンドの違いは、「イメージ名称:タグ(だいたいバージョン)」を変更しているだけで、あとのオプションは同様である。このようにDockerを使えば、別にJavaScriptシェルが当初欲しかったのだが、派生してGoだろうがScalaだろうが他の環境だって簡単に構築して試すことができる(※ただし、DockerHubでイメージがあることが前提。メジャーな言語は置いてあるが、もちろんない場合はイメージから自分で作るしかない)。

Article Tags
mmiyauchi

プログラムを書きながらTranceを聴くのが良いですね。みなさんも聴いたほうがいいですよ、Trance。EDMよりハードトランスでしょ。

Related article

React Nativeで「No bundle url present」というエラーが出たときの対処

すごく短いけど、開発…

React Native開発のつらい点まとめ

React Native開発のつらい点まとめ

React Nati…

Meteorのブームが来るか来ないと言われれば、来ないと思ってしまった件

2016年秋頃から、…

Discussion about this post

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Type your search keyword, and press enter to search
%d人のブロガーが「いいね」をつけました。