

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
textfsmとは?
textfsmはPythonのライブラリで、ネットワーク機器の CLI 出力を自動で整理する道具です。テキストの表現を定義したテンプレートを使って、出力を構造化データに変換します。これにより、手動でコピペして整理する作業を減らせます。
テキストデータを表形式やJSON形式に整える作業は、エンジニアだけでなく運用スタッフにも重要です。textfsmを使えば、同じ形式の出力を毎回同じ形で取り出せるため、統計をとったり監視に使ったりするのが楽になります。
仕組みの基本
textfsm はテンプレートと呼ばれる雛形ファイルを使います。テンプレートには出力のパターンと取り出す値の名前を決めます。CLIの各行をこのテンプレートと照合して、マッチした場所の値を取り出します。出力は辞書形式に入れて返されることが多く、CSV や JSON へ変換して別のツールに渡すことができます。
準備と導入の流れ
ステップ1 テキストfsm をインストールします。多くの場合は pip を使います。コマンドは次のとおりです
pip install textfsm
ステップ2 テンプレートを作成します。テンプレートには出力の構造を固定長の列として定義します。TextFSMのテンプレートは平文のテキストで、grep のように正規表現を使いません。
ステップ3 実際にパースします。対象のCLI出力をテンプレートと照合して、整形済みデータが得られます。結果はリスト形式で返ることが多く、CSV や JSON に変換して保存します。
テンプレートの基本例と使い方
以下はシンプルな例です。実際の環境では、機器ごとに出力は異なりますが、基本の考え方は同じです。
| 項目 | 説明 |
|---|---|
| テンプレートの役割 | 出力から欲しい情報を決める雛形 |
| 入力データ | ネットワーク機器の CLI 出力 |
| 出力結果 | JSON や CSV の表形式データ |
実際のテンプレートは 決まった列の名前と 対応するパターン を組み合わせて作ります。複雑な出力でも、段階的にテンプレートを分割して組み合わせると扱いやすくなります。
よくある使い方の例
例1: show ip interface brief の出力を機器ごとに整理してリスト化する。
例2: show version のような情報を機器ごとに抽出して、在庫管理リストを作る。
注意点とコツ
テンプレートの違いに注意 機器やファームウェアの違いで出力が微妙に変わることがあります。そのため、複数のテンプレートを用意したり、同じパターンでも微小な差を吸収する工夫が必要です。
パフォーマンス 大規模なデータを扱うときは、処理を並列化したり、段階的にパースすることで負荷を抑えます。
まとめ
textfsm は CLI 出力を自動で構造化する強力なツールです。始めはテンプレート作成が難しく感じるかもしれませんが、基本を押さえれば繰り返し使える強力な武器になります。ネットワーク運用や監視ツールの自動化を進めたい人にとって、textfsmは必須級のスキルと言えるでしょう。
textfsmの同意語
- TextFSM
- テキストFSM(TextFSM)自体の名称。半構造化テキストを構造化データに変換する、テンプレートベースのテキストパーサライブラリ。主にネットワーク機器のCLI出力の解析で使われる。
- テキスト解析テンプレートライブラリ
- TextFSMの機能を表す一般表現。規則に基づいてテキストを解析し、表形式データに変換するテンプレートを提供するライブラリ。
- テンプレートベースのテキストパーサー
- テキスト解析をテンプレート(定義済みのパターン)で行うパーサ。TextFSMの中核的な考え方を指す同義語。
- テキスト抽出テンプレート
- 半構造化テキストからデータを抽出するためのテンプレートのこと。TextFSMの役割を指す別表現。
- 半構造化テキスト抽出ツール
- ログやCLI出力など、整った構造を持たないテキストからデータを抽出するツールの総称。TextFSMの用途を示す表現。
- CLI出力解析ライブラリ
- ネットワーク機器のコマンドライン出力を解析して構造化データにするライブラリ。TextFSMの典型的な用途。
- ネットワーク機器CLI解析ツール
- ネットワーク機器のCLI出力を処理する解析ツールという意味の表現。TextFSMの代表的な使い道。
- 正規表現ベースのテキストパーサー
- 厳密にはTextFSMと異なる技術だが、パターンマッチでテキストを抽出する共通点を指す近義語的表現。
- ルールベースのテキスト抽出
- 規則(ルール)に従ってテキストを抽出する方法を指す表現。TextFSMの考え方と近い。
- テンプレートベース解析
- テンプレートを用いてテキストを解析する一般概念。TextFSMのコア機能を説明する別名。
- 構造化データ抽出ツール
- 半構造化テキストを表形式データに変換するツールの総称。TextFSMはこのカテゴリの一例。
- ファイル/ログ解析テンプレート
- ログファイルやテキストファイルのデータ抽出をテンプレートで行う手法の名称。
- CSV/表形式出力ライブラリ
- TextFSMの出力として表形式(CSV など)を得ることができるライブラリの特徴を指す表現。
textfsmの対義語・反対語
- 無構造テキスト
- 構造化されたフィールドや行の枠組みがなく、生データのままのテキスト。機械で自動的にフィールドへ分解・抽出が難しい状態。
- 非自動解析
- 解析・抽出を自動化せず、人の手で一つずつ処理する方法・状態。
- 自由形式テキスト
- 特定のフォーマットやテンプレートに従わず、自然な書き方のテキスト。
- 非テンプレート解析
- TextFSMのようなテンプレートに依存せず、固定ルールなしで解析する手法。
- 非構造化データ
- データが組織化されておらず、機械的なデータ抽出が難しい原始データ。
- 手作業データ入力
- データを人手で入力・修正する作業が中心となる状態。
- 人力データ抽出
- データ抽出を人間が行い、自動化されていない方法。
- 機械不可読データ
- 機械が意味を理解・処理できない文字列・形式のデータ。
- 正規表現中心の抽出
- テンプレートベースの解析ではなく、正規表現だけでデータを拾うアプローチ。
textfsmの共起語
- テンプレート
- TextFSM がテキストを解釈する際に使われる、正規表現パターンと抽出ルールを記述したファイル。
- ntc-templates
- TextFSM 用のテンプレートコレクション。NTC が提供する代表的なテンプレート集。
- テンプレートライブラリ
- 複数の TextFSM テンプレートを集約したライブラリ・リポジトリの総称。
- パース
- 未加工のテキストから意味のあるデータを取り出す処理。
- パーサ
- パース機能を提供するソフトウェア・モジュール。TextFSM の場合はテンプレートを用いて解析を行う。
- 正規表現
- 文字列のパターンを表現する強力な検索・抽出の仕組み。テンプレート内で頻繁に使われる。
- 出力形式
- 解析結果を CSV や JSON などの構造化データに整形する形式のこと。
- CSV
- カンマ区切りの表形式データ。TextFSM の出力としてよく使われる。
- JSON
- JavaScript Object Notation。人間にも機械にも読みやすい構造化データの表現。
- 構造化データ
- 行と列で整理されたデータ。後続の処理で扱いやすい形式。
- テキストデータ
- 未加工のテキスト。TextFSM が解析対象として扱う前提のデータ。
- Python
- TextFSM の実装・利用で広く使われるプログラミング言語。
- pip
- Python のパッケージを管理・インストールする標準ツール。
- pip install textfsm
- TextFSM を環境に導入するための代表的なコマンド。
- GitHub
- TextFSM や ntc-templates の公式リポジトリが公開されているプラットフォーム。
- ネットワーク機器
- Cisco、Juniper、Arista などの機器。CLI 出力を解析対象とすることが多い。
- Cisco IOS
- Cisco の IOS の show コマンド出力を解析するテンプレートが多く使われる対象。
- Juniper Junos
- Juniper の CLI 出力を対象としたテンプレートも存在。
- show コマンド
- 機器の状態や設定を確認するための代表的なコマンド。
- コマンド出力
- show などのコマンドが返す生データ。TextFSM によって構造化データに変換される対象。
- フィールド
- テンプレートで抽出する項目の名称。
- フィールド名
- 出力データの列名。CSV/JSON のキー名として使われることが多い。
- 解析結果
- テンプレートと入力テキストから得られる構造化データ。
- 状態機械
- TextFSM が内部的に利用する、入力を状態で遷移して解釈する仕組み。
- 状態遷移
- 入力データを読み進める際の次の状態を決める動作。
- 抽出ルール
- どの正規表現でデータを拾い出すかを定義する指示。
- 抽出
- 生データから目的の値を取り出す行為。
- データマッピング
- 抽出した値をフィールド名に対応づける作業。
- ラベリング
- 抽出した値に意味付きの名前を付けること。
- テンプレート作成
- 新しい出力フォーマットに対応するテンプレートを作る作業。
- テンプレート開発
- 実用的なテンプレートを設計・改良する全般。
- テンプレートドキュメント
- テンプレートの仕様や使い方を説明する資料。
- 自動化
- 繰り返しの解析作業を自動で実行すること。
- 運用の自動化
- ネットワーク運用の日常作業を自動化する場面で TextFSM を活用するケース。
- データ整形
- 抽出データを用途に合わせて整え、分析しやすい形にする工程。
- テンプレート形式
- TextFSM 独自のテンプレートの書式・構文のこと。
- キャプチャグループ
- 正規表現のマッチから値を取り出すための括り。
textfsmの関連用語
- TextFSM
- ネットワーク機器のコマンド出力をテンプレートで構造化するオープンソースのパーサーライブラリ。Pythonで動作し、出力を表形式のデータとして得られる。
- FSM(有限状態機械)
- TextFSMで使われる解析の核となるモデル。状態と遷移パターンを組み合わせ、テキストを順次読み取りデータを抽出する仕組み。
- テンプレート(Template)
- 抽出したいデータ項目と、それぞれの項目をどの行パターンで取り出すかを定義するファイル。Value 行と状態の定義を含む。
- テンプレートファイル
- 実際に使用するテンプレートのファイル。通常は .tpl またはテンプレの拡張子で保存され、Value/State を記述する。
- Value 行
- 抽出するデータフィールドを定義する行。フィールド名と正規表現をセットで記述するのが基本形。
- State / Start(状態)
- 解析中の現在の状態を示すラベル。Start は初期状態として使われ、遷移条件で他の状態へ移動する。
- 正規表現(Regex)
- Value 行や遷移条件を表現するパターン。複雑な文字列にも対応できる強力な文字列マッチング手段。
- 出力形式: CSV
- 抽出結果をカンマ区切りの表形式で出力する標準的な形式。後でExcelや分系ツールで扱いやすい。
- 出力形式: JSON / DataFrame への変換
- TextFSM の解析結果は Python のデータ構造として扱えるため、JSON へ変換したり pandas DataFrame に変換して分析できる。
- NTC Templates(NTC テンプレート)
- 多数の機種別コマンド出力に対応する TextFSM テンプレート群。Cisco、Juniper、Arista など向けが揃っている。
- テンプレートライブラリ
- 利用可能なテンプレートの集まり。ローカルの templates ディレクトリや GitHub 上のリポジトリを指す。
- コマンド出力のパース対象例
- show version、show interfaces、show ip route など、機器の実行コマンドの出力を対象に解析する。
- Python ライブラリ / pip install
- TextFSM を利用するための Python パッケージ。pip install textfsm で導入するのが一般的。
- Netmiko / Napalm / Nornir との連携
- コマンド実行ツールと併用して、取得した出力を TextFSM で自動的に解析するワークフローでよく使われる。
- インベントリ自動化・監視・レポート作成への活用
- 機器情報の自動抽出により、資産管理、構成変更の影響把握、レポート作成を効率化する。
- 利点
- テンプレートベースなので再現性が高く、複数機種の出力パターンにも対応しやすい。大量データの抽出が高速化される。
- 制限・注意点
- テンプレート作成には学習が必要。機種・OSのパターン差異に応じて追加テンプレを用意する必要があることが多い。
- テンプレート作成のコツ
- サンプル出力を複数集め、共通値は Value で定義、状態遷移を整理して読みやすいテンプレにする。
- パースのワークフロー
- コマンド実行 → 出力取得 → TextFSM へ渡す → テンプレに基づき抽出 → CSV/JSON 等へ出力



















