GNUとは

2026/06/30 13:10
2026/06/30 13:20
8 views

GNUの概要

1983年にリチャード・ストールマン氏によって開始された,完全に自由なOSを構築するためのプロジェクトです.私たちが普段Linuxと呼んで利用しているシステムの基本コマンドや開発ツールの多くは,実はこのGNUプロジェクトによって作られたものです.

ちなみにGNUという名前は,GNU's Not Unix(GNUはUnixではない)という文章の頭文字を取ったものです.当時普及していた商用OSであるUnixをモデルにしつつも,中身は完全に独自に書き直したフリーなシステムである,という意味が込められた再帰的なネーミングになっています.


歴史的背景

1980年代に入ると,企業がソフトウェアの権利を独占し,ソースコードを秘密にする(クローズドソース化)動きが強まりました.それまでプログラマー同士が自由にコードを共有し,お互いに改良し合っていた文化が急速に失われていったのです.

ストールマン氏はこの状況に強く反発しました.「ユーザーがソフトウェアを自由に実行し,その仕組みを調べ,修正し,再び周りの人へと配布できる権利を取り戻すべきだ」と考え,企業の支配を受けない自由なOSをゼロから構築するためにプロジェクトを立ち上げました.

この思想はのちに「フリーソフトウェア」として定式化され,以下の「4つの自由」として定義されています.

  • 目的を問わず,プログラムを実行する自由
  • プログラムの仕組みを研究し,必要に応じて改造する自由(ソースコードへのアクセスが前提)
  • 困っている隣人を助けるために,コピーを再配布する自由
  • プログラムを改良し,コミュニティ全体が恩恵を受けられるように改良版を公表する自由

主要なツール:開発環境

GNUプロジェクトは,OSに必要な周辺ソフトウェアを非常に高いクオリティで次々と独自開発していきました.これらは現代の開発現場でも標準的に使われています.

GCC(GNU Compiler Collection)

C言語やC++などで書かれたプログラムを,コンピュータが実行できる形式に変換する強力なコンパイラシステムです.

GNU Make

ファイルの依存関係をまとめた「Makefile」に従い,変更のあった部品だけを効率よく自動でコンパイルしてくれるビルド自動化ツールです.

GNU Binutils

プログラムのビルドや解析に必要なツールのセットです.複数の部品を1つに結合するリンカ(ld)やアセンブラ(as)などが含まれます.

GNU Debugger(GDB)

実行中のプログラムを途中で一時停止させたり,メモリや変数の中身をリアルタイムに覗いたりして,バグを追跡・修正するデバッグツールです.

GNU Emacs

極めて拡張性の高いテキストエディタです.設定次第でメール,シェル,ファイラーなど,あらゆる環境をエディタ内で完結させることができます.


主要なツール:コアシステム

GNU Coreutils

cp(コピー),ls(一覧表示),grep(文字列検索)など,ターミナル操作において必要不可欠な最基本コマンド群の詰め合わせです.

Bash(Bourne Again Shell)

コマンドを入力してOSとやり取りをする,多くのLinuxディストリビューションで標準採用されているシェル環境です.

GNU C Library(glibc)

プログラムがカーネルに対して画面出力やファイルの開閉といった要求(システムコール)を送るための,システムの最も土台となる重要なライブラリです.

GNU Findutils

ファイルやディレクトリを検索するfindや,検索結果に対して効率的にコマンドを実行するxargsなど,データ処理や自動化スクリプトで多用される基本ツールのセットです.

GNU Tar

複数のファイルやディレクトリを1つのアーカイブ(.tar)にまとめたり,それを展開したりするデータ管理ツールです.


現代のオープンソースを支える「GPL」

GNUプロジェクトの最大の功績の一つは,ツール群の開発だけでなく,GPL(GNU General Public License)という画期的なソフトウェアライセンス(利用許諾)を生み出したことです.

ストールマン氏は,自分が作った自由なソフトウェアを企業が勝手に取り込み,独自のクローズドソース(非自由)な製品として再配布されることを防ぎたいと考えました.そこで考案されたのが「コピーレフト」という概念です.

GPLライセンスで公開されたソフトウェアは,誰でも自由に変更や再配布ができますが,「それを使って新しく作ったソフトウェアも,同じようにGPLライセンス(ソースコードを公開する自由な状態)で公開しなければならない」という強力なルールを持っています.この仕組みがあったからこそ,Linuxをはじめとする多くのオープンソースソフトウェアは企業に独占されることなく,健全に成長を続けることができました.


Linuxカーネルとの統合

1990年代初頭の時点で,GNUプロジェクトは上記の優秀なツール群をすべて完成させていました.しかし,OSの心臓部としてハードウェアを直接制御するカーネルの開発(GNU Hurd)だけが難航し,最後のピースが足りない状態が続いていました.

そんな中,1991年にリーナス・トーバルズ氏という学生が,趣味で開発したLinuxカーネルをオープンソースとして公開します.リーナス氏はのちに,このカーネルのライセンスとして先述の「GNU GPL」を採用しました.

これにより,周辺ツールはあるが心臓部がないGNUと,心臓部はあるが周辺ツールがないLinuxがインターネット上で結びつき,ついに無料で完全に自由なOSが完成しました.この歴史的な経緯があるため,OS全体の正確な名称はGNU/Linuxと呼ぶべきだ,という主張も広く知られています.