血圧管理カレンダー(Swift)

macOS Swift

血圧管理カレンダー

macOS 10.15.7 / Xcode 11.3.1 / Swift 5.0

概要

日毎に計測した血圧をデータベースに登録するアプリケーション。起動すると月間カレンダーが表示されるので日付を選択し入力するシートを開き、血圧を入力する。入力した血圧データは月単位で一覧表として表示する。
画像をクリックすると動画が表示されます

操作方法

実装方法

本機能は シンプルカレンダー をベースに、血圧の入力機能と一覧表の表示機能を追加する。
クライアント/サーバ方式とし、血圧データを格納するデータベースはサーバにおく。クライアントのアプリケーションは HTTPインタフェースにより、サーバとやり取りし、血圧データの入力/更新/参照を行う。
HTTPリクエストの送受信処理は、様々なアプリケーションから汎用的に利用できるように、共通的な部分を関数化する。これは、クラスメソッドを集めたクラスであり、本章ではそれらを利用する部分だけ説明する。メソッド中身については、 HTTPリクエスト(同期処理) を参照されたい。
データベース操作等を行うサーバ側の処理(PHPスクリプト)は本章では取り上げない。PHP SQL データベースの照会と更新を参考とされたい。

クラス構造図

[クラス構造図]
画像をクリックすると「クラス構造図」のページが別ウィンドウに表示される

クラス一覧

ここでは、シンプルカレンダーで定義したクラスのうち変更のないものは未掲載とした。

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. 血圧レコードを登録する