プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Node.js
  • 【Node.js】基本、ライブラリ
 
 
     
  • サーバー言語  
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Node.js】基本、ライブラリ

10.10

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

Node.jsとは?

サーバーサイドのJavaScriptの実行環境のことです。非同期型のイベント駆動モデルを採用しています。Googleが開発したChromeにも搭載されているJavaScriptの実行エンジンV8を利用して、非同期で大量のアクセスに耐えうるWebアプリの開発をすることができます。最近では、サーバーサイド環境だけでなくwebpackやBabel、TypeScriptコンパイラ等のWeb開発で使用するコマンドラインツールとしての役割でも広く使われるようになっています。

非同期型のイベント駆動のJavaScriptランタイム

libuvという非同期I/OをサポートするC言語のライブラリから構成されています。

Node.jsの動作環境

  • Mac
  • Linux
  • Windows

Node.jsのメリット

大量のアクセスを同時に処理することができる点

従来のWebアプリでは、どんなにハードウェアが優れていても、ネットワーク遅延等によって、アプリの動作が重くなってしまっていました。

学習コストが低い点

JavaScriptの文法で書かれているので、フロントエンドの開発経験があれば、サーバーサイドの開発も始めることが可能で、学習コストが低いです。

昨今では。

昨今話題になっている「React」や、「AngularJS」等の開発にはNode.jsは、必要不可欠になっています。

Node.jsの採用例

  • サイバーエージェント
  • Twitter
  • PayPal
  • Uber
  • Netflix

モジュールの違いを意識すること

Node.jsを使っている場合は、以下のモジュールの違いの意識が重要です。

コアモジュール

  • Node.jsが提供するモジュール
  • os、fs、path、http

npmモジュール

  • サードパーティ製の外部ライブラリ
  • express、axiosなど

ファイルモジュール

  • 自作モジュール

ライブラリ

バックエンドのNode.jsで実装する際によく使われているライブラリをいくつかご紹介します。

bcryptjs

hash関数

パスワードの暗号化ができるライブラリです。

1
2
const bcrypt = require("bcryptjs");
const password = await bcrypt.hash("任意のパスワード", 10);

10

ソルトと呼ばれるもので前後にランダムな文字列をつけるという意味合いがあります。

compare関数

1
const valid = await bcrypt.compare("フロントから渡されたパスワード", "DBに格納されているパスワード");

パスワードの入力チェックを行います。ログイン認証などで使える関数です。

ユースケース

例えば、prismaなどで新規ユーザーを作成する場合などにbcryptjsで暗号化したパスワードを渡してあげます。

jsonwebtoken

簡単にJWTというトークンを生成することができます。

1
2
3
4
const jwt = require("jsonwebtoken");
<span class="pl-k">const</span> <span class="pl-c1">APP_SECRET</span> <span class="pl-c1">=</span> <span class="pl-s">"任意の秘密鍵の文字列(なんでも良い)"</span><span class="pl-kos">;</span>
 
const token = jwt.sign({ userId: "任意のユーザーID" }, APP_SECRET);

sign関数

署名をしてランダムな文字列を生成する関数になります。

verify関数

ランダムな文字列を逆に暗号化されていない正常な文字列にデコードします。

1
jwt.verify("トークン", "任意の秘密鍵");

APP_SECRET

署名するために必要なサーバー側だけが持っている秘密鍵です。第三者の誰かがトークンを拾ったとしてもこの秘密鍵がなければデコードすることができないのでより安全な実装になります。

ユースケース

  • バックエンドで新規でユーザー作成後。
  • ユーザーログイン時

ポイントとしては、ユーザーから何か認証があるたびにsign関数を実行してトークンを生成している点です。トークン自体はDBに保存したりして永続化はしません。

フロントエンドのユーザーは今後はその割り当てれらたトークンをもとにバックエンドと情報をやり取りします。

スポンサーリンク
  • 2022 10.10
  • miyabisan2
  • コメントを書く
  • Node.js
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2021 12.27

    【Node.js】「cluster」モジュールについて

  2. 2018 07.03

    【JavaScript】npmとは?

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Prisma】sqliteで実装

【Hasura】基本、Railsとの連携

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • API
  • AWS
  • C++
  • CSS
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Git
  • GitLab
  • GraphQL
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • WebRTC
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 業務知識
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー