わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

なぜコマンドラインインタフェースを学ぶのか

「前回の授業は,多くのみなさんが,はじめてLinuxを使うことになったと思います.ブラウザ(Firefox)や日本語入力は,Windowsとほぼ同じで,左下からのメニューは,見た目は大幅に違っていましたが,そこからアプリを実行できるという点では,Linux(のデスクトップ)もWindowsも同じでした.
とはいえ授業で最も時間をとったのは,端末*1からのコマンド入力です.課題に解答する形で,予習してもらったとおり,コマンドラインインタフェースというものです.
それで,教室を回っていると,一人の学生から質問がありました.『なんでわざわざ,こんなことをしているのか』というのです.昔の言い方だと『かったるい』ですが,もっと縮めて『タリぃ』と言って,通じるでしょうか.
それはさておき,コマンドラインインタフェースを,必修科目の中で学ぶ価値があると思っています.主に2つの理由があります.
一つは,これからプログラミングを始めていきますが,その基本になるのは『ファイル操作』だということです.
テキストエディタの画面上で,与えられたプログラムを打ち込んだり,お手本から離れて創造的なプログラムを書いたりするだけなら,ファイル操作をしないというのも,可能です.しかし手段は何であれ,書いたプログラムをコンパイルしようとすると,ファイルに保存する必要があります.その際,テキストエディタによる,ファイル操作を行います.
ファイルに保存したら,端末を使って,コンパイルを行います.コンパイルの辞書的な定義はともかくとして,我々の目に見えるのは,『ソースファイル』を『実行ファイル』に変換することであり,これもまた,ファイル操作なのです.
前回の復習を兼ねて,コマンド名を挙げながら説明していくと,cpコマンドで,ファイルのコピーを作るのも,mvでファイル名を変更するのも,rmでいらなくなったファイルを削除するのも,ファイル操作なのです.mkdirコマンドでディレクトリを作るのも,再びですがmvで,ホームディレクトリなどにあるファイルを,他のディレクトリに移動するのも,ファイル操作です.
catコマンドで中身を見るのも,ファイル操作です.ファイルの中身は変わりませんが,『読み出す』というのも,ファイル操作に含まれます.lsコマンドも同様です.
それに対し,pwdコマンドでカレントディレクトリを表示させるだとか,cdにパラメータを書いたり書かなかったりしてカレントディレクトリを変更することや,dateコマンドで現在の日時を確認するといった場合には,そういったコマンドを実行しても,ファイル操作を含みません*2.端末を有効活用するためのコマンドと言えます.
もう一つの理由に話を進める前に,ファイルは簡単に作ったり消したりいろいろできるけれども,作成したら,PCの電源を切っても残っており,学内計算機システムにおいては,作成したのと別のPCを起動して,そこからファイルを閲覧できるということ,ですので,ファイルの生存期間はPCの稼働より大きくできることも,知っておいてください.少しばかり大げさに言うと,ファイル操作は『情報を残す技術』*3となります.
さて,コマンドラインインタフェースを知っておくもう一つの理由は,これが我々とコンピュータとの,コミュニケーションとなるからです.
ちなみに人とコンピュータとのやりとりをいうときには,『コミュニケーション』よりも『インタラクション』という言葉が好まれます.interactionと綴りまして,interのactionということで,相互作用と訳されることもありますが,人とコンピュータとの場合はカタカナ書きにしておくといいでしょう.
この部屋の計算機環境と別の状況を考えてみてください.機器をつないで,Unix系OSが無事に立ち上がり,画面上にはプロンプトが出たとします.
そのときに,pwdだとかlsだとかdateだとかの,コマンドを実行してみればいいのです.
言ってみれば,異国から来た,日本語も英語も通じるか分からない人に対し,『こんにちは』『Hello.』と,声をかけるようなものです.
その声かけから,人どうしのコミュニケーションが始まります.
コンピュータの場合は,そして文字によるインタフェースにおいては,我々がhelloに相当するような,Unix系OSに共通のコマンドを一つ,打ち込んで,最後にEnterキーを押せば,それがインタラクションの手始めになる,ということです」

補足

  • GUI (Graphical User Interface)と比べたCLI (Command Line Interface)の利点は,前回授業の中で解説済みです.演習課題の最後の出題(ファイル探し)は,GUIで取り組むとキリがないのに対し,コマンドだと一発です.もちろん,CLIよりもGUIのほうが適切という場面もあります.
  • 上で挙げたコマンドのうちdateだけは,実際には授業で使用していませんでした.

スライド化

授業用にスライドを作成しました.

*1:ホストコンピュータにつながった末端の機器のことではなく,Linuxデスクトップで実行できるアプリケーションをいいます.「terminal(ターミナル)」とも呼ばれます.

*2:実際にはそれらでも,ファイル操作を伴います.2種類あって,一つはコマンドサーチパスよりコマンドに対応する実行ファイルを見つけて,読み出しています.もう一つは,ヒストリ(実行履歴)の操作で,Bashであれば~/.bash_historyというファイルに,実行したコマンドが追記されます.

*3:rmはファイル(情報)を削除するコマンドですが,これを実行する際にも,「何を残すか」を考えた上で削除するのですから,広い意味で「情報を残す技術」の適用と言えます.