プライバシーポリシーとサポート情報 - 部屋の中の水分量2015年02月23日 06:34

本アプリについて

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

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

部屋の中の水分量
対象アプリ:部屋の中の水分量

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

サポート情報 (Support)

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

FAQ

1)飽和水蒸気圧の計算には、W. WagnerとA. Prussの近似式を用いています。計算式については、参考文献2)のサイトに掲載されたものを用いています。

2)グラフの表示には、WinRT XAML Toolkitを利用しています。

3)本アプリには、現在の気圧を設定する機能がありますが、採用している計算方法では、最終的な結果には影響を与えません。現実には微小な影響があるはずですが、本アプリでは対応していません。

4)本アプリの「調湿に最低限必要な時間」は、部屋の湿気の出入りがないとした場合の時間です。実際には、換気に伴う出入りがありますので、時間は長くなります。

5)本アプリの「参考:計算過程」は、小数点以下6桁まで表示していますが、そこまでの精度があるわけではありません。有効数字は3~4桁です。

参考文献

1)国立天文台編、理科年表 2015年、丸善出版
 物49(411)ページ、「水の蒸気圧」、ほか

2)Kaye & Laby Online, Tables of Physical & Chemical Constants

3)卜部吉庸著、化学の新研究、三省堂
 2-3 液体の蒸気圧と沸騰、ほか

部屋の中の水分量 アプリリリース2015年02月23日 18:00


部屋の中の水分量

「部屋の中の水分量」を知ると題して、Windowsストアアプリをリリース。

飽和水蒸気圧を求めるW. WagnerとA. Prussの近似式と、気体の状態方程式から、部屋の空気の中にどのくらいの水分があるのかを計算する。冬は加湿器のお世話になっているので、どのくらいがんばってくれているのか、数値で確認しようと思い立った次第。手を入れるうちに、中学高校の化学の教材のようになってしまった。

実際計算してみると、結構ある。今の部屋だと500mlくらい含んでいる計算。室温と湿度を真夏の数字にしてみると、2リットル近くにもなるのには少し驚く。

今回の開発時間は、30時間ほど。1週間弱。前回よりもコーディング量が少ないせいもあるが、ぐっと短縮。少しずつこなれてきた。

技術的な要素を挙げる。

1)WinRT XAML ToolkitのChartの利用。いくつかのグラフを重ねて表示している。また、ScrollableViewerで囲ってみたので、ちょっとした拡大縮小表示ができる。

2)VisualStateManagerで縦画面にするときに、表示項目が割り当てられるGridの行と列をいろいろ入れ替えてみる。様々な画面サイズに対応するには、Gridがほぼ唯一の選択肢だが、項目の並べ替えが自由にできることがわかったので、縦横の悩みが少しは楽になりそう。

WinRT XAML ToolkitのChartで折れ線グラフ2015年02月23日 21:25


WinRT XAML Toolkitを用いた折れ線グラフ

Windowsストアアプリでは、NuGetから様々なパッケージを導入できる。今回はグラフを描画するために、WinRT XAML ToolkitからData Visualization Controlsを利用した。開発者は、MSに勤める方だが、このプロジェクトは個人としてのもの。

このツールキット、なかなかの充実ぶりだが、使用法に関する情報が不足ぎみ。各所でいろいろの報告があるが、苦労したので、サンプルになるよう掲示しておきたい。

ツールボックスへのメニューの追加

その前に、VisualStudioのツールボックスを開いて、「アイテムの選択」を選び、XAML Toolkitのメニューを追加しておくと便利。

WinRT XAML ToolkitのChartで折れ線グラフ

さて、XAMLのソース中程の、ScrollViewerの定義がグラフ(Chart)の部分。

1)グラフを拡大縮小できるようにするため、Chartの定義をScrollViewerの中に収める。HorizontalScrollBarVisibilityは、標準でオフなので、オンにする。Verticalの方は標準でオン。

2)「Charting:Chart」で囲っているのが、グラフの定義。MinWidthとMaxWidthは、固定値で定義。Autoにすると、Scrollbarが現れてくれない。

3)「Charting:Chart.Axes」の部分が、X軸とY軸の定義。

4)そこから「Charting:LineSeries」が4つ並ぶが、折れ線グラフ4つ分の定義。最初の一つが、本体である飽和水蒸気圧の折れ線(青)。残りの3つは、「x=a, y=b」といった垂直線や水平線のグラフ(赤、黄、緑)。

5)「IndependentValuePath」は、X軸の変数。「DependentValuePath」は、Y軸の変数。「ItemsSource」でデータの供給元となるオブジェクトを指定。X軸とY軸の変数名は、このオブジェクトの2つのメンバ。

6)データの供給元は、「ObservableCollection」で定義。これにより、スライドバーを動かすときに、スライドバーの値変更のイベントハンドラで、コレクションの要素を置き換えることで、グラフのX軸とY軸が動く。