Node.jsインストール手順とHelloWorld(Windows、2020年10月)

Node.jsをインストールすることで、JavaScriptをCUIで実行することができるようになります。
JavaScriptが得意なエンジニアがサーバーサイドプログラミングに関わる場合によく使われるようです。

今回は、WindowsOSのPCにインストールし、実行確認をする手順を掲載します。
バージョンが頻繁に更新されるようなので、バージョンを明記します。

■前提

・OS

Windows8.1

・実施日

2020年10月04日

・Node.jsのバージョン

12.18.4

■インストール手順

1.Node.jsの公式サイトにアクセスする。

https://nodejs.org/ja/

2.「12.18.4 LTS」をクリックする。

3.「node-v12.18.4-x64.msi」を実行する。

4.Node.jsのインストール画面が出てくるので、デフォルト設定でインストールする。

※「Install」押下後、インストールするか尋ねるポップアップが出たら「はい」を押下

5.インストールが完了すると下記の画面が出てくるので、Finishを押下。

■Node.js起動手順

1.「Node.js command prompt」を探して起動。

※Windows8.1の場合、「スタート」→左下の「↓」ボタン押下→「アプリ」から起動可能

2.プロンプト画面が起動するので、下記コマンドを発行(入力→Enter押下)。

インストールしたバージョン(今回は「v12.18.4」)が出力されればOK。

■実行確認(Hello World)手順

1.「Node.js command prompt」を起動する。

2.下記コマンドを発行し、任意のフォルダ(今回は「C:\tmp\」)に移動する。

3.下記コマンドを発行し、「hello.js」という名前のファイルを作成する。

4.任意のフォルダに作成した「hello.js」を、エクスプローラ上から開く。

5.「hello.js」に下記(プロンプト上に文字列を出力する命令)を入力して保存。

6.下記コマンドで「hello.js」を実行、「Hello world!」と出力されればOK。


いかがでしたでしょうか?

Web系でもない限りはNode.jsを使うことはあまりないと思いますが、今風のWebサービス(例えばSlack)の手順をWebで探すとNode.jsを使うことが前提の手順が出てきたりします。
できる作業の幅を広げるという意味で、Node.jsの概要、インストール手順、実行手順といったものは知っておいて損はないと思います。

JavaScript:動的型付けとは

JavaやC#に慣れている人だとJavaScriptの動的型付けの概念に戸惑うと思うので、この記事では動的型付けについて簡単にまとめてみます。


JavaScriptには、下記の7つのプリミティブ型(ECMAScript 2015の場合)とObject型が存在します。

説明
Boolean真偽値を示す。true または false
nullnull値を示す。
undefined未定義の値を示す。
Number浮動小数点型を示す。例1:100 例2:123.45
BigInt整数型を示す。例:123n(これで整数の123の意味となる)
String文字列型を示す。例:”Hoge”
Symbol名前空間の衝突を防ぐ特殊な型。言語仕様の拡張等で用いられる。

JavaScriptの場合、下記のように変数を定義します。
型名を指定するのではなく、”let”というキーワードで変数であることを示します。

※補足

“let”の代わりに”var”や”const”で変数を定義することもできます。
“var”で定義した変数は、定義したブロックの外でも参照可能になります。
“const”で定義した変数は定数となり、上書きができなくなります。


どのような型でも”let”で変数定義できる、という話であれば、JavaやC#の型推論と同じような話になります。
しかし、JavaScriptの動的型付けは、型推論とは異なる点もあります。

JavaScriptでは、一度変数を定義した後に、定義した時とは異なる型の値を代入することが許されます。

例えば、下記のコードでは、Number型の変数を定義した後にString型の値”Hello World!”を代入していますが、異常終了することなくコンソール上に”Hello World!”と出力されます。

なお、JavaやC#では一度変数の型を定義した後に異なる型の値を代入することは許されておらず、コンパイルエラーとなります。
この挙動の違いを理解していないと、バグ調査する際の絞り込みが難しくなることがあるので、注意が必要です。


いかがでしたでしょうか?

JavaやC#の経験者がJavaScriptを触ると動的型付けの概念に戸惑うと思うので、記事にしてみました。
他にも、整数型の扱いについても戸惑うのではないかと思っています。これは別の機会に記事にしたいと思います。

