The Fourteenth Labのアプリ一覧2021年02月24日 12:26

●Windows Storeで配信中のアプリ

Storeの運営により、予告なく配信が停止される場合があります。

UPnP音楽再生指示
UPnP音楽再生指示

UPnP(若しくはDLNA)の仕組みを利用して、楽曲を管理するサーバ(コンテンツのディレクトリ)上のプレイリストについて、音楽を再生する機器(メディアレンダラー)に再生を指示するアプリです。これにより、Windows10が動作する機器(主にmobileを想定)を一種のリモコンのように利用することができます。


お散歩コンパス
お散歩コンパス

散歩などに持ち歩くコンパスと傾斜計の機能を提供します。インターネットが利用できる環境では、今いる位置を中心に国土地理院地図を開くことができます。また、適宜、現在位置を記録することで、簡易ですが、経路を表示できます。


ながら見Web
ながら見Web

常時、見ておきたいWebサイトを、主たる作業の妨げにならないように、小さな画面にまとめて表示します。天気概況や地震速報のように、ざっくりとした状況を把握できればよいサイトの表示を想定しています。


ほそ道まっぷ
ほそ道まっぷ

紀行文に記された地名を一覧から選択し、地理院地図とGoogle Mapで地形や史跡を確認しながら、読書を支援するアプリです。地形を合わせ見ることで、山あいを旅したのか、川沿いに進んだのか、荒野を縦断したのか、など、旅の風景が見えてきます。

奥の細道、東関紀行、海道記、を掲載します。


和書体
和書体

UWPアプリで利用できる日本語フォントを一覧し、例文を見ながら、実際の見え方を確認します。


四則演算パズルU
四則演算パズルU

四則演算ボタンと計算順ボタンを組み合わせて、0から9までの整数を求めるパズルです。


漢字合わせパズル
漢字合わせパズル

同じ漢字の書かれた二枚のカードを見つけていくパズルです。学年別の漢字のほか、部首別の漢字、県別の駅名を合わせるゲームがあります。


火山壁紙
火山壁紙

気象庁の火山監視カメラが提供する火山画像をWindowsの壁紙に設定します。

一覧に用意しているのは、サイトが提供する全ての火山についてではなく、解像度が高く、空が広く、電線などの障害物が少ないものを抜き出しています。


献血記録
献血記録

献血のあとに送付される検査成績を記録し、次回の献血の予定を立てたり、検査結果の推移を体調管理に役立てることを意図しています。


画像微調整
画像微調整

写真やイラストなどの画像について、サイズ変更、回転、鏡像変換、切り抜き、任意の4点からなる四辺形からの長方形への変形、明度と彩度の調整、選択した矩形のモザイク化など、ブログ記事作成などで必要となる簡易な画像調整機能を提供します。


画面属性と制御
画面属性と制御

モニタに関する情報取得と電源制御(オフ)を行うユーティリティです。
マルチディスプレイ環境では、全てのモニタの電源を切ります。


直角取り
直角取り

麻雀牌を使った一人遊びを元にしたゲームです。36牌(4x9漢字牌)、72牌(6x12漢字牌)、144牌(8x18漢字牌)、136牌(8x17麻雀牌)、4つの盤があります。漢字牌では、画数が多く紛らわしい漢字を用いて、ちょっと意地悪になっています。

条件を満たす同じ表示の牌を取っていき、盤上から全ての牌を取り除けば、ゲームクリアです。取れるのは、隣り合う場合、同じ直線上にある場合、一度だけ直角に曲がって四辺のいずれかを接することが出来る場合、の3つです。ただし、2つの牌の経路上に邪魔する牌があってはいけません。


統計電卓
統計電卓

キーパッドから登録した数値や、タブ区切りテキストから読み込んだ数値について、平均や分散などの記述統計と、2次元データの相関および回帰の分析を行います。


音量一覧選択
音量一覧選択

システムボリュームを一覧から選択して設定するユーティリティです。

動画や音声の配信では、番組毎に音量のレベルがまちまちですが、都度、システムのボリュームを調整するのではなく、あらかじめ登録してある設定を一覧から選択できるようにします。


