1
0

More than 1 year has passed since last update.

Webの勉強はじめてみた その19 ~Node.js編 導入~

Posted at

N予備校「プログラミング入門Webアプリ」を受講しています。
今回は第3章2,3節です。

Node.js

JavaScript でプログラミングすることのできる、サーバーサイド向けのプラットフォーム

nvmのインストール

Node.jsのバージョンを管理するツール

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash

-o- : このオプション、調べ方が悪いのかいまいち理解できてないです。
-o は指定したファイル名に保存というのはわかるんですが。

source ~/.bashrc

再起動せずに.bashrcファイルを読み込ませる

Node.jsのインストール

nvm install v10.14.2
nvm use v10.14.2

node --version : バージョン確認
node : コンソールが入力を受け付ける状態になる。

REPL(レプル) : Read-Eval-Print Loop(リード・イーバル・プリント・ループ)の略称で、入力したコードをその場で実行して、結果を表示するツール

終了はctrl + C

練習

その1 入力された値まで加算

'use strict';
const number = process.argv[2] || 0;
let sum = 0;
for(let i = 1; i <= number; i++){
    sum = sum + i;
} 
console.log(sum);

選択的代入
const number = process.argv[2] || 0;
無効な値が入った場合(falseの場合)に0が入る。
process.argv
コマンドラインの引数が入った配列。
0 番には node コマンドのファイルのパスが入り、
1 番には実行しているプログラムのファイルのパスが入る

その2 フィボナッチ数列

'use strict';
function fib(n){
    if(n === 0){
        return 0;
    }else if(n === 1){
        return 1;
    }
    return fib(n - 1) + fib(n - 2);
}
//40まで出力
const length = 40;
for(let i = 0; i <= length; i++){
    console.log(fib(i));
}

time node app.js
実際の処理にかかった時間がわかる。
node --prof app.js
処理に時間がかかっている様子やどれ位メモリを使っているのか
node --prof-process xxxx.log
プロファイル結果を表示

アルゴリズムの修正

アルゴリズムとは、問題を解くための手順を定式化した形で表現したもの。 回を重ねると後に倍々に計算回数が増えるような処理の増え方を指数(しすう)オーダーという。

'use strict';
const memo = new Map();
memo.set(0, 0);
memo.set(1, 1);

function fib(n){
    if(memo.has(n)){
        return memo.get(n);
    }
    const value = fib(n - 1) + fib(n - 2);
    memo.set(n, value);
    return value;
}
//40まで出力
const length = 40;
for(let i = 0; i <= length; i++){
    console.log(fib(i));
}

Map 連想配列として使えるオブジェクト
一度計算した結果を保存しておく方法を「メモ化」という

まとめ

重い処理が速くなるとちょっと爽快。
Node.jsは初めてなのといきなり数学の話で少し面食らいましたが、できることが増えていくと楽しいです。

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0