最近Ubuntuの情報をいろいろと調べていると、YouTubeのタイムラインにもUbuntuに関係した動画がちらほらと見られるようになった。
 別にそれは良いのだが、提示された動画の中に「Linuxのコマンドを解説」というものがそれなりにある。試しに聞いてみるとタイトル通り、Linuxのターミナルなどで使用する基本的なコマンドを解説していた。
 Windowsでの操作が一般的な方には想像しづらいかもしれないが、Linuxはグラフィカルなインターフェースのアプリだけで無く、文字ベースのコマンドをキーボードで投入してパソコンを制御する。Windows11ではWindowsキー+Xで表示されるメニューの「ターミナル」と書かれたそれである。
 Linuxでサーバーを構築する場合はデスクトップ環境は必要無いので、主にターミナルを使用するのが基本だ。デスクトップ環境はパソコン二対しての負荷がかかるため、それらを使用しなければわりに貧弱なハードウエアのパソコンでもサーバーとして運用できる。
 ターミナルを使用する上で欠かせないのが各種コマンドと言われるプログラムである。Windowsのアプリに比べると単機能で小さなプログラムが、その用途に従ってたくさん用意されている。動画ではその中でも使用頻度がわりに高いものを取り上げていた。
 これらの動画を聞いていて思ったのは、これは学生の頃の英語の覚え方に似ているということだ。
 中学高校の英語の勉強で、よく行われていたのは単語帳を作って英単語を覚えることだった。どれほどの英単語を覚えることができれば試験対策にもなる。
 なので日本人は覚えている英単語の数は多いと思うが、それなのに話せたり聞き取れない人の割合も多い。
 実はこのキーワードを覚えるという勉強方法は、コンピューターの世界でもある。それはプログラム言語だ。
 80年代初頭、日本でもパーソナルコンピュータが販売されたとき、電源を入れて使用できるのはWindowsのようなものではなく、BASICと呼ばれるプログラム環境だった。
 BASICはbeginner's all-purpose symbolic instruction Chordの略とされており、プログラム初心者が学びやすく作られた言語である。プログラム命令は英単語ベースのものが使われ、わりに判りやすくなっている。
 例えば条件分岐ではIF命令が、無情機分岐命令ではGOTOが、画面に文字などおを表示するにはPRINTなどを使用する。
 それでもプログラム言語なので一定の文法があるが、これらの入門書にありがちだったのがBASICで使用する命令を人通り説明するものだった。
 つまり英単語を覚えるのと一緒だ。そうすれば確かにプログラム命令は覚えられるが、どうやってプログラムを作るかについては理解が及ばない場合がある。
 例えばPRINT分の説明は、PRINTに続く文字列などを画面に出力しますとなっていると、PRINTの機能は判るが、実際にどう使うのかが判らない。
 この場合、画面に"hello"と表示したいのであればPRINT "hello"という命令を使用しますと書けば判りやすいと思うのだ。
 以前、新人が職場に配置になった時、プログラムを覚えたいという人にこうアドバイスをした。
「まず、どんなプログラムを作ってみたいか考えなさい」
 別に機能盛りだくさんで、職場で有効なプログラムである必要は無い。万年カレンダーやバイオリズムの計算を行うプログラムで言い。
 万年カレンダーなら誕生日をどうやって入力するか、日付から曜日を求める計算式はどのようになるか、そして曜日をどのように表示するか。
 これらの方式を決定できれば、あとはそれをプログラム言語に落とすだけである。そしてどんな処理をどんな書式にすれば良いかを考える。
 方式、アルゴリズムとも言うがそれを考えることができればプログラム言語に依存しないためにどんなものにも書き下すことができる。
 大切なのはプログラム言語を覚えることではなく、問題を解決するためにどんな手法をとればよいかを検討できることだ。それができればプログラマと言うよりシステムエンジニアに近くなる。
 Linuxを使うときに考えるのは、Linuxサーバーを構築する意味があるのかということだ。Windowsでもサーバー機能はある。しかも有料でマイクロソフトのメンテナンスが付いてくる。
 Linuxはオープンソフトウエアで内部が晒されているから世界中のエンジニアがメンテナンスしていると言えるが、そこに責任は発生しない。修正パッチも自動ではないし適用するかは自己責任である。
 それでも安価で導入できるしデスクトップ環境を必要としなければ動作も軽い。サーバーが稼働し始めて年単位で再起動もかからずに運用できるのもざらである。
 ただ、コマンドで制御しなければならないのでその分難しく感じるだろう。コマンドの種類も数も膨大で規模もまちまちだ。その全てを覚えることは不可能だろう。
 だからサーバーで何を行いたいのかを決めた後に、それに必要なものを調べていくしかない。何台もサーバーを構築していけばどんなアプリが必要で、どんな操作をしなければならないかが判ってくる。
 コマンドを暗記するのも良いが、まずコンピューターで何がしたいのかを明確にしたほうが良いと思えるのである。
 学習は明確な目標があればより、効率をますのである。
 なのでLinuxサーバーを覚えたいと思うのであれば、まずはLinuxサーバーで何をしたいのかを明確にしたら良いのではないかと思う。
 しかし、この意見もわたし一人が思っていることかもしれない。コンピューターの世界は思うより早く進歩する。
 わたしもそれに置いてけぼりを食らわないように気を付けなければならないだろう。

 次回は、わたしと信仰の関わり合いについて語りたい。