プログラミング基本用語。ライブラリとフレームワークの違い
ソースコード、ランタイム、パッケージ、ライブラリ、フレームワーク、ビルド、デプロイの違いを整理します。
プログラミングの記事では、意味が似ている言葉が続けて出てきます。
このページは、学校や独学でプログラミングを始めた人のための入門記事です。「何を指す言葉か」「いつ使うものか」の順で整理します。
まずは3つだけ覚えよう
- ソースコードは、人が書いたプログラムの文章です。
- ライブラリやパッケージを使うと、便利な機能を一から作らずに済みます。
- ビルドは公開できる形へまとめる作業、デプロイは公開場所へ置く作業です。
ソースコードとプログラミング言語
ソースコードは、人が読んだり編集したりできる形で書かれたプログラムです。
その書き方のルールがプログラミング言語です。Python、JavaScript、C++などがあり、同じ処理でも言語によって書き方が変わります。
たとえば、画面に「こんにちは」と表示するだけでも、使う言語によって命令の書き方が違います。
ライブラリとフレームワーク
どちらも、よく使う機能を一から作らずに利用するための仕組みです。
| 用語 | 主導する側 | イメージ |
|---|---|---|
| ライブラリ | 自分のコード | 必要な道具を呼び出す |
| フレームワーク | フレームワーク | 用意された流れにコードを当てはめる |
ライブラリでは、自分が必要な機能を選んで呼び出します。フレームワークでは、ページ構成や処理の流れがある程度決められており、その中に自分のコードを書きます。
道具箱から必要な工具を取り出すのがライブラリ、決められた設計図に沿って組み立てるのがフレームワーク、と考えると違いをつかみやすくなります。
境界がはっきりしない製品もあります。名前より、プロジェクト全体の進め方を決めるかどうかを見ると判断しやすくなります。
ランタイム、コンパイラ、インタプリタ
書いただけのコードは、そのままでは動きません。コードを読み取り、実際に動かすための仕組みをランタイムと呼びます。Node.jsは、ブラウザの外でJavaScriptを動かすランタイムの一例です。
| 用語 | 主な役割 |
|---|---|
| コンパイラ | コードを、コンピューターが実行しやすい形へまとめて変換する |
| インタプリタ | コードを読み進めながら、その場で実行する |
実際のソフトには両方の考え方を組み合わせたものもあります。最初は「先にまとめて変換する」と「読みながら動かす」の違いが分かれば十分です。
パッケージと依存関係
パッケージは、ほかの人が作った便利な機能を、自分のプログラムへ追加しやすい形にまとめたものです。
依存関係は、自分のプログラムがそのパッケージを必要としている状態です。料理にたとえると、パッケージが材料で、依存関係は「この料理にはこの材料が必要」という関係です。
パッケージを追加すると便利になりますが、数が増えるほど更新や安全性の確認も必要になります。
バグとエラー
バグは、意図した動作にならない原因や不具合です。エラーは、処理を続けられないときに発生する状態や、その通知を指します。
エラー表示がなくても、計算結果が間違っていればバグです。反対に、入力不足を正しく検知してエラーを表示する動作は、必ずしもバグではありません。
ビルドとデプロイ
| 用語 | 何をするか |
|---|---|
| ビルド | ソースコードを公開・実行できる形へ変換する |
| デプロイ | 完成したファイルを公開先へ配置する |
このサイトでは、Astroが記事やページを公開用ファイルへ変換します。これがビルドです。そのファイルをCloudflare Pagesなどへ置き、読者が見られる状態にするのがデプロイです。
材料を完成品へまとめるのがビルド、完成品をお店に並べるのがデプロイ、と考えると分かりやすくなります。
一連の流れは、ソースコードを書く → パッケージを使う → ランタイムで確認する → ビルドする → デプロイすると考えると整理できます。
関連するGitやリポジトリの言葉は、Git・GitHub用語入門で詳しく説明します。
まとめ
- ライブラリは必要な機能を呼び出し、フレームワークは用意された流れに沿って使います。
- ランタイムは、書いたコードを実際に動かす仕組みです。
- ビルドの後にデプロイすると、作ったものをほかの人へ公開できます。
参考資料
以下は説明の確認に使った資料です。最初から読み込む必要はありません。