個人的な備忘録：LT会で知ったgpingコマンドの概要整理と実際にインストールして使ってみた感想

## はじめに
今回は、「**こんなコマンドがあったのか**」という驚きから、記事を書いてみることにしました。

:::note warn
***普段は`ping`コマンドばかり使っていましたが、最近、`gping`という面白いコマンドを教えていただく機会がありました。***
:::

***本記事は、私の個人的な備忘録として作成したものですが、どなたかの技術的な参考になれば幸いです。***

## 書こうと思ったきっかけ
今月、受講しているスクールのLT会に参加する機会があり、そこでさまざまなコマンドを教えていただきました。

:::note info
**正直、あまり使ったことのないコマンドばかりで、「***こんな便利なコマンドがあるんだ***」と強く印象に残りました。**
:::

その中でも、特に興味を引かれたのが`gping`コマンドです。実際にインストールして使ってみると、その美しいシェル表示に感動しました。

***この体験を共有したいと思い、記事としてまとめることにしました。***

## `gping`コマンドについて
`gping`は、ネットワークの状態を視覚的にモニタリングできるツールです。

:::note warn
***一般的な`ping`コマンドに似ていますが、リアルタイムでパケットの遅延時間（ラウンドトリップタイム）をグラフとして描画してくれる点が特徴です。***
:::

これにより、ネットワークの応答時間の変化を直感的に把握することができます。

## `gping`コマンドの特徴について

- **リアルタイムグラフ表示**  
  グラフィカルにネットワークの応答時間をリアルタイムで描画します。

- **複数ホストの監視**  
  複数のホストを同時に監視可能で、それぞれの応答時間を比較することができます。

- **シンプルな操作**  
  通常の`ping`コマンドに似た操作感で、簡単に利用できます。

- **クロスプラットフォーム**  
  Linux、macOS、Windowsで利用可能なため、さまざまな環境で活用できます。


## `gping`コマンドの主な使い道

- **ネットワーク監視**  
  リアルタイムで応答時間の変化を監視し、問題を早期に発見できます。

- **トラブルシューティング**  
  ネットワークの不安定な箇所や遅延の原因を特定するのに役立ちます。

- **複数サーバーの比較**  
  同時に複数のサーバーを監視することで、どのサーバーに問題があるかを迅速に判断できます。

## 実際にコマンドをインストールしてみた
私の環境ではデフォルトでインストールされていなかったため、以下のエラーメッセージが表示されました。

```bash
➜  ~ gping google.com
zsh: command not found: gping
```

そこで、`Homebrew`を使って手動でインストールしました。

**Homebrewでのインストール（macOS, Linux）**

```bash
brew install gping
```

**実際のインストールログは以下の通りです。**

```bash
➜  ~ brew install gping
==> Auto-updating Homebrew...
Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with
HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
fatal: bad boolean config value 'tru' for 'rebase.updaterefs'
fatal: bad boolean config value 'tru' for 'rebase.updaterefs'
fatal: bad boolean config value 'tru' for 'rebase.updaterefs'
fatal: bad boolean config value 'tru' for 'rebase.updaterefs'
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core and homebrew/cask).
==> New Formulae
beanquery       cdncheck        dpic            html2markdown   pnpm@9          rmtrash         sshx
cargo-hack      chaos-client    guile-fibers    perl-dbd-mysql  prism-cli       shepherd        xtermcontrol
==> New Casks
display-pilot         helpwire-operator     mihomo-party          tdr-molotok           windowkeys

You have 28 outdated formulae and 2 outdated casks installed.

==> Downloading https://ghcr.io/v2/homebrew/core/gping/manifests/1.19.0
######################################################################################################## 100.0%
==> Fetching gping
==> Downloading https://ghcr.io/v2/homebrew/core/gping/blobs/sha256:94b2db03885d870c498358c65469c840a66884a4791
######################################################################################################## 100.0%
==> Pouring gping--1.19.0.sonoma.bottle.tar.gz
🍺  /usr/local/Cellar/gping/1.19.0: 9 files, 3MB
==> Running `brew cleanup gping`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
```

### 実際に`gping`コマンドを使ってみた

ここでは、単一ホストを監視する方法と複数ホストを監視する方法をご紹介してみます。

**単一ホストを監視**

