わさっきhb

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

BYODでCLI

 次年度の授業準備として,いくつかソフトウェアを試しています.
 BYODはBring Your Own Device,CLIはCommand Line Interfaceの略で,学生・教員,各自のPCに適切なソフトウェアをインストールして,プログラミングをしていこうというわけです.PCはWindows 10とし,有料ソフトウェアは採用しないことを前提とします.インストールにあたり,大きなサイズのダウンロードが必要な場合には,たとえ高機能でも教育上,薦められない(減点要素となる)点にも注意しないといけません.
 個人的な利用状況を書きますと,1年ほど前までは,Cygwin + minttyを使用していました.昨年あるときに,Windows Subsystem for Linux (WSL)が十分に実用的と教わり,インストールすると,快適に使えまして,そこでデスクトップもノートも,移行しました.端末ソフトウェアは,wsl-terminalを経て現在はwslttyです.LinuxUbuntu 18.04です.
 CLIは,キーボードでコマンドを実行するというインタフェースをいい,それを行うためのソフトウェアは,「端末ソフトウェア」,あるいは「端末」「ターミナル(terminal)」と呼ばれます.minttyやwslttyも,端末ソフトウェアです.「tty」や「コンソール(console)」といった語も,端末と密接に関わります.
 ところで,端末ソフトウェアは,インストールしなくてもWindowsに備わっています.「コマンド プロンプト」と「PowerShell」です.Windowsの検索ボックス(「ここに入力して検索」のところ」に,「cmd」または「powers」を打ち込むと,ソフトウェアが表示され*1,Enterキーで起動します.
 他に有用なフリーの端末ソフトウェアとしては,一つのウィンドウで複数の端末を実行可能なCmderや,SSHなどによるリモートログインに有用なPuTTYがあります.
 CLIの「入口」となるのが,端末ソフトウェアであるとして,その「先」,つまり端末ソフトウェアがどことつながって,どんなコマンドを実行できるのかというと,大きく分けて次の3種類になります.

  • 端末ソフトウェアを介して,自分のPCのWindowsコマンドを実行する.
  • 端末ソフトウェアを介して,自分のPCのLinuxコマンドを実行する.
  • 端末ソフトウェアを介して,他の計算機にログイン(リモートログイン)し,その計算機のコマンドを実行する.

 この3種類の利用方法について,一つの端末ソフトウェアが複数に対応することがあるのにも,注意をしないといけません.実際,cmderはコンソール起動時の設定で,WindowsでもPowerShellでもWSLでも選択できます.また自分のPCのWSLでSSHサーバを動かしておけば,PuTTYlocalhostを指定したり,他の端末ソフトウェアでもsshコマンドを実行したりすることで,自分のPCにリモートログインして,Linuxコマンドが実行可能となります.
 WindowsLinuxUnix系OSと呼ぶべきですが,授業利用を考えるとLinux以外は選択肢に入る余地がないことから,本記事では「Linux」と表記しています)とで,提供されるコマンドは異なります.よく知られているのはfindというコマンドです.Linuxのfindコマンドは,条件を指定してファイル名を出力するのに対し,Windows(というよりDOSコマンドプロンプト)のfindコマンドは,ファイルを指定して文字列検索を行うものとなります.
 事情により未完成です.問題意識をいくつか記しておきます

  • 教育(非情報系,情報系それぞれについて)の観点で,どのソフトウェアが最善か? 1つを複数セメスターで使用してもらうのがよいか? 科目ごとにソフトウェアを指定するのがよいか? 指定しないソフトウェアを使う学生にはどう対応すべきか?
  • CLIとして指導すべきことはあるか? 最低限,上矢印などを用いた履歴の処理は知っておくべきだろう.他には? いつ指導する?
  • CLI活用の意義を伝えられるか? 再現性?(悪しきコピペ文化になってしまわないか?)alias? スクリプトバッチ処理)?

*1:「power」までだと,自分の環境ではPowerPointが表示されます.