1969年夏、ニュージャージー州のベル研究所でケン・トンプソンとデニス・リッチーによって始められたUnixプロジェクトは、その後のコンピューター業界に大きな影響を与えました。AndroidやLinux、macOSといったモダンなオペレーティングシステムのルーツはUnixにあるのです。
Unixの革新的な機能の一つとして、小さなプログラマーを組み合わせ、さまざまな処理を行うことを可能にした「パイプ」機能があげられます。パイプは、プログラムの出力を直接別のプログラムの入力として送りすることができる機能で、UNIX V3で導入されました。
このパイプ機能を学ぶことができる「The UNIX Game」が公開されています。
OS誕生50周年を記念し、ノキア・ベル研究所のソフトウェア・システム研究室によって作成されました。
以下遊び方を説明します。
The UNIX Gameの遊び方
ブラウザでトップページを開きます。Googleアカウントなどを使ってログインすればプレイデータを維持できますが、匿名でプレイすることもできます。
クイズは「チャレンジ」に分かれており(最も簡単なのは"hello_world")、それぞれに質問がいくつか準備されています。右上で回答を入力し、出力結果を確認して良さそうならば「Submit」をクリックします。
Question 1を解いてみた
「hello world」チャレンジの「question1」の内容は以下の通りです。
各人の姓を抽出し、姓のリストをアルファベット順に並べ替える。
姓を抽出するコマンドはすでに用意しました。行をソートするコマンドは見つかりましたか?
コードに満足したら、「Submit」ボタンを押してソリューションを検証してください。
各行に名前を格納したファイル「input.txt」があり、そこから姓を抽出する部分まではすでにコマンドが準備されています。あとは出力をソートすれば良いだけです。
▲画面を使ってコマンドを組み立てます。「commands」をクリックし「sort」コマンドを配置します。
▲「sort」コマンドを配置したところです。出力部には実際のUnixコマンドと、コマンドの実行結果が表示されます。
unix50:~$ cat input.txt | cut -d ' ' -f 2 | sort Aho Bourne Cherry Chesson Condon Dolotta Feldman Fraser Haight Johnson Kernighan Lesk Maranzano McIlroy McMahon Morris Osanna Plauger Reiser Ritchie Tague Thompson Weinberger
良さそうならば「Submit」をクリックします。「Congratulations」と表示されたら正解です。
question2、question3と徐々に難易度があがっていきます。
まとめ
The UNIX GameはUnixのパイプの使い方を学習することができるゲームです。awkをはじめとした各種コマンドや、正規表現など関連した知識も身につけることができます。楽しくUnixを学びたい方におすすめです。