ターミナルで遊ぼう！（Windowsユーザー向け）

ターミナルで遊ぶことは、コマンドラインになれるし、新たなツールや技術を学ぶのに最適な方法です。楽しみながら、新しいコマンドやテクニックに親しむことで、学びは深まり、自信がつきます。遊びを通じて得た知識やスキルは、実際の作業にも役立つ可能性があります。

# Windows Terminal

頻繁に使うツールは楽しんで使いたいものですね。例えば、ギターを学ぶ場合、非常に安いギターを買うと、使いにくいし、それを使うこと自体が楽しくなくなり、結果的に上達が阻害されてしまうかもしれません。同じように、良質なターミナルアプリケーションを持っていなければ、使い勝手の悪さからターミナルを嫌ってしまうかもしれません。

Microsoftは「Windows Terminal」という公式の便利な使いやすいターミナルアプリを提供しています。これにより、Command、Powershell、Git bashといった異なる環境を同じアプリ内で簡単に切り替えることができます。さらに、テキストの選択、コピー、貼り付けも自然に行うことができます。例えば、テキストの選択はマウスで行い、コピーは「Ctrl+C」、貼り付けは「Ctrl+V」のショートカットキーを使用します。

<iframe width="560" height="315" src="https://www.youtube.com/embed/8gw0rXPMMPE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

**Windows Terminalのインストール方法:**

以下に、Windows Terminalのインストール方法をご案内します。

1. スタートメニューから「Microsoft Store」を開きます。
2. 右上にある検索ボックスに「Windows Terminal」と入力します。
3. 検索結果から「Windows Terminal」を選択します。
4. 「取得」または「インストール」ボタンをクリックします。

以上でWindows Terminalのインストールは完了です。

# パッケージマネージャ

パッケージマネージャとは、ソフトウェアパッケージのインストール、更新、削除などの管理を一元的に行うためのツールです。主にLinux系のOSで人気がありますが、Windowsでも利用が可能です。

インストールが必要なソフトウェアを指定するだけで、インストールできます。例えば、 `choco install vscode` だけで、Visual Studio Codeをインストールできます。特に一部のコマンドラインツールは、パッケージマネージャを使うことで、より簡単にインストールすることが可能となります。

人気なWindows向けのパッケージマネージャとしては、「Winget」「Chocolatey」「Scoop」があります。

1. **Winget**: Microsoftが開発した公式のパッケージマネージャです。

2. **Chocolatey**: かなり早くから存在しており、多数のソフトウェアが対応しています。また、GUIを持つアプリケーションのインストールもサポートしています。

3. **Scoop**: このツールはユーザー権限でソフトウェアをインストールすることを特徴としています。また、よりコントロールを重視したユーザー向けに設定が可能です。


**Wingetのインストール:**

winget はかなりに新しいため、サポートされるソフトウェアの数は他のパッケージマネージャよりも少ないですので、実際には今日の記事では winget を使用しませんが、公式なので認識したほうがいいと思います。Wingetは、Windows 10を実行しているPCで利用可能です。以下の手順でインストールします。

1. Microsoft Storeを開きます。
2. 検索ボックスに「App Installer」と入力します。
3. 「App Installer」をインストールします。

これで、Windows Terminalやコマンドプロンプトから「winget」コマンドを利用できます。

**Chocolateyのインストール:**

Chocolateyのインストールはコマンドラインを通じて行います。以下の手順でインストールします。

1. 「PowerShell」を開き、それを「管理者として実行」します。
2. 以下のコマンドを入力します：

```powershell
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
```

以上で、Chocolateyがインストールされます。

**Scoopのインストール:**

Scoopもコマンドラインを通じてインストールします。以下の手順でインストールします。

1. 「PowerShell」を開き、それを「管理者として実行」します。
2. 以下のコマンドを入力します：

```powershell
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
iwr -useb get.scoop.sh | iex
```

これでScoopがインストールされます。Scoopの特徴はユーザー権限で動作することなので、管理者権限は必要ありません。


# 楽しいコマンド

