インストール

ClimCanvas は GitHub で公開するオープンソースソフトウェアです (リポジトリ ClimCanvas/ClimCanvas)。このページでは動作環境、本体のインストール、リモート環境での設定、ライセンスと引用を説明します。

1. 動作環境

1.1 必要な Python ライブラリ

Python 3.12 で開発・動作確認しています。依存ライブラリは以下の通りで、本体のインストール時に requirements.txt からまとめて導入できます。

ライブラリ役割
streamlitWeb UI フレームワーク (ブラウザ上の操作画面)
xarraynetCDF データの読み込みと演算
netCDF4netCDF ファイルの入出力 (xarray のバックエンド)
numpy数値計算の基盤
pandas時刻・表形式データの取り扱い
matplotlib描画エンジン
cartopy地図投影 (水平マップの描画)
scipy補間などの数値処理
cftime非標準の暦 (360日暦など) の時刻処理
nc-time-axiscftime 時刻の matplotlib 軸表示
dask大きなデータの遅延読み込み
pytest開発用 — テストの実行にのみ必要

1.2 オプション

以下は無くても ClimCanvas は動作します。必要に応じて追加してください。

外部カラーマップ

海洋・気候分野で定番のカラーマップ集 cmocean・cmcrameri・cmaps (NCL 互換) に対応。インストールされたパッケージだけが起動時に自動検出され、カラーマップの選択肢に現れます。使用した場合は、生成される Python スクリプトにも対応する import が自動で入ります。

$ pip install cmocean cmcrameri cmaps

動画出力 (ffmpeg)

アニメーションの MP4 出力に使う外部コマンドです (GIF 出力には不要)。PATH 上に ffmpeg が見つかると、UI に MP4 の選択肢が現れます。

$ brew install ffmpeg # macOS (Homebrew)
$ sudo apt install ffmpeg # Ubuntu / Debian
$ conda install -c conda-forge ffmpeg # conda 環境

1.3 Python の環境構築

ClimCanvas は可視化ツールであり、利用者はその前段で Python によるデータ解析を行っていること — つまり自分の Python 環境を既に持っていることを前提にしています。その環境が共用のものか、自分で作った conda / venv 環境かは問いません。普段の解析に使っている環境に、依存ライブラリ (1.1) を追加すればそのまま使えます。

1.3.1 既存の仮想環境に足す場合

その環境を activate してから、本体一式に同梱の requirements.txt で入れます (本体の置き場所 $IDIR/climcanvas は 2.1)。conda 環境なら、下の conda create と同じパッケージ列を conda install -c conda-forge で入れても構いません (cartopy は conda-forge から入れるのが確実です)。

$ conda activate 環境名 # 普段の解析環境
$ pip install -r $IDIR/climcanvas/requirements.txt

1.3.2 新しく仮想環境を作る場合

ClimCanvas 用に新しく作る例です。cartopy は地理ライブラリ (GEOS・PROJ) に依存するため、conda-forge からまとめて導入するのが確実です。"proj<9.8" は cartopy の既知の不具合 (PROJ 9.8 との組み合わせで海岸線が緯度方向にずれる) を避けるための一時的な固定で、cartopy 側の修正が公開されたら外して構いません。

$ conda create -n climcanvas -c conda-forge python=3.12 xarray netcdf4 numpy pandas matplotlib cartopy "proj<9.8" scipy cftime nc-time-axis dask streamlit
$ conda activate climcanvas

本体一式に同梱の environment.yml を使うと、動作確認済みのバージョン構成 (上記の固定を含む) の環境を1コマンドで作れます。

$ conda env create -f environment.yml
$ conda activate climcanvas

2. 本体のインストール

ClimCanvas 本体は Python 環境に組み込む (pip install する) パッケージではなく、インストールは任意の場所にディレクトリを置くだけです。

インストールの形は3つあり、併用もできます (例: 管理者の共有インストールがあるサーバーに、自分用のクローンを別に持つ)。リモート環境でのポートの保護 (3.2) はコードの置き場所と無関係に効くため、どの形でも安全性は変わりません。

