AI

fxの使い方完全ガイド【インストールから応用まで】

fxの使い方完全ガイド【インストールから応用まで】

あなたはターミナルで作業する開発者ですか。APIからの巨大なJSONレスポンスに目を通す時、どのように情報を探していますか。

fxがない世界では、ターミナルに表示された何百行ものJSONをひたすらスクロールします。特定のキーの値を見つけるために、grepコマンドと正規表現を組み合わせるかもしれません。しかし、構造が複雑なJSONでは、その作業は骨が折れます。どこからどこまでが配列の要素で、どのプロパティがどのオブジェクトに属するのか、視覚的に把握するのは困難です。

fxがある世界では、状況は一変します。curlコマンドで取得したJSONデータをfxにパイプするだけです。ターミナルに表示されるのは、美しく整形され、色分けされたインタラクティブなビューです。矢印キーでオブジェクトを展開したり閉じたり、配列の要素を移動したりできます。探しているキーを検索ボックスに入力すれば、瞬時にハイライトされます。まるで高機能なJSONエディタをターミナルで使っているかのようです。

このfxが、あなたのターミナルでのJSON操作を劇的に変えます。もう、無駄なスクロールや複雑なgrepコマンドに悩む必要はありません。

fxとは

fxは、ターミナルでJSONデータをインタラクティブに閲覧・整形するためのCLIツールです。開発者antonmedv氏によって開発されました。JSONデータをパイプで受け取り、あるいはファイルから読み込み、高機能なビューアとして機能します。

JSONを扱う開発者の多くは、ターミナルでのJSON操作に不便を感じていました。特に、APIからのレスポンスやログファイルに含まれる長大なJSONデータの可読性の低さは大きな課題です。この課題を解決するために、fxは誕生しました。

数行のJSONから数万行のJSONまで、fxはどんなサイズのJSONでもスムーズに扱えます。色分け、折りたたみ、検索などの機能により、必要な情報に素早くアクセスできます。複雑なJSON構造も、直感的な操作で簡単に理解できるようになります。

インストール方法

fxはGo言語で書かれており、様々なOSで利用可能です。以下のコマンドを使って、あなたの環境にfxをインストールしましょう。

macOS

macOSではHomebrewを使って簡単にインストールできます。

brew install fx

Linux

Linux環境では、ディストリビューションに応じて様々な方法でインストールできます。

Homebrew (Linuxbrew) を使う場合

Linux上でもHomebrew (Linuxbrew) を利用できます。

brew install fx

Go言語の環境が整っている場合

Go言語がインストールされている環境であれば、go installコマンドでインストールできます。

go install github.com/antonmedv/fx@latest

このコマンドを実行した後、$GOPATH/bin(または$HOME/go/bin)が$PATHに含まれているか確認してください。含まれていない場合は、~/.bashrc~/.zshrcなどに以下の行を追加します。

export PATH=$PATH:$(go env GOPATH)/bin

変更を反映するには、シェルを再起動するか、source ~/.bashrc(またはsource ~/.zshrc)を実行します。

バイナリを直接ダウンロードする場合

GitHubのリリースぺージから、あなたの環境に合ったバイナリをダウンロードすることも可能です。

  1. GitHubのfxリリースぺージにアクセスします。 https://github.com/antonmedv/fx/releases
  2. 最新バージョンのfx_linux_amd64などのファイルをダウンロードします。
  3. ダウンロードしたファイルを解凍し、実行可能なパスに配置します。例えば、/usr/local/binに移動させます。
# ダウンロードしたファイルを解凍
tar -xzf fx_linux_amd64.tar.gz
# 実行権限を付与
chmod +x fx
# パスが通っているディレクトリに移動
sudo mv fx /usr/local/bin/

Windows

Windows環境では、ScoopやWSL2を利用してインストールするのが一般的です。

Scoop を使う場合

ScoopはWindows用のコマンドラインインストーラです。

scoop install fx

Go言語の環境が整っている場合

Linuxと同様に、Go言語がインストールされていればgo installでインストールできます。

go install github.com/antonmedv/fx@latest

このコマンドを実行した後、GoのバイナリパスがPath環境変数に追加されていることを確認してください。

WSL2 (Windows Subsystem for Linux 2) を使う場合