コマンドラインを使っていても楽しみたいですよね。そこで、今回は「ntop」「cowsay」「figlet」「meow」という、遊び心満載のコマンドをご紹介します。

## ntop

ntop は、htop と呼ばれる人気のある Linux ツールのポートです。ntop はシステムのリソース使用状況をリアルタイムにモニタリングするツールで、CPU使用率、メモリ使用量、実行中のプロセスなどを視覚的に表示します。

Chocolateyでインストールすることはできます。

```powershell
choco install ntop.portable -y
```

ntopを起動するには、ターミナルから「ntop」というコマンドを実行します。

```powershell
ntop
```

すると、リアルタイムのシステムリソース使用状況が表示されます。
![Screenshot 2023-05-26 at 15.44.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295096/470a6217-b0e4-44f9-1691-1a31e9506ccc.png)

このツールには実際に実用的な用途があります。さまざまなプロセスによってCPUとメモリがどれだけ使用されているかを確認することができます。しかし、私が今日それを共有する主な理由は、それを使用することでハッカー気分になっちゃうからです。😅

## cowsay

cowsayは、入力したテキストを話すアスキーアートの牛を生成するコマンドです。以下の手順でインストールできます。

1. 「PowerShell」を開き、それを「管理者として実行」します。
2. Scoopを使ってインストールするには、以下のコマンドを入力します：

```powershell
scoop install cowsay
```

cowsayを使うには、コマンドラインに「cowsay」コマンドとその後ろに話させたいメッセージを入力します。例えば：

```powershell
cowsay "モーモー"
```

これで牛が「Hello, world!」と話すアートが表示されます。
![Screenshot 2023-05-26 at 15.50.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295096/d8e54f61-9ed8-e717-791b-02fb05655f1b.png)

## figlet

figletは、大きな文字でテキストを表示するコマンドです。インストールは以下の手順で行います。

1. PowerShellを開き、以下のコマンドを入力します：

```powershell
choco install figlet-go -y
```

figletを使うには、コマンドラインに「figlet」コマンドとその後ろに表示させたいテキストを入力します。例えば：

```powershell
figlet Hello, world!
```

これで「Hello, world!」という文字が大きな文字で表示されます。

![Screenshot 2023-05-26 at 15.52.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295096/f89c3ecf-857b-2707-feae-a3a719827b2e.png)

## meow

meowはlolcatという名前の人気のあるLinuxコマンドをWindowsに移植したものです。以下のようにバケットを追加すれば、scoop経由でインストールすることができます。

```powershell
scoop bucket add extras
scoop install meow
```

meowはコマンドラインの出力をカラフルにして表示するツールです。通常の白黒の出力が楽しいカラフルな表示に変わります。

```powershell
meow "Hello, world!"
```

これで「Hello, world!」という文字が色をつけた文字で表示されます。

![Screenshot 2023-05-26 at 15.56.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295096/83cc92a6-7dc1-fe03-f5df-0db1a41a23da.png)

# パイプで組み合わせる

パイプとは、コマンドラインで非常に便利な機能の一つです。パイプ（記号では「|」）は、一つのコマンドの出力を次のコマンドの入力として使うことを可能にします。これにより、複数のコマンドを連鎖させて、より複雑な操作を一行のコマンドで実行することができます。

ここでは、Powershellの「ls」と「meow」コマンドを使った例を挙げて説明します。

「ls」コマンドは、現在のディレクトリの内容をリスト表示するコマンドです。「meow」コマンドは、上を見せたと同じように、入力されたテキストをカラフルな表示するコマンドです。

これら二つのコマンドをパイプでつなげてみましょう：

```
ls | meow
```

出力は以下のように表示されます:

![Screen Recording 2023-05-26 at 16.02.34.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295096/dbd2d27c-aedc-8de4-5438-7b882e7a12af.gif)

今日学んだコマンドをパイプでつなげることもできます。これにより、さらに創造的なコマンドライン操作を実現することが可能です。

例えば、「figlet」コマンドで「Hello, World!」というテキストをアスキーアートに変換し、「meow」コマンドで色を付けることができます：

