見出し画像

ブラウザ以外への指示をするプログラミングの始まり 〜Node.js ことはじめ〜

プログラム自学案内の18回目です。前回まででHTML, CSS, JavaScript の案内が終わりましたので、今回からNode.js を案内します。前回までの記事はこちらです。

イントロ:広がる世界

これまで案内した技術、 HTML, CSS, JavaScript は、すべて、Webブラウザへ指示をするための技術でした。

ところが、今回紹介する Node.jsを使うと、「Webブラウザ以外のモノへの指示」が出来るようになります。

これまでWebブラウザ相手にプログラミングで会話をしていたところ、その話し相手が、ぐんと無限に広がるわけですね。しかも、命令の構文は、すでに学んだJavaScript言語なのです。

Node.jsとは

Node.jshttps://nodejs.org/ )は、ブラウザ無しで JavaScriptのコードを動かせるように、Webブラウザから「JavaScriptのコードを理解、実行する機能(JavaScriptエンジン)」を取り出したものです。これを、JavaScriptの実行環境、と言います。

Node.jsをインストールする

とにかく、Node.jsをさわってみましょう。そのためには、Node.jsをインストールしてください。

第2回の記事でchocolateyをインストールしている方は、コマンドプロンプトを管理者として起動し、以下のコマンドを実行すると、インストールできます。

choco install -y nodejs

第2回の記事でhomebrewをインストールしている方は、ターミナルを起動し、このコマンドでインストールできます。

brew install node

それ以外の方は、Node.jsのサイト(https://nodejs.org/ja/download/) や、ネットでインストールの方法を調べて、インストールしてください。

どの方法でも、インストールされたことを確認するためには、いちどコマンドプロンプトやターミナルを再起動したあと、次のコマンドを打ってください。

node -v

nodeのバージョン番号が表示されたらOKです。

Hello Node.js

まずは以下のコードをコピペして"script.js" を作ります。 これまでの記事と異なり、HTMLファイルが要らないというのがポイントです。

script.js

const [node, script, ...names] = process.argv
names.forEach(flatter);

if (names.length == 0){
    say('"node script.js TARO HANAKO" なんて感じに名前を入れて');
}

function flatter(name) {
    const praise_words = ['素敵', 'スマート', 'オシャレ'];
    let comment = '';

    for (word of praise_words) {
        comment = comment + `${name}さんは${word}ですね\n`;
    }

    praise_words.forEach(word => {
        comment = comment + `${name}さんは本当に${word}ですね\n`;
    });

    for (let i = 0; i < praise_words.length; i++) {
        comment = comment + `${name}さんはつくづく${praise_words[i]}ですね\n`;
    }

    say(comment);
}

function say(comment) {
    console.log(comment);
}

前々回、16回目の記事で紹介したコードとほとんど変わりません。 違いを見比べてみてください。ポイントは、Webブラウザとのやり取りではないため、今回のスクリプトではDOMが使われていないという点。そして、目新しいフレーズは1行目の "process.argv" くらいです。

スクリプトを動かす

スクリプトを動かすのに、ブラウザは不要です。 代わりに、コマンドプロンプトやターミナルでこう入力します。

node script.js

すると、

"node script.js TARO HANAKO" なんて感じに名前を入れて

と表示されるはずです(「Error : Cannot find module」というエラーメッセージが出た場合の対処方法は後述します)。
さて、 script.js の内容から想像がつくと思いますが、このプログラムは、つづけて名前を入れると、その名前をおだてます。試してみてください。

node script.js JIN SUGA J-HOPE RM JIMIN V JUNGKOOK
node script.js RAN SUE MIKI
node script.js CHOSUKE KOJI BOO CHA KEN

14回目の記事の課題を応用すれば、同じ要領で、ブラウザなしで、BMIの計算もさせることが出来そうですね。ぜひ、試してみてください。

Error : Cannot find module の場合

node:internal/modules/cjs/loader.js:775
  throw err;
  ^

Error: Cannot find module 'C:\xxxxxx\script.js'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:772:15)
    at Function.Module._load (internal/modules/cjs/loader.js:677:27)
    at Function.Module.runMain (internal/modules/cjs/loader.js:999:10)
    at internal/main/run_main_module.js:17:11 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

こんなのが出たかもしれません。エラーメッセージはどうも、目当てのscript.jsが見つからないと言っています。

最も手っ取り早いのは、script.jsの絶対パスと呼ばれるものを指定することです。絶対パスは、Windowsの場合 "C:\xxxx\xxxxx\script.js" という感じの、Macの場合は"/xxxx/xxxxx/script.js" という感じの文字列になります。「ファイル 絶対パス 調べる Windows」などのキーワードで検索して、作ったscript.jsの絶対パスを取得してください。

絶対パスが分かったら、このように絶対パスを指定することで、スクリプトを動かせます。

node "C:\xxxx\xxxxx\script.js" 
node "C:\xxxx\xxxxx\script.js" KOJI BOO CHA

世界を広げるためには

記事冒頭では、このように大風呂敷を広げました。

これまでWebブラウザ相手にプログラミングで会話をしていたところ、その話し相手が、ぐんと無限に広がるわけですね。

ところが、今回の記事のプログラムは、動きとしてはむしろ、いたって地味。できたことは、ターミナルでの文字のやり取りでしかありませんでした。

では、もっと世界を広げ、派手なことをするにはどうすればいいのでしょう?  じつは、他の人が作ったプログラムを召喚する方法を学べば、簡単に世界を広げられるのです。それが、このあとの記事で紹介予定の、Node.jsがもつ二つの呪文、"npm" と "require" です。

まとめと次回予告

今回の記事ではNode.jsを使ってJavaScriptのプログラムを走らせ、Webブラウザの世界から一歩外に飛びだしました。

次回の記事では、他人が作ったプログラムの召喚術を紹介、とさっそくいきたいところですが、そのまえにファイルシステムとターミナル、コマンドプロンプトの基礎を紹介します。すこしつまらない話ではあるものの、これを覚えるのは、npmを使うために、避けて通れない試練なのです。

npmはそのあとで、取り上げます。

#コラム  #プログラミング  #初心者  #独学  #案内  #JavaScript  #Node.js


この記事が気に入ったらサポートをしてみませんか?