Ubuntu日和
【第1回】Ubuntuのススメ
2022年4月23日 06:15
先月公開されたUbuntuの記事の反応がとても良かったとのことで、今回から隔週でUbuntu Japanese TeamのメンバーがPC Watchの読者に向けて、世界的に人気なLinuxディストリビューションの1つ「Ubuntu」の使い方を紹介することになった。ぜひご贔屓のほどを。
PC Watchの読者と言えば、常日頃からアンテナを高くし、趣味と実益を兼ねて多種多様なPCやガジェットを手に入れていると聞いている。しかしながらPCというのは場所を取るものだ。いくら百戦錬磨なPC Watchの読者とは言え、時空をハックできる読者はいるとしてもごくわずかだろう。
そこで本連載では、部屋に累積されるPC等に向けられる家族の目や自分自身の罪悪感を少しでも和らげられるように、「Ubuntu」という普段のWindowsとはちょっと変わった画面を持ったOSの使い方を提案しよう。とりあえずディスプレイの雰囲気が違えば、少しは納得させられるはず。ぜひ本連載を読んで、「Linuxの調査・勉強のための新しいPCが必要」という言い訳として活用してほしい。
初回はまず基本的な話として、まずはUbuntuとはなんぞや、Linuxとはなんぞや、Windowsと何が違うのか、という座学的なところから始めよう。
Linuxディストリビューション
前回の記事でも説明したようにUbuntuは「Linuxディストリビューション」の1つだ。Linuxディストリビューションとは、厳密な定義があるわけではないが「LinuxカーネルをOSとして採用し、何らかのパッケージ管理システムかそれに準ずるものを用い、ユーザーランドのプログラムを提供している環境一式」と解釈されることが多い。この解釈において、次の3つの概念が登場する。
- Linuxカーネル
- パッケージ管理システム
- ユーザーランド
まず「Linuxカーネル」は、ハードウェアとソフトウェアの間を仲立ちする「抽象化レイヤー」とも言えるソフトウェアとなる。CPUを制御し、メモリを管理し、GPU経由でディスプレイの描画を行ない、ストレージのコントローラーを操作し、キーボードやマウスからの入力イベントをハンドリングし、重要なプロセスを突然殺し、どうしようもなくなったらパニックする。そんな愛しい存在だ。一般的に新しいデバイスは、まずカーネルが対応しないと認識しないことが多い。よってPC上でLinuxを動かす上でカーネルは非常に重要なコンポーネントとなる。単に「Linux」と言った場合、カーネルそのものを示す場合と、Linuxディストリビューションを指す場合の両方が存在する。
「パッケージ管理システム」はその名の通り「パッケージの管理をするシステム」だ。Linuxディストリビューションは、歴史的経緯からその大半が「フリーソフトウェア(自由ソフトウェア)」によって構築されている。フリーソフトウェアはソースコードを取得、変更し、再配布できる自由がライセンスによって保証されたソフトウェアであるため、ユーザーが自由にソフトウェアをビルドし、システムに追加できる。
しかしながら、ソフトウェアが複雑になるにつれ、あるソフトウェアを使うためには、別のソフトウェアが必要になるなど、「依存関係」が発生してくる。そんな依存関係を解決し、必要なパッケージを必要に応じて追加でインストールしてくれるのがパッケージ管理システムとなる。
最後に出てきたのが「ユーザーランド」。これはシステムにおいて、カーネル以外の部分を示す言葉となる。Linuxカーネルはセキュリティ上の要件から、メモリー空間をカーネル空間とユーザー空間に分離している。このユーザー空間上で動くプログラムやその空間を「ユーザーランド」と呼ぶ。広大なカーネルの海に浮かぶ陸地のような存在だ。Linuxカーネルはユーザーランドのプログラムなしには動作しない。もちろんカーネルによってシステムは起動する。起動はするが、その後どんなプログラムも実行できなければパニックして固まるようになっている。よってユーザーランドプログラムも必須の存在と言える。
程度の差こそあれ、Linuxディストリビューションと呼ばれるものは、おおよそこの3つの概念を備えている。また、Linuxディストリビューション間の違いは、極端な話をするとこの3つの概念の違いにほかならない。「どんなバージョン・設定のカーネルを使っているか」、「どんなパッケージ管理システムを使っているか」、「どんなユーザーランドプログラムで構成されているか」、そういう形に区別される。ただしカーネルやユーザーランドは、フリーソフトウェアである限り、比較的簡単に自分でカスタマイズ可能だ。よって「パッケージ管理システム」が重要なポイントになる。
Ubuntuでは「Debianパッケージ(debファイル)」というパッケージフォーマットを採用し、「APT」というパッケージ管理ツールを採用している。これはUbuntuが「Debian」という有名なLinuxディストリビューションから派生したことによる。このため「Debian/Ubuntu系」とひとくくりにして言及されることも多い。ほかにもRPM/YUM/DNFを採用しているRHELやCentOS、RPM/ZYppからなるopenSUSE、pacmanを使うArchなどなど、現在ではLinuxディストリビューションにおいてパッケージ管理システムは重要な特徴となっている。
ちなみに現在も開発が続いているLinuxディストリビューションのうち、最古の部類に入るのがDebianとSlackwareだ。これらはどちらも1993年に登場している。つまりこの4月に創設30周年を迎えたインプレスグループの、1年後輩になる。さらにLinuxカーネルは最初の0.0.1のリリースが1991年であり、こちらはインプレスグループの1年先輩だ。
Ubuntuの特徴
Linuxディストリビューションの1つである「Ubuntu」は、「誰にでも簡単に使えるLinuxシステム」と「タイムベースのリリース」を大きな特徴としている。発音の仕方は「|oǒ’boǒntoō|」と表記されるが、日本だと「うぶんつ」、「うぶんとぅ」、「うぶんちゅ」あたりが主流のようだ。「ubuntu」自体はアフリカのズールー語で「他者への思いやり」という意味を持った言葉であり考え方である。
Ubuntuが登場したのは2004年だ。その頃のLinuxは、インストールやセットアップにそれなりのスキルを要した。特にデスクトップ環境の構築とメンテナンスには大変な思いをした記憶がある読者もいることだろう。そこでUbuntuでは、Debianの豊富なソフトウェア資産をそのままに、特にインストーラ部分に注力して開発を行なった。
- 1枚のCDだけでネットワーク接続がなくてもデスクトップ環境をインストールできること
- HDDにインストールしなくてもLive環境としてLinuxのデスクトップ環境を試せること
- インストール自体はいくつかの質問に答えるだけで済むこと
- インターネット接続が弱い地域のために全世界のどこでもインストール用CDを無償で郵送すること
厳密には2004年10月の最初のリリースである4.10の時点では「1枚のCD」しか実現できていないが、2006年6月リリースの6.06の時点までにその他の項目も含めて達成している。特にそのデスクトップ版インストーラーの使いやすさは、一度Linuxに挫折した人たちを含めて多くのファンを呼び寄せることになった。CDイメージをダウンロードし、ドライブに挿入し、電源を入れるだけで、あの面倒な「Linuxデスクトップ」が使えるようになったのだから。Live環境でうまく動くなら、その後にインストールすれば良いのである。
時期的にWindows Vistaが登場したころというのもあって、Linuxデスクトップのユーザー、ひいてはUbuntuのユーザーを増やし、Ubuntuが人気のディストリビューションに躍り出る契機となったのである。
ちなみにUbuntuが「かんたん」に使えるようになったのは、PCの標準化が進みどんなデバイスも一般的な手法でそれなりに動くようになってきたのも大きい。Ubuntuに限らず当時のLinuxディストリビューションは、どんどん導入が楽になってきた時期でもある。またKnoppixをはじめとしてLiveイメージ自体は以前から存在した。つまり、たまたまその時期に新顔として登場したUbuntuが、運良く耳目を集められた、という話でもある。
Ubuntuのもう1つの特徴が「タイムベースのリリース」だ。現在のUbuntuのリリースは次の特徴を備えている。
- 1年に2回、4月と10月にリリースする
- バージョン番号は西暦下ふた桁と月を使って「YY.MM」とする
- 各リリースのサポート期間は9カ月
- 2年に1度、偶数年の4月に「長期サポート版(Long Term Support:LTS)」をリリースする
- LTSのサポート期間は5年(有償サポート込みで10年)
このため「次はいつリリースされるのか」、「これはいつにリリースされたバージョンか」「いつまでサポートされるのか」などが、バージョンだけでわかるようになっている。
一般的なソフトウェアは、ある程度不具合が修正されてから最終的にリリースするかどうかの判断が行なわれる。それに対してUbuntuの半年間の開発が開始する前から「リリース日」を決めておき、それに向けて作業を行なう。リリース時点で多少の不具合があっても「こういう問題があってあとで直すから気をつけてね」とリリースノートに記載するだけで済ます。過去にリリース日の前日にやばいバグが見つかったなんてこともあったが、これもリリース日までにはなんとかなった。もし多少遅れたとしても「UTC-12(日本時間で次の日の21時)」までであれば「リリース日を守った」と言い張れる。協定世界時から前後12時間ずつ幅を取るのが、Ubuntuのリリース時間なのだ。
唯一の例外が、2006年6月にリリースされた「Ubuntu 6.06 LTS」である。このリリースでは初の長期サポート版、インストーラーの刷新、多言語対応など目標とした開発項目が盛り沢山だったため、リリース1カ月前に「6週間延期する」という判断が行なわれた。
ちなみにUbuntuのような厳密な意味での「タイムベースのリリース」を採用しているLinuxディストリビューションは少ない。ただし、ある程度の定期的な間隔でリリースするものは存在する。たとえばDebianは2005年の3.1リリース以降、2年ごとに最新版をリリースしている。
いずれにせよ登場した当時のUbuntuは、「比較的新しいカーネルやデスクトップ環境を、比較的簡単な方法で試験・導入でき、比較的短い周期で最新版が提供される」という、Linuxのデスクトップ環境を使いたいユーザーにとっては魅力的な仕組みになっていたのである。
現在でもこの特徴は維持されている。ただし「誰にでも簡単に使えるLinuxシステム」は、今ではもうUbuntuだけの話ではない。ほとんどのLinuxディストリビューションが、デスクトップ環境の構築を当たり前のように簡単に行なえる。「タイムベースのリリース」を採用しているところは多くはないものの、よりアグレッシブな常に最新版を使える「ローリングリリース」を採用しているディストリビューションも増えてきた。
それでもUbuntuはまだ「使いやすいLinux」の部類に入っている。特に「何も考えずに、みんなが使っていそうなものを、必要な分だけ用意し、それをそのまま使える」という用途においては、Ubuntuは有力な選択肢となるだろう。
本連載ではUbuntuを中心に紹介する。しかしながらどのLinuxディストリビューションも、ごく僅かな例外を除いてLinuxカーネルを採用していることには違いはない。また、Ubuntu上のユーザーランドプログラムも、おおよそほかのLinuxディストリビューションでも利用可能だ。もちろんリリースごとで採用されているバージョンや、適用されているパッチは異なる。しかしながら、極端な話、パッケージ管理システムと基本コンセプトの違いさえ吸収できれば、どのLinuxディストリビューションでも連載で紹介する手順そのものは適用可能だと考えて欲しい。
結局のところ、Linuxディストリビューションなんて、一番フィーリングが合うものを選べば良いのだ。
UbuntuとCanonical
Ubuntuを紹介する際によく登場する「Canonical」についても説明しておこう。
Canonicalは「Ubuntuの開発を支援し、商用サポートを提供する企業」と紹介されることが多い。Ubuntuの開発の主体は「Ubuntuプロジェクト」である。Canonicalはあくまでそれを補佐しているに過ぎない。ただしUbuntuプロジェクトのコア開発メンバーの多数を、フルタイムで作業できるようCanonicalの社員として雇っている。よってその線引きは曖昧ではある。実際、機能の実装や選別においてCanonicalによる商用サポートサービス等の事情が絡むことはよくある。
このUbuntuやCanonicalを立ち上げたのが、数少ない大気圏突入可能なPythonエンジニアの一人である「マーク・シャトルワース」だ。元々はDebian開発者であり、自身が立ち上げた認証局事業(Thawte)をベリサイン(現シマンテック)に売却し、そこで得た巨万の富で宇宙旅行を行ない、戻ってきたらUbuntuプロジェクトを開始したという、属性盛りすぎな人物である。
マーク・シャトルワースはUbuntuプロジェクトにおいて「Self-Appointed Benevolent Dictator For Life:SABDFL(自ら任命した優しい終身の独裁者)」という立場にいる。プロジェクトに対してあまり口出しはしないものの、コミュニティがコンセンサスを得られなかった時に最終的な決定を下す、そういう役割だ。このあたりの呼称はPythonの文化に影響を受けていることがわかる。ちなみに、メーリングリストやチケットトラッカーを見ていると、それなりに口を出していることに気付く。他のプロジェクトにまで殴り込みに行くことも昔はあった。
ちなみに本連載で担当するUbuntu Japanese Teamは、あくまでUbuntuプロジェクトのサブチームという位置づけだ。メンバーの中にCanonicalの社員はいるものの、原則としてCanonicalとの直接的な利害関係は存在しない。
WindowsとLinuxディストリビューション
フリーソフトウェアを推進する側にとって、フリーソフトウェアと対抗する概念が「プロプライエタリなソフトウェア(独占的なソフトウェア)」だ。たとえばソースコードが公開されていない、改変が許されない、再配布できない、そのようなソフトウェアが該当する。PCにおけるプロプライエタリなソフトウェアの代表格が、Microsoftが提供するWindowsである。
過去にはMicrosoftがLinuxを敵対的に見ていたことはあったものの、現在では少なくとも表面上や技術上は、お互い協力関係を築いてそれを活用している。2014年には当時MicrosoftのCEOに就任して間もないサティア・ナデラ氏が「Microsoft loves Linux」とまで発言した。
これはMicrosoftが単にOSを売る会社からクラウドサービスを提供する側に転換しつつあったことや、AndroidやiPhoneをはじめとするモバイルOSが急速に普及したことも大きいだろう。しかしながら単にLinuxから目を背けるのではなく、Linuxと共存していく方針を採用したのは大きな転換と言える。
実際、Microsoftは.NET FrameworkやSQL ServerのLinux対応だけでなく、Chromiumベースになったとは言えMicrosoft Edgeや、他にもVisual Studio CodeのLinux版まで提供するようになった。つまりクラウド向けの意味合いが強いサーバー向けソフトウェアだけでなく、デスクトップのLinuxにもリソースを投入しているのだ。
Ubuntuにはプロジェクトの「一番最初の不具合チケット(Bug #1)」として、「Microsoftが大半のマーケットシェアを占めている」が報告されていた。地元のPCショップに訪れても、プロプライエタリなWindowsの搭載されたマシンしか買えない、これは修正すべき不具合である、と表明していたのだ。このようにUbuntu側にもMicrosoftへの対抗意識があったわけだが、このチケットもスマートフォンのシェアがPCを超えた2013年ぐらいに「とりまく状況は変わった」ということでクローズされている。
WindowsとLinuxディストリビューションが互いに歩み寄った形の1つが「Windows Subsystem for Linux(WSL)」だろう。これはMicrosoftとUbuntuとが協力して作り出したプロダクトだが、現在ではUbuntu以外のLinuxディストリビューションも導入できるようになっている。今はCLIツールでの利用がメインではあるものの、Windows 11では正式にGUIアプリケーションを起動できるWSLgが導入され、Ubuntu 22.04 LTSでのWSLイメージではsystemdも標準的な仕組みで起動可能になる見込みだ。
結局のところ、「OS」という道具自体もユーザーが一番フィーリングの合うものを選べる世の中になれば良いのだ。
次回は「Windowsに対するUbuntuの利点」という、下手なことを書くと炎上待ったなしの話となる予定だ。お楽しみに。