WSL2環境をセットアップしている場合、Linuxのインストール方法がそのまま適用できます。WSL2内でUbuntuなどのLinuxディストリビューションを起動し、上記Linuxのインストール手順に従ってください。

インストールが完了したら、ターミナルでfx --versionを実行し、バージョン情報が表示されれば成功です。

fx --version

基本的な使い方

fxの基本的な操作は非常にシンプルです。最低限これだけ知っていれば、すぐにJSONデータの探索を始められます。

1. パイプでJSONを入力する

最も一般的な使い方は、他のコマンドのJSON出力をパイプでfxに渡す方法です。例えば、APIのエンドポイントからJSONデータを取得し、それをfxで表示する場合です。

curl -s https://jsonplaceholder.typicode.com/todos/1 | fx

このコマンドを実行すると、ターミナルに以下のようなインタラクティブなJSONビューが表示されます。

{
  "userId": 1,
  "id": 1,
  "title": "delectus aut autem",
  "completed": false
}

矢印キー(↑↓←→)を使って、オブジェクトの展開・折りたたみ、配列要素の移動が可能です。qキーでfxを終了します。

2. ファイルからJSONを入力する

JSONファイルの内容をfxで表示することもできます。例えば、data.jsonというファイルがあるとします。

{
  "name": "Alice",
  "age": 30,
  "hobbies": ["reading", "hiking"],
  "address": {
    "street": "123 Main St",
    "city": "Anytown"
  }
}

このファイルをfxで開くには、以下のコマンドを実行します。

fx data.json

または、catコマンドと組み合わせてパイプで渡すこともできます。

cat data.json | fx

どちらの方法でも、ファイルの内容がインタラクティブに表示されます。

3. JSONを整形して出力する (非インタラクティブモード)

fxは、インタラクティブビューアとしてだけでなく、JSON整形ツールとしても使用できます。インタラクティブモードに入らずに、整形されたJSONを標準出力に出したい場合です。

echo '{"name":"Bob","age":25}' | fx -j

-jオプションを付けると、JSONを整形して標準出力に出力します。これはjq .コマンドの代替としても使えます。

4. 特定のキーを抽出する (簡易フィルタリング)

fxは、簡単なフィルタリング機能も備えています。インタラクティブモードで特定のキーの値を抽出したい場合や、非インタラクティブモードで特定のパスの値を直接取得したい場合に便利です。

例えば、上記のdata.jsonからnameの値だけを取得するには、以下のコマンドを実行します。

cat data.json | fx .name

出力は以下のようになります。

"Alice"

配列の最初の要素を取得するには、.hobbies[0]のように指定します。

cat data.json | fx .hobbies[0]

出力は以下のようになります。

"reading"

より複雑なフィルタリングや変換が必要な場合は、jqなどの専用ツールと組み合わせるのが良いでしょう。

便利な使い方・応用例 3選

fxは、単なるビューア以上の能力を持っています。実際の開発シーンに落とし込み、その真価を発揮する応用例を見ていきましょう。

1. APIレスポンスのリアルタイム確認と特定データの抽出

Webアプリケーション開発において、APIからのレスポンスを素早く確認し、必要なデータが正しく返されているかを検証することは非常に重要です。fxを使えば、この作業が格段に効率化されます。

例えば、Web APIからユーザーリストを取得し、その中から特定のユーザーのIDや名前を確認したいとします。

curl -s https://jsonplaceholder.typicode.com/users | fx

このコマンドを実行すると、全ユーザーのJSONデータがインタラクティブに表示されます。

  1. 矢印キーでリストをスクロールし、興味のあるユーザーのオブジェクトを展開します。
  2. /キーを押して検索モードに入り、ユーザー名の一部(例えば「Leanne Graham」)を入力します。該当する部分がハイライトされます。
  3. 目的のデータを見つけたら、qキーでfxを終了します。

さらに、特定のユーザーのemailだけを抽出したい場合は、簡単なフィルタリングを組み合わせられます。

例えば、最初のユーザーのメールアドレスを取得するには、次のようにします。

curl -s https://jsonplaceholder.typicode.com/users | fx .[0].email

これにより、"Sincere@april.biz"のような出力が得られます。

2. 構造化されたJSONログの解析

マイクロサービスアーキテクチャやコンテナ環境では、ログがJSON形式で出力されることが増えています。これらの構造化されたログは、従来のテキストログよりも解析が難しい場合があります。fxは、このようなJSONログの解析に強力な助けとなります。

