テレビ天気時計 仕様書ページの手描き風アイキャッチ画像

テレビ天気時計 仕様書

概要

テレビ天気時計は、Windowsデスクトップ上にテレビ風の時計と天気情報を常駐表示するWPFアプリです。

時計表示を最優先機能とし、天気取得、ログ出力、キャッシュ読み書き、設定保存などの周辺処理に失敗しても、可能な限り時計表示を継続します。

アプリ表示名は「テレビ天気時計」です。

日本語以外の表示では、アプリ名は TVWeatherClock と表示します。

基本情報

項目内容
アプリ表示名テレビ天気時計
プロジェクト名TvWeatherClock
実行ファイル名TvWeatherClock.exe
ルート名前空間TvWeatherClock
UI方式WPF
対象フレームワークnet8.0-windows10.0.19041.0
対応OS64bit版 Windows 10 / Windows 11
配布基本形式Portable ZIP版、MSIインストーラー
設定保存形式JSON
天気取得元Open-Meteo

技術仕様

  • 言語はC#を使用します
  • 対象フレームワークは .NET 8 系のWindows向けWPFです
  • UIはWPFを使用します
  • タスクトレイは System.Windows.Forms.NotifyIcon を使用します
  • JSON処理は System.Text.Json を使用します
  • HTTP通信は HttpClient を使用します
  • Windows位置情報はWindowsの位置情報APIを使用します
  • アプリアイコンはアプリ同梱のアイコンを使用します

起動仕様

アプリ起動時は、単一起動制御を行います。

同じユーザーセッション内ですでにアプリが起動している場合、新しいプロセスは起動処理を続けず終了します。

起動時には、設定、ログ、キャッシュ、天気取得サービス、時計サービス、メイン時計画面、タスクトレイなどを初期化します。

設定により起動時表示が有効な場合、起動直後にメイン時計ウィンドウを表示します。

天気取得は起動後に非同期で実行し、起動処理を待たせません。

キャッシュ使用が有効で直近キャッシュがある場合、起動後の最新天気取得を待たずにキャッシュを先に表示します。

表示したキャッシュの取得時刻が、設定された天気更新間隔内で十分新しい場合、起動直後の最新天気取得は省略します。

起動後の最新天気取得に失敗しても時計表示は止めません。

単一起動

アプリは同じユーザーセッション内での多重起動を防ぎます。

すでに起動している状態で再度起動した場合、新しいプロセスは終了します。

これにより、設定保存、天気取得、タスクトレイアイコンが重複して動作することを防ぎます。

メイン時計画面

メイン時計画面は、枠なし、透明背景対応、タスクバー非表示の常駐ウィンドウです。

表示する主な要素は次の通りです。

  • 時刻
  • 日付または曜日
  • 地域名
  • 天気テキスト
  • 天気アイコン
  • 気温
  • 詳細天気情報
  • 日別予報
  • テロップ形式の天気詳細

表示モードによって、地域名、天気、詳細、テロップの表示有無が変わります。

時計のみ表示モードでは、天気欄を表示しません。

詳細表示モードでは、現在天気の詳細と日別予報行を表示します。

テロップ表示モードでは、天気詳細を横スクロールするテロップとして表示します。

時計表示仕様

時計は24時間表記です。

秒表示が有効な場合は HH:mm:ss 形式で表示します。

秒表示が無効な場合は HH:mm 形式で表示します。

日付と曜日は、表示言語に合わせた形式で表示します。

コロン点滅が有効な場合、時刻のコロンが周期的に点滅します。

天気表示仕様

天気表示が有効な場合、現在天気、気温、地域名、天気カテゴリ、日別予報、データ提供元を保持します。

天気表示が無効な場合、天気関連テキスト、アイコン、気温、予報行、テロップは表示しません。

現在天気として表示する主な内容は次の通りです。

  • 地域名
  • 天気テキスト
  • 天気カテゴリ
  • 天気アイコン
  • 気温
  • 降水確率
  • 湿度
  • 風速
  • 取得元
  • 最終更新日時
  • 警告メッセージ

日別予報は画面表示用の行として表示します。

表示言語により、日付、曜日、天気文言、数値表記、単位前スペースなどを調整します。

天気アイコン仕様

天気アイコンは画像ファイルではなく、WPFの描画で生成します。

天気カテゴリに応じて次のような図形を描画します。

  • 晴れ系
  • 曇り系
  • 雨系
  • 雪系
  • 雷系
  • 霧系
  • 不明

天気アイコンは表示領域に合わせて拡大縮小します。

天気取得仕様

天気取得はProvider方式で行います。

現在の取得元はOpen-Meteoです。

Open-Meteoは緯度経度指定により、世界各地の天気取得に対応します。

天気取得に失敗し、キャッシュ使用が有効な場合は、直近キャッシュを読み込んで表示します。

