活動報告24(2022年10月)
プロジェクト薬箱「3D CAD編(Fusion360 / 02)、Python編(中級10)」
最初に、先月のFusion360の続きから。3D CADを設計だけでなく、他の場面にも応用できる方法を思いついたので早速試してみる。それは、装置の大きさをどの程度にするかという判断を、基準となる各種製品と比較することで参考にできること。
使い勝手を考慮しないと限定した場合に、一般的に小さい製品の方が空間占有率の面から好ましいのは確かだが、据え置き型の装置を前提すると、存在感という意味である程度の大きさは必要と考える。といっても、ただでさえモノが溢れる現代生活では、新たなカテゴリーのモノを日常生活に導入してもらうためには、使いやすさは当然のこととして設置場所等を含めた提案も必要ではないかと考えた。
ということで日常生活上邪魔にならず圧迫感を感じさせない限度は、どの程度の大きさなのかを試行錯誤してみた。リビングに置かれる備品を念頭に、比較対象となるソリッドモデルを複数作って並べてみて家庭内で設置される場所を想像してみた。
タイトル画がそのイメージで、Appleの某PCと比較してみた。Fusion360がいいのは一旦モデルを作成すれば、360度どの方向からも大きさの相対的イメージが把握できるので、感触をつかみやすい。といっても、実物大のモデルも重要。家電等を購入して実際に家で使ってみると、店舗で感じた大きさとのギャップに驚くのはよくあること。遠い昔のように思えるスタートライン初期に、木材で装置の実物大モックアップモデルを作成したが、実際に手にしてみるとそのズッシリ感に驚いたものである。
このように実体面での結論を出す一方、機能面としてプログラミング上の進捗もあった。先月まではtkinterでのUIで時刻表示をデジタルとアナログ表示をどう折衷させるか迷いがあったが、万人に対する視認性を優先してデジタル表記とした。表記が決まったところで実際のプログラミングとなるが、まずタイマー作成に苦労した。というのも、タイマーが1つだけならいくらでもネット上に参考コードが載っているが、作りたいのはまずは朝・昼・夕・眠前の4つの時間帯設定ができるタイマーで、相互に連動して機能を発揮するもの。
これについてPythonでは日時に関するdatetimeモジュールを使うことになるが、一方でUNIX時間を扱うtimeモジュールもある。さらに、datetimeモジュールに限っても、datetimeオブジェクト、dateオブジェクト、timeオブジェクト、timedeltaオブジェクトと4つもある。どうです、見るだけで混乱しません? 名前を変えればいいのに、同じような名前を使いまわしているの混で乱に拍車をかけている。
この中で重要なのは、時間差を扱うtimedeltaオブジェクトだが、コンストラクタで年数と月以外の、週、日、時間、分、秒、ミリ秒の情報を設定できるのに、内部情報はあくまで「days」「seconds」「microseconds」ということを理解しないと地雷原にハマることになる。しかも、時間差の引き算ではdaysだけマイナス表記になることもあるので、0時を回る場合の時間差では、単純に不等号だけでは比較できないことにもなる。結局、これについては特定の基準時を設定して換算し、さらにdaysのマイナス分を足し算することで解決した。
残るタイマー関係の作業としては、4+1の時間帯でカウントダウン機能を連動することと、設定時刻との時間差によりメッセージを変えること、カレンダーに服用情報を自動入力すること等を想定している。