例えば、次のようなJSON形式のログファイルapp.logがあるとします。

{"timestamp":"2023-10-27T10:00:00Z","level":"INFO","message":"User logged in","userId":123,"sessionId":"abc"}
{"timestamp":"2023-10-27T10:01:05Z","level":"WARN","message":"API call failed","endpoint":"/api/data","status":500,"error":"timeout"}
{"timestamp":"2023-10-27T10:02:10Z","level":"INFO","message":"Data processed","count":100}
{"timestamp":"2023-10-27T10:03:15Z","level":"ERROR","message":"Database connection lost","reason":"network error"}

このログファイル全体をfxで開くと、各行が独立したJSONオブジェクトとして扱われ、インタラクティブに閲覧できます。

cat app.log | fx

特定のレベルのログだけを調べたい場合は、grepと組み合わせてからfxに渡します。例えば、ERRORレベルのログだけを表示する場合です。

grep '"level":"ERROR"' app.log | fx

これにより、エラーログのみがfxで整形され、詳細を簡単に確認できるようになります。エラーメッセージや関連するスタックトレース(もしあれば)を素早く見つけることが可能です。

3. 設定ファイルのプレビューと検証

アプリケーションの設定ファイルがJSON形式であることはよくあります。config.jsonsettings.jsonなどのファイルを編集する際、その構造を視覚的に確認したり、変更が意図通りに行われているかを検証したりするのにfxが役立ちます。

例えば、開発中のアプリケーションの設定ファイルconfig.jsonが以下のような構造をしているとします。

{
  "app": {
    "name": "MyWebApp",
    "version": "1.0.0",
    "debugMode": true
    },
  "database": {
    "type": "PostgreSQL",
    "host": "localhost",
    "port": 5432,
    "credentials": {
      "user": "admin",
      "password": "password"
      }
    },
  "features": [
    {"name": "analytics", "enabled": true},
    {"name": "notifications", "enabled": false}
  ]
}

このファイルを編集する前に、現在の構造をfxで確認します。

fx config.json

インタラクティブビューで、各セクションがどのようにネストされているか、どのプロパティがどこにあるかを一目で把握できます。例えば、database.credentials.passwordのキーが存在するか、features配列の構造は正しいかなどを確認できます。

ファイルを編集した後、その変更がJSONとして有効であるか、また意図しない構造の変更がないかを再確認するためにもfxは有用です。

他ツールとの組み合わせ

fxは単体でも強力ですが、他のCLIツールと組み合わせることで、その能力をさらに引き出せます。

1. curl + fx: APIレスポンスの探索

Web APIからのJSONレスポンスを扱う際の定番の組み合わせです。curlでデータを取得し、それをfxにパイプします。

curl -s "https://api.github.com/users/antonmedv" | fx

-sオプションはcurlのプログレスバーを非表示にし、きれいなJSON出力だけをfxに渡すために使用します。これにより、GitHub APIから取得したユーザー情報をインタラクティブに閲覧できます。

2. cat / tail + grep + fx: JSONログのフィルタリングと分析

JSON形式のログファイルを分析する際に非常に役立ちます。cattailでログファイルの内容を読み込み、grepで特定の条件に合うログ行を抽出し、最後にfxで整形・閲覧します。

例えば、特定のワードを含むエラーログを調べたい場合です。

tail -f access.log | grep "error" | fx

tail -fを使うことで、リアルタイムで追加されるログを監視しながら、エラー行だけを整形してfxで確認できます。

3. jq + fx: 高度なフィルタリングとインタラクティブな検証

jqはJSONデータを強力にフィルタリング、変換、整形できるCLIツールです。fxのインタラクティブな閲覧機能とjqの高度な処理能力を組み合わせることで、複雑なJSON操作が可能です。

例えば、APIレスポンスから特定の条件に合うオブジェクトだけを抽出し、その結果をfxでインタラクティブに確認したい場合です。

curl -s https://jsonplaceholder.typicode.com/todos | jq '.[] | select(.completed == false)' | fx

このコマンドは、未完了のTODOアイテムだけを抽出し、その結果をfxで表示します。jqで前処理を行い、その結果をfxで視覚的に検証する、というワークフローは非常に強力です。

4. less + fx: 長大なJSONのページング(fxの代替として)