どこに誰が読む節
手元の PC自分2.1
リモートサーバー自分2.1 + 3.1 + 3.3
リモートサーバー管理者2.2 + 3.1 + 3.2

2.1 自分でインストールする場合

手元の PC でもサーバーでも手順は同じです。依存ライブラリ込みの Python 環境 (1.3) ができていれば、本体を置くだけで起動できます。GitHub のリポジトリ (ClimCanvas/ClimCanvas) をクローンするだけです。

# インストール先ディレクトリ (以下 $IDIR と呼びます) に移動
$ cd $IDIR
$ git clone https://github.com/ClimCanvas/ClimCanvas.git climcanvas
$ cd climcanvas
$ conda activate 環境名 # 1.3 の環境
$ streamlit run app.py

以後、本体一式は $IDIR/climcanvas に置かれます (app.py のあるディレクトリ = $IDIR/climcanvas)。git clone の末尾の climcanvas は展開先のディレクトリ名で、省略すると ClimCanvas (大文字始まり) になります。このサイトでは小文字の climcanvas で統一しています。

特定の版を使う: 版はタグ (v1.00 など) で選べます。以前使った版を再現するときなど、--branch にタグ名を指定してクローンします。

# v1.00 を取る (--branch にタグ名)
$ cd $IDIR
$ git clone --branch v1.00 https://github.com/ClimCanvas/ClimCanvas.git climcanvas

更新する: 普通にクローンしたもの (main) は git pull で最新版になります。タグを指定したクローンは git pull ではなく、タグを取り直してから切り替えます。

# 普通にクローンしたものを最新版にする
$ cd $IDIR/climcanvas
$ git pull
 
# タグを指定したクローンを別の版 (例: v1.01) に切り替える
$ cd $IDIR/climcanvas
$ git fetch --tags
$ git checkout v1.01

git を使わない場合: GitHub の「Tags」ページにある各版の Source code (zip) をダウンロードして展開し、そのディレクトリを $IDIR/climcanvas として置きます。更新は新しい版の zip を展開して置き換えます。

2.2 管理者がインストールする場合 (サーバーでの共有インストール)

複数人で使うサーバーでは、管理者が1箇所に共有インストールする形が管理も安全性も楽です。手順は 2.1 と同じで、置き方だけが違います。

3. リモート環境での設定

サーバーに置いてリモートで使う場合の設定です。インストールを自分で行ったか管理者が行ったか (2.1 / 2.2) には関わりません。3.1 の考え方はリモート利用のすべてに当てはまります。3.2 は複数人で使い利用者間のデータ分離が必要な場合に管理者が行う追加設定、3.3 は利用者が自分で行う設定 (config.toml の運用形態と開けるデータの範囲) と起動です。

3.1 前提: ClimCanvas のセキュリティの考え方

ClimCanvas 自体にはログイン機能がなく、守りは OS の仕組みに任せる設計です。推奨は「利用者ごとに、自分の SSH アカウントで自分の ClimCanvas を起動する」構成で、柱は次の3つです。

ここまでは利用者が各自で行えるため、管理者の作業はありません。

3.2 サーバー管理者がすること: 利用者ごとのポートの割り当てと保護

上の構成には、OS では守れない穴がひとつ残ります。127.0.0.1 はサーバーの外からの接続を防ぎますが、同じサーバーに SSH ログインできる別の正規ユーザーには効きません。Streamlit は無認証なので、ポート番号を試して他人の ClimCanvas に接続できてしまうと、起動した本人の権限でファイルを読み書きできてしまいます。「アカウントを持つメンバー同士は互いにデータを見せてよい」と言える環境ならこのままでも問題ありませんが、利用者間のデータ分離が必要な場合は、管理者 (root) がファイアウォールの owner マッチを設定します。各ポートに「接続してよいのは割り当てた本人だけ」という鍵を掛け、他ユーザーによるポート探索そのものを無効化するためです。

同梱のスクリプト (scripts/server/) で、ポートの割り当てと保護ルールの適用が1コマンドにまとまっています (対象は Linux サーバー)。

# 初回だけ: 管理コマンドを配置
$ sudo install -m 0755 scripts/server/climcanvas-ports.sh /usr/local/bin/climcanvas-ports
 