●配信を停止したアプリ

Windows Storeで配信をしていましたが、現在、配信を停止しています。

Network Time
Network Time

ネットワーク時刻を提供するサーバから時刻情報を取得し、本機の時刻とのずれを確認します。


部屋の中の水分量U
部屋の中の水分量U

部屋の室温、湿度、容積から空気中の水分量を求めます。また、加湿する場合に必要な水分量、除湿する場合に取り除く水分量を求めます。


SubnetDesigner
Subnet Designer U

IPv4のSubnetの設計において、必要なSubnetの数と1つのSubnetが収容するホスト数をもとに、最適なSubnetを求める作業を支援します。


からだを動かすリズム計
からだを動かすリズム計

身体を動かす際などにリズムを取るためのものです。ストレッチ運動などをする際に、リズムを崩さないようにする手助けとなることを想定しています。

一回の動作の拍数(1~4)と、目標の動作数を設定すると、図形の動きと音でリズムを取ります。たとえば、1回の動作を2拍で行い、30回を動作数に設定すると、2拍のリズムを30回の区切りで実行します。1拍の時間は、0.5~3秒の間で設定できます。


トーンと色の見本帳
トーンと色の見本帳

Windowsアプリの色デザインの補助のために、Windowsの定義色について、PCCSのトーン、色相、明度、彩度を概算し、トーンマップ上の位置を示します。また、PCCSの色について、RGB(ARGB)値を算出し、それに近いWindowsの定義色を求めます。


●Windows8.1向けのアプリ

Windows10でも動作するため、配信が継続されていますが、安定性を考え、Windows10向けに作成した版をご利用ください。近い将来、配信を停止する予定です。

四則演算パズル
四則演算パズル


部屋の中の水分量
部屋の中の水分量


.NET5.0 の WPF App - Bind、UWPやWindowsForms APIの利用2021年02月20日 16:31

LogoVistaの辞書アプリを利用しているが、ブラウザの文書からコピーして、貼り付けて、検索ボタンを押す、という一連の作業が、少々面倒。手間を省くために、UI Automationを利用してみようと、WPFアプリに着手。

WPF App

プロジェクトを追加しようとダイアログを開くと、.NET Framework用のWPFと、.NET用のWPFが出てくる。後者は、.NET5.0からのもの。UWPの改善点がフィードバックされているとのことで、後者を選んでみる。

Binding

まずは、便利だけど、いつも悩ましいBind。"x:Bind"は使えない。

DataContextの設定

ただし、ListViewなどにCollectionをBindするのに、XAMLにCollectionViewSourceの定義は、必ずしも要らなくなった。コードで、ListViewなどのDataSourceを設定すれば済む。このあたり、MSの文書にもいろいろあるが、このやり方が素直に思う(L81~)。

Resorucesの参照

次に、Resourcesの参照。UWPのx:UidでLocalizationも含めて対応、というのはまだ。ただ、"x:Static"で簡単に参照できるようになっている。

プロジェクトの定義

UWP APIの利用方法も進化中。これまでは、プロジェクトの参照に各種設定していたが、プロジェクトの定義に一行追加するだけでよくなった。"<TargetFramework>"の箇所。ただし、Windows10 1809以上の対応になる。また、GUIで設定はできない。

WindowsForms APIの利用

同じように、WindowsForms APIの利用は、"<UseWindowsFroms>"を設定する。これなしでは、Build時に名前解決に失敗する。SendKeysの利用で嵌まった。

GUIのプロジェクト定義

なお、これらの設定をすると、プロジェクト定義のGUIのフレームワークの箇所は、未選択状態になる。

MergedDictionaries

他には、"MergedDictionaries"の定義ができるようになった。これで、Styleの定義などがやりやすくなる。

UWPでバックグラウンド処理を時間間隔で起動2021年02月09日 11:41

UWPでバックグラウンド処理を用意し、一定時間間隔で起動する手順は、MSやStack Overflowあたりでも、かなり詳しく説明されている。とはいえ、あちこちの情報を整理して実装する必要があるので、備忘までに。

