背景
今までバックエンドの言語に触れたことがなかった。(そもそも駆け出しエンジニア。笑)
自分で以前作ったアプリでは、
MBaaSのFirebaseでバックエンドの処理を代行してもらってた程度。
そんな状態ではいかんぜよ。。
ということで、Node.jsの基本を学んだので、
復習もかねて、アウトプットしてみる。
前提
- Node.js(v16.14.2)
- VSCode
→適当なディレクトリでtest.jsを作成しておく
Node.jsを学ぼう
それでは、いってみよう~!
【1】簡単な計算をしてみよう
以下のように、aに10を、bに5という数値を入れて、
console.logにてa+bの結果を表示させてみる。
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でライブラリを読み込んでみよう
以下の例を実行してみる
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を作成し、
適当なコメントを入力・保存する。
Happy Weekend!!
以下の例を実行してみる
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でエンコーディング
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で処理前・処理中・処理後を追記して、実行してみる。
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
の処理が始まった後、
「処理の中に~~」へたどり着く前に、
非同期処理で「処理の後に~~」が先に読まれた為である。
では、どうすれば、前→中→後 といった具合に
順番通りに読んでくれるのか。
例えば、以下コード。
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>
処理の後にあるコメント
終わりに
冒頭記載したが、初めてバックエンドに触れた。
何より嬉しかった・楽しかったのは、
どれも理解できたという点だろうか。
(もちろん、簡単なものを用意・教えて頂いたから。という背景があるのだが。笑)
やはり、
コードに触れている時が楽しいと改めて実感した。
現時点では、フロントエンドの勉強時間の方が長いのだが、
ここ最近、バックエンドに非常に興味を持ち始めた心境の変化もあってか、
非常に有意義な学びで、今後さらにスキルアップしたいと改めて思った。