天気予報をTUIで確認するRaijinを使ってみる

はじめに

天気予報をターミナル上で確認できる Raijin を使ってみる。
Raijin はRust製の軽量なWeather TUIで、APIキー不要で天気情報を取得できるのが特徴である。
データソースは NWS / Open-Meteo / ViewBits で、現時点では macOS / Linux をサポートしている。

環境

Ubuntu 24.04 LTS
Raijin (crates.io)
nix package manager

事前準備

cargoがインストールされていないので、今回は nixcargoをインストールしてから Raijin をインストールする。

以下のshell.nixをプロジェクトルートに配置する。

shell.nix
{ pkgs ? import <nixpkgs> {} }:

pkgs.mkShell {
  buildInputs = [
    pkgs.rustup
  ];

  shellHook = ''
    # Use a modern Cargo/Rust toolchain via rustup (edition2024 support).
    if ! rustup toolchain list | grep -q '^stable'; then
      rustup toolchain install stable
    fi

    rustup default stable >/dev/null
  '';
}

この状態で nix-shell を実行すると、cargo コマンドが利用できるようになる。

nix-shell

インストール

Raijincargo からインストールできる。

cargo install Raijin

インストール後は Raijin コマンドで起動できる。

Raijin
ログ
    Updating crates.io index
  Downloaded Raijin v0.1.8
  Downloaded 1 crate (243.9KiB) in 0.07s
  Installing Raijin v0.1.8
    Updating crates.io index
     Locking 178 packages to latest compatible versions
      Adding ratatui v0.29.0 (available: v0.30.0)
      Adding unicode-width v0.2.0 (available: v0.2.2)
  Downloaded castaway v0.2.4
  Downloaded cfg-if v1.0.4
  Downloaded strsim v0.11.1
  Downloaded signal-hook-mio v0.2.5
  Downloaded time-core v0.1.8
  Downloaded unicode-truncate v1.1.0
  Downloaded zerofrom-derive v0.1.6
  Downloaded tinystr v0.8.2
  Downloaded time-macros v0.2.27
  Downloaded utf8_iter v1.0.4
  Downloaded chrono v0.4.44
  Downloaded zmij v1.0.21
  Downloaded yoke v0.8.1
  Downloaded zerotrie v0.2.3
  Downloaded shlex v1.3.0
  Downloaded url v2.5.8
  Downloaded unicode-segmentation v1.12.0
  Downloaded zerovec v0.11.5
  Downloaded miniz_oxide v0.8.9
  Downloaded serde v1.0.228
  Downloaded mio v1.1.1
  Downloaded icu_properties_data v2.1.2
  Downloaded time v0.3.47
  Downloaded webpki-roots v1.0.6
  Downloaded unicode-width v0.2.0
  Downloaded syn v2.0.117
  Downloaded unicode-width v0.1.14
  Downloaded hashbrown v0.15.5
  Downloaded serde_json v1.0.149
  Downloaded itertools v0.13.0
  Downloaded idna v1.1.0
  Downloaded hashbrown v0.16.1
  Downloaded memchr v2.8.0
  Downloaded rustls v0.23.37
  Downloaded rustix v0.38.44
  Downloaded icu_collections v2.1.1
  Downloaded http v1.4.0
  Downloaded rustls-webpki v0.103.9
  Downloaded rustix v1.1.4
  Downloaded icu_normalizer v2.1.1
  Downloaded icu_locale_core v2.1.1
  Downloaded indexmap v2.13.0
  Downloaded icu_provider v2.1.1
  Downloaded icu_properties v2.1.2
  Downloaded ratatui v0.29.0
  Downloaded icu_normalizer_data v2.1.1
  Downloaded iana-time-zone v0.1.65
  Downloaded flate2 v1.1.9
  Downloaded ureq v3.2.0
  Downloaded serde_derive v1.0.228
  Downloaded serde_core v1.0.228
  Downloaded ryu v1.0.23
  Downloaded proc-macro2 v1.0.106
  Downloaded num-traits v0.2.19
  Downloaded find-msvc-tools v0.1.9
  Downloaded either v1.15.0
  Downloaded rustls-pki-types v1.14.0
  Downloaded parking_lot_core v0.9.12
  Downloaded parking_lot v0.12.5
  Downloaded rustversion v1.0.22
  Downloaded quote v1.0.45
  Downloaded libc v0.2.182
  Downloaded paste v1.0.15
  Downloaded foldhash v0.1.5
  Downloaded dotenv v0.15.0
  Downloaded displaydoc v0.2.5
  Downloaded dirs-sys v0.5.0
  Downloaded semver v1.0.27
  Downloaded itoa v1.0.17
  Downloaded indoc v2.0.7
  Downloaded ureq-proto v0.5.3
  Downloaded unicode-ident v1.0.24
  Downloaded powerfmt v0.2.0
  Downloaded potential_utf v0.1.4
  Downloaded option-ext v0.2.0
  Downloaded form_urlencoded v1.2.2
  Downloaded errno v0.3.14
  Downloaded document-features v0.2.12
  Downloaded smallvec v1.15.1
  Downloaded rustc_version v0.4.1
  Downloaded num-conv v0.2.0
  Downloaded lock_api v0.4.14
  Downloaded instability v0.3.11
  Downloaded include_dir_macros v0.7.4
  Downloaded include_dir v0.7.4
  Downloaded ident_case v1.0.1
  Downloaded httparse v1.10.1
  Downloaded heck v0.5.0
  Downloaded getrandom v0.2.17
  Downloaded equivalent v1.0.2
  Downloaded zerovec-derive v0.11.2
  Downloaded zeroize v1.8.2
  Downloaded writeable v0.6.2
  Downloaded scopeguard v1.2.0
  Downloaded percent-encoding v2.3.2
  Downloaded once_cell v1.21.3
  Downloaded ring v0.17.14
  Downloaded lru v0.12.5
  Downloaded log v0.4.29
  Downloaded litrs v1.0.0
  Downloaded litemap v0.8.1
  Downloaded idna_adapter v1.2.1
  Downloaded simd-adler32 v0.3.8
  Downloaded dirs v6.0.0
  Downloaded derive_more-impl v2.1.1
  Downloaded derive_more v2.1.1
  Downloaded crossterm v0.29.0
  Downloaded crossterm v0.28.1
  Downloaded cc v1.2.56
  Downloaded synstructure v0.13.2
  Downloaded static_assertions v1.1.0
  Downloaded signal-hook v0.3.18
  Downloaded darling_core v0.23.0
  Downloaded compact_str v0.8.1
  Downloaded bytes v1.11.1
  Downloaded base64 v0.22.1
  Downloaded strum_macros v0.26.4
  Downloaded cookie_store v0.22.1
  Downloaded allocator-api2 v0.2.21
  Downloaded zerofrom v0.1.6
  Downloaded yoke-derive v0.8.1
  Downloaded version_check v0.9.5
  Downloaded utf-8 v0.7.6
  Downloaded urlencoding v2.1.3
  Downloaded untrusted v0.9.0
  Downloaded darling v0.23.0
  Downloaded crc32fast v1.5.0
  Downloaded linux-raw-sys v0.4.15
  Downloaded cookie v0.18.1
  Downloaded bitflags v2.11.0
  Downloaded deranged v0.5.8
  Downloaded convert_case v0.10.0
  Downloaded subtle v2.6.1
  Downloaded strum v0.26.3
  Downloaded cassowary v0.3.0
  Downloaded autocfg v1.5.0
  Downloaded darling_macro v0.23.0
  Downloaded adler2 v2.0.1
  Downloaded stable_deref_trait v1.2.1
  Downloaded signal-hook-registry v1.4.8
  Downloaded linux-raw-sys v0.12.1
  Downloaded 141 crates (15.7MiB) in 1.20s (largest was `linux-raw-sys` at 2.9MiB)
   Compiling libc v0.2.182
   Compiling proc-macro2 v1.0.106
   Compiling quote v1.0.45
   Compiling unicode-ident v1.0.24
   Compiling cfg-if v1.0.4
   Compiling find-msvc-tools v0.1.9
   Compiling shlex v1.3.0
   Compiling log v0.4.29
   Compiling rustversion v1.0.22
   Compiling signal-hook v0.3.18
   Compiling parking_lot_core v0.9.12
   Compiling itoa v1.0.17
   Compiling smallvec v1.15.1
   Compiling bitflags v2.11.0
   Compiling serde_core v1.0.228
   Compiling scopeguard v1.2.0
   Compiling ident_case v1.0.1
   Compiling strsim v0.11.1
   Compiling zeroize v1.8.2
   Compiling autocfg v1.5.0
   Compiling crc32fast v1.5.0
   Compiling untrusted v0.9.0
   Compiling rustix v0.38.44
   Compiling unicode-segmentation v1.12.0
   Compiling httparse v1.10.1
   Compiling lock_api v0.4.14
   Compiling zmij v1.0.21
   Compiling rustix v1.1.4
   Compiling cc v1.2.56
   Compiling rustls-pki-types v1.14.0
   Compiling rustls v0.23.37
   Compiling foldhash v0.1.5
   Compiling bytes v1.11.1
   Compiling paste v1.0.15
   Compiling serde v1.0.228
   Compiling either v1.15.0
   Compiling equivalent v1.0.2
   Compiling allocator-api2 v0.2.21
   Compiling linux-raw-sys v0.4.15
   Compiling heck v0.5.0
   Compiling num-traits v0.2.19
   Compiling convert_case v0.10.0
   Compiling adler2 v2.0.1
   Compiling simd-adler32 v0.3.8
   Compiling instability v0.3.11
   Compiling serde_json v1.0.149
   Compiling itertools v0.13.0
   Compiling indoc v2.0.7
   Compiling miniz_oxide v0.8.9
   Compiling once_cell v1.21.3
   Compiling hashbrown v0.15.5
   Compiling ryu v1.0.23
   Compiling litrs v1.0.0
   Compiling http v1.4.0
   Compiling memchr v2.8.0
   Compiling option-ext v0.2.0
   Compiling static_assertions v1.1.0
   Compiling linux-raw-sys v0.12.1
   Compiling unicode-width v0.1.14
   Compiling base64 v0.22.1
   Compiling subtle v2.6.1
   Compiling webpki-roots v1.0.6
   Compiling iana-time-zone v0.1.65
   Compiling flate2 v1.1.9
   Compiling utf-8 v0.7.6
   Compiling percent-encoding v2.3.2
   Compiling unicode-width v0.2.0
   Compiling document-features v0.2.12
   Compiling syn v2.0.117
   Compiling cassowary v0.3.0
   Compiling urlencoding v2.1.3
   Compiling castaway v0.2.4
   Compiling dotenv v0.15.0
   Compiling include_dir_macros v0.7.4
   Compiling compact_str v0.8.1
   Compiling lru v0.12.5
   Compiling ring v0.17.14
   Compiling chrono v0.4.44
   Compiling ureq-proto v0.5.3
   Compiling errno v0.3.14
   Compiling getrandom v0.2.17
   Compiling mio v1.1.1
   Compiling dirs-sys v0.5.0
   Compiling signal-hook-registry v1.4.8
   Compiling dirs v6.0.0
   Compiling include_dir v0.7.4
   Compiling parking_lot v0.12.5
   Compiling unicode-truncate v1.1.0
   Compiling signal-hook-mio v0.2.5
   Compiling crossterm v0.28.1
   Compiling darling_core v0.23.0
   Compiling derive_more-impl v2.1.1
   Compiling serde_derive v1.0.228
   Compiling strum_macros v0.26.4
   Compiling derive_more v2.1.1
   Compiling crossterm v0.29.0
   Compiling darling_macro v0.23.0
   Compiling strum v0.26.3
   Compiling darling v0.23.0
   Compiling ratatui v0.29.0
   Compiling rustls-webpki v0.103.9
   Compiling ureq v3.2.0
   Compiling Raijin v0.1.8
    Finished `release` profile [optimized] target(s) in 16.95s
  Installing /home/kbushi/.cargo/bin/Raijin
   Installed package `Raijin v0.1.8` (executable `Raijin`)

