CUIとGUIとは?コマンドライン操作の魅力を解説。

 

どうも、プログラミングはじめたてのころって、検索しているとやたらコマンド??とかいうのが書かれていますよね。

始めたての頃なんか

「え、こんなコマンドたくさん覚えないといけないの泣」

「Railsインストールしようと思っただけなのにコマンドが意味わからなさすぎて迷子になった」

なんてことありますよね。

今の時代、家庭にあるパソコンのほとんどがGUI(マウスとかクリックとかドラックアンドドロップなど普段の用途で使っているやつです。)で操作することを前提につくられているのでこれは無理ないと思います。ひと昔前であれば基本はCUI(コマンドライン)での操作が基本だったのでその時代に生まれていればこんなことにならなかったのにと生まれてくる時代を恨む気持ち(冗談です。当時はマシンのスペックとかもっと大変なことたくさんです)もわかりますが、ここはグッとこらえてコマンドラインの魅力について知ってもっとコマンドラインと仲良くなりましょう。

 

CUI(コマンドラインユーザインターフェース)とGUI(グラフィカルユーザインターフェース)

 

プログラミングの勉強をはじめて、そろそろ気付き始めてきたかとおもうのですが、実はコンピュータの操作は二パターンあります。マウスを使うか画面をタッチするかだと思った方は惜しいですが、コンピュータの操作を二パターンにわけるとGUIというマウスを使ったり画面をタッチしたりして使う操作方法とCUIという漆黒の画面(設定で変更可能ですが)にコマンドを打ち込むことでパソコンを操作することができます。

まだピンとこない人のために説明すると、GUI(普段慣れた方法)では新しいファイルを作る場合には、Finder(Windowsの場合はエクスプローラ)などを開いて右クリックして新規作成とすると思うのですが、CUIベースでも同様のことが可能で新しいファイルを作るにはtouchコマンドというのを使用します。

touchコマンドを使ってファイルを作成するには、Macの場合ターミナルを開いて(Spotlightを開いてターミナルで検索)下のコマンドを打ち込むとNewFile.txtというファイルが作成されます。

 

touch NewFile.txt

このコマンドを叩いた後にFinderの左の方にある家のマークの部分(ユーザ名が横に書いてあるはずです)をクリックしてファイルの一覧をみてみましょう。Finderでも先ほどのファイルが作成されていることがわかります。

他にもGUI上からはファイルの名前を変えることができたり、中身をみたり、移動させたり、削除したりすることができますが、コマンドライン上からファイル名を変更したり、移動するのはmvコマンド、ファイルの中身をみるのはcatコマンド、削除するのはrmコマンドという形でそれぞれ存在するのでGUI上でできてCUI上でできない操作はあまりありません。(ドラックアンドドロップなどGUI特有の操作はのぞきます)

これらのコマンドは一度覚えてしまうと非常に強力で魅力があります。

 

 

Windowsではコマンド操作ができないの?

 

先の例ではMacを使っていることを前提にお話しましたが、Windowsにコマンド操作がないわけではなくターミナルのようなウィンドウを開いてコマンドを打ち込むところまでは同じなのですが使えるコマンドや出力のされ方に大きな違いがあります。SIerなどだと、まだまだWindowsServerを使って開発を行なっているようなプロジェクトがあるので覚えておいて損はないのですが、Webエンジニア(Web業界のエンジニア)を目指すのでればWindowsの知識はほとんど必要なくLinuxやMacについての知識を十分に身につけておく必要があります。

 

幸いMacもLinuxも違うOSではありますがベースとしているOS(UNIX)が同じなのでコマンドラインの使用感などはほぼ一緒なので、あらかじめMacでコマンドを覚えておけばサーバでの作業なども問題なくこなせるようになります。

 

プログラミング初心者向け。サーバーって何?。初心者がつまずく用語解説

 

WindowsでもVirtualBoxやVagrantなどをいれて使えば、Windowsの上にLinuxOSを走らせることができるのでそちらでコマンドの練習をすることができるのですがWeb系の企業に入社すると大抵MacBooProなどのマシーンが支給されるのでお金貯めてさっさとMacを買っちゃった方が良いです。

  Apple MacBook Pro (13インチ, 2.3GHzデュアルコアi5プロセッサ, 256GB) - スペースグレイ

 

どうせ何年かしたらパソコンも買い換えるのでこの機械に買ってしまっても良いんじゃないでしょうか?

 

コマンドラインの魅力

  ここまででやっと本題ですが、コマンドラインでできることはみなさんが想像しているより多いです。Webページを取得してきて保存したり、PCの空き容量を調べたり、カップラーメンができる3分の時間を測って音を鳴らすこともできます。また、管理者権限は必要ですが、PCシャットダウンをすることはもちろん再起動をかけたり、うっかりPCを破壊したりすることもできます。 3分後にビープ音をならしてカップラーメンの出来上がりを知らせるコマンド

sleep 180;tput bel

 

私自身ある程度プログラミングを始めた頃からターミナルの画面に憧れみたいなものを抱いていたので魅力を語られずともコマンドラインの勉強を始めたのですが、コマンドラインの操作はやっぱり癖があるのでなんどもぶつかっていかないと理解できない部分も多くあります。

 

しかし、一度コマンドラインを使いこなせるようになればそのコマンドの強力さに驚くはずです。コマンドラインの世界では、うっとうしい重いファイルやディレクトリをゴミ箱を介さずに削除することができますし、うっかり一番根っこのディレクトリから全てを削除するコマンドを発行することもできます(俗にバルスと呼ばれます)。ある特定のリストが書き込まれたファイルから重複を取り除いたり、ディレクトリ配下のファイル名を一律書き変えたりすることができます。

 

 

コマンドライン操作やUnixコマンドの勉強方法

 

初心者を悩ませるコマンドライン操作ですが、一番の勉強方法は実際にコマンドを叩いてみることです。一つのコマンドを色々なオプションで叩いてみて結果の違いをみたりするのが良いです。危険なコマンドでなければ(rmなど)いくらコマンドを叩いても害になることはないので、リファレンスなどを見比べながらコマンドを叩きましょう。

 

ただ、いきなり全てのコマンドを覚えるのはなかなか辛いので、GUIでできる操作をコマンドラインで行うにはどうやるのか?というのを考えながら逆引き的にコマンドを覚えておくと効率よくコマンド操作を理解できます。最初にcdコマンドなどでディレクトリの概念は理解していく必要がありますが、そこだけわかればあとはファイルを作るには?ファイルを消すには?ファイルの名前を変えるには?ファイルを移動させるには?などなどを徐々に覚えておくと知らないうちにコマンド操作への抵抗がなくなっていきます。

 

まとめ

 

ここまでコマンドライン操作の魅力やその勉強方法について書いてきましたがいかがでしたでしょうか?どうしてもプログラミングになれない初学者の方はコマンドラインのくせになれず勉強が億劫になってしまいがちですが、めげずに向き合うことでだんだんとその魅力に気づけると思います。

基本的なコマンド操作はサーバエンジニア、フロントエンジニア限らず必須のスキルなのでぜひとも楽しみながら覚えていただければと思います。 勉強方法のところにはかきませんでしたが、シェルスクリプトというUnixコマンドの寄せ集めで作るスクリプトを書いたりしながらコマンド操作を覚えていくというような方法もあります。シェルスクリプトもUnixコマンドという強力なツールを使いながら簡潔に処理を記述できる言語なのでまた別の機会に紹介します。