Ubuntu環境で学ぶBokeh CLI入門:可視化スクリプトの出力からサーバー起動まで

概要

Python向けの高機能データ可視化ライブラリ「Bokeh」は、強力なコマンドラインインターフェース(CLI)を備えています。本稿ではUbuntu環境を対象に、単体で動作するスタンドアロンHTMLの書き出し、Web連携に便利なJSON形式へのシリアライズ、さらにはリアルタイム同期を実現する内蔵アプリケーションサーバーの起動に至るまで、実務で重宝する主要サブコマンドの実践的な活用フローを解説します。

1. 動作環境のセットアップとシステム情報の確認(bokeh info)

まずはUbuntu上でBokehを利用可能にするため、APTパッケージインデックスを最新化し、必要なパッケージ群を導入します。

パッケージの更新とBokehのインストール

bokeh infoを実行すると、稼働中のPythonランタイムやBokehのバージョン、依存ライブラリの整合性、バックエンド関連の環境設定値などを一覧形式で素早く把握できます。
⚙️ [主要サブコマンド一覧]

info : インストール済みのバージョン、依存パッケージ群、関連環境変数などのシステム診断情報を表示します。
serve : インタラクティブな操作を受け付けるデータ可視化Webアプリを配備するための専用サーバープロセスを起動します。
html : Pythonスクリプトに記述された描画定義を、ブラウザ単体で閲覧可能な静的HTMLファイルへとコンパイルします。
json : プロットオブジェクトおよび内部データをJSONフォーマットへシリアライズして標準出力に展開します。
secret : Webセッションのセキュリティ確保に用いられる暗号化シークレットキーを新規生成します。

bokeh infoによる環境情報の確認

2. プロットスクリプトの静的HTMLファイル化(bokeh html)

作業環境を整理するため、専用の作業ディレクトリを作成してカレントパスを切り替えます。以下の通りmkdir -p ~/bokeh-demo && cd ~/bokeh-demoを実行してください。

作業ディレクトリの作成と移動

静的ドキュメント変換を試す題材として、シンプルな散布図を描画するPythonコード(plot_sample.py)をファイル出力します。

散布図生成スクリプト plot_sample.py の作成

bokeh html plot_sample.pyコマンドを実行することで、Pythonコード内に定義したグラフオブジェクトが展開され、追加サーバーなしでブラウザ表示可能な単一のHTMLファイルが生成されます。

bokeh htmlによるHTMLファイルの生成

成果物として出力されたplot_sample.htmlの生成状況や容量規模を確かめるため、ls -lh plot_sample.htmlを実行して詳細属性を確認します。

出力されたHTMLファイルの属性確認

3. チャート構造とデータのJSONシリアライズ(bokeh json)

bokeh json plot_sample.py > plot_output.jsonを実行すると、描画スクリプトに含まれるモデル階層や図形レイアウト、データセットの全容が直列化されたJSON文字列として抽出されます。
この出力データは、BokehJSを用いたフロントエンド組み込みや、外部Webサービスへのグラフデータ連携といったシナリオで威力を発揮します。

bokeh jsonによるJSONデータのエクスポート

エクスポートされたJSONのスキーマ構成を点検すべく、head -n 20 plot_output.jsonにより先頭20行分をプレビューします。
ルートモデルの識別IDや描画レンダラーの設定値、データソースの対応関係がスキーマ通りに書き出されているかを目視確認できます。

JSONファイル先頭行の構文確認

4. インタラクティブなWebアプリサーバーの稼働(bokeh serve)

Webアプリケーションとしての配信テストを行うため、折れ線グラフを定義したserver_app.pyを用意します。
コード内ではcurdoc().add_root()を呼び出し、現在のドキュメントセッションルートに対象プロットをバインドしています。

Bokehサーバー用スクリプト server_app.py の記述

timeout 5s bokeh serve server_app.py --port 5006 --allow-websocket-origin="*"を実行して、定義した可視化ロジックをBokehサーバー上でホストします。
パラメータの--port 5006で待ち受けポート番号を指定し、--allow-websocket-origin="*"を設定することで外部ブラウザからのWebSocket通信を許可し、双方向データ同期を可能にしています。

bokeh serveによるWebサーバープロセスの起動テスト

本稿では、Ubuntu上でBokeh CLIを活用し、可視化コードのビルドからサーバーホスティングまでを行う一連の手順を取り上げました。
各サブコマンドの特性を理解して使い分けることで、静的なレポート作成からリアルタイムで操作可能なダッシュボード構築まで、柔軟かつ効率的なデータビジュアライゼーションを実現できます。