ちなみに、この記事でちょうど100記事目になりました!
今まで見て下さった方々、ありがとうございます。
これからもブログを続けていきますので、よろしくお願いします。

JavaScriptでHelloWorld(ブラウザ上に文字表示)

JavaScriptはCUIでも実行できますが、GUIで使うケースの方が多いので、GUIでHelloWorldを書いてみました。
JavaScriptのHelloWorldはログに出力したりポップアップ表示したりするものが多いですが、ブラウザ上に出力した方がJavaScriptっぽい気がするので、ブラウザ上に表示するサンプルを提示します。

【サンプルコード1】

・Sample.html

【結果1】

・Sample.htmlをChromeで開いた結果


サンプルコード1のようにJavaScriptはHTML内に書くことができますが、サンプルコード2のようにJavaScriptを別ファイルにするケースの方が多いと思いますので、別ファイルにするサンプルも提示します。

【サンプルコード2】

・Sample.html

・Sample.js

【結果2】

結果1と同じため割愛


いかがでしたでしょうか。

JavaScriptは広く使われている言語であり、面談時点でJavaScriptのスキルを求められない現場でもJavaScriptを使うことがあります。
他言語に精通している技術者であっても、JavaScriptには慣れておいた方が無難だと思います。

テーブル結合の失敗パターン

RDBMSでのSQLによる問い合わせにおいて、複数のテーブルを結合するパターンは比較的複雑な操作になります。
そのため、ミスも起こりやすいです。

今回は、注意喚起のため、私が実務で出くわしたミスを3つ挙げます。

1.外部結合の結合条件をwhere句に書いてしまい内部結合になってしまう

2.結合条件指定不足で意図せず直積結合してしまう

3.結合条件となる値のセットを誤り結合できなくなってしまう


1.外部結合の結合条件をwhere句に書いてしまい内部結合になってしまう

例えば、以下のようなテーブルがあるとします。

・ログイン日時管理テーブル

・ユーザ名履歴テーブル

ここで、

・ユーザがログインした時のユーザ名を知りたい

・ただし、ユーザがログインした時、ユーザ名が存在しない場合がある

(この場合、ユーザ名が存在していない旨を知りたい)

 

という要件があった場合を考えます。

正しいselect文と問い合わせ結果は以下です。

もし、ここで、誤って結合条件の一部をwhere句に記述すると、下記のようになります。
左側外部結合なのに、左側のテーブルにしか存在しないレコードが抽出されません。

誤ったSQL文については下記①②のような動きになるため、このような結果になります。

① on句に指定された条件で左側外部結合を行う

② ①の結果に対して、where句とselect句が評価される。

(where句で条件指定した場合、内部結合と同じようになる)


2.結合条件指定不足で意図せず直積結合してしまう

例えば、以下のようなテーブルがあるとします。

・社員マスタテーブル

・保有資格管理テーブル

ここで、会社コードが”001″の会社の全社員が保有している資格を取得したいとします。

正しいselect文と問い合わせ結果は以下です。

もし、ここで誤って結合条件に社員コードを含めないと、以下のように実際に保有している資格数よりも多く出力されてしまいます。

なぜこうなるのかは、select文で全カラム指定すればよくわかると思います。
社員マスタテーブル.社員コードと保有資格管理テーブル.社員コードが一致しないレコードについても結合してしまうため、意図せずに直積結合が起こり、実際に保有している資格数よりも多く出力されてしまいます。


3.結合条件となる値のセットを誤り結合できなくなってしまう

例えば、以下のようなテーブルが存在するとします。

・利用料金テーブル

・利用料金明細テーブル

結合する時に指定するキーは利用番号になるため、以下のように利用番号には同一の値を使用する必要があります。

しかし、利用番号がプログラム中で生成する連番であり、かつプログラム中で利用料金テーブルと利用料金明細テーブルで別々に連番を付与していた場合、利用番号で結びつかなくなってしまいます。

こうなると、利用料金テーブルと利用料金明細テーブルを結合するという使い方ができなくなり、後で困ることになります。
更に、既にサービスイン後であり過去データの補正が必要になった場合、その補正も困難になる場合があります。


いかがでしたでしょうか。

今回は失敗パターンの説明ということで、テーブル結合の失敗パターンを取り上げました。
失敗パターンは実務をこなす中で暗黙知的に知ることが多いと思いますので、文章に起こして共有できる形にしていきたいと思います。