『〇〇くん、今何時?』って聞かれてお子さんは答えることができますか?
うちの息子は、今年小学校に上げる予定なのですが、何となくニュアンスで大まかな時刻は言えますが、だいたい違ってます💦
今回は以下のようなpythonで時計の読み方の練習ができるコードを作成しました。
今、『何時何分』って言える様にお子さんと一緒に勉強していきましょう!!
- 時計の読み方の重要性
- 時計の読み方の基本
- タイムゾーンについて
- 時計の読み方を練習するPythonコード
- まとめ

今回、コードはGoogle Colabを使用して書いています。
他のIDE(VS codeなど)を使用した場合、うまく実行できるか分かりませんので、Google Colabを使用してコードを書いてみてください。


時計の読み方の重要性


お子さんが、時計の読み方を学ぶことが非常に重要です。なぜなら、時計の読み方をマスターすることで、お子さんのさまざまなスキルや日常生活が向上するからです。
まず、時間の管理ができるようになることは、お子さんの時間に対する意識を高め、予定を守るために役立ちます。時間は貴重なリソースであり、正確に時刻を把握することは、日々の活動を円滑に進めるために不可欠です。
また、時計の読み方を身につけることで、スケジュールを立てるスキルも磨かれます。学業、遊び、家事など、お子様の日々の活動を効果的に管理するためには、正確な時刻を理解し、予定を組むことが必要です。
時間に対する敬意を持つことも大切です。約束の時間に遅れないことは、他の人々への配慮の表れであり、礼儀正しい行動の一環です。お子様に時計を使った時間の尊重を教えることは、社会的なスキルの基盤を築くのに役立ちます。
そして、時計の読み方を学ぶことは、認知能力や数学的なスキルの発展にも寄与します。時計の針や数字を理解し、時間を読むことは、視覚的な認識能力を高め、数学的な思考を養います。
時計の基本
時計は、時刻を表示するために、時(じ)、分(ふん)、秒(びょう)の3つの要素を組み合わせて表示します。時刻は、1日を24時間に分割したものです。1時間は60分、1分は60秒で構成されます。
時計の文字盤
1から12までの数字が等間隔で配置されています。時計の針がこの数字を指すことで、今何時かがわかります。


時針(じしん)
短い針で、時間を指します。私たちに『何時か』を教えてくれます。たとえば、上の時計のように時針が10の数字の近くにあったら、『10時』です。 時針は、1 時間ごとに1 周します。
分針 (ふんしん)
1~12の数字の間には、たくさんの小さな目盛りがあり、これは分を示していて、分針がこれらの目盛りを指すことで、今何分かを教えてくれます。分針は長い針で、右回りに1 時間ごとに 12 周します。。
分針が 1 ⇨「5分」。分針が 2 ⇨「10分」。分針が 3 ⇨ 15分。これは、時計の数字1つが「5分」を意味するからです。


秒針(びょうしん)
秒針は時計の中で一番細くて、速く動く針を指します。一部の時計には、秒を示すためのさらに小さな目盛りもあります。この針は、私たちに『今、何秒か』を教えてくれます。秒針が12に戻るたびに、1分経ったことがわかります。秒針は、1 分ごとに 60 周します。
タイムゾーンについて
タイムゾーンとは、地球上の地域ごとに、時刻を決めるためのものです。同じ時間でも、地球上の異なる地域では、時刻が異なります。
地球上で時刻が異なる理由を順を追って解説していきます。
地球は、丸い形をしていて、くるくるとゆっくり回転しています。
下のイラストの様に地球が回転すると、太陽の光は地球の一部にしか当たりません。
だから、地球上のある場所では朝になり、別の場所では夜になるのです。
たとえば、日本の時刻は朝の8時だとします。一方でアメリカでは前の日の夜になります。これは、地球がくるくる回っていて、太陽の光が同時に全ての場所に当たらないからです。
日本の方が13 ~ 14 時間、アメリカよりも早く時間が進んでいます。
Pythonで時計の読み方を練習しよう!
pythonを使用して、時計の読み方の勉強ができるコードを作成して、お子さんと一緒に勉強してみましょう。
好きな時刻を入力して、時計を作成しよう
下記のコードは、まず簡易的なアナログ時計を描画します。
そして、スライダーを操作することで『時間』と『分』を変更し、好きな時刻をアナログ時計に表示させることができるコードです。
下記のコードをGoogle Colaboratoryにコピーして、貼り付けて実行してみてください。