Register

バックグラウンド処理の登録。
・時間間隔起動なのでTimeTriggerの用意。(L.166)
・サイトから画像を取り込むので、インターネットが使えることを条件に設定。(L.171)
・UIが開いているときは、情報を更新する必要があるので、完了時のハンドラを登録。(L.178)
・バックグラウンド処理に渡す情報を、ApplicationData.Current.LocalSettingsを介して渡す。ここでは壁紙に設定する火山のコード。(L.180)

BG Run

バックグラウンド処理の本体。起動するとRunが呼び出される。

OnCompleted

バックグラウンド処理が完了したときに、ハンドラから呼び出される処理。別スレッドにいるので、Dispatcher.RunAsyncで処理。UIを更新。

AppResuming

アプリのUIが最小化されているときは、フォアグランドの処理は中断(Suspend)されているので、上のOnCompletedでは、処理されない。中断が解除されたときにハンドラから呼び出される処理にて、改めてUIを更新。

UpdateUI

UIの更新処理。バックグラウンド処理が更新した情報をApplicationData.Current.LocalSettingsを介して返してもらう。基本的な型しかサポートされていないので、Classの中身をバラして設定。ここでは、ダウンロードして保存した、壁紙に用いる画像ファイルの情報。フォアグラウンドとバックグラウンドでは、同じClassでも異なるobjectになっているので、情報を同期する。

火山壁紙 - アプリリリース2021年02月09日 08:29


火山壁紙

「火山壁紙」の名称で、ユニバーサルWindowsストアアプリをリリース。気象庁の火山監視カメラの画像を、時折、楽しみに見ているが、いっそ壁紙にできたら、ということで作成してみたもの。気象庁のサイトで提供される画像の解像度は低めなので、少々粗いが、ときに、驚くような絵が得られるので楽しい。

対象の火山は全てでなく、解像度が高めで、空が広いものをピックアップ。メンテナンスで絵がホワイトアウトすることが偶にある。

※アプリのページ

開発時間は、35時間ほど。HttpClientを用いて気象庁のサイトにアクセスし、得られたHTMLから画像のURLを正規表現で抽出し、ダウンロードしたファイルを壁紙に設定する。このため、サイトの仕様変更ですぐに動かなくなるが、ご容赦。

更新間隔を指定しての自動更新は、当初、ThreadPoolTimerを用いていたが、UIを最小化すると止まってしまうので、Background Taskとして実装。時間起動を実現するTimeTriggerは、最小間隔が15分なので、動作確認に時間がかかる。ForegroundとBackgroundの情報のやりとりは、ApplicationData.Current.LocalSettingsを利用。既定の型しか使えないので、ClassのPropertyをバラしてやりとり。

阿蘇山

お薦めの第一は、阿蘇山。今も噴煙を上げ、雄大。東の空で朝日が美しい。

韓国岳

霧島山の韓国岳は、火口を上から見下ろす視点が唯一。

浅間山

東日本では浅間山もなかなか。

富士山

もちろん富士山も。頂上付近の絵なので、雄大さは少々欠けるけども。

プライバシーポリシーとサポート情報 - 火山壁紙2021年02月03日 09:15

本アプリについて (About this app)

このアプリは、気象庁の火山監視カメラが提供する火山画像をWindowsの壁紙に設定します。
一覧に用意しているのは、サイトが提供する全ての火山についてではなく、解像度が高く、空が広く、電線などの障害物が少ないものを抜き出しています。

なお、カメラのメンテナンスなどにより、画像が得られない場合があります。また、気象庁のサイトの仕様変更により、アプリが動作しなくなることがあります。

※アプリのページ

プライバシーポリシー (Privacy statement)

火山壁紙
対象アプリ;火山壁紙

本アプリの製作者である The Fourteenth Lab (第十四工房) は、本アプリによって、お客様の個人情報およびプライバシーに関する情報を収集しません。

サポート情報 (Support)

ご質問や不具合のご連絡は、このページの「コメント欄」をご利用いただくか、「このブログについて」に記載の連絡先までお願いします。

あらかじめのおことわり (FAQ)

