LoginSignup
1
0

More than 1 year has passed since last update.

Node.jsに初めて触れてみた

Posted at

背景

今までバックエンドの言語に触れたことがなかった。(そもそも駆け出しエンジニア。笑)
自分で以前作ったアプリでは、
MBaaSのFirebaseでバックエンドの処理を代行してもらってた程度。

そんな状態ではいかんぜよ。。
ということで、Node.jsの基本を学んだので、
復習もかねて、アウトプットしてみる。

前提

  • Node.js(v16.14.2)
  • VSCode
    →適当なディレクトリでtest.jsを作成しておく

Node.jsを学ぼう

それでは、いってみよう~!

【1】簡単な計算をしてみよう

以下のように、aに10を、bに5という数値を入れて、
console.logにてa+bの結果を表示させてみる。

test.js
let a = 10;
let b = 5;
console.log(a+b);

VSCodeでターミナルを開き、node test.jsを実行。
そうすると、以下のように結果を表示してくれる。

C:\example\example> node test.js
15

重要

このような使い方では、Node.jsじゃなくてもよくね?と疑問が出る。
実は、Node.jsには凄くたくさんのライブラリがある。
このライブラリをうまく使う事で、非常に大きな効果が出る。

【2】Node.jsでライブラリを読み込んでみよう

以下の例を実行してみる

test.js
const os = require('os');
console.log(os.arch());
console.log(os.version());
console.log(os.totalmem());
console.log(os.platform());

結果はここには載せないが、
ライブラリを利用する事で、
自分のパソコンのOS情報を簡単に読み込むことができる。

【重要】

Node.jsを使いたいときは、
実行したい事がライブラリにあるかをまずはGoogle等で調べるようにする。
ただし、バージョンによって、ライブラリの利用可否が変わるとのこと。

【3】Node.jsでファイルにアクセスしてみよう

タイトルの通り、ファイルにアクセスする事もできる。

まずは、test.jsと同じ階層に、test.txtを作成し、
適当なコメントを入力・保存する。

test.txt
Happy Weekend!!

以下の例を実行してみる

test.js
const fs = require('fs');
fs.readFile('./test.txt', (err, file) => {
  if (err) {
    console.log(err);
  } else {
    console.log(file);
  }
})

【重要】

  • fsは、file systemの略。
  • readFileは、非同期で読み込む。
  • コールバック関数。

この状態で、node test.jsを実行してみる
結果

<Buffer 48 61 70 70 79 20 57 65 65 6b 65 6e 64 21 0d 0a>

おやおやおや?なんだこれは?笑
と一瞬思ったが、問題ないらしい。(後述)

以下コードで実行してみる。
→utf-8でエンコーディング

test.js
const fs = require('fs');
let text = fs.readFileSync('./test.txt', 'utf-8')
console.log(text);

test.txtファイルの中身をutf-8でエンコーディングし、
textで宣言する。
そして、console.logでtextを表示させる流れ。
結果

Happy Weekend!

表示できたー!

【4】補足:同期・非同期処理について

【3】で記載したが、fs.readFileは非同期処理である。
試しに以下のように、
console.logで処理前・処理中・処理後を追記して、実行してみる。

test.js
const fs = require('fs');
console.log('処理の前にあるコメント');
fs.readFile('./test.txt', (err, file) => {
  console.log('処理の中にあるコメント');
  if (err) {
    console.log(err);
  } else {
    console.log(file);
  }
})
console.log('処理の後にあるコメント');

結果

処理の前にあるコメント
処理の後にあるコメント
処理の中にあるコメント
<Buffer 48 61 70 70 79 20 57 65 65 6b 65 6e 64 21 0d 0a>

最初に「処理の前に~~」を読まれ、
次に「処理の中に~~」が続くと思いきや、
先に「処理の後に~~」が読まれた。

これは、fs.readFileの処理が始まった後、
「処理の中に~~」へたどり着く前に、
非同期処理で「処理の後に~~」が先に読まれた為である。

では、どうすれば、前→中→後 といった具合に
順番通りに読んでくれるのか。
例えば、以下コード。

test.js
const fs = require('fs');
console.log('処理の前にあるコメント');
fs.readFile('./test.txt', (err, file) => {
console.log('処理の中にあるコメント');
 if (err) {
// 失敗した時
 console.log(err);
 } else {
  // 成功した時
 console.log(file);
 console.log('処理の後にあるコメント');
 }
})

途中で、if文を作り、非同期処理を同期させている。
以下結果

処理の前にあるコメント
処理の中にあるコメント
<Buffer 48 61 70 70 79 20 57 65 65 6b 65 6e 64 21 0d 0a>
処理の後にあるコメント

終わりに

冒頭記載したが、初めてバックエンドに触れた。
何より嬉しかった・楽しかったのは、
どれも理解できたという点だろうか。
(もちろん、簡単なものを用意・教えて頂いたから。という背景があるのだが。笑)

やはり、
コードに触れている時が楽しいと改めて実感した。
現時点では、フロントエンドの勉強時間の方が長いのだが、
ここ最近、バックエンドに非常に興味を持ち始めた心境の変化もあってか、
非常に有意義な学びで、今後さらにスキルアップしたいと改めて思った。

1
0
0

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