以下のコマンドで、`google.com`の応答時間をリアルタイムで監視しました。

```bash
gping google.com
```

**実際の出力例**

```bash
google.com (2404:6800:400a:805::200e)                last 6.092ms      min 5.455ms       max 9.849ms       avg 6.653ms       jtr 29µs         p95 7.246ms       t/o 0             
9.985ms│
       │
       │
       │
       │
       │
       │
       │                                                                 ⡀                                  
9.139ms│                                                                 ⡇                                  
       │                                                                 ⡇                                  
       │                                                                 ⡇                                  
       │                                                                ⢀⡇                                  
       │                                                                ⢸⡇                                  
       │                                                                ⢸⡇                                  
       │                                                                ⢸⢱                                  
       │                                                                ⢸⢸                                  
8.293ms│                                                                ⢸⢸                                  
       │                                                                ⢸⢸                                  
       │                                                                ⢸⢸                                  
       │         ⢰                                                      ⡜⢸                                  
       │         ⢸                                                      ⡇⢸                                   
       │         ⣸                                                      ⡇⢸                 ⢀                                  
       │         ⡏⡆                                                     ⡇⢸             ⡀   ⢸                                  
7.447ms│         ⡇⡇                                                     ⡇⢸             ⡇   ⢸                                   
       │         ⡇⡇                                                     ⡇⢸            ⢠⡇   ⡸⡀                                  
       │         ⡇⡇                                                     ⡇⢸            ⢸⢇   ⡇⡇                                  
       │        ⢰⠁⡇                                                     ⡇⠸⡀           ⢸⢸   ⡇⡇                                                                                  ⢰  
       │        ⢸ ⡇                                                    ⢸  ⡇           ⡜⢸   ⡇⡇                             ⣰                                                    ⢸  
       │        ⢸ ⢱                 ⡀  ⢠                               ⢸  ⡇           ⡇⢸   ⡇⡇                            ⢠⠋⡆  ⡆                 ⢀                              ⡜⡆ 
       │        ⢸ ⢸                ⡰⡇  ⢸⡄⢀                ⡖⢇          ⢸⣼  ⡇           ⡇⢸   ⡇⡇       ⢠                    ⡜ ⢇ ⢠⢇              ⡀  ⢸⡄ ⡀                           ⡇⡇ 
       │        ⡇ ⢸          ⡀     ⡇⢱  ⡇⡇⡜⡆              ⢰⠁⢸   ⢠      ⡜⢻  ⡇⡄         ⢠⠃⢸  ⢰⠁⢱    ⣧  ⡜⢣                  ⢀⠇ ⢸ ⢸⢸      ⡀      ⢀⢇  ⡎⡇⡰⡇         ⡄                 ⡇⡇ 
6.601ms│  ⢸⡀    ⡇ ⢸    ⢀⣀⡀  ⡰⡇    ⢸ ⢸  ⡇⢸⠃⠘⡄       ⡇     ⢸  ⢇  ⡜⢣     ⡇   ⣷⢣ ⢰   ⡄ ⢀ ⢸ ⠈⡆ ⢸ ⢸⢀  ⢠⠃⢣ ⡇ ⠉⢆ ⢀    ⣧    ⢠    ⢸   ⢇⡸⢸  ⢠   ⣧      ⢸⢸  ⡇⠸⠁⢱         ⣧    ⢠⢣           ⡇⡇
       │  ⡇⢇ ⡀ ⢀⠇ ⠈⡆ ⡄ ⡜ ⢸  ⡇⢸    ⡸ ⠸⡀ ⡇   ⡇      ⢰⢱ ⡸⡀⢀⡀⡎   ⠱⡀⡇ ⡇    ⡇   ⡏⢸ ⡼⡀ ⡸⠘⠔⢹ ⢸  ⡇⡀⢸ ⢸⠎⢆ ⢸  ⣧⠃  ⠘⡤⠃⢣  ⢠⠛⡴⢣  ⢸⡇   ⡇   ⠘⡇⠈⡆ ⡎⡆ ⢸⠸⡀⣴ ⢸⡄ ⡎⠈⡆ ⡇  ⢸    ⢀    ⣿  ⢠⠔⠃⠘⡄         ⢀⠇⢸ 
       │  ⡇⠘⠉⢇ ⢸   ⡇ ⣷⢠⠃ ⠈⡆⢸ ⢸ ⣰  ⡇  ⡇⢸    ⢸  ⣰ ⢰⡀⢸⢸ ⡇⢇⡎⠈⠁    ⠹  ⢸  ⢠⢠⠃    ⠘⡄⡇⡇⢀⠇  ⠈⡆⡎  ⡷⡇⢸ ⠈ ⠈⡆⢸  ⠘      ⠈⡆ ⢸  ⠘⡄ ⡇⢸  ⢸       ⠧⣰⠁⢱ ⢸ ⠋ ⡇⡇⠱⠊  ⠱⣸   ⢸    ⡜⢆⢀⡆⢰⠉⡆ ⡸   ⡇        ⢠⢸ ⢸ 
       │ ⢸   ⢸ ⢸   ⢣⢸⠘⡜   ⡇⡜ ⠈⣦⠋⡆⢰⠁  ⠉⠚    ⢸ ⢀⠟⡄⡜⢣⡜⠘⣼ ⠘          ⠘⡄ ⢸⢻      ⡇⡇⡇⢸    ⡇⡇  ⠁⢱⢸    ⢸⡇          ⢣ ⢸   ⢣ ⡇ ⡇ ⡇           ⢣⡇   ⢣⠃     ⠙   ⠈⡆  ⢀⠇⠈⠊⡇⢸ ⡇ ⡇   ⢸        ⡸⢻ ⢸ 
       │⢀⠎   ⠈⡆⡎   ⢸⢸ ⠁   ⢇⡇  ⠃ ⢇⡜         ⠈⡆⡜ ⡇⡇⠈⠇ ⠇             ⡇ ⡇       ⢹ ⢣⡇    ⢇⠇   ⢸⡸     ⠃          ⢸ ⡇   ⠘⣄⠇ ⢸⢸             ⠁   ⠈           ⠧⠢⡀⡜   ⢱⢸ ⢸ ⡇   ⢸  ⢠⡀    ⡇  ⠘⡄
       │⠊     ⠑⠇   ⠘⡜     ⢸     ⠘           ⠋  ⢣⠃                 ⡇ ⡇       ⠈ ⢸⠁    ⢸    ⢸⡇                 ⡇⡇    ⢻   ⠃                               ⠈    ⢸⢸ ⠈⣶⠁   ⠘⡄ ⡎⠱⣀⡄ ⢀⠇   ⡇
       │            ⠇                          ⠘                  ⢸ ⡇                    ⠈⡇                 ⣧⠃    ⠈                                        ⢸⢸  ⠘     ⡇⢠⠃  ⢣ ⢸    ⠃
       │                                                          ⢸⢸                      ⠇                 ⢸                                              ⠸⡎        ⢇⡜   ⢸ ⡇     
5.755ms│                                                          ⢸⢸                                                                                        ⡇        ⢸⠃   ⠘⣼      
       │                                                          ⠘⣼                                                                                        ⠇              ⠃      
       │                                                           ⡇                                  
       │                                                           ⠃                                  
       │
       │
       │
4.909ms│
       └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
14:18:03                                                                                14:18:18                                                                          14:18:33
```


