「キャラクタユーザインタフェース」の版間の差分

削除された内容 追加された内容
アクロニムとしてConsole User Interfaceを追記。出典も追加した。
出典を追記。
1行目:
[[ファイル:Bash screenshot.png|thumb|200px|CLIの画面例。内容は[[Gentoo Linux]]でBashコマンドを実行したもの。]]
'''コマンドラインインタフェース''' ({{Lang|en|command line interface, '''CLI'''}}) または'''キャラクタユーザインタフェース''' ({{Lang|en|character user interface, '''CUI'''}}) (あるいは'''キャラクタベースユーザインタフェース''' ({{Lang|en|character-based user interface, '''CUI'''}}) <ref>[http://www.pcmag.com/encyclopedia/term/40572/cui CUI Definition from PC Magazine Encyclopedia]</ref>、'''コンソールユーザインタフェース''' ({{Lang|en|console user interface, '''CUI'''}}) <ref>[http://www.winehq.org/docs/wineusr-guide/cui-programs WineHQ - Text mode programs (CUI: Console User Interface)]</ref> <ref>[http://publib.boulder.ibm.com/infocenter/iadthelp/v6r0/index.jsp?topic=/com.ibm.etools.egl.doc/topics/ceglinf0010.html ヘルプ - IBM, EGL アプリケーションの開発 - コンソール・ユーザー・インターフェース]</ref>とも)は、コンピュータにおいて、[[キーボード (コンピュータ)|キーボード]]を用いて[[入力]]を行い[[文字]]によって[[出力]]を行う様式の[[ユーザインタフェース]]である。[[グラフィカルユーザインタフェース]] (GUI) の対義語として使われる。{{要出典|範囲=CUIという呼称は日本で用いられるものであり、英語圏などではあまり用いられない。|date=2014年4月19日}}
コンソール入出力は'''[[標準入出力]]'''として、多くのプログラム言語で標準ライブラリや組み込みの言語機能として規格化されている<ref>[http://docs.oracle.com/cd/E19205-01/820-2985/loc_io/6_1.htm Rogue Wave Software, Online Documentation, 6.1 標準入出力ストリームとは]</ref>
 
== 特徴 ==
{{独自研究|section=1|date=2013年4月}}
CLIは旧式のインタフェースだと思われがちだが、[[GUI]]環境には無い長所も持っている<ref>[http://www.ced.is.utsunomiya-u.ac.jp/lecture/2004/prog/p1/debugger/redirect.php コマンドプロンプトの応用]</ref> <ref>[http://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/prog1/12-02.html 第十二回-02 コンソールアプリケーションってどう使われているの?]</ref>。そのため、[[Linux]]などを含む[[Unix]]系のサーバではCLIで操作することが現在でも主流であるし、{{要出典|範囲=開発者などの中にはコマンドライン環境でほとんどの作業を済ませる者がいる。|date=2014年4月19日}}
また、従来のWindowsはコマンドラインインタフェースが貧弱であったが、近年では[[Windows PowerShell]]のようにCLI環境を強化する動きが現われている。
 
=== 長所 ===
* 処理の自動化([[バッチ]])が容易である(一連のコマンドや制御文は文字情報なのでファイルに単純に保存しておくことができ、それを後で何度でも実行・修正できる)。
* プログラムを作成する際、ユーザからの入力を処理する部分([[コマンドラインインタプリタ]])を比較的簡単に作れる。GUIのプログラムは、一般にユーザインタフェースの作成に手間がかかり、内部状態も多くなる。これに関連して、異なるOSにプログラムを移植する際も、標準入出力のみを使用するコンソールプログラムのほうがはるかに移植しやすい。また、標準入出力は多くのプログラム言語で標準ライブラリや組み込みの言語機能として提供されているため、プログラム言語の入門やプロトタイピング、[[ソフトウェアテスト|テストドライバ]]としても向いている<ref>[http://msdn.microsoft.com/ja-jp/library/k1s1x6ck%28v=vs.90%29.aspx コンソール アプリケーション テンプレート]</ref> <ref>[http://msdn.microsoft.com/ja-jp/library/hh875011.aspx Visual C++ の Win32 コンソール アプリケーション]</ref> <ref>[http://msdn.microsoft.com/ja-jp/library/452fz12a%28v=vs.90%29.aspx コンソール アプリケーションの作成 (Visual C#)]</ref>。
* プログラムの出力を別のプログラムに直接入力したり(簡易なプロセス間通信: [[パイプ]])、ファイルに保存したりできる。なお、多くの[[統合開発環境]](IDE)ではGUIのクライアントを使って直感的にアプリケーションを開発できるようになっているが、プログラムのコンパイル・ビルド時にバックで動作しているのは(単独でも動作可能な)コマンドラインの[[コンパイラ]]や[[リンカ]]である。
* リモートログインする場合、[[クライアント (コンピュータ)|クライアント]]側で専用の[[ソフトウェア]]が不要である([[Secure_Shell|SSH]]クライアント程度で済む)ことが多い。
* 別のコンピュータにリモートログインする場合、画像情報の転送が不要あるいは必要最低限に抑えられるため、ネットワークへの負荷が低い。低速な回線でもリモート操作ができる。
* 一般に自動補完機能(オートコンプリート)や履歴が利用できるため、コマンドをすべて手で入力する必要はない<ref>[http://www.atmarkit.co.jp/fwin2k/win2ktips/247comhist/comhist.html @IT:Windows TIPS -- Hint:コマンド・プロンプトの履歴機能を活用する]</ref>
* キーボードだけで操作できるため、手慣れたユーザは作業を敏速に行える。
* 直前操作の確認や、資料収集(操作履歴の保存・他人への提供)などが容易である。