WebAssemblyをローカルにインストールする

自分のマシンでExercismの演習を解くために、WebAssemblyをローカルにインストールする方法を学びます


このトラックでは、WebAssemblyのランタイムを提供するために、全体を通してNode.jsに依存しています。つまり、お使いのコンピューターでJavaScriptを実行するときは、すべてNode.jsを使うことを前提としています。

トラックの要件

多くのマシンにはNode.jsが最初からインストールされているか、以前に、あるいは依存関係としてインストールされている場合があります。そこで、何をするにしても、まずすでにインストールされているかどうかを確認しましょう。

  1. ターミナル(Terminal、cmd、Powershell、bash、…)を開きます
  2. node -vを実行します

Node.jsがインストールされていれば、バージョンが表示されます。このバージョンを書き留めておきましょう。Node.jsがインストールされて_いない_場合は、エラーが出力されます。たいていは、'node' is not recognisedのような内容です。

Node.js

Node.jsがすでにインストールされている場合

Node.jsのウェブサイトを開きます。すると、_2つ_のバージョンが表示されます(OSが判別された場合。判別されないときは、先にOSを選択してください)。node -vのバージョンがどちらかと一致していれば、問題ありません。一致しない場合は、Node.js LTSを使うことをおすすめします。アップグレードでシステムの何かが壊れるのが心配なら、すべて問題ないものとしてそのまま進めてもかまいません。ただし、予期しないことが起きたときにサポートを提供できない場合があります。

Node.jsがインストールされていない場合

Node.jsをインストールする方法は、いくつかあります。

どちらの方法もWindows、macOS、Linuxに対応しています。どうすればよいかわからない場合は、インストーラーを使うのがいちばん簡単です。

  • LTSバージョンを使うことをおすすめします。Node.jsのウェブサイトでも、recommended(ほとんどのユーザーにおすすめ)と表示されています。
  • ウェブページやインストーラー中の手順に従って、Node.jsをインストールします。

インストールのテスト

インストーラーでの作業が終わったあと、パッケージマネージャーでの作業が完了したあと、またはバイナリをコピーして手順どおりに進めたあとは、すべてうまくいったかどうかをテストしておくとよいでしょう。

  1. ターミナル(Terminal、cmd、Powershell、bash、…)を開きます
  2. node -vを実行します

表示されるバージョンは、ウェブサイトに載っているものと一致しているはずです。

注意: _新しく_ターミナルウィンドウを開くことが重要です。すでに開いているターミナルウィンドウは、インストールが完了したあとに更新されていない可能性があります。つまり、開いているターミナルは、新しいプログラムがインストールされたことを認識していないのです。

ヘルプ: 'node' is not recognised

公式のインストーラーを使った場合、PATHは自動的に設定されているはずです。ただし、シェルがグローバルにインストールされたモジュールを見つけられない場合や、Node.jsをソースからビルドした場合は、npmのバイナリを含めるようにPATHを更新してください。

macOSとLinuxでは、次の行を~/.bash_profileまたは~/.zshrcのどちらかに追加するとよいでしょう。

export PATH=/usr/local/share/npm/bin:$PATH

Windowsでは、スタートメニューを開いて"environment variables"を検索します。PATHの項目を編集し、ここにnpmのバイナリへのパスを_追加_する必要があります。たいていは、C:\Program Files\nodejsにあります。File Explorerでこの場所を開くと、node.exe、npm.bat、npx.batが見つかるはずです。

開いているターミナルをすべて閉じて、新しいターミナルを開きます。

演習の要件

お使いのOS用のExercism CLIをダウンロードするには、こちらの手順に従ってください。

CLIのセットアップと設定が完了したら、最初の演習hello-worldをダウンロードしましょう。

exercism download --exercise=hello-world --track=wasm

各演習では、テストを実行するためにいくつかのツールが必要です。それらは、各演習のディレクトリで次のコマンドを実行してインストールできます。

npm install

ヘルプ: '<package>' is missing / cannot be found

演習を_アップグレード_したあとにこれが表示されたなら、npm 7へようこそ。node_modulesとpackage-lock.jsonを削除して、コマンドをもう一度実行すると解決します。

ディスク容量が気になり、別のツールをインストールしてもよいなら、pnpmを見てみましょう。pnpmは、各パッケージの各バージョンがディスク上に1つしかインストールされないようにします。この場合は、npm installの代わりにpnpm installを実行すれば、すべて期待どおりに動くはずです。

でも、npmとは何で、なぜこれでうまくいくのでしょうか?

JavaScriptトラックを完了するのにこの情報は必要ありませんが、いま何が起きたのかをぜひ理解したいという方は、次の段落が参考になります。

これは、npmがNode.jsに同梱されているパッケージマネージャーであり、Node.jsは上記の手順でインストールされているからです。npmコマンドはpackage.jsonファイルを探します。このファイルは_各_演習フォルダーにあります。このファイルには上記の"dependencies"がリストされており、npmがそれらをダウンロードしてnode_modulesフォルダーに配置します。

package.json内のスクリプトは、ローカルのnode_modulesフォルダーにあるバイナリを使用します。テストの実行に使われるのはまさにこれらのスクリプトで、exerciseの説明に記載されています。