**複数ホストを監視**

複数ホストを監視する場合は、スペース区切りでホスト名を指定します。

```bash
gping google.com cloudflare.com
```

**実際の出力例**

```bash
google.com (2404:6800:400a:80a::200e)                last 6.533ms      min 5.159ms       max 12.643ms      avg 6.402ms       jtr 50µs         p95 7.131ms       t/o 0             
cloudflare.com (2606:4700::6810:85e5)                last 6.973ms      min 5.585ms       max 12.114ms      avg 7.044ms       jtr 44µs         p95 8.076ms       t/o 0             
12.581ms│
        │
        │
        │
        │
        │
        │  ⢸                                  
        │  ⢸                                  
11.258ms│  ⢸                                       ⢀                                  
        │  ⢸                                       ⢸                                  
        │  ⢸                                       ⢸                                  
        │  ⢸                                       ⢸                                  
        │  ⢸                                       ⢸                                   
        │  ⡸⡄                                      ⢸                                   
        │  ⡇⡇                                      ⢸⡀                                  
9.935ms │  ⡇⡇                                      ⡸⡇                                  
        │  ⡇⡇                                      ⡇⡇                                  
        │  ⡇⡇                                      ⡇⡇                                  
        │  ⡇⡇                                      ⡇⡇                                  
        │  ⡇⡇                                      ⡇⡇                                  
        │  ⡇⡇                                      ⡇⡇                                  
        │  ⡇⡇                                      ⡇⡇                                  
        │  ⡇⡇                                      ⡇⡇                                  
8.612ms │  ⡇⡇                                      ⡇⡇                                  
        │  ⡇⡇                                      ⡇⡇                                  
        │  ⡇⡇                                      ⡇⡇                                  
        │  ⡇⡇                           ⡀          ⡇⢣                                                                                     ⢰                                   
        │  ⡇⡇                          ⢀⡇          ⡇⢸                            ⢰                                           ⡀            ⢰⠒⡆                                  
        │  ⡇⢸                          ⢸⢸          ⡇⢸                            ⢸⡀                            ⡀             ⡇            ⢸⡇⡇                                  
        │ ⢸ ⢸                          ⡸⢸         ⢰⠁⢸                         ⡀  ⡇⡇                            ⣇            ⢸⢣            ⢸⡇⢱                                  
7.289ms │ ⢸ ⢸                          ⡇⠈⡆        ⢸ ⢸  ⡀                     ⢠⡇  ⡇⡇                           ⢠⢻        ⢀   ⢸⢸            ⡇⡇⢸ ⡄                                  
        │ ⢸ ⢸                         ⢸  ⡇    ⢠⢆  ⢸ ⢸ ⡰⢣        ⡀  ⢀⣀⣀    ⢠  ⢸⢸  ⡇⢱                           ⢸⠸⡀       ⡜⢆⣀ ⡎⢸            ⡇⢸⢸⢀⠟⡄⡜⡄                                
        │ ⢸ ⢸         ⣀             ⡔⠒⠃  ⢱⡠⠔⠢⠒⠁⠈⡆ ⢸ ⠘⠊⠁⠸⡀⢀    ⢀⠎⠈⢱ ⡜  ⠑⠤⢆ ⡜⢇⣀⠇⢸ ⢰⠁⠸⡀   ⡀        ⡠⡀⢀           ⢸ ⡇      ⢠⠃  ⠉⠃⠸⡀   ⢀      ⢠⡇⢸⢸⢸ ⠘ ⢣  ⡀       ⡀                     
        │ ⢸ ⢸  ⡄    ⢠⠊ ⡇      ⡄  ⢰⡀⢸     ⠘⠁     ⠘⡄⢸⢰    ⠋⠁⠣⡀⢀⣀⡜   ⣇⠇    ⠸⡀⡇⠈   ⣇⣸⠇⡇⠱⡀⢠⠋⠘⡄⢀     ⡔⠁⠑⠁⠱⡀         ⡜ ⢣  ⢀⠔⠉⠢⡜      ⡇   ⡎⢆⢠⠋⢢ ⣰⢸⡇⢸⠈⣾   ⠈⢆⡜⠘⠤⡀    ⢠⡆       ⡆             
        │ ⢰⢢⢸  ⣷  ⢸⡀⡜  ⢇⡀  ⢠⡀⡜⢣  ⡇⢇⡜   ⡇         ⠘⣼⢸⡆      ⠈⠁     ⠘      ⢻      ⢸ ⡇ ⠱⡜  ⠈⠙⡄⢀⡀ ⢠⠃    ⢣ ⣀⢄⣠    ⢰⡇ ⢸ ⢠⠊⢠⡇        ⠓⢄ ⡰⠁⠈⠃  ⠑⠙⡄⡇ ⡇⡇    ⠈   ⢱    ⢸⢸  ⢠⠔⡄⢸⢠⢳  ⡜⢢       ⡸ 
        │ ⡎⢸⠸⡀⢠⠋⡆ ⡎⡇⡇⢀⠎⢸⠈⢢⢀⠇⠈⢄⢸ ⢠⠃⢸⡇  ⢰⡇          ⢻⡎⢇                      ⣴    ⢸ ⡇⢰      ⢣⣀⡠⡄⢸⡆ ⢸  ⠈⠞ ⠈⠢⠔⠢⣀⢠⠋⠁  ⡇⡎⠘⠎⢸          ⠑⠁       ⣧⠃ ⡇⠁    ⡸⡄  ⡀⢣⡀  ⡎⠈⣆⢠⠃⢀⢸⡎⢸⠸⡀⢰⠁ ⠣⡀ ⢠⠒⢢⢀⠇ 
        │⢀⠇⠈⡆⠱⢸ ⡇ ⡇⢹⢱⠎ ⢸ ⢀⠎ ⡜ ⠈⡆⡸⣰ ⡇  ⢸⢸ ⢀  ⡰⡄     ⡇⢸  ⡄       ⡄    ⢀⡄    ⢸⠈⡆   ⡇ ⢇⡜⡇  ⡆  ⢸  ⠘⠇⢸ ⣿   ⡄⢰⠁    ⠁⠃⠘⡄⡔⢱⠁  ⢸  ⡸⡄⡰⡀             ⣿  ⢇   ⡰⡀⡇⢇ ⢀⠏⠢⠈⠑⣤⠃ ⡇⠁⢠⠛⠘⡄⡸⠃⠧⠃   ⠑⠊⠁⣀⣀⠙⠔ 
        │⢸  ⡇ ⢸ ⢸⢠⠃    ⠸⡀⡎⠘⡄⡇  ⠱⡰⠁⣧⠃  ⡜⢸ ⡜⡆⢀⠇⠈⢆⢀⡆  ⡇ ⢣⢸⠘⡄     ⢰⢹   ⢠⠊⢸ ⡀  ⡇ ⢇  ⢰⠁ ⢸⡇⢱ ⢸⢸  ⡇    ⠈⡆⡇⡇ ⢠⢳⢸        ⠟      ⡇⢀⠇⠱⠁⢇            ⢀⢸  ⢸ ⡖⠒⠁⢳⠁⠸⡀⢸   ⢣⠈  ⢸⢠⠃ ⢳⡇⡇  ⡇ ⢀⡀  ⢰⠁    
5.966ms │⡎  ⡇ ⢸ ⢸⢸      ⣷⠁ ⢧⠃     ⢹⢸ ⢀⠇⢸ ⡇⠘⠊  ⠈⠊⢸  ⡇  ⠃ ⠘⡄    ⡸ ⠣⢄⣀⠇  ⠋⠈⠑⣤⠃ ⢸  ⡎  ⢸⠃⠈⣆⡎⠈⡆⢠⠃     ⢹ ⡇ ⢸⠘⡎               ⢱⡸   ⠸⡀  ⢀⠴⡀⡜⢆  ⡀ ⢸⠈  ⢸⢰⠁     ⠣⡎        ⠃  ⠈⡇⡇  ⠸⡀⡎⠈⠉⠑⠃     
        │   ⢣ ⡇ ⠘⡜      ⠃  ⠘        ⠑⠁ ⠘⣼        ⡇⢸      ⠸⡀  ⢀⠇   ⠈      ⠈  ⠈⡶⠉   ⠘     ⢣⡜        ⡇ ⡜ ⠁                ⠃    ⢣⢀⠔⠁ ⢣⠃ ⠉⠉⢣ ⢸   ⠈⡾                    ⢸    ⠱⠁         
        │   ⢸⣀⠇  ⠇                      ⡟        ⠸⢼       ⢣ ⢠⠊                          ⠈         ⢣ ⡇                        ⠋        ⢸ ⡇    ⠃                    ⠈               
        │   ⠈                           ⠁                  ⠑⠁                                     ⢸⢠⠃                                  ⡇⡇                                  
        │                                                                                         ⠈⠙                                   ⢻                                  
        │                                                                                                                              ⠈                                  
        │
4.643ms │
        └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 14:16:55                                                                                14:17:10                                                                         14:17:25
```

`gping`コマンドを使うことで、ネットワーク監視が視覚的に行えるようになり、直感的に問題を把握できるようになります。

***興味のある方は、ぜひ試してみてください！***

## まとめ
最後までお読みいただきありがとうございました。

:::note info
***今回は、シンプルながらも便利なgpingコマンドをご紹介しましたが、私にとってはとても新鮮な発見となりました。***
:::

**これからも、このような基礎的な内容を積極的にアウトプットし、自分の知識を整理しつつ、学びを深めるきっかけにしていきたいと思います。**