起動時は最新天気取得の前に直近キャッシュを読み込み、取得待ちの間も前回の天気を表示できるようにします。

天気取得に失敗し、キャッシュも使えない場合は、天気情報を取得できない旨の警告を表示します。

天気取得に成功した場合は、最新の予報をキャッシュへ保存します。

天気取得に失敗した場合はログに警告を記録します。

Open-Meteo取得仕様

Open-MeteoのProvider名は Open-Meteo です。

緯度と経度を指定して天気を取得します。

タイムゾーンは対象地域に合わせます。

現在天気として、気温、湿度、天気コード、風速などを取得します。

日別予報として、天気コード、最高気温、最低気温、降水確率などを取得します。

Open-Meteoのタイムアウト秒数は設定値を使用し、一定範囲に丸めます。

手動更新仕様

タスクトレイメニューから天気を手動更新できます。

手動更新は60秒に1回までです。

60秒以内に再度手動更新した場合、取得処理を行わず、しばらく待ってから更新するよう案内します。

自動更新はこの60秒制限の対象外です。

自動更新仕様

天気自動更新はタイマーで行います。

更新間隔は設定値を使用します。

選択できる主な更新間隔は次の通りです。

  • 15分
  • 30分
  • 60分

設定画面で更新間隔を変更した場合、設定適用後にタイマーを再作成します。

表示モード仕様

表示モードは DisplayMode として保存します。

主な表示モードは次の通りです。

  • Standard
  • TelevisionSubtitle
  • SoftDisplay
  • CompactClock
  • Detail
  • DetailTicker
  • HighVisibility
  • NightCalm
  • BrightWallpaper
  • PanelDisplay
  • LiveStreaming
  • SecondsClock
  • ClassicOutline

各表示モードは、秒表示、日付表示、曜日表示、コロン点滅、天気表示、太字、文字色、縁取り色、縁取り太さ、背景表示、背景色などのプリセットを持ちます。

縁取り太さ設定は、時計、日付、地域、現在天気、気温、詳細情報、日別予報、ティッカー表示のすべてに反映されます。

縁取り太さは描画上の装飾として扱い、文字本体の計測幅、日別予報行の高さ、ティッカーのスクロール幅は押し広げません。

文字、テロップ、天気アイコンには、描画処理内で薄いソフトシャドウを付けます。文字とテロップはソフトシャドウ、縁取り、文字本体の順に描画します。

縁取り太さが0の場合も、通常設定では縁取りを有効として保存し、描画時に最小の細い縁取りへ丸めます。

表示モードを選択すると、対応するプリセットの見た目設定が設定画面へ反映されます。

多言語仕様

対応言語は次の通りです。

  • システム
  • 日本語
  • English (US)
  • English (UK)
  • 简体中文
  • 繁體中文
  • 한국어
  • Español
  • Deutsch
  • Français
  • Italiano
  • Português

既定の言語設定はシステムです。

システムを選択した場合、OSの表示言語を対応言語へ正規化して表示に使います。

OSの表示言語が対応言語にない場合は英語 (US) として表示します。

言語設定は Language として保存します。

日本語以外の表示では、地名は英語表示にそろえます。

日本国内の市区町村名は同梱自治体データの読み仮名から簡易ローマ字表記へ変換します。

設定画面仕様

設定画面には次のタブがあります。

  • 表示
  • 時計
  • 天気
  • 配置
  • ライセンス/出典

設定画面の変更は、基本的に自動保存されます。

設定画面を閉じるときにも、未反映の変更が保存されます。

表示タブ仕様

表示タブでは次の項目を設定できます。

  • 表示モード
  • アプリUIテーマ
  • 言語
  • Windows起動時にテレビ天気時計を起動
  • フォント名
  • サイズ
  • 太字
  • 文字色
  • 縁取り色
  • 縁取り太さ
  • 半透明背景の表示
  • 軽量な不透明ウィンドウで起動
  • 背景色

時計タブ仕様

時計タブでは次の項目を設定できます。

  • 秒を表示
  • 日付を表示
  • 曜日を表示
  • コロン点滅

天気タブ仕様

天気タブでは次の項目を設定できます。

  • 天気表示の有効無効
  • 地域
  • 個別地域設定
  • 地域検索
  • 表示名
  • 都道府県
  • 緯度
  • 経度
  • 更新間隔
  • キャッシュ使用

配置タブ仕様

配置タブでは次の項目を設定できます。

  • 常に最前面
  • 最前面表示を定期的に再適用
  • 移動ロック
  • マウスカーソルを避ける
  • 表示位置を左上に移動
  • 表示位置を右上に移動
  • 表示位置を左下に移動
  • 表示位置を右下に移動

表示位置移動ボタンは、メイン時計画面をプライマリモニターの各隅へ移動します。

ライセンス/出典タブ仕様

ライセンス/出典タブでは次の情報を表示します。

  • アプリアイコン
  • アプリ名
  • アプリバージョン
  • ビルド表示
  • 作者名
  • 作者サイトリンク
  • アプリ説明
  • 天気データ提供元
  • Open-Meteoリンク
  • 無料配布、非商用利用前提である旨
  • Copyright表記

外部リンクは既定ブラウザーで開きます。

リンクを開けない場合は警告メッセージを表示します。

タスクトレイ仕様

タスクトレイアイコンは常に作成します。

タスクトレイアイコンの左クリックで、メイン時計画面の表示と非表示を切り替えます。

タスクトレイアイコンの右クリックでメニューを表示します。

タスクトレイアイコンの左長押しでもメニューを表示します。

メイン時計画面の右クリックまたは左長押しでも、同じメニューを表示します。

タスクトレイメニューには次の項目を表示します。

  • 表示/非表示
  • 天気更新
  • 移動ロック
  • マウスカーソルを避ける
  • ログを開く
  • 設定
  • 終了

表示位置保存仕様

メイン時計画面の位置、幅、高さ、最前面状態は設定へ保存します。

初回または位置未保存の場合、既定位置へ配置します。

保存された位置が現在のどのモニターにも収まらない場合、表示可能な画面内へ戻します。

ディスプレイ設定が変更された場合、保存位置を再適用し、必要に応じて画面内へ戻します。

最前面仕様

常に最前面が有効な場合、WPFの最前面設定を有効にします。

最前面表示の定期再適用が有効な場合、最前面状態を定期的に再適用します。

一部のフルスクリーンアプリやゲームの上では、Windows側の制限により最前面表示できない場合があります。

マウスカーソル回避仕様

マウスカーソルを避けるが有効な場合、マウス位置を監視します。

カーソルがメイン時計画面に近づいた場合、ウィンドウを一時的に透明化します。

透明化後は、マウス操作が背後のウィンドウへ通りやすくなります。

カーソルが離れた場合、ウィンドウを元の表示へ戻します。

UIテーマ仕様

UIテーマは UiTheme として保存します。

値は次のいずれかです。

  • System
  • Light
  • Dark

System の場合、Windowsのアプリテーマ設定を参照します。

設定画面、色選択画面、フォント選択画面、タスクトレイメニューへテーマを適用します。

Windows自動起動仕様

設定画面の表示タブでWindows起動時の自動起動を有効にした場合、現在のユーザーのWindows自動起動へ登録します。

登録先はユーザー別のRunキーです。

自動起動を無効にした場合は、同じ登録を削除します。

この設定はWindows側のユーザー別自動起動として保存し、settings.json には重複保存しません。

設定保存仕様

設定ファイルは次のパスに保存します。

%APPDATA%\TvWeatherClock\settings.json

設定保存フォルダは次の通りです。

%APPDATA%\TvWeatherClock\

設定はJSON形式で保存します。

保存時は一時ファイルへ書き込み、既存設定ファイルを置き換えます。

設定ファイルの読み込みに失敗した場合、既定値で起動します。

設定ファイルが破損している場合、可能であれば破損ファイルを退避します。

主な設定項目

AppSettings は次の主な項目を持ちます。

  • SettingsVersion
  • Clock
  • Weather
  • Window
  • SettingsWindow
  • Tray
  • DisplayMode
  • UiTheme
  • Language

ClockDisplaySettings は、時計表示、フォント、色、縁取り、背景、表示サイズなどを保持します。

WeatherSettings は、天気表示、地域、更新間隔、タイムアウト、キャッシュなどを保持します。

WindowPlacementSettings は、表示位置、最前面、移動ロック、マウスカーソル回避などを保持します。

TraySettings は、タスクトレイ関連の設定を保持します。

Windows起動時の自動起動はユーザー別Runキーに保存するため、AppSettings のJSON項目は持ちません。

既定値仕様

主な既定値は次の通りです。

項目既定値
表示モードStandard
UIテーマSystem
言語System
秒表示無効
日付表示有効
曜日表示有効
コロン点滅無効
フォントSystem
表示サイズレベル0
太字有効
天気表示有効
天気地域現在地自動取得
天気更新間隔30分
キャッシュ使用有効
常に最前面有効
移動ロック無効
マウスカーソル回避無効
起動時表示有効

キャッシュ仕様

キャッシュフォルダは次のパスです。

%APPDATA%\TvWeatherClock\cache\

天気取得成功時は、取得した天気予報をJSONとして保存します。

キャッシュ読み込みに失敗した場合、ログに警告を出力し、キャッシュなしとして扱います。

設定画面のキャッシュ削除ボタンでは、キャッシュフォルダ内の天気キャッシュを削除します。