初回起動時には ~/.config/Raijin/.env が自動生成され、以下のようなデフォルト値が入る。

ZONE="TNZ069"
STATE="TN"
LATITUDE="35.9626444"
LONGITUDE="-83.9167239"
TIMEZONE="America/New_York"

デフォルトは Knoxville, TN なので、自分の地域に合わせて上記5項目を更新する。

設定

READMEの手順に沿って、次の情報を取得する。

  • 緯度 (LATITUDE)
  • 経度 (LONGITUDE)
  • 州コード (STATE)
  • 天気ゾーンID (ZONE)
  • タイムゾーン (TIMEZONE / IANA形式)

ZONETNZ069 のような形式で、STATE は2文字コード(例: TN)を使う。
タイムゾーンは Asia/Tokyo のような IANA 名を設定する。

使い方

起動

/home/kbushi/.cargo/bin/Raijinにインストールされているので、直接実行をしてみる。

Raijin

起動すると、以下の情報が1画面で確認できる。

  • 現在の気温 / 体感温度
  • 直近4日分の予報(4-cast)
  • 時間ごとの気温推移
  • 今夜の月齢

終了は q キーで行える。

raijin-01

参考

おわりに

Raijin は「サッと天気を確認したい」用途にちょうどよいTUIだと感じた。
設定に必要な情報は最初だけ用意すればよく、起動後はシンプルな操作で使える。
CLI中心の作業環境で天気確認を完結させたい場合に便利である。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。