実行環境
書いたコードを実際に動かすプログラム
言語と実際の機械の間に立つ。同じ言語でも実行環境が違えば、動く場所と使える機能が変わる。
いつこの種別を選ぶか
言語を選んだ時点でほぼ決まる。JavaScript だけは、ブラウザ・Node.js・Deno・Bun・エッジ環境と選択肢があり、動かす場所に合わせて選ぶ
他の種別との関係
| 種別 | どういう関係か |
|---|---|
| 言語 | 言語が「書き方」、実行環境が「動かし方」。Python は CPython、JavaScript はブラウザや Node.js が動かす |
| フレームワーク | フレームワークは特定の実行環境を前提にしていることが多い。Next.js は Node.js、Hono は複数の実行環境で動く |
| マネージドサービス | サーバーレスの実行基盤は、実行環境を事業者が用意する。自分で選べる範囲は基盤によって決まる |
| 言語 (から見ると) | 言語は書き方の決まりで、それを実際に動かすのが実行環境。多くの言語は標準の実行環境とセットで配布されるが、JavaScript のように実行環境を別に選ぶ言語もある |
| マネージドサービス (から見ると) | サーバーレスの基盤では、実行環境の種類とバージョンを事業者が決める |
この種別を理解する
「言語」と「実行環境」を分けて考える理由。 JavaScript はもともとブラウザの中でしか動かなかった。Node.js という実行環境が生まれて、同じ言語がサーバーやコマンドラインでも動くようになった。つまり言語は同じでも、実行環境が変わると「動く場所」「使える機能(ファイル操作、ネットワーク)」「速度」が変わる。
多くの言語では意識しなくてよい。 Python をインストールすると CPython という実行環境が一緒に入る。Go や Rust は実行環境ごと1つのファイルに固めて配布する。実行環境を別に選ぶ必要があるのは、実質 JavaScript(TypeScript)だけである。
実行環境の制約は「動く場所」に現れる。 Node.js の標準機能がエッジ環境(Cloudflare Workers)では一部使えない、ブラウザにはファイルシステムがない、といった違いは、フレームワークやサーバーレス基盤を選ぶときに効いてくる。
次に読む種別。 実行環境の上に載る「フレームワーク」、実行環境を事業者が用意する「マネージドサービス」。
この種別のツール(1件)
分野ごとに並べている。「主要制約」は各ツールで最も先に当たる限界。
言語・実行環境 プログラムを書くための「言葉」と、それを動かす仕組み
| ツール | 学習 | 料金 | 成熟 | 主要制約 | 検証 |
|---|---|---|---|---|---|
| Node.js JavaScriptをブラウザの外(サーバー・CLI)で動かす実行環境 | 低 | 無料 | 安定 | JavaScript の実行スレッド: JavaScript のコードは1本のイベントループで実行され、ファイル I/O などの重い処理はワーカープールに委ねられる |