メインコンテンツへスキップ
  1. 記事/

30 Days of Vibe Coding - Day 14 - WeatherTUI

Nuno Coração
著者
Nuno Coração
Principal Product Manager @ Docker
目次
30 Days of Vibe Coding - この記事は連載の一部です
パート 14: この記事

Day 14。モダンなUIフレームワークを全部取っ払って、天気アプリをターミナルだけで作ったらどうなるか見てみたかった。

プロンプト
#

“ASCIIアートの天気シーン、アニメーション天気エフェクト、複数ロケーション対応のターミナル天気ダッシュボードを作って”

どうやって作ったか
#

Watchfireを使ったら、作業が23個のタスクに分割された。天気アプリにしては多く聞こえるけど、ASCIIアートとアニメーションが入ってきた途端にスコープが一気に膨らんだ。

タスクリストはまず想定通りのところから始まった:プロジェクトのセットアップ、Open-MeteoとのAPI連携、基本レイアウト。そこから楽しい領域に入っていった:12種類のユニークなASCIIアート天気シーン(太陽、月、雨、雪、雷雨、霧、風、雲)、各天気条件に対応するパーティクルベースのアニメーションエフェクト、気温と降水量のチャート、時間別・日別の予報ビュー、複数ロケーションのダッシュボード、カラーテーマ、マウスサポート、スクロール可能なレイアウト。

23タスク。一つ一つ手動で進めたわけじゃない。Watchfireがキューに入れて、僕が他のことをしている間に処理してくれた。

出来上がったもの
#

今回は予想以上に驚いた。

天気詳細のフォーカスビュー

ASCIIアートが本当にすごい。 各天気条件ごとに専用のシーンがある。層状の雲が広がる曇り空、落ちてくる雨粒、漂う雪片、放射状の光線を出す太陽。アートは細かく、ターミナルを本物のキャラクターで埋め尽くす。よくある手抜きの「雨://」みたいなASCIIアートじゃない。シェーディングと奥行きのある本格的な複数行のシーンだ。

アニメーションが滑らか。 雨粒が落ちる。雪片が漂う。夜空で星がまたたく。風のパーティクルが画面を横切る。雷雨の時には稲妻が光る。これが全部ターミナルで起きている。キーを一つ押すだけでアニメーションの一時停止と再開ができる。

複数ロケーションのダッシュボード

ダッシュボードがすっきりしている。 複数のロケーションがグリッド表示され、それぞれに小さなASCII天気アイコン、現在の気温、天気の概要が一目でわかる。カードをクリックするか数字キーを押すと、そのロケーションの詳細フォーカスビューに飛べる。

ニューヨークのフォーカスビュー

詳細ビューには全部揃っている。 大気質指数、日の出・日の入り時刻、色分けされたUVインデックス、湿度バー、風速と風向、雲量、降水量の内訳(雨vs雪)。さらに下部には各日ごとにミニASCIIアート付きの7日間予報。12時間の時間別ビューにも切り替えられる。

ロケーション検索

リスボンの検索結果

ロケーション管理がうまく動く。 世界中のどの都市でも検索して、ダッシュボードに追加、並べ替え、デフォルト設定ができる。ジオコーディング検索は素早く結果を返し、選択インターフェースもきれい。

4つのロケーションのダッシュボード

4つのカラーテーマ。 デフォルト、オーシャン(ブルーとシアン)、サンセット(暖かいオレンジ)、フォレスト(グリーンとアーストーン)。tを押してテーマを切り替える。設定は設定ファイルに保存される。

テーマセレクター

オーシャンテーマ適用

APIキー不要。 無料のOpen-Meteo APIを使っているので、クローンして依存関係をインストールして実行するだけ。サインアップもトークンも設定も不要。

数字で見る
#

  • 12種類のユニークなASCIIアート天気シーン とそれぞれに対応するアニメーションエフェクト
  • 4つのカラーテーマ と永続的な設定保存
  • 23個のWatchfireタスク セットアップから最終仕上げまで
  • PythonとTextualで構築(Textualizeが作ったTUIフレームワーク)
  • 実際の作業時間: いろんな都市を試したりテーマを切り替えたりして約20分

試してみて
#

リポジトリをクローンしてpython -m weather_tuiを実行するだけ。APIキー不要。矢印キーでナビゲーション、数字キーでロケーション間を移動、tでテーマ変更、?で全キーバインドの一覧が見られる。

Day 14の感想
#

ASCIIアートだけでも手作業だったら何日もかかっていただろう。その上にアニメーション天気エフェクト?そもそも挑戦しようとも思わなかったはず。

感心するのは細部へのこだわりだ。7日間予報のカードにはそれぞれ小さなASCII天気アイコンがある。湿度はプログレスバーで表示される。風は速度とコンパス方向の両方を含む。UVインデックスは深刻度に応じて色が変わる。これらを明示的に指定したわけじゃない。天気ダッシュボードにはこういうものが必要だと理解して、全部作ってくれた。

ターミナルアプリはAIアシストコーディングのスイートスポットみたいだ。テキストベースのインターフェースの制約が、出力を制限するのではなく、むしろ集中させてくれる。


これは30 Days of Vibe Codingの14日目です。AIアシストコーディングで30日間に30個のプロジェクトを出荷する様子をフォローしてください。

30 Days of Vibe Coding - この記事は連載の一部です
パート 14: この記事

関連記事