技術

CUIとGUIとは?噛み砕いて解説します!【比較】

現在副業でプログラミングスクールのメンターをやってる@dorarepです!

プログラミングを学習するにあたって「CUIを勉強しよう」と言われることも多いと思います。

ですが「CUIじゃないとダメなの?」「なんでCUIなの?」ってところがなかなか説明されないですよね。

ですのでGUIとCUIの違いから、CUIを使う理由や使うべき場所について説明していきたいと思います!

CUIとGUIとは?

CUIはキャラクターユーザインターフェース、GUIはグラフィカルユーザインターフェースです。

ユーザインターフェースって?

グラフィカルユーザインターフェース、キャラクターユーザインターフェース、どちらもユーザインターフェースって言葉が入っていますね。

 

ユーザインターフェースとは、ユーザとシステムの間に入るものです。

そしてユーザからの操作をシステムに伝え、システムからの結果をユーザに伝える役割をします。

CUIとGUIの違い

それを踏まえてCUIとGUIは何かを考えてみましょう。

CUIはキャラクターのユーザインターフェースなので、文字で操作して、その結果が文字で帰ってくるものになります。

そしてGUIはグラフィカルなユーザインターフェースなので、ビジュアルで操作して、その結果がビジュアルで見えるものです。

 

こちらの画像を見てみると、イメージが湧くんじゃないでしょうか。

 

CUICUIは文字で操作して、文字で操作の結果が帰ってくるもの

 

GUIGUIはビジュアルで操作して、ビジュアルで操作の結果が帰ってくるもの

 

見ての通り、普通の人がコンピュータを操作するときに使う方法は、ほぼGUIだと思ってもらって大丈夫かと思います。

そしていわゆる「エンジニアが触ってる黒い画面」はCUIということですね。

何で操作するかの違いでしかない

CUIもGUIも、どちらも同じシステムを何で操作するかの違いでしかありません。

例えるなら、マリオカートを普通のコントローラで操作するか、車のハンドル型のコントローラーで操作するかの違いみたいなものです。

 

つまり、どちらじゃないとダメとか、どちらが優れているというわけではありません。

「CUIを使ってディレクトリを作ってみよう」「CUIを使ってGit操作をしてみよう」といったことが出てくると思いますが、別に同じことをGUIでやったって良いのです。

基本的には、目的や作業内容に合わせてやり易い方法を選べば大丈夫です。

エンジニアがCUIで操作することが多い理由

さて、世間のイメージでも「エンジニアは黒い画面を弄っている」というのがあると思います。

そのイメージ通り、エンジニアはCUIで操作することが多いのは事実です。

 

どちらでも良いと書きましたが、なぜエンジニアはCUIでの操作が多いのでしょうか?

同じ手順を共有・再現しやすい

GUIの作業は、どうしても共有しづらいです。

画面のキャプチャに矢印で印をつけて、「新規保存ボタンを押して」「Yesを押して」…みたいな感じになってしまいますし、それでも「このボタンどこにあるんだろう?」ってなってしまうことも多々あります。

GUIでの作業共有

 

しかしCUIであれば、基本的に『同じコマンドを実行すれば同じ作業が再現できる』ので、コマンドを乗せるだけで様々な作業を共有することができます。

CUIでの作業共有

 

特にコピー&ペーストで同じ作業を実行できるので、GUIに比べて操作ミスしづらいというのもあります。

また作業をコマンドで表現できれば、そのコマンドを実行するプログラムを組めば作業の自動化をすることもできます。

GUIで操作できないコンピュータやシステムもある

全てのコンピュータやシステムがGUI操作に対応しているわけではなく、CUI操作のみにしか対応していないものもあります。

例えばWebサービスを提供しているコンピュータである『Webサーバ』などは、GUIで操作するための仕組みが入ってなくCUIで操作することが多いです。

 

そのためそういったコンピュータやシステムを操作するために、CUIで操作しなければならないこともあります。

操作の記録が残る

CUIは操作記録を残すことができます。

そのため例えば会社のコンピュータで問題があったときに、「全てのコマンド履歴を見て誰がなんのコマンドを打ったから起きたのか」なんてことを調査することもできます。

CUI操作の方が早くできる

タイピングの速さや慣れにも影響しますが、多くの作業は突き詰めるとGUIよりCUIの方が早く操作できるようになります。

 

コンピュータでの作業量の多いエンジニアにとって、仮に1つの作業時間が数秒変わるだけでも生産性に大きく影響します。

そのため「キーボードから手を離したくないから、全ての操作をCUIで行う」なんて人もいます。

CUIはどれだけ使えれば良いの?

人により諸説あると思いますが、プログラミングをしたいのであれば

  • 「何をやってるか分かる」「必要なときに使える」ぐらいには最低限なっておくべき
  • 全ての作業をCUIでやる必要はない

と言うのが私の意見です。

何をやってるか分かる、必要なときに使える

技術の世界では作業手順はCUIによる操作方法で伝えられることがほとんどですし、CUIでしか操作を受けつけないコンピュータやシステムもあります。

そのためCUIが使えないと、どこかで限界はきてしまいます。

 

そういったときにただ手順をコピーして、「良く分からないけど出来た」とすることも可能かもしれません。

しかし、それだと何か問題があったときに対処できなくなってしまいます。

ですのでCUIによる操作は最低限できるようになり、かつ何をやってるか分かるようにはなっておいた方が良いでしょう。

全ての作業をCUIでやる必要はない

とはいえ、全ての作業をCUIでやる必要はないでしょう。

 

一部、何でもかんでもCUIによる操作を勧めるエンジニアもいます。

しかし人によりタイピングの速さも違いますし、向き不向きがあります。

もしあなたがGUIによる操作の方が生産性が上がるのであれば、素直により生産性が高い方を使えば良いと思います。

 

プログラミングの補助ツールである統合開発環境(IDE)はもちろん、Git操作をGUIで行うツール、データベースをGUIで操作するツールなど様々あります。

ですので「Gitコマンドが良く分からない!」なんて人はGithub Desktopなどツールをどんどん使っちゃって良いと思います。

文字だけの教科書より絵が入ってたほうがわかりやすいように、Gitなどのツールも『GUIで操作してるうちに何してるか分かるようになった』なんてことも良くあります。

ですので、将来的にCUIで操作できるようになりたい場合でも、GUIから入ったほうが近道な場合もありますよ。

まとめ:CUIとGUIとは?

GUIとCUIの違いから、CUIが使われる理由、CUIをどれだけ使えば良いのかについて説明しました。

 

最初CUIに慣れない中でCUIによる操作ばかりだと、混乱してしまうことも良くあると思います。

もちろんCUIができるに越したことはないですが、それでもあくまで手段の1つでしかありません。

CUIにこだわりすぎずにGUIと適材適所で組み合わせていきましょう!