1)本アプリの製作者は、気象庁のサイトの利用者である以上に、気象庁とは特段の関係はありません。

2)サイトで提供される火山監視カメラの解像度は、640x360程度です。大きなディスプレイでは、壁紙に設定したときに画像が粗く感じられるかもしれません。

利用するツールや文献 (Reference)

1)気象庁、火山の観測データ、監視カメラ画像のサイト


ComboBoxのSelectedValueの型の怪しい挙動2021年01月30日 16:57


XAML定義

UWPにて、ComboBoxを定義。
項目選択時のSelectionChangedイベント処理にSelectedValueを使ってみる。
MS Docの記述例では、AddedItems[0]を用いているものもあるのだけど。

初期化前の例外

動かしてみると、XAMLの初期化時の呼び出しで、型不一致の例外。
デバッガの変数表示を見ると、SelectedValuePathが未定義。
SelectedValueには、IDを定義するクラスであるIntervalItemのインスタンスが設定。

初期化後の処理

苦し紛れだが、そこのところを、型チェックで除外。
すると、UI初期化完了後の呼び出しでは、SelectedValuePathはXAMLの定義通りに設定され、SelectedValueにはIntervalItemのプロパティであるIDが正しく設定されている。

なんとも怪しげ。まだ、こんなのがある。

UWPでURLからの画像のダウンロード2021年01月28日 07:01

URLで指定された画像のダウンロードを試みる。
StorageFileのGetFileFromApplicationUriAsyncでいきなり、という訳にはいかない。
Webで検索すると、いろいろ出てくるが、APIを整理してできたHttpClientの例が少ない。

URLからの画像のダウンロード

・HttpClientのGetAsyncでインターネットに接続(L32)
・応答のContentをHttpStreamContentにキャストして、streamに書き出し(L35)
・BitmapDecoderを生成(L43)
・SoftwareBitmapを生成(L44)

SoftwareBitmapにしておけば、BitmapEncoderで形式を選んで画像ファイルに保存できる。

プライバシーポリシーとサポート情報 - 画面属性と制御2021年01月25日 20:30

本アプリについて (About this app)

モニタに関する情報取得と電源制御(オフ)を行うユーティリティです。

※アプリのページ

更新情報
2021年1月の更新
・前回起動時の画面位置を復元するようにしました。

プライバシーポリシー (Privacy statement)

画面属性と制御
対象アプリ;画面属性と制御

本アプリの製作者である The Fourteenth Lab (第十四工房) は、本アプリによって、お客様の個人情報およびプライバシーに関する情報を収集しません。

サポート情報 (Support)

ご質問や不具合のご連絡は、このページの「コメント欄」をご利用いただくか、「このブログについて」に記載の連絡先までお願いします。

使い方 (How to)

電源制御のみ

起動すると、「モニタの電源を切る」ボタンのみが表示されます。このボタンを押すと、モニタの電源を切ります。マルチディスプレイ環境では、全てのモニタの電源を切ります。

属性一覧表示

「モニタの属性一覧」横のボタンを押すと、最初のDeviceIDを持つモニタの属性一覧を表示します。複数のモニタがある場合は、DeviceIDを選ぶことで一覧が切り替わります。

表示するのは、WindowsがWin32_DesktopMonitorで定義する内容です。同じディスプレイを接続していても、ディスプレイドライバによって、表示内容は変わることがあります。

一覧の2つめの表示は、当該属性が実装されているかどうかを示します。「未実装属性の表示切替」ボタンで、未実装のものを一覧から除くか、切り替えます。

あらかじめのおことわり (FAQ)

1) モニタの電源制御は、複数のディスプレイが接続されている場合、一括になります。

2) リモートデスクトップで接続して「モニタの電源を切る」を押下しても、リモートデスクトップの画面は暗転しません。

3) 「電源を切る」を実施し、ディスプレイが暗転した後、復帰するには、マウスやキーボードなどを操作してください。

4) 属性一覧の「PowerManagementSupported」がTrueであれば、ディスプレイの個別の電源制御ができるはずですが、WMIの説明によると、未実装の機能です。