0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AI搭載でネットワークマップを自動生成!「twNetMap」のお試し版をリリースしました!

0
Posted at

はじめに

ご自身の所属するオフィスのネットワークや自宅の検証環境で、「どの機器がどこに、どうやって接続されているのかわからない」「ネットワークの構成図を手動で更新し続けるのが面倒……」と悩んだことはありませんか?

ネットワーク全体の構成を可視化するためのツールはいくつか存在しますが、コマンドライン(CLI)ベースで難解だったり、高価な有償ツールだったり、あるいはネットワーク機器の設定を手動でマッピングしなければならなかったりと、導入や運用のハードルが高いものが少なくありません。

これらの課題を解決し、「誰でもボタン一つでネットワークをスキャンし、機器同士のつながりをAIが自動的に推論してネットワークマップを生成してくれる」 ツールを目指して開発したのが、AI搭載ネットワーク検出ツール twNetMap です。

この度、最初のお試し版(v0.1.0)をリリースしましたので、その特徴や開発エピソードをご紹介します!

twNetMap インフォグラフィックス


twNetMap の特徴

twNetMap は、Go言語 + Wails v2 + Svelte 5 のモダンな構成で開発したデスクトップアプリケーション(GUI)です。

1. 外部ツールへの依存ゼロ(バイナリひとつで動作)

従来のネットワークツールの多くは、実行するために外部のコマンドやライブラリのセットアップが必要でしたが、twNetMap はスキャン処理からデータ管理にいたるまで、すべてをGo言語で内製・またはシングルバイナリに組み込んでいます。
インストーラーや面倒な依存解決は不要。ダウンロードした実行ファイルを起動するだけで、すぐにネットワークスキャンを開始できます。

2. AI駆動のトポロジー(接続関係)推論

twNetMap の最大の特徴は、スキャンしたデータから単にIPアドレスのリストを作るだけでなく、「AIがデバイス間のリンク(物理的な接続関係)を自動的に推論してマッピングする」 点にあります。
langchaingo を用いて、Ollama(ローカルAI)やOpenAI、Google Geminiといった多様なLLMプロバイダーと連携。SNMPから得たLLDP情報などの構造データを利用して、ネットワークトポロジーを自動構築します。

AI Settings

3. 学習するフィードバックループ

AIによる自動推論は完璧ではない場合もありますが、twNetMap にはユーザーの修正を学習するフィードバックループが搭載されています。
ユーザーが手動でマップ上のノードの種類を書き換えたり、リンクを修正・削除した履歴をアプリがデータベースに保存。次回のAIプロンプトにその情報を「優先履歴データ」として反映することで、使えば使うほどネットワークの実態やユーザーの好みに合った推論精度へと進化していきます。

4. インタラクティブなネットワークマップ可視化

描画エンジンには vis-network を採用しており、動的でレスポンシブなマップ表示を実現しています。
ノードのドラッグ&ドロップによるレイアウト調整、階層型(スイッチ・ルーター・PC等の順で整理)や力学モデルによる自動再配置、ノードやリンクのリアルタイム編集が可能です。

Network Map


充実したスキャンとエクスポート機能

twNetMap は個人開発でありながら、実用的なネットワーク監査・管理を支援するための多彩な機能を揃えています。

ネットワーク検出(スキャン)機能

  • Pingチェック: ICMPを用いてホストの到達性をスキャン(OSネイティブコマンドへの自動フォールバック対応)。
  • ARPテーブル解析: ローカルOSやSNMP対応機器からIP-MACマッピングを自動抽出。
  • ポートスキャン: 一般的なTCPポート(SSH, HTTP, HTTPS, SNMP等)をスキャン。ファイアウォール(FW)等でブロックされやすい環境向けに、積極性を調整できる「ポートスキャンモード(OFF / 安全性重視 / 高速)」を搭載。
  • SNMPクエリ (v2c/v3): sysNameやsysDesc、物理MACアドレス、LLDP近隣情報を自動取得。
  • サービスバナー取得: SSHやFTP等のポート接続時にバナーをキャプチャし、サーバーの技術スタック等の判別を支援。

データの多用途エクスポート

生成したマップやスキャンデータは、外部ツールと連携しやすいよう多くのフォーマットでエクスポートできます。

  • 画像/ドキュメント: PNG、SVG、PDF
  • 図面ソフト連携: Draw.io (.drawio) 形式でのダイアグラム出力
  • データ: Excel (.xlsx)、CSV、JSON

ネットワークマップのエクスポート


開発の相棒「Google Antigravity」とのエピソード

twNetMap の開発においても、AIコーディングアシスタント Google Antigravity(Agy兄さん) に頼もしい相棒としてサポートしてもらいました。

特に今回の開発で印象的だったのは、以下の機能開発やドキュメント整備における連携です。

1. マスコット猫をあしらったインフォグラフィックの作成

個人開発の悩みの種である「グラフィック素材の準備」。
今回は、Google Antigravityに「マスコットの可愛い猫ちゃんをあしらった、ツールの特徴が一目でわかる楽しいインフォグラフィック画像を作って」とリクエストしたところ、機能説明が視覚的かつ親しみやすく整理された、素晴らしいインフォグラフィック画像(tw_net_map_infographic_ja.jpg)が一発でできあがりました。READMEの顔として大活躍しています。

2. Windows環境における「見えないコマンド実行」の改善

テスト中、WindowsでPingやARPテーブルを解析するためにコマンドを実行する際、一瞬黒いコンソールウィンドウがポップアップしてしまう問題がありました。
Antigravityに相談したところ、Goの exec.Command で起動するプロセスに対して Windows 特有の SysProcAttr フラグ(CREATE_NO_WINDOW)を適切に設定するコードを瞬時に提案してくれ、GUIアプリとしての操作感が劇的に向上しました。

3. ファイアウォール対策の「安全性重視」ポートスキャンモード

「ポートスキャンをかけるとセキュリティ検知に引っかかったり、FWでブロックされてしまう」というユーザー体験の懸念に対し、スキャン並行数を抑えてウェイトを挿入する「安全性重視モード」と、バナー試行のみに留める「OFFモード」の実装を提案・実装してくれました。これにより、商用インフラやデリケートなローカル環境でも安心して試せる機能へと昇華できました。


お試し版の入手方法

GitHubのReleasesページより、各OS用のビルド済みバイナリをダウンロードできます。

各OSの対応

  • macOS: 署名・公証済みの PKG 形式インストーラーを提供しています。
  • Windows: デジタル署名がないため Windows Defender に警告される場合がありますが、プロパティから「ブロックの解除」を行うことで起動可能です。
  • Linux: スタンドアロンバイナリ入りの tar.gz で提供しており、展開するだけで動作します。

⚠️ ご利用にあたっての重要な注意点

本ツールは、ご自身が管理権限を持っているネットワーク、または事前に明示的な許可を得ている対象に対してのみ実行してください。許可のない第三者の環境やサーバーへのスキャン行為は、攻撃とみなされたり不正アクセスとして法的問題に発展する恐れがあります。


おわりに

AI駆動でネットワーク構成図の作成を自動化する twNetMap は、まだ最初のお試し版(v0.1.0)をリリースしたばかりの段階です。
「手元の環境で自動配置がうまくいった」「うちのルーターの接続関係が正しく認識されなかった」など、皆様の環境でのフィードバックがAI推論をさらに賢くする最大の鍵となります。

バグの報告や機能のご提案などは、ぜひGitHubのIssueへお気軽にお寄せください!
もし本ツールを面白い、便利そうだと思っていただけましたら、GitHubリポジトリでのスター(★)もぜひお願いいたします!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?