# 利用者ごとに: ポート割り当て + 保護ルール適用が1コマンドで完了
$ sudo climcanvas-ports assign userA
$ sudo climcanvas-ports assign userB
 
# 割当の一覧と削除
$ sudo climcanvas-ports list
$ sudo climcanvas-ports remove userA

ルールの永続化 (サーバー再起動対策)

適用されたルールはカーネルのメモリ上にしかないため、サーバーを再起動すると消えます (台帳と生成物のファイルは残ります)。そこで、起動時に生成物 /etc/climcanvas/climcanvas.nft を読み込み直す仕掛けを一度だけ作っておきます。Debian / Ubuntu では、起動時に nftables.service が /etc/nftables.conf を nft -f で読み込むので、そこに include を1行足すだけです。

# ① 設定ファイルの末尾に include を1行追記 (root で編集)
$ sudo sh -c 'echo include \"/etc/climcanvas/climcanvas.nft\" >> /etc/nftables.conf'
 
# ② nftables サービスを起動時に有効化
$ sudo systemctl enable nftables
 
# ③ 確認: 構文チェック → 読み込み → ルールが入ったか
$ sudo nft -c -f /etc/nftables.conf
$ sudo systemctl restart nftables
$ sudo nft list table inet climcanvas

3.3 ユーザーがすること

3.3.1 ~/.climcanvas/config.toml の設定

利用者側の設定は、サーバー上の自分のホームにある ~/.climcanvas/config.toml に書きます。設定ファイルの詳細を参照し、allowed_dirs 、session_dirs 、mode の3点を編集します。リモート運用ではまず mode = "remote" を設定してください。ClimCanvas のUIがリモート運用向けに変わります。未設定のままでは常にローカル運用向けの表示になります。具体的には、"remote" にすると、セッションの青タブが「サーバーから/サーバーへ」、編集中セッションのバナーが「サーバー内のセッション」と表示され、保存先がサーバー側か手元 PC 側かを取り違えにくくなります(詳しくは進行中の作業 (セッション) の保存と復元)。

# ~/.climcanvas/config.toml (サーバー側)。リモート運用向けの表示にする
mode = "remote"

3.3.2 セッションの保存先の設定

次に進行中の作業 (セッション) の保存先ディレクトリを設定します。UI の「保存先ディレクトリ」の選択肢になります。未設定なら~/.climcanvas/sessions の1つだけになります。

# ~/.climcanvas/config.toml (サーバー側)。セッションの保存先を指定
session_dirs = ["~/.climcanvas/sessions", "~/projects/exp2026/sessions"]

3.3.3 データ読み込み許可ディレクトリの設定

リモート運用では、ユーザーがブラウザからnetCDFファイルを開く時に、サイドバーの「参照...」ボタンが使えません。このボタンは OS のファイル選択ダイアログを開きますが、ダイアログが開くのはアプリを動かしているマシン (サーバー) の画面であり、手元 PC のブラウザには何も起きないためです (FAQ: 「参照...」ボタンが無い。押しても何も起きない)。そのため、リモート運用では設定ファイルの allowed_dirs でデータ読み込み許可ディレクトリを設定することが実際上必須です (設定ファイルの詳細)。設定すると「参照...」は非表示になり、代わりにサイドバーの「新規作業」と「ファイルの追加」(および各ファイルの「座標ファイル (任意)」欄) に、ブラウザ内でフォルダを辿ってファイルを選べる「許可ディレクトリから選ぶ」が現れます。

# ~/.climcanvas/config.toml (サーバー側)。netCDF を開けるディレクトリを列挙する
allowed_dirs = ["/data/reanalysis", "/data/shared/nc"]

この設定はデータ保護の観点からも都合がよく、開ける netCDF が許可ディレクトリ配下に限定され (配下以外のパスはエラー)、複数人で使うサーバーで利用者が開けるデータの範囲を明示的に決めておけます。

3.3.4 許可ディレクトリの3つの指定方法

許可ディレクトリの指定方法は3つあります。恒常的な設定は config.toml、その1回の起動だけ変えたいときは環境変数、と使い分けます。

