キャラクタユーザインタフェース

提供: miniwiki
移動先:案内検索
ファイル:Bash screenshot.png
CLIの画面例。内容はGentoo LinuxでBashコマンドを実行したもの。

キャラクタユーザインタフェース (character user interface, CUI)[1]キャラクタベースユーザインタフェース (character-based user interface, CUI) [2]コンソールユーザインタフェース (console user interface, CUI) [3]、またはコマンドラインインタフェース (command line interface, CLI) [4]は、キーボード[5]からの文字列[6]を入力とし、文字列が表示されるウィンドウや古くはラインプリンタで印字される文字などを出力とする、ユーザインタフェースの様式で、もっぱらグラフィカルユーザインタフェース (GUI) の対義語として使われる。

特徴

GUIがMacintoshWindows 95などで一般人にも一般的なものになる以前は、一般人が「嫌々ながらも使わされる」ものであったため、古いものなどと看做す向きもあるようだが、GUI環境ではポインティングデバイスによる面倒な操作を繰返し行わなければならないところを、簡単なコマンドの組み合わせでやってのけることができるなど多くの利点もあり、基本的に住み分けて併存しているものである。

ユーザインタフェースがCUIのアプリケーションをコンソールアプリケーションという。またあまり一般的ではないが、テキストコンソールを利用してウィンドウなどを表現しているインタフェースをテキストユーザインタフェースという。ショートカットキーをCUIの利点と考えるものもいる。だが、CUIの入力デバイスはキーボードでなくても良い一方、GUI環境でもショートカットキーを便利に多用できるよう設定できるものもあるので、キーボードの利点とは言えるかもしれないが、必ずしもCUIの利点ではない。

端末エミュレータは、それ自体は(近年は)GUIアプリだが、CUIのための環境を提供するものである。

なお、以下で述べられている長所や短所は、CUI自体のそれと、コマンドラインシェルなどといったものに関する話が混乱状態になっている。一般人はそういったものを識別しないためである。

長所

  • 処理の自動化(バッチ処理)が容易である(一連のコマンドや制御文は文字情報なのでファイルに単純に保存しておくことができ、それを後で何度でも実行・修正できる)。
  • プログラムを作成する際、ユーザからの入力を処理する部分(コマンドラインインタプリタ)を比較的簡単に作れる。GUIのプログラムは、一般にユーザインタフェースの作成に手間がかかり、内部状態も多くなる。これに関連して、異なるOSにプログラムを移植する際も、標準入出力のみを使用するコンソールプログラムのほうがはるかに移植しやすい。また、標準入出力は多くのプログラム言語で標準ライブラリや組み込みの言語機能として提供されているため、プログラム言語の入門やプロトタイピング、テストドライバとしても向いている[7] [8] [9]
  • プログラムの出力を別のプログラムに直接入力したり(簡易なプロセス間通信: パイプ)、ファイルに保存したりできる。なお、多くの統合開発環境(IDE)ではGUIのクライアントを使って直感的にアプリケーションを開発できるようになっているが、プログラムのコンパイル・ビルド時にバックで動作しているのは(単独でも動作可能な)コマンドラインのコンパイラリンカである。
  • リモートログインする場合、クライアント側で専用のソフトウェアが不要である(SSHクライアント程度で済む)ことが多い。
  • 別のコンピュータにリモートログインする場合、画像情報の転送が不要あるいは必要最低限に抑えられるため、ネットワークへの負荷が低い。低速な回線でもリモート操作ができる。
  • 一般に自動補完機能(オートコンプリート)や履歴が利用できるため、コマンドをすべて手で入力する必要はない[10]
  • キーボードだけで操作できるため、手慣れたユーザは作業を敏速に行える。
  • 直前操作の確認や、資料収集(操作履歴の保存・他人への提供)などが容易である。
  • 入力元・出力先の切替が容易である(リダイレクト)。
  • 先行入力が可能である。GUIにおける、操作を行うためのボタンが表示されるまで待たされる、といったことが避けられる。

など

短所

  • 基本的なコマンドをある程度覚える必要があるため、アプリケーションのエンドユーザーにとっては習得コストがかかる。各プログラムのパラメータも必要に応じて調べる必要がある。
  • 人間の視覚的な能力をあまり活用できない。
  • 選択肢やヘルプなどを画面上に表示することにも限界がある。
  • 画像や3Dデータなど、図形的なものの操作や編集には向かない、または不可能である。

など

関連項目