メインコンテンツまでスキップ

3. Runtime

JavaScriptランタイム環境は、JavaScriptエンジンを内蔵し、追加のAPIやツールを提供することで、サーバーサイドやデスクトップアプリケーション、モバイルアプリケーションの開発を可能にします。ここでは、代表的なランタイム環境であるNode.js、Deno、Bunについて説明します。

Node.js

特徴

  • 開発元:Node.js Foundation
  • 主な利用例:サーバーサイド開発、スクリプトの実行、CLIツールの作成
  • 主な特徴
    • 非同期I/Oをサポートするためのイベント駆動アーキテクチャ
    • 豊富なモジュールエコシステム(npm)
    • 高パフォーマンスなV8エンジンを使用

インストールとセットアップ

  1. Node.jsのインストールNode.jsの公式サイトから最新のLTSバージョンをダウンロードしてインストールします。

  2. インストール確認

    node -v
    npm -v

使用例

// server.js
const http = require('http');

const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, Node.js!');
});

server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});

Deno

特徴

  • 開発元:Deno Land Inc.
  • 主な利用例:サーバーサイド開発、スクリプトの実行
  • 主な特徴
    • セキュアなデフォルト設定(ファイル、ネットワーク、環境変数へのアクセス制限)
    • モダンな標準ライブラリ
    • TypeScriptのサポートが組み込まれている

インストールとセットアップ

  1. Denoのインストール

    curl -fsSL https://deno.land/x/install/install.sh | sh
  2. インストール確認

    deno --version

使用例

// server.ts
import { serve } from "https://deno.land/std@0.114.0/http/server.ts";

const server = serve({ port: 3000 });
console.log("http://localhost:3000/");

for await (const req of server) {
req.respond({ body: "Hello, Deno!" });
}

Bun

特徴

  • 開発元:Jarred Sumner
  • 主な利用例:高速なJavaScript/TypeScriptの実行、バンドリング、タスクリンナー
  • 主な特徴
    • 高速なパフォーマンス(V8エンジンベース)
    • 組み込みのバンドラー
    • Web APIのネイティブサポート

インストールとセットアップ

  1. Bunのインストール

    curl -fsSL https://bun.sh/install | bash
  2. インストール確認

    bun -v

使用例

// server.js
const { serve } = require("bun");

const server = serve({
port: 3000,
fetch(req) {
return new Response("Hello, Bun!");
},
});

console.log("Server running at http://localhost:3000/");

各ランタイム環境の比較

ランタイム環境開発元主な利用例特徴
Node.jsNode.js Foundationサーバーサイド開発、CLIツール非同期I/O、豊富なモジュールエコシステム(npm)、V8エンジン
DenoDeno Land Inc.サーバーサイド開発、スクリプトセキュアなデフォルト設定、モダンな標準ライブラリ、TypeScript
BunJarred Sumner高速なJS/TS実行、バンドリング高速パフォーマンス、組み込みバンドラー、Web APIサポート

各ランタイム環境には、それぞれの強みと特徴があります。プロジェクトの要件や使用するプラットフォームに応じて、最適なランタイム環境を選択することが重要です。