4月から,中学生になる次男かずは,こうしろうより視力が悪い。原因はパソコンのし過ぎというか,正確にはパソコンでゲームのし過ぎである。「一回30分以内にしなさい」とか「1日1時間まで」と口がすっぱくなるほど言っても,親父の晩酌と同じでついつい過ぎてしまう。
「自分がどれだけパソコンの前にいるのか,自覚できるように使用時間をつけなさい。」とExcelで開始時間,終了時間をつけることだけは守っている(自己申告なので,たぶん過少申告だ)。
「Excelでいちいち入力するのが面倒だ」と,この時間の記録をHSP(Hot Soup Processor)で自動化するのだと,かずはプログラムを作り出した。「かず,おまえ,すごいな」と言いながら,原始人が道具を作り始めたときもこんな感じだったのかなあと,わけのわからないことを考えていた。
ある晩,かずが文字列定数と変数の連結がわからず,ごちゃごちゃなコードを書いていたので,
「文字列は ダブルクォート(“)でくくって,連結はHSPでは+でするんだ。何書いてるんだ!」と疲れて帰宅したので,強い言い方をしてしまったらしく,それ以来,プログラミングをしているところをのぞき込んだり,手を出そうとすると「いま,とちゅうやから」と拒絶するようになった。
でも,その方がいいのである。人をあてにせずに,間違っていても自分でどんどんプログラミングして行く方が早く身につくはずだ。「詰ったら,聞いてくれよ」と一歩下がった。
これが,実行画面である。上段が開始時刻,中段が現時刻で,下段に経過時間が表示される。終了ボタンを押すとテキストファイルにログが出力される。
「このファイルもプログラムで表示し,時間の集計も取れるようにするが。」とかずは強気である。
いま,できているソースコードは次のようなものである。プログラム名は使用時間チェッカーだ。
---------------------------------------------------------------
//使用時間チェッカー
screen 0,300,100
objsize 100,33,1
sdim siyouzikan,32000
button "表示・閉じる",*tekisuto
button "終了",*syuryou
button "設定" ,*settei
gettime hour,4 // (1)
gettime minute,5
gettime second,6
font "MS ゴシック",30,1
pos 105,0
mes ""+hour+":"+minute+":"+second+" // (2)
pos 230,0
mes "開始"
gosub *load
*main
color 255,255,255
boxf 100,35,300,100
gettime hour2,4
gettime minute2,5
gettime second2,6
color 0,0,0
pos 105,35
mes ""+hour2+":"+minute2+":"+second2+" // (3)
pos 230,35
mes "時刻"
zi=hour*3600
zi2=hour2*3600
hun=minute*60
hun2=minute2*60
second=second
second2=second2
siyou=(zi2+hun2+second2)-(zi+hun+second) // (4)
hour3=siyou/3600
minute3=(siyou-(hour3*3600))/60
second3=siyou-(hour3*3600+minute3*60)
pos 105,70
mes ""+hour3+":"+minute3+":"+second3+" // (5)
pos 230,70
mes "使用"
title ""+hour3+":"+minute3+":"+second3+"
wait 100
goto*main
*tekisuto
goto *main
*syuryou
gettime month,1
gettime day,3
siyouzikan=""+month+"月"+day+"日"+" "+hour+":"+minute+":"+second+" "+hour2+":"+minute2+":"+second2+" "+hour3+":"+minute3+":"+second3+"\n"+siyouzikan
strlen a,siyouzikan
bsave "siyoukiroku.txt",siyouzikan,a // (6)
end
*settei
goto *main
*load
z=""
dirlist z,"siyoukiroku.txt",0 // (7)
if stat=1 {
strlen a,siyouzikan
bload "siyoukiroku.txt",siyouzikan,a // (8)
}
return
---------------------------------------------------------------
(1)からの数行gettimeコマンドで時,分,秒を取得している。gettimeコマンドの詳細は以下の通りである。
=======================================================
gettime 日付・時刻を取得
gettime p1,p2
p1:読み込み先の変数
p2:取得するタイプ
(0:年,1:月,2:曜日,3:日,4:時,5:分,6:秒)
=======================================================
(2)で時間を表示している。これが開始時刻である。(3)で表示している時間が現時刻。(4)のsiyou=(zi2+hun2+second2)-(zi+hun+second)で経過時間を求めている。2つの時:分:秒の差異を求めるために,(4)の数行前で,zi=hour*3600,hun=minute*60と,時には3,600を掛け,分には60を掛けてすべて秒単位に変換し,差し引きした後,こんどは割り算をして時,分に戻し,(5)で経過時間を表示している。
「かず,このやり方,何を参考にした。」とたずねると,「自分で考えた」と胸を張ったので,いくそった(富山弁講座 いくそる:びっくりするの意)。
かずは,あかちゃんの頃から他の寸法に比べて胸囲が大きく,検診のときに「計り間違えではないか」と医者をびっくりさせたことがある。だから,本人はそんなに胸を張ったつもりはないのかもしれないが,自力で問題解決の方法を考えだしたことにちょっと驚いた。
(6)のbsaveがテキストファイルへの保存である。ファイル"siyoukiroku.txt"に変数siyouzikanの内容を書き出している。
ログなので,以前に記録されているデータに追記しなくてはならない。そのために,(7)のdirlist z,"siyoukiroku.txt",0でテキストファイルが存在するか確認し,存在した場合,(8)のbloadで変数siyouzikanに読み込んでいる。
=======================================================
dirlst ディレクトリ一覧を取得
dirlst p1,"filemak",p2
p1:ディレクトリ一覧を格納する変数
"filemak":ファイルマスク(一致するファイルを取得する)
p2:ディレクトリ取得モード
(0:すべてのファイル,1:ディレクトリを除くファイルすべて,・・・)
*システム変数statに一致したファイル数が入る
=======================================================
ディレクトリ一覧を取得するdirlistコマンドでファイルの存在が確認できることは,私がアドバイスした。
今回保存したいデータとsiyouzikanに読み込んだ過去のデータを連結して出力することで,追記を行っている。
保存するファイルを切り替えられるようすれば,コンピュータ上での各種作業時間の記録などにも応用できそうだ。良いものになったら使わせてもらおう。
第155話 かず,実用的なプログラムの作成に乗り出す
あなたにお薦め
今日のピックアップ
-
不要な製品の購入を強いられる、ブロードコムのVMware買収で悪影響
-
米GitHubが「Workspace」を開始、ソフト開発の課題をAIが自動解決
-
Core Ultra搭載の「dynabook R9」、35時間駆動の実力
-
パスワード管理や不正サイト対策はEdgeもChromeも充実、複数機器の同期は選べる
-
コメント関連が使いやすくなった新Acrobat Reader、「クイックツールバー」に集約
-
M3搭載「MacBook Air」とM2搭載モデルを比較、外付けディスプレー2台接続も試す
-
有名人になりすまして投資広告を掲載、SNSで接触してみた結果
-
NECが受注したe-Govのガバクラ移行が大幅遅延、構築手法の途中変更が影響か
-
IIJ公式サイトのPVがある日突然13倍に、バズったわけでも炎上したわけでもない裏側
-
アリババのデジタル人材育成プログラム、世界の起業家や若者4千人以上にノウハウ提供
-
縦長のWebページ全体を画像で保存、メニューから選べるEdgeがChromeより便利
-
「四重苦」で伸び悩む日本市場、なぜ海外スマホメーカーが開拓に本腰を入れるのか
注目記事
おすすめのセミナー
-
「仮説立案」実践講座
例えば「必要な人材育成ができていない」といった課題に、あなたならどう取り組みますか? このセミナ...
-
CIO養成講座 【第35期】
業種を問わず活用できる内容、また、幅広い年代・様々なキャリアを持つ男女ビジネスパーソンが参加し、...
-
改革リーダーのコミュニケーション術
プロジェクトを成功に導くために改革リーダーが持つべき3つのコミュニケーションスキル—「伝える」「...
-
パワポ資料が見違える「ビジネス図解」4つのセオリー
インフォグラフィックスとは、形のない情報やデータなど伝えたいことを分かりやすい形で表現する技法で...
-
間違いだらけの設計レビュー
本セミナーでは、現場で多く見られる間違ったレビューの典型例を示し、そうならないための現場の改善策...
-
オンライン版「なぜなぜ分析」演習付きセミナー実践編
このセミナーでは「抜け・漏れ」と「論理的飛躍」の無い再発防止策を推進できる現場に必須の人材を育成...
-
問題解決のためのデータ分析活用入門
例えば「必要な人材育成ができていない」といった課題に、あなたならどう取り組みますか? このセミナ...
-
業務改革プロジェクトリーダー養成講座【第16期】
3日間の集中講義とワークショップで、事務改善と業務改革に必要な知識と手法が実践で即使えるノウハウ...
注目のイベント
-
日経クロステックNEXT 関西 2024
2024年5月16日(木)~5月17日(金)
-
日経ビジネスCEOカウンシル
2024年5月16日(木)17:00~19:50
-
WEURO DIVERSITY & INCLUSION FORUM
2024年5月17日(金)13:00~17:30(予定)
-
VUCA時代に勝ち残る戦略的サプライチェーン構築に向けて
2024年 5月 24 日(金) 10:00~16:20
-
人手不足を乗り越える 日本の産業界成長のシナリオ2024
2024年5月30日(木)10:20~17:45
-
人的資本経営版:日経ビジネスLIVE 2024 Spring
2024年6月3日(月)~6月5日(水)
-
DX Insight 2024 Summer
2024年6月4日(火)、5日(水)
-
付加価値ある意匠デザインを実現するものづくり技術2024
2024年6月7日(金)10:30 ~ 17:00
-
WOMAN EXPO 2024
2024年6月8日(土)10:00~17:30
-
デジタル立国ジャパン2024
2024年6月10日(月)、11日(火)
おすすめの書籍
-
ソフトバンク もう一つの顔 成長をけん引する課題解決のプロ集団
ソフトバンクにはモバイルキャリア事業以外のもう一つの顔が存在する。本書ではキーパーソンへのインタ...
-
対立・抵抗を解消し合意に導く 改革リーダーのコミュニケーション術
本書は、改革リーダーに必須のコミュニケーション術を3つのスキルの観点からまとめ上げたものです。今...
-
もっと絞れる AWSコスト超削減術
本書ではコスト課題を解決するため、AWSコストを最適化し、テクニックによって削減する具体策を紹介...
-
優秀な人材が求める3つのこと 退職を前提とした組織運営と人材マネジメント
「学生に人気のコンサルであっても、大手企業であっても、せっかく獲得した人材が数年で辞めてしまう...
-
Web3の未解決問題
ブロックチェーン技術を主軸とするWeb3の技術について、現在の社会制度との摩擦と、その先にある新...
-
ロボット未来予測2033
ロボットの用途・市場はどう拡大していくのか。AI実装でロボットはどこまで進化するのか。技術の進展...
日経BOOKプラスの新着記事
-
話題の本 書店別・週間ランキング(2024年4月第4週)
-
「永遠の命」を手にする4つのシナリオ 『「不死」の講義』
-
田内学 幸せに直結する「お金の減らし方」を学べる本
-
はじめに:『企業価値最大化経営』
-
プロほど入らない「○○保険」 貯蓄取り崩しを嫌う心理の不合理
-
昭和人間はなぜ大昔のことを「ついこのあいだ」のように語るのか
-
GWに「30代が読んでおきたい、おすすめビジネス名著」記事まとめ
-
すべての人に訪れる「死」と向き合う 『「不死」の講義』
-
はじめに:『ゼロからわかる マネーの常識 NISA、イデコから保険、税金、住宅ローンまで』
-
「麻布台ヒルズ」必見の建築デザイン6選 世界的設計事務所が共演