ログ仕様

ログフォルダは次のパスです。

%APPDATA%\TvWeatherClock\logs\

ログには、起動、終了、天気取得失敗、キャッシュ読み込み失敗、表示位置復旧などを記録します。

ログ書き込みに失敗しても、アプリ本体の動作は止めません。

保存フォルダ作成仕様

アプリは必要に応じて次のフォルダを作成します。

  • %APPDATA%\TvWeatherClock\
  • %APPDATA%\TvWeatherClock\cache\
  • %APPDATA%\TvWeatherClock\logs\

配布仕様

配布形式は次の2種類です。

  • Portable ZIP版
  • MSIインストーラー

Portable ZIP版は、ZIPを展開したフォルダから TvWeatherClock.exe を直接実行する形式です。

MSIインストーラーは、Windows Installerで現在のユーザーへインストールする形式です。

配布ファイル名には、アプリバージョン、ビルド番号、配布形式を含めます。ランタイム、CPUアーキテクチャ、.NET配布方式はファイル名に含めません。

例:

TvWeatherClock-v1.x.x-buildxxxxx.x-portable.zip
TvWeatherClock-v1.x.x-buildxxxxx.x-installer.msi

Portable ZIP版には、publish出力一式と README.txt を同梱します。

MSIインストーラーはWiX Toolsetで作成します。

MSIインストーラーは日本語のウィザードUIを使用します。

配布物には README.md を含めません。

配布物は .NET 8 実行環境を同梱した self-contained 版です。別途 .NET 8 Desktop Runtime x64 をインストールしなくても利用できます。

インストール版仕様

インストール版の既定インストール先は次の通りです。

%LOCALAPPDATA%\Programs\TvWeatherClock\

インストール時には、スタートメニューショートカット、デスクトップショートカット、Windowsのアンインストール情報を作成します。

デスクトップショートカットは任意機能として扱い、機能選択画面で作成するか選べます。既定では作成します。

インストール完了画面では、インストール完了後にテレビ天気時計を起動するか選べます。

MSIインストーラーは、self-contained のアプリ一式をインストールします。.NET 8 Desktop Runtime x64 の有無はインストール前に確認しません。

アンインストールは、Windowsの「インストールされているアプリ」または「アプリと機能」から行います。

エラー処理方針

天気取得の例外は、時計表示を止めないように捕捉します。

起動後の初回天気取得も非同期で行い、失敗してもアプリを終了しません。

ログ出力失敗は無視します。

キャッシュ読み込み失敗は警告ログを出し、キャッシュなしとして続行します。

設定読み込み失敗は既定値で起動します。

表示位置が画面外にある場合は画面内へ復旧します。

外部リンクを開けない場合は警告を表示します。

非同期処理方針

ネットワーク通信は非同期で実行します。

天気取得時にはキャンセルトークンを使用します。

天気更新中は更新中状態を有効にし、完了時に解除します。

既知の制約

  • 一部の設定モデルは互換性維持のため残っていますが、現在の設定画面では個別UIを持たないものがあります
  • DirectX系フルスクリーンアプリ上での最前面表示はWindows側の制限により保証しません
  • コード署名なしの配布版では、Windows SmartScreenの警告が表示される可能性があります
  • Open-MeteoのAPI仕様や提供データは将来変更される可能性があります

検証方針

WPFアプリ全体に関わる変更では、Debugビルドを実行します。

天気取得、設定保存、キャッシュ、ログ、表示位置復旧に関わる変更では、例外時に時計表示が止まらないことを確認します。

配布物を作成した場合は、ZIP内に README.txt が含まれ、README.md が含まれないことを確認します。

Portable ZIP版では、ZIP直下に TvWeatherClock.exe が含まれることを確認します。

MSIインストーラーでは、.msi ファイルが作成され、サイズとSHA256を取得できることを確認します。

関連ページ

利用者向けの操作方法は、テレビ天気時計 利用マニュアル を確認してください。

テレビ天気時計 利用マニュアル
目次概要基本情報技術仕様起動仕様単一起動メイン時計画面時計表示仕様天気表示仕様天気アイコン仕様天気取得仕様Open-Me…

配布ファイルの入手方法は、テレビ天気時計 ダウンロード を確認してください。

テレビ天気時計 ダウンロード
目次概要基本情報技術仕様起動仕様単一起動メイン時計画面時計表示仕様天気表示仕様天気アイコン仕様天気取得仕様Open-Me…

利用時によくある質問は、テレビ天気時計 FAQ にまとめています。

テレビ天気時計 FAQ
目次概要基本情報技術仕様起動仕様単一起動メイン時計画面時計表示仕様天気表示仕様天気アイコン仕様天気取得仕様Open-Me…

コメントを書く

メールアドレスは公開されません。