import matplotlib.pyplot as plt
import numpy as np
from ipywidgets import widgets, HBox, VBox
from IPython.display import display, clear_output
class InteractiveClock:
def __init__(self):
# Initialize hands
self.hour_angle = 0
self.minute_angle = 0
# Interactive controls
self.hour_slider = widgets.IntSlider(min=0, max=11, step=1, description='時:')
self.minute_slider = widgets.IntSlider(min=0, max=59, step=1, description='分:')
self.update_button = widgets.Button(description='時計を更新')
# Button event
self.update_button.on_click(self.on_button_click)
def draw_clock(self):
fig, ax = plt.subplots()
ax.set_xlim(-1.5, 1.5)
ax.set_ylim(-1.5, 1.5)
ax.set_aspect('equal', 'box')
ax.axis('off')
# Draw clock face
for hour in range(1, 13):
angle = np.pi/2 - hour*np.pi/6
x = 1.2 * np.cos(angle)
y = 1.2 * np.sin(angle)
ax.text(x, y, str(hour), ha='center', va='center')
# Draw minute marks
for minute in range(60):
angle = np.pi/2 - minute*np.pi/30
x_start = np.cos(angle)
y_start = np.sin(angle)
x_end = 0.95 * x_start
y_end = 0.95 * y_start
ax.plot([x_start, x_end], [y_start, y_end], color='black')
circle = plt.Circle((0, 0), 1, color='black', fill=False)
ax.add_artist(circle)
# Draw hands
ax.plot([0, 0.5*np.cos(self.hour_angle)], [0, 0.5*np.sin(self.hour_angle)], color='blue', lw=6)
ax.plot([0, 0.8*np.cos(self.minute_angle)], [0, 0.8*np.sin(self.minute_angle)], color='green', lw=4)
plt.show()
def on_button_click(self, b):
hour = self.hour_slider.value
minute = self.minute_slider.value
self.hour_angle = np.pi/2 - (hour + minute/60) * np.pi/6
self.minute_angle = np.pi/2 - minute * np.pi/30
clear_output(wait=True)
self.draw_clock()
display(VBox([HBox([self.hour_slider, self.minute_slider]), self.update_button]))
def display(self):
self.draw_clock()
display(VBox([HBox([self.hour_slider, self.minute_slider]), self.update_button]))
# Create and display the interactive clock
interactive_clock = InteractiveClock()
interactive_clock.display()


ランダムに時刻を表示させ、何時か答えてみよう
下記のコードは、実行ボタンをクリックするたびに、描写されたアナログ時計にランダムな時刻を表示させます。
また、『正しい時刻は?』ボタンを押すことで、表示された時刻の答えを知ることもできます。
下記のコードをGoogle Colaboratoryにコピーして、貼り付けて実行してみてください。
このコードを使うと時計を読む練習をゲーム形式でできますので、是非試してみてください。
import matplotlib.pyplot as plt
import numpy as np
import random
from ipywidgets import widgets, HBox, VBox
from IPython.display import display, clear_output
class InteractiveClock:
def __init__(self):
# Initialize hands with random time
self.hour = random.randint(0, 11)
self.minute = random.randint(0, 59)
self.update_angles()
# Interactive controls
self.update_button = widgets.Button(description='正しい時刻は?')
self.time_label = widgets.Label()
# Button event
self.update_button.on_click(self.on_button_click)
def update_angles(self):
self.hour_angle = np.pi/2 - (self.hour + self.minute/60) * np.pi/6
self.minute_angle = np.pi/2 - self.minute * np.pi/30
def draw_clock(self):
fig, ax = plt.subplots()
ax.set_xlim(-1.5, 1.5)
ax.set_ylim(-1.5, 1.5)
ax.set_aspect('equal', 'box')
ax.axis('off')
# Draw clock face
for hour in range(1, 13):
angle = np.pi/2 - hour*np.pi/6
x = 1.2 * np.cos(angle)
y = 1.2 * np.sin(angle)
ax.text(x, y, str(hour), ha='center', va='center', fontweight='bold')
# Draw minute ticks
for minute in range(60):
angle = np.pi/2 - minute*np.pi/30
start = 0.95 if minute % 5 else 0.9 # Longer ticks at each 5 minute interval
end = 1
ax.plot([start*np.cos(angle), end*np.cos(angle)],
[start*np.sin(angle), end*np.sin(angle)],
color='black', lw=1)
circle = plt.Circle((0, 0), 1, color='black', fill=False)
ax.add_artist(circle)
# Draw hands
ax.plot([0, 0.5*np.cos(self.hour_angle)], [0, 0.5*np.sin(self.hour_angle)], color='blue', lw=6)
ax.plot([0, 0.8*np.cos(self.minute_angle)], [0, 0.8*np.sin(self.minute_angle)], color='green', lw=4)
plt.show()
def on_button_click(self, b):
# Display the correct time
self.time_label.value = f"The correct time is: {self.hour:02d}:{self.minute:02d}"
clear_output(wait=True)
self.draw_clock()
display(VBox([self.update_button, self.time_label]))
def display(self):
self.draw_clock()
display(VBox([self.update_button]))
# Create and display the interactive clock
interactive_clock = InteractiveClock()
interactive_clock.display()


まとめ
今回は、時計を読める様にするために、時計の基本的なことを解説していきました。
また、pythonで時計の読み方を練習できるコードを書いていますので、お子さんと一緒に実際に使って頂いて、その感想を教えて頂けたら嬉しいです。
この記事が少しでも皆様のお役に立てたら幸いです。
コメント