個人用に打刻システムを作ってみた。システムの仕様やデザインをどう工夫したかと、作ってみた感想を投稿する。
打刻フォーム
打刻フォームは、開始打刻用と終了打刻用の2種類を作った。開始時と終了時で、必要な情報が異なると考え、フォームを分けた。
開始打刻用
開始時のフォームは下記のものになった。開始時は、開始する取り組みのカテゴリーを選択する。カテゴリーには、私が取り組みたい事柄を並べた。
カテゴリーのボタンをクリックすれば、そのカテゴリーに取り組み始めた事が投稿される。このクリックにより、カテゴリーの選択と開始したという情報を、同時に伝達できる。
その際、システムの処理のための隠しフィールドとしてユーザー名と打刻開始フラグを同時に渡す。
終了打刻用
終了時の打刻フォームは下記のものになった。
開始打刻があり作業中の場合に、終了打刻をするためにこのフォームを表示するようにした。
別のことをした時間があれば、休憩時間として作業時間から控除できるように、休憩時間の入力欄を作った。作業内容は履歴として残すようにした。
終了ボタンをクリックすれば、終了情報が投稿される。その際の隠しフィールドには、開始打刻時に採番したidを同時に渡す。
集計と表示
データベースへの格納
打刻フォームからの情報は、phpで処理してMySQLデータベースに格納するようにした。
作業時間のサマリーの表示
下表のように、今日、今週、先週、先々週、合計の作業時間を、カテゴリー別に集計して表示するようにした。単位は分。
どのようなことに、どれくらいの時間取り組んだかが分かるようになった。
作業履歴の表示
下図の体裁で作業履歴も表示できるようにした。
感想
打刻とは、時間を記録するだけだと思って気軽にシステム制作を始めた。ところが実際に作ってみると、フォームの表示や開始・終了情報の取得とその処理、データベースに格納された情報の集計や表示など、割と処理する内容が多くて意外だった。
昨今では生成AIが発達していて、制作の効率は悪くなかったと思う。コードの半分くらいはBingチャットの出力を使った。
複数のユーザーに対応できるように、ユーザー名をやりとりするコードを書いたが、商用には程遠い印象だ。編集画面がなく、セキュリティにも脆弱性がある書き方をしているので、個人用に運用しようと思う。
打刻システムの出来は気に入っている。自身の取り組みを省みて、意味のある時間を過ごすための指標にしようと考えている。
コメント