LinuxのCUIとGUI、デスクトップ環境を理解しよう:“応用力”をつけるためのLinux再入門(3)
今回は、Linuxの「インタフェース」に注目します。インタフェースとはLinuxを“どのように見せて、どのように操作するか”を決める部分です。Linuxでは、WindowsやOS Xでおなじみのグラフィカルなスタイルと、コマンドをキーボードで入力するスタイルの両方を利用できます。
OS操作の“要”、CUIと“コマンドライン”って何?
機械と機械、機械と人間、コンピュータとユーザーなど、何かの接点となる部分を「インタフェース(interface)」、特に、利用者による操作を受け取って結果を返す部分を「ユーザーインタフェース(User Interface:UI)」と呼びます。コンピュータの場合、大きく分けて「CUI」と「GUI」、2つのインタフェースがあります。
私たちがWindowsやOS Xで慣れ親しんでいるような、ウィンドウを表示してマウスで操作するスタイルが「GUI(Graphical User Interface)」です。GUIに対して、キーボードでコマンド(command:命令)を入力し、その結果を文字で受け取るスタイルが「CUI(Character User Interface)」になります(※)。CUIは、「CLI(Command Line Interface)」と呼ばれることもあります。
【※】Character User Interfaceの他、「Character-based User Interface」や「Console User Interface」とも呼ばれることがあります。
CUIによる操作例
まずは、「GUIなし」のLinuxの画面を紹介しましょう(画面1)。このCUIの画面では、ユーザー「study」がログインし、ディスク使用量を表示する「df」というコマンドを実行しています。
OSが入力を待ち受けている場所には、「プロンプト」が表示されます。例えば、「login:」はログインプロンプトで、ログイン名の入力を促しています。ちなみに、画面1では「password:」のところにパスワードを入力していますが、画面に入力内容は表示されていません。
シェル
Linuxへのログインに成功すると「シェル」が起動します。シェルは“OSのインタフェースを受け持つソフトウェア”で、OSの中心部分(カーネル:本連載第1回を参照)を覆う“殻(shell)”をイメージさせるので、このように呼ばれています。
ユーザーはシェルを通じてOSにコマンドを送り、シェルを通じて結果を受け取ります。
Linuxで主に使われているシェルが、「bash(バッシュ)」と「tcsh(ティーシーシェル)」です。この2つのシェルは操作性が多少異なる他、特に“シェルスクリプト”を扱う際に、どちらを使うのかを考えなくてはなりません。しかし、普段コマンドを入力して実行するような場合には、両者の違いを意識する必要はほとんどないでしょう。現在使用しているシェルを知る方法や変更する方法については、本連載内であらためて説明します。
コマンドライン
Linuxのコマンドを入力する場所を「コマンドライン」と呼びます。コマンドラインにはプロンプトが表示されています。もしかしたら「カーソル(cursor)」が点滅しているかもしれません。
前出の画面1では、「[study@localhost ~]$」の部分がプロンプトになります。プロンプトに何を表示するかはユーザーが決めることができます。ここでは「[<ユーザー名>@<ホスト名> <カレントディレクトリ>]」に続いて「$」記号が表示されています。個々の意味や設定方法については、今後の本連載で取り上げていきます。
例えば、コマンドラインに「df -h」と入力して[Enter]キーを押すと、コマンドがOSに渡されます(※)。「df」部分がコマンド名で、「-h」部分はオプションです。「dfコマンドを-hオプション付きで実行せよ」と命令しているわけです。
【※】[Enter]キーではなく[Return]キーになっているPCもありますが、コマンドラインでの役割は同じです。[Return]キーはタイプライター時代からのもので、[Return]キーを押すと次の行に移り行の先頭に戻る、という意味合いがあります。一方、[Enter]キーは、このキーを押すとコンピュータに入力される、という意味合いがあります。
コマンドの実行結果
「df」コマンドは、ディスクのサイズや現在使用している量を表示するコマンドです。前出の画面1では、「Filesystem……」行以下の8行が「df」コマンドの実行結果で、その後あらためてプロンプト([study@localhost ~]$)が表示されています。シェルが次の入力を待っている、という状態になっています。
このように、文字を使ってコンピュータに指示を出し、文字で結果を受け取るのが「CUI」です。文字情報だけのやりとりになるので、遠隔地から操作しやすい、操作を自動化しやすいといった特徴があります。特にサーバを管理する人にとっては、CUIのマスターは必須かもしれませんね。
端末ウィンドウ
GUI環境でコマンドラインを使用したい場合は、「端末ウィンドウ」を使用します(画面2)。端末ウィンドウには、「xterm」や「kterm」「rxvt」などがあります。ディストリビューションによっては、単に「端末」という名前になっているかもしれません。
GUIと“デスクトップ環境”の違いは何?
「Linuxといえばコマンドライン」というイメージを持っている方は多いかもしれません。実は、Linuxには広大なGUIの世界が広がっているのです。ここからは、LinuxのGUIとデスクトップ環境を説明していきましょう。
X Window System
UNIX系のOSでは、GUI環境を作るのに「X Window System」を利用します。昨今のLinuxディストリビューションでは、後述する「デスクトップ環境」としてまとめてインストールして使用するのが一般的です。従って、X Window Systemを意識することはあまりないかもしれませんが、大まかな仕組みだけは把握しておきましょう。
X Window Systemは、マウスやキーボードからの入力や画面への出力を受け持つ「Xサーバ」と、実際の作業を行う「Xクライアント」に分かれます。Windowsを含む一般的なサーバにおける“Webサーバ”や“ファイルサーバ”では、ユーザーが使用する側が「クライアント」ですが、X Window Systemの場合はユーザーが触れる側が「サーバ(Xサーバ)」になる点に注意してください。
Xサーバは、マウスやキーボードからの入力をXクライアントに伝え、Xクライアントからの指示に従って画面の描画を行います。
XサーバとXクライアントは同一マシン上になくてもよく、ネットワークで接続された別のマシン上で動かしても構いません。「Xプロトコル」というXサーバとXクライアント間の通信規約に対応しているソフトであれば、お互いが動作しているOSも問いません。
X Window Systemでは、処理能力の高い大型汎用機側でXクライアントのソフトウェアが動作し、ユーザーが直接触れる端末側では表示と入力だけ行う、という使い方ができるようになっているのです。
Xサーバ側、つまりユーザー側にログイン画面を示してクライアントとのやりとりを開始する部分を担当するのが「Xディスプレイマネジャー」です。具体的には「xdm」や「gdm」「kdm」などがあり、“ログイン画面を設定する”といったときに、こうした名前が登場するかもしれません。
ウィンドウマネジャー
画面を表示してマウスで操作するという部分で、大きな役割を果たすのが「ウィンドウマネジャー」です。これも、昨今のLinuxディストリビューションでは“デスクトップ環境”としてまとめて提供されています。
ウィンドウマネジャーは、ウィンドウの位置や見た目を決めるもので、例えば「ウィンドウにはタイトルバーがあり、ソフト名や開いているファイル名が表示されている」「ウィンドウのサイズを変更することができる」「右上にウィンドウを閉じるためのボタンがある」など、ユーザーインタフェースの重要な部分を決定しています。閉じるボタンの位置が気に入らなければウィンドウマネジャーの設定、あるいはウィンドウマネジャーそのものを変更すればよい、というわけです。
デスクトップ環境
ウィンドウをどのように表示するかだけではなく、アプリケーションソフトを起動する方法(Windows環境でいえば“スタートボタンを使うかどうか”など)や、画面全体をどのように使うかなどをまとめたものが「デスクトップ環境」です。
少し話がそれますが、現在のWindows環境で「デスクトップ」と呼ばれている場所は、Windows 3.1(1993年に日本語版が発売)のころは単なる“壁”であり、ファイルやショートカットなどを置くことはできませんでした。画面に表示されるのはウィンドウと、ウィンドウを最小化したときのアイコンだけで、後は好きな画像を“壁紙”として表示できる程度でした。
現在のように机の上に本を広げたり、何かものを置いたりするような感覚で作業できる“デスクトップ”が登場したのは、Windows 95(1995年発売)からになります。デスクトップにファイルを置く、そのアイコンを別のウィンドウにドラッグ&ドロップするといった操作ができるのもデスクトップ環境ならではです。
さて、Windowsユーザーでしたら、“デスクトップテーマ”を利用して壁紙や画面の配色、操作音などをまとめて変更した経験があるでしょう。これに対し、Linuxで“デスクトップ環境を選ぶ”ことは、見た目のみならず、「Windowsでタスクバーやスタートボタンを使うかどうかを決める」といったイメージになります。もちろん、見た目も変わります。
Linux環境で広く使われているデスクトップ環境は「GNOME(グノーム、ノーム)」と「KDE(ケーディーイー)」の2つで、多くのディストリビューションがこのどちらかを採用しています。この他、軽量化を重視して設計されている「LXDE(Lightweight X11 Desktop Environment)」や「Xfce(エックスエフシーイー、エックスエフシー)」、GNOMEから派生した「MATE(マテ)」や「Cinnamon(シナモン)」などがあります。
ディストリビューションによって、採用されているデスクトップ環境は異なります。例えば、CentOS 7では、インストール時にGNOMEとKDEを選択することができます(画面3、画面4、画面5)。
また、Ubuntuのデスクトップ環境は「Ubuntu Unity」になります。Ubuntu Unityは、Ubuntu専用に開発されており、タブレットやスマートフォンでの使用も想定したデザインとなっています(画面6)。
どのデスクトップを選べばよいの?
Linuxにおけるデスクトップの違いは、単に色や壁紙の違い、あるいは設定の違いだけではありません。インストールするソフトウェアそのものも異なることに注意しましょう。ディストリビューションによって採用しているデスクトップ環境が異なるので、ウィンドウの見た目や操作性が気になるという方は、デスクトップを中心にディストリビューションを選ぶとよいでしょう。
もちろん、デスクトップ環境は好みに応じて変更できますが、最初はデフォルトでインストールされるものをそのまま使う方が簡単で、トラブルも少なくて済みます。
例えば、Ubuntuから派生したディストリビューションである「Linux Mint」には、MATE版/Cinnamon版/KDE版/Xfce版があります(画面7)。また、同じデスクトップ環境でも、設定によってイメージがかなり異なるかもしれません(画面8)。
特にこだわりがない場合や、サーバ機能を中心に利用するのでデスクトップ環境は重視しないという場合は、使いたいディストリビューションで採用されているデスクトップ環境をそのまま使いましょう。また、参考にしている書籍やWebサイトがある場合は、そこで使われているディストリビューションに合わせるのがベストです。慣れていないうちは、解説やヘルプの画面が一致している方が分かりやすいでしょう。
ある程度操作に慣れたら、別のデスクトップ環境をインストールしてみたり、異なるディストリビューションを試してみたりするのもよいでしょう(画面9)(※)。
【※】Linuxでは、ディストリビューションもデスクトップ環境も、さまざまな種類があります。ウィキペディアなどで一覧を見ると、ちょっと困ってしまうぐらいの量がリストアップされます。しかし、日本語化されていて、情報が入手しやすいディストリビューションとなると選択肢はかなり限られます。
なお、本連載第2回で紹介した「VirtualBox」や「VMware Workstation Player」にはLinux版もあるので、Linux用のPCを使っているという方も、気軽に他のLinuxをインストールして試すことができます。「こんなに違うのか」と「そうは言ってもやっぱり同じだな」の両方を味わうことで、よりLinuxの理解が深まるかもしれません。興味がある方はぜひ試してみてください。
- シェルスクリプトに挑戦しよう(20)オプションの処理[その2]――長いオプション
- シェルスクリプトに挑戦しよう(19)オプションの処理[その1]
- シェルスクリプトに挑戦しよう(18)連想配列
- シェルスクリプトに挑戦しよう(17)配列[応用編]
- シェルスクリプトに挑戦しよう(16)配列[基本編]
- シェルスクリプトに挑戦しよう(15)繰り返し処理の中断
- シェルスクリプトに挑戦しよう(14)制御構文[その6]――while/untilによる繰り返し処理
- シェルスクリプトに挑戦しよう(13)制御構文[その5]――forによる繰り返し処理(3)
- シェルスクリプトに挑戦しよう(12)制御構文[その4]――forによる繰り返し処理(2)
- シェルスクリプトに挑戦しよう(11)制御構文[その3]――forによる繰り返し処理(1)
- シェルスクリプトに挑戦しよう(10)「read」コマンドでキーボードからの入力を受け取る
- シェルスクリプトに挑戦しよう(9)制御構文[その2]――caseによる条件分岐
- シェルスクリプトに挑戦しよう(8)条件の書き方
- シェルスクリプトに挑戦しよう(7)制御構文[その1]――ifによる条件分岐
- シェルスクリプトに挑戦しよう(6)スクリプトで引数を使用する[その2]
- シェルスクリプトに挑戦しよう(5)スクリプトで引数を使用する[その1]
- シェルスクリプトに挑戦しよう(4)変数の定義と参照
- シェルスクリプトに挑戦しよう(3)改行/空白/引用符のルール
- シェルスクリプトに挑戦しよう(2)Windows 10のbashを試す!
- シェルスクリプトに挑戦しよう(1)準備編
- Linuxの定番テキストエディタ「vi」をマスターしよう(3)編集と置き換え/チュートリアル編
- Linuxの定番テキストエディタ「vi」をマスターしよう(2)検索/オプション活用編
- Linuxの定番テキストエディタ「vi」をマスターしよう(1)基本操作編
- 「シグナル」を送ってみよう
- Linuxの「シグナル」って何だろう?
- Linuxの「ジョブコントロール」をマスターしよう
- Linuxの「ジョブ」って何だろう?
- Linuxの「プロセス」って何だろう?
- 「SUID(セットユーザーID)」属性の効果を試してみよう
- 「共有ディレクトリ」を作成してパーミッション(許可属性)への理解を深めよう
- Linuxのユーザーとグループって何だろう?
- 「ls -l」コマンドの表示からファイルの属性を理解しよう
- PATHを理解して、コマンドの在りかを探してみよう
- Linuxのディレクトリに親しもう
- パイプとリダイレクトでコマンドを組み合わせて実行しよう
- 補完機能、ヒストリ、エイリアスでコマンドラインの入力を“楽”にしよう
- Linuxのシェルとコマンドプロンプトを理解しよう
- LinuxのCUIとGUI、デスクトップ環境を理解しよう
- VirtualBoxでLinuxのテスト環境を作ってみよう
- いまさら聞けないLinuxの基礎知識
筆者紹介
西村 めぐみ(にしむら めぐみ)
PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、出産・子育てをしながらライターとして活動。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
Linux専用メインフレーム「LinuxONE」を強化
米IBMが、同社のLinux専用メインフレーム「LinuxONE」の機能強化を発表。ハイブリッドクラウドへの対応や、現代的なアプリケーション開発環境の整備も進められている。Linux Kernel 4.5-rc1版が公開。ARM対応を強化
Linux Kernelの次期版「4.5」のリリース候補版が公開された。Linux Kernel 4.5では、dm-verityサブシステムの前方エラー訂正や、新しいシステムコール「copy_file_range」などが取り込まれる見込み。マイクロソフトとレッドハットがクラウドで提携
米マイクロソフトと米レッドハットはクラウドサービスに関して提携すると発表した。.NETに関して協業することも明らかにした。ここが変わったCentOS 7──「新機能の概要とインストール」編
「CentOS 7」を皆さんどれだけ理解していますでしょうか。CentOS 7は、以前のバージョンから使い勝手がかなり変わりました。本連載では、今さら聞けない/おさらいしたいというインフラエンジニアに向け、CentOS 7の概要と基礎から活用Tipsまでを紹介していきます。CentOS 7のシステム管理「systemd」をイチから理解する
「systemd」は、Linuxの起動処理やシステム管理を行う仕組みです。systemdはinitの限界を克服するために作られた新しいシステム管理アーキテクチャで、CentOS 7でも用います。では、何が違うのでしょう。これまで使われてきた「init」と比較しながら、基礎と課題を解説します。