CUIとGUI

最終更新日: 2019年 04月07日

普段自分のパソコンを何気なく触っているとマウスやタッチパネルを使ってアイコンを押して、ファイルを開いたりブラウザを 起動していたりすると思いますが、実はそれらの操作方法はGUI(グラフィカルユーザーインターフェース)と呼ばれるコンピュータの 操作方法の一つです。

プログラミングに馴染みのない人は「アイコンをクリックしたりすること以外にコンピュータの操作方法があるの?」という疑問を持ちそうですが、 コンピュータの操作方法は大きく分けて二つあり、一つがみなさんの慣れ親しんだGUI(グラフィカルユーザーインターフェース)で、もう一つは プログラミングを行う上で必須の操作方法であるCUI(キャラクターユーザーインターフェース)になります。

今回はIT基礎として知っておきたいCUIとGUIの話をしていきます。

CUIとGUIの違い

CUIとGUIについて触れたところでまずCUIとGUIの違いを説明しようと思うのですが両者の違いは簡単です。

「グラフィカルな操作をするかどうか?」

ということだけです。グラフィカルという言葉の含まれているGUIは当然グラフィカルでみなさんがいつも使っているコンピュータの使い方です。 パソコンを立ち上げて、ブラウザを起動するためにブラウザのアイコンをクリックして、検索窓に検索ワードを入れてエンターという全ての操作が グラフィカルな操作になります。

一方、CUIでの操作というのはコマンドライン操作と言われ、Windowsであればコマンドプロンプト、Macであればターミナルというソフトを立ち上げて操作を行なっていきます。 GUIではダブルクリック、ドラック&ドロップなどの操作によってコンピュータに指示を出しますが、CUIの場合は全てこのターミナルやコマンドプロンプトのコマンドライン上に コマンドという文字列を打ち込むことによって操作を行なっていきます。

例えば、Macでデスクトップのファイルの一覧を確認しようとしたらFinderでファイルの一覧を確認するか、そのままデスクトップ常にあるファイルを 確認すると思いますが、コマンドラインでファイルを確認する場合は、lsコマンドというコマンドを用いてファイルの一覧を確認することができます。

$ ls ~/Desktop
hoge.txt fuga.png

この記事を読んでいるみなさんもお使いのパソコンでターミナルを開いて ls ~/Desktop と打ってみてください。 (ターミナルはスポットライトで検索するか、Finder -> アプリケーション -> ユーティリティ -> ターミナルとすると起動できます。)

※ Windowswをお使いの方はコマンドプロンプトを開いて、dirコマンドを叩くと同様のことが確認できます。

このようにCUIでの操作はコマンドを打ち込むことによってコンピュータに指示を出していく操作方法です。 ここまできくとコマンドラインを操作するにはコマンドも覚えないといけないし、ターミナルを開いてコマンド叩いてファイルの一覧を 確認するよりはデスクトップに表示されているファイルの一覧を確認する方が早いのでCUIを使う意味がわからないと思いますが、 次でプログラミングにCUI操作が必要なことを説明していきます。

なぜプログラミングにはCUI操作が必要なのか?

先ほどの例だといまいちCUI操作を使う意味や利点を見出せなかったかもしれませんが、CUI操作には多くのメリットがあります。

まず第一に、コマンドラインでは全てを文字情報でやりとりするのでGUIに比べて圧倒的に動作が軽いです。GUIは当然グラフィカルに表示を行うので より現実世界に近く直感的なのはわかりますが、多くの情報を描画する必要があるのでCUIに比べて動作が重いです。

その他にも先ほどコマンドラインはコマンドと呼ばれる文字列を打ち込むことでコンピュータを操作するのですが、MacやLinuxなどのUnix互換OS のコンピュータには強力なコマンドが用意されているので、一括でファイルを移動したり、ファイルをリネームしたりといった操作をGUIより 効率的に操作できるという利点があります。

これを踏まえてプログラミングを行う際にCUIの操作を学ぶ必要がある理由ですが、まず最初にどのプログラミング言語もコマンドラインからプログラムを実行するので、コマンドラインの操作が必要になります。

PHPもRubyも基本的には

php [実行したいファイル]
ruby [実行したいファイル]

というように実行したいプログラムを指定して実行しますし、実行結果はターミナルに出力されるのでプログラミングはコマンドライン上で完結します。 一部のIDEなどを使用するとIDE上でプログラムを実行して、実行結果を確認することも可能ですが内部的にはIDEからコマンドを発行して操作を行なっているので本質的なところは何もかわりません。

コマンドラインでプログラムを起動するのでそれができれば他は覚えなくてもというかというとそういうわけでもなく、 コマンドラインを使ってプログラムを実行していると周辺のファイルを確認したり、フォルダを作成したりということがコマンドラインでできた方が便利なので 結果的にコマンドラインが使えないと非常に困ります。

この他にも、実際の現場では自分のPC上でシステムを動かすはもちろんのことですがプラスでクラウド上にあるサーバーにログインして、 コンピュータを操作するなんていうことはざらにあります。そして、クラウド上にあるサーバーの多くはGUIでの純粋なOSの操作環境を用意していないので そういった作業を担当する場合にはコマンドラインの操作は必須となります。

プログラミングを始めたてのひとはこの慣れないコマンド操作に苦労するのですが、今後エンジニアとして働いていくには必須のスキルなのでぜひとも身につけておきたいです。

GUIにできてCUIにできないことはない?

さきほどからやたらとGUIとCUIを比較していますが、実はGUIでできることの多くはCUIで行うことが可能です。

すでにわかっている人には自明なのでいまさら語る必要もないことなのですが、コンピュータの歴史を紐解くとコンピュータというのはもともと CUIでのコマンドラインベースでの操作しかできなかったのでGUIでできてCUIでできないことはほとんどないです。

複雑なものはなかなた大変ですが「Hello World」などの簡単な文字列をコマンドラインからプリントアウトすることもできますし、 他のサイトの画像をダウンロードすることもできますし、ターミナルからコンピュータを再起動することもできます。

コマンドラインのオススメの勉強方として普段GUIでやっている操作をコマンドラインでやってみるというものです。

例えば、MacのGUIからは新しいファイルが作れて、そこに文字を書き込めて、中身を開いてみれて、ファイルを削除できてというのがあるので それをコマンドラインではどのコマンドを使って実現できるのか?ということを順番にやっていきます。

これをなんども繰り返すと次第にコマンドラインもGUIと区別なく扱えるようになるので一度試してみるのをオススメします。

少し、勉強方について脱線はしましたがここではGUIにできてCUIにできないことはほぼないという考えを覚えて頂ければと思います。

まとめ

  • 普段パソコンを使っている時のグラフィカルな操作がGUI
  • コマンドラインベースでコマンドを打ち込んで操作するのがCUI
  • 普段GUIでやっている操作をコマンドラインで試してみる

以上、CUIとGUIの違いについてとなぜプログラミングを行う上でコマンドラインが大切なのかについてまとめました。

コマンドラインは普段馴染みがないのとちょっと癖があるので初心者のハードルにはなっていると思うのですが、コマンドラインに一度なれてしまうと GUIよりも早く操作ができるようになるなんてことも多くあります。もっというと初心者が環境構築にはまる理由のがコマンドライン操作に慣れていなかったり OSの仕組みを理解していなかったりというところなのでコマンドラインを抵抗なく触れるようになっておけば怖いものなしです。

実際のコマンド、操作方法などはLinuxのカリキュラムに譲りますがここではCUIとGUIの違いとCUIを使うメリットなどを覚えて頂ければと思います。