106.2 レッスン 1
Certificate: |
LPIC-1 |
---|---|
Version: |
5.0 |
Topic: |
106 ユーザーインターフェイスとデスクトップ |
Objective: |
106.2 グラフィカルデスクトップ |
Lesson: |
1 of 1 |
はじめに
LinuxベースのOSは、高度なコマンドラインインターフェイスで知られていますが、技術者でないユーザーには敷居が高いものです。コンピューターをより直感的に使うために、高解像度ディスプレイとポインティングデバイスを組み合わせて利用する、グラフィカルユーザーインターフェースが生まれました。コマンドラインインターフェースではコマンド名とそのオプションに関する予備知識が必要ですが、グラフィカルユーザーインターフェース(GUI)では身近な図形をポイントしてプログラムの機能を選択できるので、学習曲線は緩やかなものとなります。さらにグラフィカルインターフェースは、マルチメディアなどの視覚的な作業に最適です。
実際のところ、グラフィカルユーザーインターフェイスはコンピューターインターフェイスとほぼ同義であり、ほとんどのLinuxディストリビューションにはデフォルトでグラフィカルインターフェイスがインストールされています。ただし、Linuxシステムでは、グラフィカルデスクトップの全機能を担当する、巨大な1つのプログラムは使いません。それぞれのグラフィカルデスクトップは、依存関係をもったさまざまなプログラムのコレクションであり、ディストリビューターやユーザーの個人的な好みによって選択されます。
X Window System
Linuxと他のUnix系オペレーティングシステムで採用されている、X Window System(X11 もしくは単に X とも呼ばれます)は、グラフィカルインターフェイスの表示や、ユーザー操作に対する低レベルのリソースを提供します。
-
マウス操作やキー入力などの入力イベントの処理。
-
アプリケーション間で、テキストのカット、コピー、ペースト。
-
プログラムがグラフィック要素を描画するためのプログラミングインターフェイス。
X Window Systemはグラフィックディスプレイの制御を担当(ビデオドライバー自体もXの一部)しますが、それ自体で複雑な視覚要素を単独で描画することを意図したものではありません。形状、色、陰影などの視覚効果は、X上で実行されるアプリケーションが生成します。このアプローチによって、アプリケーションがさまざまにカスタマイズされたインターフェイスを実現できますが、アプリケーションの本質とは異なる開発オーバーヘッドや、他のプログラムのインターフェイスと異なる見た目や動作の不一致を引き起こす可能性もあります。
デスクトップ環境を導入すると、開発者の立場からはアプリケーション開発におけるGUIプログラミングが容易になり、ユーザーの立場からはさまざまなアプリケーション間での一貫した使用感が得られます。デスクトップ環境は、プログラミングインタフェース、ライブラリ、サポートプログラムなどを統合し、伝統的なデザインコンセプトを継承しながら進化しています。
デスクトップ環境
伝統的なデスクトップコンピュータのGUIは、実行中のプロセスに関連付けられた ウィンドウ(アプリケーションに与えられた画面領域)で構成されます。X Window Systemは基本的な対話機能しか提供しないので、デスクトップ環境に内蔵されたコンポーネントがユーザー体験のすべてを提供します。
デスクトップ環境におけるおそらく最も重要な構成要素である ウィンドウマネージャー は、ウィンドウの配置と装飾を制御します。ウィンドウマネージャーは、ウィンドウにタイトルバーとコントロールボタン(最小化、最大化、閉じるなどのアクション)を追加し、ウィンドウの切り替えを管理します。
Note
|
デスクトップコンピュータにおけるグラフィックインターフェースの基本コンセプトは、現実のオフィスからヒントを得ています。 例えば、コンピュータの画面は机であり、そこには文書やフォルダなどのオブジェクトが置かれます。ドキュメントの内容が表示されたアプリケーションウィンドウは、フォームに記入したり図を描くといった行為を模しています。コンピュータデスクトップにはメモ帳、時計、カレンダーなどのソフトウェアアクセサリがありますが、それらのほとんどは実際の机に基づいています。 |
すべてのデスクトップ環境は、ウィジェット ツールキットのルック&フィールに合わせたウィンドウマネージャを備えています。ウィジェットとは、アプリケーションウィンドウ内に配置されるボタンやテキスト入力フィールドなど、情報提供や対話用の視覚的要素です。アプリケーションランチャー、タスクバーなどの標準的なデスクトップコンポーネントや、ウィンドウマネージャそのものは、ウィジェットツールキットを使用してインターフェースを構築しています。
GTK+ や Qt などのソフトウェアライブラリが、精巧なグラフィカルインターフェイスを構築するために使用するウィジェットをアプリケーションに提供します。以前はGTK+で開発されたアプリケーションとQtで作成されたアプリケーションはかなり異なって見えましたが、現在のデスクトップ環境ではテーマのサポートが強化されたので、違いが目立たなくなっています。
GTK+とQtはいずれも、ほぼ同じ機能のウィジェットを提供します。単純な操作パーツは見分けがつきませんが、複合的なウィジェット〜例えばファイル選択のためのダイアログウィンドウなどはかなり違って見えます。とはいえ、異なるツールキットで作ったアプリケーションを混在して同時に実行できます。
デスクトップ環境は、それぞれが独立したプログラムである基本的なデスクトップコンポーネントと、同じ設計ガイドラインに沿って開発された一連の小さなアクセサリアプリケーションを提供することで、デスクトップのメタファーを実現します。すべての主要なデスクトップ環境で、次のようなアプリケーションが提供されています。
- システム関連のアプリケーション
-
ターミナルエミュレーター、ファイルマネージャー、パッケージインストールマネージャー、システム構成ツール。
- コミュニケーションとインターネット
-
アドレス帳、電子メールクライアント、Webブラウザー。
- オフィスアプリケーション
-
カレンダー、電卓、テキストエディタ。
デスクトップ環境が、ログイン画面のグリーター、セッションマネージャー、プロセス間通信、キーリングのエージェントなど、デスクトップ以外のサービスやアプリケーションを含んでいることがあります。サウンド用の PulseAudio や、印刷用の CUPS など、サードパーティのシステムサービスが提供する機能も組み込まれています。これらの機能はグラフィカル環境がなくても動作しますが、デスクトップ環境がそれらリソースの操作や設定を行うためのグラフィカルなフロントエンドを提供します。
一般的なデスクトップ環境
ほとんどのプロプライエタリなオペレーティングシステムは、リリース毎に固有の公式デスクトップ環境を1つだけサポートしています(変更はできません)。それに対して、Linuxベースのオペレーティングシステムは、Xと組み合わせて使用できるさまざまなデスクトップ環境をオプションでサポートしています。それぞれのデスクトップ環境には独自の機能がありますが、一般的なコンセプトは共通しています。
-
利用できるアプリケーションを一覧表示するアプリケーションランチャー。
-
ファイル種別やプロトコルに関連付ける、デフォルトのアプリケーションを定義するルール。
-
デスクトップ環境の外観や動作をカスタマイズするためのツール。
Gnome は最も人気のあるデスクトップ環境の1つであり、Fedora、Debian、Ubuntu、SUSE Linux Enterprise、Red Hat Enterprise Linux、CentOSなどのディストリビューションのデフォルトです。バージョン3では、デスクトップのメタファーを捨てて Gnome Shell を導入するという、外観と構造の大きな変更を行いました。
従来のアプリケーションランチャーとタスクバーは、Gnomeの汎用的な全画面ランチャーである Activities で置き換えられました。ただし、ログイン画面で Gnome Classic オプションを選択することで、古い外観のGnome 3を使用することもできます。
KDE は、アプリケーションと開発プラットフォームの大規模なエコシステムです。最新のデスクトップ環境である KDE Plasma は、openSUSE、Mageia、Kubuntuなどのディストリビューションのデフォルトです。Qtライブラリの採用がKDEの大きな特徴で、独特の外観と多くのオリジナルアプリケーションを備えています。KDEには、見た目をGTK+アプリケーションに見せかけるためのツールも用意されています。
Xfce は、必要とするマシンリソースが少ないことと、美しい見た目を目標としたデスクトップ環境です。その構造は高度にモジュール化されており、ユーザーはニーズや好みに応じてコンポーネントを有効化ないし無効化できます。
Linuxには他にも多くのデスクトップ環境があり、通常は代替ディストリビューションとして提供されます。たとえば、Linux Mintディストリビューションでは、Cinnamon(Gnome 3のフォーク)と MATE(Gnome 2のフォーク)の2つのオリジナルなデスクトップ環境が提供されます。LXDE は、リソース消費が少ないデスクトップ環境であるため、古い機器やシングルボードコンピューターへのインストールに適しています。重厚な(フルセットの)デスクトップ環境と同じ機能を提供するわけではありませんが、LXDEは現代的なグラフィカルユーザーインターフェイスに相応しいすべての基本機能をを備えています。
Tip
|
デスクトップ環境との対話では、キーボードショートカットが重要な役割を果たします。ウィンドウを切り替えるAlt+Tabや、テキストをコピーするCtrl+cなどのキーボードショートカットはどのデスクトップ環境でも共通ですが、デスクトップ環境ごとに独自のキーボードショートカットがあります。デスクトップ環境に備わっているキーボード設定ツールを使って、ショートカットを追加、変更できます。 |
デスクトップの相互運用性仕様
Linux系のオペレーティングシステムのデスクトップ環境は多様であるため、デスクトップ環境それぞれに固有のサポートを実装することなく、異なるデスクトップ環境用のグラフィカルアプリケーションやシステムサービスを、異なるデスクトップ環境でも正しく動作させることが課題となっています。あるデスクトップ環境用に設計されたグラフィカルアプリケーションを、異なるデスクトップ環境でも動作させるためには、デスクトップ環境の仕様や呼び出し方法を共通化する必要があります。また、ユーザーが別のデスクトップ環境に切り替えた場合に、デスクトップの一般的な設定を維持することも重要な課題です。
freedesktop.org という組織が、デスクトップの互換性に関わる多くの仕様を取りまとめています(訳注: XDG Interoperability Specification と呼ばれ、freedesktop.org のWikiページから参照できます)。すべての仕様を満たす必要はありませんが、多くの仕様が広く採用されています。代表的な内容を示します。
- ベースディレクトリ
-
各ユーザーの設定やユーザー固有のファイルを置くディレクトリ。
- Desktop Entry
-
デスクトップ環境でも、ターミナルエミュレーター経由でCLIアプリケーションを実行することができます。しかし、アプリケーションランチャーにそれらすべてを表示すると、ユーザーは混乱してしまうでしょう。デスクトップ環境が、利用できるデスクトップアプリケーションに関する情報を見つけられるように、サフィックスが
.desktop
であるテキストファイルの規格が定められています。
- 自動起動
-
ユーザーがログインした後に自動的に起動する必要があるアプリケーションを示すDesktop Entry。
- ドラッグアンドドロップ
-
アプリケーションがドラッグ&ドロップイベントを処理する方法。
- ごみ箱
-
ファイルマネージャによって削除されたファイルの一般的な保存場所と、そこからファイルを保存・削除する方法。
- アイコンテーマ
-
互換性のあるアイコンライブラリの共通フォーマット。
シェルなどのテキストインターフェイスに比べると、デスクトップ環境ではリモートアクセス機能が欠けていることが欠点です。ssh
などのツールでリモートマシンのシェル環境に容易にアクセスできるのに対して、グラフィック環境へのリモートアクセスには異なる方法が必要ですし、(データ量が多いため)低速な回線では満足なパフォーマンスを得ることができません。
リモートアクセス
X Window Systemsは、それぞれの ディスプレイ が独立して動作するようにデザインされていて、1つの ディスプレイマネージャ が、同時に1つ以上のグラフィカルなデスクトップセッションを制御できます。つまり、テキストターミナルと同様に、それぞれのディスプレイでオペレーティングシステムに対するセッションを確立し、マシンやアプリケーションに対する窓口とすることができます。通常はローカルマシンに対する1つのグラフィカルセッションを起動する設定が一般的ですが、以下のような設定を行う事もできます:
-
1つのマシンで、アクティブなグラフィカルデスクトップセッションを切り替える。
-
1つのマシンに複数のディスプレイデバイスセット(画面、キーボード、マウスなど)を接続し、それぞれがグラフィカルデスクトップセッションを制御する。
-
リモートグラフィカルデスクトップセッション。すなわち、グラフィカルインターフェイスをネットワーク経由でリモートディスプレイに送信する。
Xはリモートデスクトップセッションを標準サポートしていて、XDMCP(X Display Manager Control Protol)を使用して、リモートのディスプレイとやり取りします。XDMCPは帯域幅を使用するので、インターネットや低速LANで使用されることはめったにありません。セキュリティの問題もXDMCPの懸念事項です。すなわち、ローカルディスプレイは特権を持つリモートXディスプレイマネージャーと通信してリモートプロシージャを実行するので、脆弱性があるとリモートマシンで特権コマンドを実行される可能性があります。
さらに、XDMCPでは接続の両側でXインスタンスを実行する必要があるため、X Window Systemを使用できないマシンでは利用できません。実際のところ、(XDMCPではなく)他のより効率的で安全な方法を使って、リモートとのグラフィカルデスクトップセッションを確立するのが一般的です。
VNC(Virtual Network Computing)は、RFB(Remote Frame Buffer)プロトコルを使用して、リモートのデスクトップ環境を表示および制御する、プラットフォームに依存しないツールです。ローカルのキーボードやマウスが生成したイベントをリモートデスクトップに送信し、画面の更新をローカルで表示するために返送します。1台のマシンで多数のVNCサーバーを実行することができますが、それぞれのVNCサーバーは、着信要求を受け入れるために専用のTCPポートを必要とします。慣例では、最初のVNCサーバーがTCPポート 5900を使用し、2番目のVNCサーバーが5901を使用します。
VNCサーバーを特権を持ったプロセスとしてで実行する必要はありません。一般ユーザーとしてリモートアカウントにログインして、そこで自分のVNCサーバーを起動できます。次に、ローカルマシンで好みのVNCクライアントアプリケーションを起動し、リモートデスクトップにアクセスします(対応するネットワークポートに到達できることが必要です)。~/.vnc/xstartup
ファイルは、VNCサーバーが起動時に実行するシェルスクリプトで、VNCサーバーがVNCクライアントに提供するデスクトップ環境を定義します。VNCは最新の暗号化と認証方法を備えていないので、それらの機能を提供する別のアプリケーションと組み合わせて使用する必要があります。VCN接続を保護するためには、VPNやSSHトンネルがよく使われます。
RDP(Remote Desktop Protocol)は、主にTCP 3389番ポートを使って、Microsoft Windows のデスクトップにリモートアクセスするために使用されます。Microsoft社独自のRDPプロトコルを使用しますが、Linuxシステムで使用されるクライアント実装は GNU General Public License(GPL)でライセンスされるオープンソースプログラムで、使用に関する法的な制限は一切ありません。
Spice(Simple Protocol for Independent Computing Environments)は、ローカルないしリモートで 仮想化されている システムのデスクトップ環境にアクセスするためのツール群です。Spiceプロトコルは、リモートマシンからローカルデバイス(スピーカーやUSBデバイスなど)にアクセスする機能や、リモート/ローカル間でのファイル共有など、ローカルシステムとリモートシステムを統合する機能も備えています。
これらのリモートデスクトッププロトコルのそれぞれに接続する専用のクライアントコマンドがありますが、Remmina というリモートデスクトップクライアントを使用すると、統合されたグラフィカルインターフェイスを通して(それぞれのプロトコルに)接続し、その設定を保存しておくことができます。Remminaでは、プロトコルごとにプラグインがあり、XDMCP、VNC、RDP、Spice用のプラグインを提供しています。オペレーティングシステムやネットワーク接続の品質、リモートデスクトップ環境で利用する機能などに応じて、適切なツールを選択します。(訳注: Remmina は多くのLinuxディストリビューションでパッケージが提供されています。)
演習
-
デスクトップ環境でシェルセッションのウィンドウを提供するアプリケーションは何ですか?
-
Linuxデスクトップ環境はさまざまであるため、ウィジェットツールキットに応じて、1つのアプリケーションに複数のバージョンが存在することがあります。例えば、BitTorrentのクライアントである Transmission には、transmission-gtk と transmission-qt の2つのバージョンがあります。KDEを最大限に活用するには、2つのうちどちらをインストールしますか?
-
処理能力が低い安価なシングルボードコンピューターに推奨されるLinuxデスクトップ環境は何ですか?
発展演習
-
X Window Systemでテキストをコピーして貼り付けるには、Ctrl+cおよびCtrl+vキー(ないしウィンドウメニュー)を使用する方法と、マウスの中央ボタンをクリックして選択中のテキストを張り付ける方法の2つがあります。ターミナルエミュレータで、テキストをコピーして貼り付けるには、どちらの方法が適切ですか?
-
ほとんどのデスクトップ環境では、ショートカット Alt+F2 が Run program ウィンドウに割り当てられています。このウィンドウでは、プログラムをコマンドライン形式で実行できます。KDEでデフォルトのターミナルエミュレータを実行するコマンドは何ですか?
-
Linuxデスクトップ環境からリモートのWindowsデスクトップにアクセスするのに最適なプロトコルはどれですか?
まとめ
このレッスンでは、Linuxシステムで使用できるグラフィカルデスクトップの概要を説明しました。X Window Systemだけでは、単純なインターフェイス機能しか提供されませんが、デスクトップ環境ではグラフィカルウィンドウインターフェイスのユーザー体験が拡張されます。レッスンでは、以下のトピックについて説明しました。
-
グラフィックインターフェイスとXウィンドウシステムの概念。
-
Linuxで利用可能なデスクトップ環境。
-
デスクトップ環境の類似点と相違点。
-
リモートのデスクトップ環境にアクセスする方法。
取り上げた概念とプログラムは以下のとおりです:
-
X Window System。
-
一般的なデスクトップ環境: KDE、Gnome、Xfce。
-
リモートアクセスプロトコル: XDMCP、VNC、RDP、Spice。
演習の解答
-
デスクトップ環境でシェルセッションのウィンドウを提供するアプリケーションは何ですか?
Konsole、Gnome terminal、xtermなどのターミナルエミュレーターが、ローカルの対話型シェルセッションへのアクセスを提供します。
-
Linuxデスクトップ環境はさまざまであるため、ウィジェットツールキットに応じて、1つのアプリケーションに複数のバージョンが存在することがあります。例えば、BitTorrentのクライアントである Transmission には、transmission-gtk と transmission-qt の2つのバージョンがあります。KDEを最大限に活用するには、2つのうちどちらをインストールしますか?
KDEはQtライブラリの上に構築されているので、Qtバージョン 〜transmission-qt 〜をインストールします。
-
処理能力が低い安価なシングルボードコンピューターに推奨されるLinuxデスクトップ環境は何ですか?
XfceやLXDEなど、視覚効果をあまり使用しない簡素なデスクトップ環境。
発展演習の解答
-
X Window Systemでテキストをコピーして貼り付けるには、Ctrl+cおよびCtrl+vキー(ないしウィンドウメニュー)を使用する方法と、マウスの中央ボタンをクリックして選択中のテキストを張り付ける方法の2つがあります。ターミナルエミュレータで、テキストをコピーして貼り付けるには、どちらの方法が適切ですか?
対話的なシェルセッションでは、Ctrl+cでプログラムの実行が停止されるため、中央ボタンの方法がお勧めです。
-
ほとんどのデスクトップ環境では、ショートカット Alt+F2 が Run program ウィンドウに割り当てられています。このウィンドウでは、プログラムをコマンドライン形式で実行できます。KDEでデフォルトのターミナルエミュレータを実行するコマンドは何ですか?
KDEのターミナルエミュレータを実行するには、
konsole
コマンドを実行しますが、terminal など一般的な用語でも大丈夫です。 -
Linuxデスクトップ環境からリモートのWindowsデスクトップにアクセスするのに最適なプロトコルはどれですか?
RDP(Remote Desktop Protocol)です。WindowsとLinuxの両方でサポートされています。