指定方法役割と使いどころ
allowed_dirs
(~/.climcanvas/config.toml)
恒常的な設定の正道。サーバーの設定ファイルに書いておけば、起動方法によらず毎回有効です (設定ファイルの詳細)。
CC_ALLOWED_DIRSアプリ本体が読む環境変数 (: 区切り)。設定されていれば (空でも) config.toml より優先されるため、CC_ALLOWED_DIRS="/data/nc" streamlit run app.py のように、その1回の起動だけ範囲を変えられます。CC_ALLOWED_DIRS="" とすれば制限を一時的に解除して起動できます。
CLIMCANVAS_ALLOWED_DIRSランチャ (start-climcanvas.sh) 経由で起動する場合 (使い方 — リモート運用 1.4) の指定方法。ランチャが受け取って CC_ALLOWED_DIRS に引き渡すため、効果は同じです。
# 1回の起動だけ許可ディレクトリを変えたい場合
# ランチャ経由
$ CLIMCANVAS_ALLOWED_DIRS=$HOME/temp:/data/shared scripts/server/start-climcanvas.sh
 
# 直接起動
$ CC_ALLOWED_DIRS=$HOME/temp:/data/shared streamlit run app.py

優先順位は CLIMCANVAS_ALLOWED_DIRS (ランチャ経由のみ) > CC_ALLOWED_DIRS > allowed_dirs (config.toml) で、どれも未設定なら制限なしです。環境変数は設定されていれば空でも config.toml に勝ちます。ランチャ経由では、CLIMCANVAS_ALLOWED_DIRS が指定されているときだけ CC_ALLOWED_DIRS を上書きして引き渡します。

3.3.5 起動

設定ファイル~/.climcanvas/config.toml の編集が終わったら、インストール作業は終了です。接続の流れは使い方 — リモート運用を参照してください。ポート割り当て (3.2) を使うサーバーでの起動には、使い方 — リモート運用 1.4を参照してください。

3.4 まとめ: 何を設定し、何のためか

設定誰が何のためか
127.0.0.1 起動 + SSH トンネル利用者ポートを外部に公開しない。接続できるのを SSH 認証を通った人に限る
利用者ごとに自分の権限で起動利用者読み書きできるファイルを OS パーミッションで本人の範囲に限る
allowed_dirs利用者アプリが開ける netCDF をデータ置き場の配下だけに限る
owner マッチ (climcanvas-ports assign)管理者 (root)同じサーバーの別ユーザーによるポート接続を遮断し、利用者間のデータ分離を守る

4. ライセンス・免責・引用・外部との通信

4.1 ライセンス

ClimCanvas は GNU Affero General Public License バージョン 3 (AGPL-3.0-only) で公開するオープンソースソフトウェアで、いかなる保証もありません (ライセンスの第 15 条・第 16 条)。全文はリポジトリの LICENSE、ClimCanvas 固有の追加条項は LICENSE.exception にあります。要点は次のとおりです。

4.2 図の検証は利用者の責任です

ClimCanvas が生成した図が意図したものを示しているか (どのレベル・時刻を選んだか、どの範囲をどう平均したか、欠損をどう扱ったか等) の確認は利用者の責任です。数値上の前提はマニュアルの計算の前提に、論文投稿前の確認手順は論文投稿前の確認にまとめています。図の値に影響するバグが見つかったときは、影響する版と機能をリポジトリの KNOWN_ISSUES.md に掲載します。論文等で引用する場合は、使った版を付けて引用してください (引用情報は CITATION.cff)。

4.3 外部との通信

ClimCanvas 自身はネットワークに何も送りません。例外は次の 2 つです。

# ~/.streamlit/config.toml
[browser]
gatherUsageStats = false

4.4 引用

ClimCanvas を論文等で引用するときは、使った版を明記して引用してください。

# 引用例 (APA)。版 DOI がある版はその DOI を書く
Mori, M. (2026). ClimCanvas (Version 1.00) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.22997361
 
# 版 DOI が無い版は concept DOI に版番号を併記する
Mori, M. (2026). ClimCanvas (Version 1.00.1) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.22997360