```
figlet "Hello, World!" | meow
```
![Screenshot 2023-05-26 at 16.09.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295096/0f328093-7125-a6b8-0dd0-35c28188e854.png)

このコマンドを実行すると、「Hello, World!」というフレーズが大きなアスキーアート文字で表示され、その上に「meow」によるカラフルな色が追加されます。

また、「cowsay」コマンドもパイプに追加することができます。これにより、「Hello, World!」という大きくなったフレーズが牛が言うっているように表示されます：

```
figlet "Hello, World!" | cowsay
```

![Screenshot 2023-05-26 at 16.09.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295096/81022290-5839-e708-d6eb-bec12556388a.png)

さらに、「meow」と「cowsay」の両方を使うことも可能です：

```
figlet "Hello, World!" | meow | cowsay
```
このコマンドを実行すると、「Hello, World!」というフレーズが大きなアスキーアート文字で表示され、その上に「meow」によるカラフルな色が追加され、最終的にその全体が「cowsay」による牛の吹き出しに表示されます。
![Screenshot 2023-05-26 at 16.09.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295096/373a6ea5-58d5-84bc-82e0-7290ab0fe3ed.png)

## 実践的なパイプの例

今まで楽しい例を見てきましたが、実用的な例を見てみましょう。

「ls」は、この記事ですでに使用したもので、ディレクトリの内容を一覧表示するコマンドです。

「ls」に加えて「grep」を使用します。Windowsの場合では、grep コマンドは Git Bash だけでデフォルトで使用可能です (ただし、Chocolatey を使用して Powershell にインストールすることもできます)。これは文字列検索ツールで、指定したパターンに一致する行を抽出します。

コマンドは次のようになります。

```bash
ls | grep 'json'
```

「ls」の出力は「grep」の入力となり、「ls」の出力の内容で文字列「json」を検索できるようになります。つまり、現在のディレクトリ内で名前に「json」が含まれるファイルを検索できます。

# ネット上の楽しみを味わおう

ネット上の楽しみもできます。以下に2つの面白いコマンドを紹介します。

まず、今日の天気を調べたいときは「curl」コマンドを使用します。「curl」コマンドは、ネットワークを通じてデータを送受信するためのツールです。以下のコマンドは、沖縄県那覇市の天気を表示する例です：

Powershellで実行する場合、

```powershell
(curl "http://wttr.in/Naha%20City,Okinawa,Japan?tqp0").Content
```

Git Bashで実行する場合、
```bash
curl "http://wttr.in/Naha%20City,Okinawa,Japan?tqp0"
```

このコマンドを実行すると、那覇市の現在の天気、気温、風速などが表示されます。
![Screenshot 2023-05-26 at 16.36.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295096/5d5c7b34-7672-4c39-a7f5-6ea5d445d933.png)
次に、映画を楽しみたいときは「telnet」コマンドを使用します。「telnet」コマンドは、遠隔地のコンピュータに接続するためのツールです。以下のコマンドは、ASCIIアートで描かれた「スターウォーズ」を視聴する例です：

```powershell
telnet towel.blinkenlights.nl
```

このコマンドを実行すると、ASCIIアートのアニメーションが始まり、映画「スターウォーズ」の物語が展開します。
![Screenshot 2023-05-26 at 16.38.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295096/92a393f4-ef1c-1120-6235-78d8a2c1cf0b.png)

# まとめ

この記事では、コマンドラインで遊びました。「meow」コマンドを使って、コマンドラインの出力をカラフルに表示する方法から始め、パイプを使って複数のコマンドを組み合わせ、より複雑な操作を一行のコマンドで実行する方法について説明しました。最後に、ネット上の楽しみも提供することを紹介しました。「curl」と「telnet」コマンドを使って、それぞれ現地の天気を確認し、「スターウォーズ」のASCIIアート版を視聴する方法を紹介しました。

コマンドラインは初めての方には少し難しく感じるかもしれませんが、それはあくまで初めてだからです。いくつかの基本的なコマンドを覚え、慣れてくると、コマンドラインは非常に強力で、自分の作業をより効率的に、そして時にはより楽しくするツールになります。