fx自体がインタラクティブなスクロール機能を持っていますが、非常に巨大なJSONデータの場合や、fxのインタラクティブモードではなく単に整形されたJSONをページングしながら見たい場合にlessと組み合わせることも考えられます。

curl -s https://jsonplaceholder.typicode.com/posts | fx -j | less

fx -jでJSONを整形して標準出力に出力し、その結果をlessでページングします。これにより、fxの整形能力とlessのページング機能を両立できます。

よくある設定・カスタマイズ

fxはシンプルさを追求しているため、多くのカスタマイズオプションは提供していません。しかし、環境変数やシェルのエイリアスを活用することで、使用感を向上させることが可能です。

1. カラーテーマの変更

fxはデフォルトで色分け表示を行いますが、環境変数FX_THEMEを設定することで、表示色を変更できます。

利用可能なテーマは以下の通りです。

  • default (デフォルト)
  • monokai
  • nord
  • solarized
  • dracula
  • vscode

例えば、monokaiテーマを適用したい場合、シェルプロファイル(例: ~/.bashrc~/.zshrc)に以下の行を追加します。

export FX_THEME="monokai"

変更を適用するには、シェルを再起動するか、source ~/.bashrcなどを実行します。

2. 履歴ファイルのパス設定

fxは、インタラクティブモードでの検索履歴を保存します。この履歴ファイルの場所は、環境変数FX_HISTORY_FILEで変更できます。

デフォルトでは~/.fx_historyに保存されます。例えば、~/.local/share/fx/historyに保存したい場合です。

export FX_HISTORY_FILE="$HOME/.local/share/fx/history"

3. シェルのエイリアス設定

よく使うコマンドの組み合わせをエイリアスとして設定しておくと便利です。

例えば、常にAPIレスポンスをfxで整形して見たい場合、cというエイリアスを設定できます。

alias c='curl -s "$@" | fx'

このエイリアスを設定すると、c https://jsonplaceholder.typicode.com/todos/1のように実行するだけで、curl -s ... | fxと同じ結果が得られます。

また、JSONファイルを整形して表示するだけのエイリアスも便利です。

alias jf='cat "$@" | fx'

これにより、jf data.jsonでファイルの内容を整形して表示できます。

これらの設定は、あなたの開発ワークフローに合わせて自由に調整してください。

今日からできる実行プラン

fxの導入は非常に簡単です。以下の3ステップで、今日からあなたのターミナルでのJSON体験を向上させましょう。

ステップ1: fxをインストールする

まずは、あなたのOSに合った方法でfxをインストールしてください。

macOSユーザーならHomebrewが最も簡単です。

brew install fx

LinuxやWindowsユーザーは、Go言語がインストールされていればgo installが手軽です。

go install github.com/antonmedv/fx@latest

インストール後、fx --versionを実行して、正しくインストールされたことを確認しましょう。

ステップ2: 簡単なJSONでfxを試す

インストールが完了したら、手元にある簡単なJSONデータでfxを試してみましょう。

例えば、以下のようなJSONを直接パイプで渡してみてください。

echo '{"message": "Hello, fx!", "version": 0.1, "data": [1, 2, 3]}' | fx

ターミナルに表示されるインタラクティブなビューで、矢印キーを操作してオブジェクトを展開したり、閉じたりしてみましょう。qキーで終了します。

ステップ3: 普段のワークフローにfxを組み込む

fxの基本的な操作に慣れたら、普段の開発ワークフローに積極的に組み込んでみましょう。

  • APIレスポンスの確認: curlhttpieなどのコマンドでAPIからJSONデータを取得する際に、必ず| fxを付けてみてください。
    curl -s http://localhost:8080/api/users | fx
    
  • JSONログの解析: 開発環境やテスト環境で出力されるJSON形式のログファイルをcattailで読み込み、| fxで整形して中身を確認してみましょう。grepと組み合わせることで、特定のログを素早く見つけられます。
    cat server.log | grep "WARN" | fx
    
  • 設定ファイルのレビュー: JSON形式の設定ファイルを編集する前後にfx config.jsonで内容を確認する習慣をつけましょう。

これらの習慣を身につけることで、JSONデータの取り扱いが格段にスムーズになります。fxは、あなたの開発効率を向上させる強力な味方となるでしょう。


参考文献

広告

-AI