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] を入力とし、文字列が表示されるウィンドウ や古くはラインプリンタで印字される文字などを出力とする、ユーザインタフェース の様式である。キャラクタユーザインタフェースの語は日本語での使用が主流であり、英語圏やその日本法人などでは『command line interface 』と称すのがほとんどで[7] [8] [9] [10] 、英語版Wikipediaの表題もCommand line interface である。もっぱらグラフィカルユーザインタフェース (GUI) の対義語として使われる。
特徴
初期のコンピュータは、CUIによる対話環境が主流であった。その後、コンピュータの性能が向上したことにより、GUI環境を標準搭載しているパーソナルコンピュータ (Macintosh やWindows 95 など)がオフィスや一般家庭にも普及し、専門家を除いてCUIの利用頻度は減っていった。
多くのネットワーク機器は、TELNET やSSH に対応しており、CUIを標準搭載している。また、パーソナルコンピュータ (PC) やサーバ向けのオペレーティングシステム (OS) には、既定のインターフェイスがGUIであってもコマンドラインターミナルなどのCUI環境が標準で用意されている。しかし、スマートフォン などのモバイル端末向けOSには標準で用意されていないことが多い。
ユーザインタフェースがCUIのアプリケーションをコンソールアプリケーション という。また、あまり一般的ではないが、テキストコンソールを利用してウィンドウなどを表現しているインタフェースをテキストユーザインタフェース という。
以降、CUIそのものだけでなくコマンドラインインタプリタ 、シェル についても述べる。
長所
GUIでは表示し切れないような膨大なファイル群を複数の処理に通す際に、処理順にコマンドやファイル名のパターンを列挙して一括処理させることができる。
処理の自動化(バッチ処理 )が容易である(一連のコマンドや制御文は文字情報なのでファイルに単純に保存しておくことができ、それを後で何度でも実行・修正できる)。
プログラムを作成する際、ユーザからの入力を処理する部分(コマンドラインインタプリタ )を比較的簡単に作れる。GUIのプログラムは、一般にユーザインタフェースの作成に手間がかかり、管理すべき内部状態も多くなる。
これに関連して、異なるOSにプログラムを移植する際も、標準入出力 のみを使用するコンソールプログラムのほうがはるかに移植しやすい。また、標準入出力は多くのプログラム言語 で標準ライブラリや組み込みの言語機能として提供されているため、プログラム言語の入門やプロトタイピング 、テストドライバ としても向いている[11] [12] [13] 。
プログラムの出力を別のプログラムに直接入力したり(簡易なプロセス間通信: パイプ )、ファイルに保存したりできる。なお、多くの統合開発環境 (IDE) ではGUIのクライアントを使って直感的にアプリケーションを開発できるようになっているが、プログラムのコンパイル・ビルド時にバックで動作しているのは(単独でも動作可能な)コマンドラインのコンパイラ やリンカ である。
リモートログインする場合、クライアント 側で専用のソフトウェア が不要である(SSH クライアント程度で済む)ことが多い。
別のコンピュータにリモートログインする場合、画像情報の転送が不要あるいは必要最低限に抑えられるため、ネットワークへの負荷が低い。低速な回線でもリモート操作ができる。
一般に自動補完機能(オートコンプリート)や履歴が利用できるため、コマンドをすべて手で入力する必要はない[14] 。
キーボードだけで操作できるため、手慣れたユーザは作業を敏速に行える。
直前操作の確認や、資料収集(操作履歴の保存・他人への提供)などが容易である。
入力元・出力先の切替が容易である(リダイレクト )。
先行入力が可能である。GUIにおける、操作を行うためのボタンが表示されるまで待たされる、といったことが避けられる。
など
短所
多くの場合、コマンドや応答は英語を基本としている。そのため、英語を母語としていない者にとっては使いづらい。
直感的な操作はできず、まず基本的なコマンドをある程度覚える必要があるため、アプリケーションのエンドユーザにとっては習得コストがかかる。各プログラムのパラメータも必要に応じて調べる必要がある。
人間の視覚的な能力をあまり活用できない。
選択肢やヘルプなどを画面上に表示することにも限界がある。
画像や図形の操作や編集には向かないか不可能である。
同じ目的のプログラムでも操作方法がまったく異なるケースがある。例えばテキストエディタ ではフルスクリーンエディタとラインエディタに大別できるが、後者では、編集中は結果が反映されないため、中断してモードを切り替える必要がある。
など
関連項目
脚注