はじめに
CUI は英語圏では通用しないようです。CLI という正しい用語を使いましょう。というか CUI のことしか書いていない初心者向け記事、量産させすぎ😡
- ❌ CUI (キャラクターユーザーインターフェース)なんて言葉は英語にはありません
- 🟢 CLI (コマンドラインインターフェース)が正しい用語です
- 🟢 GUI (グラフィカルユーザーインターフェース)も正しい用語です
なんども繰り返されている話題ですが、ふと書きたくなったので書きます。
CLI (コマンドラインインターフェース)ってなに?
CLI とはその名の通り、コマンドラインを使ったインターフェースのことです。つまり一般的にはシェルを使うユーザーインターフェースです。よく見るコレ↓です。
$ ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
コマンドラインインターフェースとは、コマンドラインにコマンドを入力することでコンピュータを使うインターフェースです。ちなみにコマンドとは日本語で命令のことです。大抵の場合、コマンドは文字です。
初期のコンピュータでは(CUI ではなく)CLI が使われていました。これは初期の頃はディスプレイがまだできておらず、処理結果は紙に印字されていたからです。画面に出力 (output) するプログラミング言語の関数名が print
や printf
だったりするのはその時代の名残でしょう。紙に印字された文字は消すことができません。そのためコンピュータに命令を出す→その結果が出力されるというインターフェースでなければコンピュータを使うことができませんでした。
CUI (キャラクターユーザーインターフェース)とは
CUIは誤用です。誤用に対して説明するのもおかしな話ですが、CUI とはキャラクターユーザーインターフェースの言葉通りに解釈すると、文字を使ったインターフェースのことです。GUI という言葉グラフィカルユーザーインターフェースなので、それに対応して CUI という言葉が日本で生まれたというのが一般的な説だと思われます。
CLI も CUI も文字を使うのだから同じ意味なのでは?と考えるかもしれませんが、コマンドではない文字もありますよね? 例えばターミナルの中で動くテキストベースのテキストエディタなどです。テキストエディタはコマンドを入力して操作するわけではないので CLI ではありません。ちなみにこのテキストベースのアプリケーションを英語圏では TUI (テキストベースドユーザーインターフェース)と呼ぶようです。実質的に TUI = CUI です。
コマンド入力で操作できるテキストエディタも一応ありますが、その話は置いておきましょう。それは CLI でも使えるテキストエディタというだけの話です。
ちなみに CUI はコンソールユーザーインターフェースの略であるという説もあるようですが、こちらはその言葉通り解釈するとコンソール(≒ターミナル)を使うユーザーインターフェースのことです。そういや最近のターミナルは画像を表示できるようになっているのですが、もしターミナルの中で GUI (?) を動かすようになったら、それは TUI (Text-based ... ) ではないので CUI (Console ...) と呼ぶのが適切なのではないかと思ったり思わなかったり。
GUI(グラフィカルユーザーインターフェース)とは
説明するまでもなく、画像を使ったインターフェースのことですね。簡単に言えば Windows や Mac です。マウスやタッチパッドなどのポインティングデバイスを使って操作するインターフェースです。
CLI はシェルスクリプトで自動化できるが CUI は無理
実はこの記事はシェルスクリプトに関係する記事です。というのもシェルスクリプトで使用できるコマンドは CLI 用のコマンドであって、CUI (TUI) 用のソフトウェアではないからです。CUI では文字だけを使いますが、だからといってシェルスクリプトで CUI 用のソフトウェア(例えばテキストエディタ)が使えるわけではありません。GUI の登場で CUI は廃れつつありますが、CLI はそうではありません。
シェルスクリプトからコマンドを呼び出せるのは、そのコマンドが文字だけを使っているからではなく、コマンドラインインターフェースから実行するコマンドで呼び出せるようになっているからです。文字ではなくコマンド(命令)であることが重要なのです。
と書いたもののなんでも手段はあるわけで、expect
コマンドのようなものを使えば CUI (TUI) 用のソフトウェアでもシェルスクリプト操作できてしまいます。ただし CUI (TUI) 用のソフトウェアはシェルスクリプトから操作できるように考慮されておらず、無理やり操作する形になって面倒なことになるので可能な限り避けることをおすすめします。
さいごに
昔から言われているのにいつまで経っても正しい用語が普及しないので書いてみました。
英語圏でも CUI が使われている例はあるよなどという話は (∩゚д゚)アーアーきこえなーい なのであしからず。https://en.wikipedia.org/wiki/Character_user_interface でリダイレクトされるぐらいには認知されています。
それにしても一体どういう経緯で CUI という用語が普及してしまったんでしょうかね。