今日においては、基本的にはGUIとCLIは共存しており、一定以上のスキルを持ったユーザーは必要に応じてGUIとCLIを使い分けているというような状況になっているものと考えられる。私の場合は、サーバーの操作については基本的にCLI、それ以外についてはスクリプトなどバッチ処理を行う場合、あるいはコマンドが必要あるいはそっちの方が楽な場合はCLIを使い、そうでなければGUIを使っているといった状態である。ここではGUIとCLIのそれぞれの利点と欠点について自分なりにまとめてみたい。
GUI
GUIとはGraphical User Interfaceの略で、デスクトップやウィンドウなどと呼ばれるものを使って、一般的なユーザーにとって視覚的に何をしているのか分かりやすいように作られたインターフェースである。今日においては一般的なPCや携帯電話、スマートフォン、タブレットでは最も一般的なインターフェースである。
利点
- 視覚的に何をしているのか直感的で分かりやすい
- コマンドを知らなくてもメニューやアイコンなどからそれに相当する操作をすることができる ((あるファイルを削除したい場合はそのファイルをゴミ箱に入れるなど)) 。
- コマンドプロンプト ((Unix系ではターミナル/端末など)) でCLIを使うことができる。
- 複数のアプリを同時に動作させる場合に多くの場合ウィンドウの切り替えで済む
- アプリにもよるが危険な操作を防止できる場合がある
欠点
- メモリーやCPU、ストレージなどのリソースの消費量が比較的多い
- GUIツールやライブラリーの存在により、脆弱性のリスクが若干高くなる
- OSにもよるが、コマンドで扱える機能の一部が使えない場合がある
- リモート操作時にかなりのデータ量が必要になる ((GUIの情報を転送する必要があるため))
- バッチ処理が困難、また、先行入力もできない
CLI
CLIはCommand-Line Interfaceの略で、MS-DOSやUnix系あるいはGNU/Linuxシステムにおいて、主にサーバー用途で使用する場合などでは主流となる。基本的には文字のみのインターフェースで、コマンドを入れて操作する形式となる。
利点
- メモリーやCPU、ストレージなどのリソースの消費を減らせる ((PCなどでGUI上でコマンドプロンプト、ターミナルなどによる場合は別))
- シェルスクリプトなどでバッチ処理が簡単に行えるため、多数のコマンドを使うような処理を一つにまとめることが容易
- OS/シェルによっては何らかの処理中に先行してコマンドを入れることができる
- リモート操作時は文字情報のみのため、データの転送量も少ない
- GUI関連のツール/ライブラリーを使わない場合、脆弱性を回避することができる
欠点
- コマンドを覚えていないと何もできず、あまり直感的とは言えない
- コマンドの入力ミスなどで取り返しのつかないことを招く危険性が比較的高い
- 複数のアプリ・コマンドを同時に実行する場合に面倒 ((GUI上で使う場合はその限りではない))
最後に
ざっと、上記のようなことが挙げられた。GUIとCLIにはそれぞれ利点と欠点があり、最大限の生産性を考えた場合、それぞれの特徴を活かして使い分けるのが適切のように考えられる。もっとも、その場合、人によってGUI/CLIの使い方が変わることも想定され、なおかつ生産性についても左右されることは考えられるため、唯一の正しい方法はないように考えられる。
GUI/CLIについてはそれぞれの特徴を最大限に活かして、各自でもっとも生産性の高い方法を考えて、実践してみるのが良さそうである。
ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。主にスマートフォン向けアプリやウェブアプリの開発を携わっています。ご用の方はコメントかコンタクトフォームにて。