Miniconda3 で Python 気象解析環境を構築する

## 更新履歴

- 2025/04/11: Miniconda のインストール情報のリンクを

## はじめに

2015年ころまで気象データの解析を行っていたときは、次のような環境で作業していました。

- OS: Ubuntu
- 処理言語: Fortran, C, ShellScript
- 可視化: GrADS, GMT

先人たちの資産を利用する意味でも当時は最適解だったかなと思います。

しかし、時は流れて 2024 年。。。
マシンスペックの向上、 Python コミュニティの成熟などの後押しもあり、気象業界でも Python ユーザーは増えてきたようです。

私も現在、自分の研究では Python にどっぷりハマっていますw

気象解析向けの Python 環境構築手順はいくつかのサイトで公開されていますが[^python-env_kyoto-u] [^python-env_nishii]、本記事では自分の Tips を追加した備忘録としてまとめたものをご紹介します。

[^python-env_kyoto-u]: [Pythonによるデータサイエンス - Python環境の構築](https://www.dpac.dpri.kyoto-u.ac.jp/enomoto/pymetds/Install.html)
[^python-env_nishii]: [西井　章(NISHI, Akira)のページ - 気象データ解析のためのPython環境構築(For Linux)](http://www.rain.hyarc.nagoya-u.ac.jp/~nishii/tech/python3/install_anacon_py.html)


## 対象読者

- これから気象系の研究室に配属される方
- 気象データ解析を行っており、 Python 環境に興味がある方

:::note warn
本記事は初心者向けに補足説明を多めにしております。
上級者の方はご容赦ください。
:::


## 前提

- OS: Windows, MacOS, Linux
- Python 環境: インストールなし or OS のデフォルト状態

:::note info
Miniconda のインストールやセットアップはコマンドラインで実行する作業があります。
Windows の方はコマンドプロンプト or PowerShell、 Linux や MacOS の方はターミナルアプリを利用します。
:::


## 環境構築

### Miniconda3 のインストール

以下のURLからダウンロードしてインストールします。

https://www.anaconda.com/docs/getting-started/miniconda/install#quickstart-install-instructions

次のコマンドを実行してバージョン情報が表示されれば、 Miniconda3 のインストールは完了です。

```sh
$ conda --version
```

参考
- [Miniconda3をWindows 10にインストール](https://qiita.com/kawada2017/items/626a80ed5bbfdc2576a5)
- [minicondaのインストールから使い方まで](https://qiita.com/satotatsu7126/items/ad265b9344ce9cf3556a)

:::note warn
Linux, MacOS にインストールされる方は公式サイトの末尾にある `conda init` を忘れずに実行してください。
また、インストールが完了したらターミナルを再起動することで、 `conda` コマンドが実行できるようになります。
:::

### Python 仮想環境の構築

#### 仮想環境で構築するメリット

Miniconda を利用する上でのメリットの一つに、同じマシンの中で Python の実行環境を仮想環境として複数管理できる点があります。

参考
[【初心者向け】Anacondaで仮想環境を作ってみる](https://qiita.com/ozaki_physics/items/985188feb92570e5b82d)

これは企業などの Developer にとっては非常に重宝するメリットではあるものの、研究者にとってはメリットを感じないかもしれません。

しかし、まれではありますが、次のような場面に直面することもあります。（実際私はありました）
- 普段の解析は Python 3.x 系だけど、知り合いからもらったコードは Python 2.x 系であるため実行してもエラーが出て動かない
- 利用しているライブラリのバージョンを上げたが、他のライブラリとの整合性が取れずに環境がクラッシュしてしまい、再インストールを余儀なくされる

このような場面でも Miniconda であれば、バージョン違いの環境を簡単に準備できたり、現環境の複製をつくれたりするので安心です。

#### Miniconda で気象解析用の Python 環境をつくる

ということで本題です。

次のコマンドを実行して、まずは新規に仮想環境を作ります。

```sh
$ conda create -n env01
# or
$ conda create -n env01 python=3.9
```

:::note info
`env01` の部分が環境名となります。好きな名前でOKですが、カスタマイズした場合は以降のコマンド実行時はカスタマイズした環境名に読み替えるように注意してください。
:::



Python のバージョンを明示的に指定する場合は２つめのコマンドを実行してください。

上記のコマンドを実行してしばらくすると、下記のようにインストールする内容がターミナルに表示されます。

```txt
The following NEW packages will be INSTALLED:

  bzip2              pkgs/main/osx-arm64::bzip2-1.0.8-h620ffc9_4
  ca-certificates    pkgs/main/osx-arm64::ca-certificates-2023.12.12-hca03da5_0
  expat              pkgs/main/osx-arm64::expat-2.5.0-h313beb8_0
  libcxx             pkgs/main/osx-arm64::libcxx-14.0.6-h848a8c0_0
  libffi             pkgs/main/osx-arm64::libffi-3.4.4-hca03da5_0
  ncurses            pkgs/main/osx-arm64::ncurses-6.4-h313beb8_0
  openssl            pkgs/main/osx-arm64::openssl-3.0.12-h1a28f6b_0
  pip                pkgs/main/osx-arm64::pip-23.3.1-py312hca03da5_0
  python             pkgs/main/osx-arm64::python-3.12.1-h99e199e_0
  readline           pkgs/main/osx-arm64::readline-8.2-h1a28f6b_0
  setuptools         pkgs/main/osx-arm64::setuptools-68.2.2-py312hca03da5_0
  sqlite             pkgs/main/osx-arm64::sqlite-3.41.2-h80987f9_0
  tk                 pkgs/main/osx-arm64::tk-8.6.12-hb8d0fd4_0
  tzdata             pkgs/main/noarch::tzdata-2023d-h04d1e81_0
  wheel              pkgs/main/osx-arm64::wheel-0.41.2-py312hca03da5_0
  xz                 pkgs/main/osx-arm64::xz-5.4.5-h80987f9_0
  zlib               pkgs/main/osx-arm64::zlib-1.2.13-h5a0b063_0


Proceed ([y]/n)?
```

このような表示になったら `y` -> `Enter` を入力して先に進みます。

:::note info
今後の手順でも `インストールしますか? [y/n]` のような内容がターミナルに表示されます。
その場合は確認の上、 `y` -> `Enter` を入力してください。
:::


インストールが進んで、次のような内容が表示されれば OK。

```txt
Downloading and Extracting Packages

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate env01
#
# To deactivate an active environment, use
#
#     $ conda deactivate
```

作成した仮想環境に切り替えます。

```sh
$ conda activate env01
```

作成した仮想環境に Python のパッケージ(ライブラリ)をインストールしていきます。

```sh
# Anaconda/Miniconda のリポジトリにないものを先にインストール
$ pip install netcdf4

# インストールの高速化のため、　mamba をインストールする
$ conda install -c conda-forge mamba

# 標準で公開されているライブラリをインストール
$ mamba install xarray cartopy ipykernel

# conda-forge にあるライブラリをインストール
$ mamba install -c conda-forge cfgrib metpy matplotlib pygrib geopy
```

上記でインストールしたライブラリの簡単な説明は次のとおりです。

|ライブラリ|説明|備考|
|-|-|-|
|netcdf4|NetCDF 形式のデータの入出力のためのライブラリ|`xarray` だけでもいいが念のためインストール|
|mamba|`conda` でインストールするよりも爆速でインストールできる。めっちゃ早い。||
|xarray|NetCDF 形式データの取り扱いをより簡易にしてくれる|2024/01/22 現在: Python バージョンが 3.9 以降である必要あり|
|cartpy|地理情報ライブラリ||
|ipykernel|VSCode で Jupyter Notebook を実行するために必要|
|cfgrib|xarray を使って GRIB 形式データを取り扱うときに利用|気象庁 GRIB2 データを読む場合はエラーになる可能性があるため、 pygrib で読むことを推奨|
|metpy|気象業界で利用する各種物理量の計算・描画をサポートしてくれるライブラリ||
|matplotlib|言わずとしれた描画ライブラリ||
|pygrib|GIRB形式データの入出力ライブラリ|前述の通り気象庁 GRIB2 形式データの取り扱いの時に利用|
|geopy|緯度経度情報から2地点間の距離を計算できる||

明示的なインストールはしていませんが、 Python で科学計算を行うために利用利用される `numpy`、 `pandas`、 `scipy` は上記のライブラリのインストールに付随してインストールされます。

Python で気象解析を行う際は上記のインストールで充足すると思いますが、
私は自動実行ツールの実行および開発用に下記のライブラリを入れています。

```sh
$ pip install dictknife zc.lockfile
$ mamba install libcurl python-dotenv pytest pytest-mock yaml pyyaml
```

### Python 環境の動作確認

最後に次のような Python ファイルを準備して実行し、エラーが発生しなければインストール完了です！

※ エラーが発生した場合は、新規に仮想環境を構築し、Python のバージョンを変更するなどして対応する必要があります。

```python: install_test.py
import xarray as xr
import cartopy
import metpy
import matplotlib
import pygrib
import geopy
import scipy
import numpy as np
import pandas as pd

print('Install Succeeded!')
```

```sh
$ python install_test.py
> Install Succeeded!
```

## 終わりに

冒頭で書いたような以前の環境を構築しようとすると、あれやこれやとインストールして動作確認して。。。と煩雑な手順を踏む必要がありましたが、 Python 環境であれば簡単にセットアップが終わる印象です。

また、 Python は Fortran や C 言語に比べ計算速度は遅いものの、

- マシンスペックの向上により、さほど遅さが気にならない
- コードが見やすい
- ShellScript で実行していたようなファイル操作、日時操作が実装しやすい
- 計算と描画が1つの言語で完結できる
- Jupyter notebook 環境を利用することで GrADS と同様の操作感で利用できる

といった様々なメリットがあります。
慣れてしまった今では、旧環境での作業をするのに躊躇してしまうほどです笑

今回の手順では私が主に利用しているライブラリを紹介しましたが、おすすめのライブラリがあればコメントなどで教えていただけると幸いです。

ということで、環境手順構築でした！