血圧管理カレンダー
macOS 10.15.7 / Xcode 11.3.1 / Swift 5.0
概要
日毎に計測した血圧をデータベースに登録するアプリケーション。起動すると月間カレンダーが表示されるので日付を選択し入力するシートを開き、血圧を入力する。入力した血圧データは月単位で一覧表として表示する。
画像をクリックすると動画が表示されます
操作方法
-
血圧の入力
日付を選択し(青い枠線で囲まれる)入力ボタンを押す、または日付をダブルクリックすれば、その日の血圧入力シートが開く。キーボード、または血圧入力シートの数字ボタンをクリックして血圧を入力する。確定フラグをオンにし登録ボタンを実行すると血圧データはデータベースに登録される。入力済みの日は日付が丸印で囲まれる。確定フラグをオフで登録した場合は、データは登録されるが、入力未完了というステータスになる。 -
血圧一覧表の表示
一覧表示ボタンをクリックして、その月の血圧の一覧表を表示する。日毎の血圧値は横向きの棒グラフで表す。基準値を超えた高血圧の場合、値とグラフの色を変える。
実装方法
本機能は シンプルカレンダー をベースに、血圧の入力機能と一覧表の表示機能を追加する。
クライアント/サーバ方式とし、血圧データを格納するデータベースはサーバにおく。クライアントのアプリケーションは HTTPインタフェースにより、サーバとやり取りし、血圧データの入力/更新/参照を行う。
HTTPリクエストの送受信処理は、様々なアプリケーションから汎用的に利用できるように、共通的な部分を関数化する。これは、クラスメソッドを集めたクラスであり、本章ではそれらを利用する部分だけ説明する。メソッド中身については、 HTTPリクエスト(同期処理) を参照されたい。
データベース操作等を行うサーバ側の処理(PHPスクリプト)は本章では取り上げない。PHP SQL データベースの照会と更新を参考とされたい。
クラス構造図
![[クラス構造図]](calendar_class.png)
画像をクリックすると「クラス構造図」のページが別ウィンドウに表示される
クラス一覧
ここでは、シンプルカレンダーで定義したクラスのうち変更のないものは未掲載とした。
UAHealthView: UAView
カレンダーを表示する親ビュー
シンプルカレンダーの UAViewクラスを継承し、血圧管理カレンダーで使用するプロパティとメソッドを追加する。
UAItemView: NSView (改)
一日の日付を表示する
シンプルカレンダークラスの UAItemViewクラスの修正版。名前は同じだが中身は違う。元の機能はそのままに、血圧管理カレンダーで使用するプロパティとメソッドを追加する。
UAItemViewクラスを継承したかったが、ポリモフィズムを実現できないため断念した。本クラスのオブジェクトを保持する UAViewクラスでは、UAItemViewクラスのオブジェクトを作成しているが、継承によりクラス名が変わると、この部分のクラス名の変更が必要になってしまうからである。
WinDataEntryControl: NSWindowController
血圧入シートのコントローラ
BPButton: NSButton
数値(0〜9)ボタン、クリア(C)ボタン
BPValueView: NSView
最高血圧/最低血圧入力フィールド
BPAcceptButton: NSButton
確定チェックボックス
BPLabel: NSView
見出しなどのラベル
UATextAttribute: NSObject
属性付き文字列を作成する関数ライブラリ
WinResultControl: NSWindowController
血圧一覧表ウィンドウのコントローラ
血圧一覧表のビュー構造
REHeaderView: NSView
表と列の見出しを表示するカスタムビュー
REMainView: NSView
明細行を表示するカスタムビュー
REElementView: NSView
明細行の構成要素
明細行を構成する日付、曜日、最低血圧、最高血圧、棒グラフの要素になる。これらを 上記の REMainViewオブジェクトの上に配置する。
HTTPインタフェース仕様
1. 期間を指定して血圧レコードを取得する
2. 指定した日付の血圧レコードを取得する
3. 血圧レコードを登録する
明細行の構成要素
明細行を構成する日付、曜日、最低血圧、最高血圧、棒グラフの要素になる。これらを 上記の REMainViewオブジェクトの上に配置する。