
2026/01/23 20:54
「Show HN:**Whosthere** ― モダンなテキストユーザーインターフェースを備えたLANディスカバリーツール(Goで実装)」
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Whosthere は、軽量で Go ベースの LAN 検出ツールであり、モダンなターミナル UI(TUI)を提供します。mDNS、SSDP、および ARP スイープを使用して権限なしで並列スキャンを実行し、ローカルサブネット上のデバイスを検出します。検出されたデバイスは OUI ルックアップでメーカー情報を表示するように拡張されます。
主な機能:
- 権限昇格なしで高速かつ並列スキャン
- オプションのポートスキャナ
- プログラム的アクセス用 HTTP API(
、/devices
、/device/{ip}
)を公開するデーモンモード/health
(デフォルト位置:config.yaml
または$XDG_CONFIG_HOME/whosthere/config.yaml
)によるテーマと設定。主要な設定項目にはスキャン間隔、期間、スプラッシュ画面、テーマ、スキャナ有効フラグ、ポートリスト、およびネットワークインターフェースが含まれます。~/.config/whosthere/config.yaml- 環境変数
(設定ファイルへのパス)とWHOSTHERE_CONFIG
(ログレベル)WHOSTHERE_LOG - ログは
または$XDG_STATE_HOME/whosthere/app.log
に書き込まれます。~/.local/state/whosthere/app.log - Linux でのクリップボードサポートには X11 ライブラリが必要。macOS と Windows では追加依存関係はありません。
インストール方法は簡単です:Homebrew(
brew tap ramonvermeulen/whosthere && brew install whosthere)、go install github.com/ramonvermeulen/whosthere@latest、または GitHub からクローンしてビルドすることで行えます。現在のプラットフォームサポートは Linux と macOS を含み、Windows のサポートは将来リリースで予定されています。
本文
Whosthere
Goで書かれたモダンなターミナルユーザーインターフェース(TUI)を備えたLAN探索ツール。
直感的にLANを発見・探索し、理解できるよう設計されています。
Whosthere は mDNS と SSDP スキャナを使って権限不要で同時実行のスキャンを行います。
さらに TCP/UDP 接続を試みて ARP 反応を誘導し、その結果得られた ARP キャッシュからローカルネットワーク上のデバイスを検出します。この手法は特権ユーザでなくても ARP キャッシュを満たせます。
発見されたすべてのデバイスに対して OUI(組織識別子)検索を行い、メーカー情報が入手可能なら表示します。
Whosthere は「ネットワーク上に誰がいるか?」という質問への親しみやすく直感的な答え方を提供します。
主な機能
- モダン TUI – 発見したデバイスを直感的に閲覧・探索できます。
- 高速&同時実行 – 複数の発見手段を同時に活用。
- 特権不要 – ユーザースペースで完全に動作。
- デバイス情報拡張 – OUI ルックアップでメーカー名を表示。
- 統合ポートスキャナ – 見つかったホストのサービス探索(許可されたデバイスのみ)。
- デーモンモード + HTTP API – バックグラウンドで動作し、他ツールと連携可能。
- テーマ & 設定 – YAML で見た目や挙動をカスタマイズ。
インストール
brew tap ramonvermeulen/whosthere brew install whosthere
または Go を使う場合:
go install github.com/ramonvermeulen/whosthere@latest
ソースからビルドするには:
git clone https://github.com/ramonvermeulen/whosthere.git cd whosthere make build
使い方
インタラクティブに探索したい場合は TUI を起動します。
whosthere
デーモンとして HTTP API と共に実行するには:
whosthere daemon --port 8080
その他のコマンドラインオプションは以下で確認できます。
whosthere --help
対応プラットフォーム
Whosthere は以下の OS をサポートしています。
- Linux
- macOS
- Windows(将来的に追加予定、協力歓迎!)
キーバインディング (TUI)
| キー | 動作 |
|---|---|
| 正規表現検索を開始 |
| 上へ移動 |
| 下へ移動 |
| 一番上にジャンプ |
| 一番下にジャンプ |
| 選択したデバイスの IP をコピー |
| デバイス詳細を表示 |
| テーマセレクタを切り替え |
| アプリケーション終了 |
| 検索クリア / 戻る |
(詳細ビュー) | デバイスでポートスキャン開始 |
(モーダルビュー) | ボタン選択を切り替え |
環境変数
| 変数 | 説明 |
|---|---|
| 設定ファイルのパス(デフォルト位置を上書き) |
| ログレベル設定(例: debug, info, warn, error)。既定は info |
設定
Whosthere は YAML ファイルで設定可能です。
デフォルトでは次の順序でファイルを検索します。
で指定されたパス(セットされている場合)WHOSTHERE_CONFIG
($XDG_CONFIG_HOME/whosthere/config.yaml
が設定されている場合)XDG_CONFIG_HOME
(それ以外の場合)~/.config/whosthere/config.yaml
TUI モード以外で実行すると、ログはコンソールにも出力されます。
デフォルト設定例
# 発見スキャンの頻度 scan_interval: 20s # 各スキャンの最大時間 # この値を低くしすぎると一部スキャナやスイーパーが完了できない場合があります scan_duration: 10s # スプラッシュスクリーン設定 splash: enabled: true delay: 1s # テーマ設定 theme: # TUI に使用するテーマを指定。利用可能なテーマ一覧は以下から確認できます。 # https://github.com/ramonvermeulen/whosthere/tree/main/internal/ui/theme/theme.go name: default # カスタムテーマカラー(name を custom に設定してコメントアウト解除) # primitive_background_color: "#000a1a" # contrast_background_color: "#001a33" # more_contrast_background_color: "#003366" # border_color: "#0088ff" # title_color: "#00ffff" # graphics_color: "#00ffaa" # primary_text_color: "#cceeff" # secondary_text_color: "#6699ff" # tertiary_text_color: "#ffaa00" # inverse_text_color: "#000a1a" # contrast_secondary_text_color: "#88ddff" # スキャナ設定 scanners: mdns: enabled: true ssdp: enabled: true arp: enabled: true # ポートスキャナ設定 port_scanner: timeout: 5s tcp: [21, 22, 23, 25, 80, 110, 135, 139, 143, 389, 443, 445, 993, 995, 1433, 1521, 3306, 3389, 5432, 5900, 8080, 8443, 9000, 9090, 9200, 9300, 10000, 27017] # 特定のネットワークインターフェースを設定したい場合は以下を有効化 # network_interface: lo0
デーモンモード HTTP API
Whosthere をデーモンとして起動すると、非常にシンプルな HTTP API が利用可能です。
| メソッド | エンドポイント | 説明 |
|---|---|---|
| GET | | 発見済み全デバイスのリストを取得 |
| GET | | 指定 IP のデバイス詳細を取得 |
| GET | | ヘルスチェック |
テーマ
テーマは設定ファイルか、実行時に
Ctrl+t キーで切り替えられます。利用可能なテーマの完全リストはここにあります。ご自身のテーマを追加したい場合は PR を歓迎します。
名前を
custom にすると、上記カラーオプションで独自テーマを作成できます。
ログ
ログはアプリケーションのステートディレクトリへ書き込まれます。
($XDG_STATE_HOME/whosthere/app.log
が設定されている場合)XDG_STATE_HOME
(それ以外の場合)~/.local/state/whosthere/app.log
TUI モード以外で実行すると、ログはコンソールにも出力されます。
よくある問題
クリップボード機能
| プラットフォーム | 必要条件 |
|---|---|
| Linux (X11) | X11 クライアントライブラリ(例: Ubuntu の 、Fedora/Arch の )がインストールされていること。 |
| Linux (Wayland) | ネイティブには非対応。XWayland が必要になる場合があります。 |
| macOS / Windows | 依存なし。 |
ソースからビルドする際の要件
| プラットフォーム | 要件 |
|---|---|
| Linux | X11 開発パッケージ(、、または ) |
免責事項
Whosthere は、自分のネットワーク(例: 自宅ネットワーク)で使用することを想定しています。
無許可でのスキャンは違法・非倫理的となる可能性があります。ツールを利用する前に必ず適切な権限を取得してください。
コントリビューション
機能追加、バグ報告、改善提案などは大歓迎です!
GitHub リポジトリで issue を開くか PR を送信してください。
主要変更を実装する前に GitHub の issue で議論していただけると助かります。