9日目のゴールとテーマ
9日目のテーマは「標準ライブラリを使って“道具箱”を広げる」です。
ここまでで、Pythonそのものの文法や、リスト・辞書・関数・ファイル・エラー処理といった“土台”はかなりできてきました。
今日からは、Pythonが最初から持っている「標準ライブラリ」という道具箱を開いていきます。
これを使えるようになると、
自分で一から全部作らなくてもいい
「日付」「乱数」「時間」「ファイルパス」など、よくある処理を一瞬で書ける
アプリの表現力が一気に広がる
という世界に入っていきます。
今日は特に、
モジュールと import の基本
random モジュールで「おみくじ」や「ランダム選択」
datetime モジュールで「日付・時刻」を扱う
それらを組み合わせたミニアプリ
ここまでを狙います。
モジュールと標準ライブラリとは何か
「Pythonが最初から持っている便利な道具の詰め合わせ」
Pythonは、本体だけでもいろいろできますが、
実は「標準ライブラリ」と呼ばれる巨大な道具箱を最初から抱えています。
例えば、
乱数を作る
日付や時刻を扱う
ファイルやフォルダのパスを扱う
圧縮ファイルを扱う
など、よくある処理は「もう誰かが作ってくれている」ことが多いです。
それを使うための単位が「モジュール」です。
モジュールは、「関連する機能をまとめたファイル」のようなものだと思ってください。
それを自分のコードから呼び出すのが import です。
import の基本形
「random を使いたいから、random を import する」
一番シンプルな import はこうです。
import random
value = random.randint(1, 6)
print(value)
Pythonここで起きていることを分解します。
import random で、「random というモジュールを使えるようにする」random.randint(1, 6) で、「random モジュールの中の randint という関数を呼び出す」
モジュール名.関数名(...) という形で使うのが基本です。
ここでの重要ポイントは、「使いたいモジュールは、最初に import する」というルールです。
import しないと、そのモジュールの名前はそもそも存在しないことになっています。
from … import … の書き方
「モジュール名を省略して、関数名だけで呼びたいとき」
もう少し短く書きたいときは、こういう書き方もあります。
from random import randint
value = randint(1, 6)
print(value)
Pythonfrom random import randint は、「random モジュールの中から、randint だけを直接使えるようにする」という意味です。
この場合は random. を付けずに randint(...) と書けます。
どちらが正解というわけではありませんが、
初心者のうちは「どの関数がどのモジュールのものか」が分かりやすい import random 形式をおすすめします。
random モジュールで「おみくじ」を作る
randint と choice の基本
random モジュールは、「ランダムな値」を作るための道具が詰まっています。
まずはサイコロっぽいものから。
import random
value = random.randint(1, 6)
print("サイコロの目は", value, "です")
Pythonrandint(a, b) は、「a 以上 b 以下の整数をランダムに1つ返す」関数です。
1〜6のサイコロ、0〜9の数字、などに使えます。
次に、「リストの中からランダムに1つ選ぶ」choice を使ってみます。
import random
results = ["大吉", "中吉", "小吉", "凶"]
result = random.choice(results)
print("今日の運勢は…", result, "です!")
Pythonrandom.choice(リスト) は、「リストの中からランダムに1つ選んで返す」関数です。
これだけで、立派なおみくじになります。
おみくじアプリを少し“アプリっぽく”する
関数とループを組み合わせる
せっかくなので、8日目らしく「ちょっと丈夫で、何回も引けるおみくじアプリ」にしてみましょう。
import random
def draw_omikuji():
results = ["大吉", "中吉", "小吉", "吉", "末吉", "凶"]
messages = {
"大吉": "最高の一日になりそうです。攻めの行動をしてみましょう。",
"中吉": "なかなか良い運勢です。コツコツ進めると成果が出ます。",
"小吉": "悪くはありません。無理をせず、丁寧に過ごしましょう。",
"吉": "普通の日。いつも通りが一番の安心です。",
"末吉": "少し注意が必要です。焦らず、確認を大事にしましょう。",
"凶": "慎重に行動する日。休むのも立派な選択です。"
}
result = random.choice(results)
message = messages[result]
return result, message
print("=== おみくじアプリ 9日目バージョン ===")
while True:
input("Enterキーを押しておみくじを引きます...")
result, message = draw_omikuji()
print("結果:", result)
print("メッセージ:", message)
again = input("もう一度引きますか?(y/n): ")
if again.lower() != "y":
print("また遊んでくださいね。")
break
Pythonここでの重要ポイントを整理します。
最初に import random でモジュールを読み込んでいる。draw_omikuji 関数の中で、結果の候補リストと、それぞれのメッセージを辞書で持っている。random.choice(results) で結果を1つ選び、その結果をキーにしてメッセージを取り出している。
関数は「結果」と「メッセージ」の2つを return している。
メインの部分では while ループで「何度でも引ける」ようにしている。
random を使うだけで、こういう「ちょっとした遊びアプリ」がすぐに作れます。
datetime モジュールで日付と時刻を扱う
今日の日付と現在時刻を知る
次は datetime モジュールです。
これは「日付」「時刻」「日時」を扱うための標準ライブラリです。
まずは「今この瞬間」を取ってみましょう。
import datetime
now = datetime.datetime.now()
print(now)
Python実行すると、こんな感じの表示になります。
2026-03-25 11:18:42.123456
datetime.datetime.now() は、「現在の日時」を表す datetime オブジェクトを返します。
このオブジェクトから、年・月・日・時・分・秒を取り出すことができます。
import datetime
now = datetime.datetime.now()
print("年:", now.year)
print("月:", now.month)
print("日:", now.day)
print("時:", now.hour)
print("分:", now.minute)
print("秒:", now.second)
Pythonこうやって、「今日が何年何月何日か」をコードから知ることができます。
日付をきれいな文字列にする:strftime
「YYYY/MM/DD HH:MM」みたいな形式を自分で決める
datetime オブジェクトは、そのまま print してもいいのですが、
アプリとしては「見せ方」を整えたいことが多いです。
そこで使うのが strftime です。
import datetime
now = datetime.datetime.now()
text = now.strftime("%Y/%m/%d %H:%M")
print(text)
Python例えば、こんな表示になります。
2026/03/25 11:18
strftime の中の文字は「フォーマット文字列」と呼ばれます。
よく使うものだけ覚えておきましょう。
%Y は4桁の年(2026)%m は2桁の月(03)%d は2桁の日(25)%H は24時間表記の時(00〜23)%M は分
これを組み合わせることで、「好きな形の日時文字列」を作れます。
日付の差を計算する:締切まであと何日?
日付同士を引き算すると「日数の差」が出る
datetime モジュールの強力なところは、「日付の計算」ができることです。
例えば、「締切日まであと何日か」を計算してみましょう。
import datetime
today = datetime.date.today()
deadline = datetime.date(2026, 4, 10)
diff = deadline - today
print("今日の日付:", today)
print("締切日:", deadline)
print("締切まであと", diff.days, "日です。")
Pythonここでは datetime.date を使っています。datetime.date.today() は「今日の日付(年月日だけ)」を返します。datetime.date(年, 月, 日) で、任意の日付を作れます。
日付同士を引き算すると、「timedelta」というオブジェクトが返ってきます。
その days 属性が「日数の差」です。
これだけで、「締切カウントダウン」みたいな機能が作れます。
9日目のミニアプリ:締切付きタスク管理(コンソール版)
タスク名と締切日を登録して、「あと何日か」を表示する
random と datetime を組み合わせて、
ちょっと実用寄りのミニアプリを作ってみましょう。
仕様はこうです。
タスク名と締切日(YYYY-MM-DD)を入力してもらう
複数のタスクを登録できる
最後に、各タスクについて「締切まであと何日か」を表示する
締切が過ぎていたら「期限切れ」と表示する
コードはこうなります。
import datetime
def parse_date(text):
try:
year_str, month_str, day_str = text.split("-")
year = int(year_str)
month = int(month_str)
day = int(day_str)
return datetime.date(year, month, day)
except Exception:
return None
def input_tasks():
tasks = []
while True:
name = input("タスク名を入力してください(終了するには空のままEnter): ")
if name == "":
print("入力を終了します。")
break
date_text = input("締切日を入力してください(YYYY-MM-DD): ")
deadline = parse_date(date_text)
if deadline is None:
print("日付の形式が正しくありません。もう一度やり直してください。")
continue
task = {"name": name, "deadline": deadline}
tasks.append(task)
return tasks
def print_tasks_with_remaining_days(tasks):
today = datetime.date.today()
print("=== タスク一覧 ===")
if len(tasks) == 0:
print("タスクは登録されていません。")
return
for task in tasks:
name = task["name"]
deadline = task["deadline"]
diff = deadline - today
days = diff.days
deadline_text = deadline.strftime("%Y/%m/%d")
if days > 0:
print(name + "(締切: " + deadline_text + ") → 締切まであと " + str(days) + " 日")
elif days == 0:
print(name + "(締切: " + deadline_text + ") → 今日が締切です!")
else:
print(name + "(締切: " + deadline_text + ") → 期限切れ(" + str(-days) + " 日過ぎています)")
print("=== 締切付きタスク管理アプリ 9日目バージョン ===")
tasks = input_tasks()
print_tasks_with_remaining_days(tasks)
Pythonこのアプリのポイントを丁寧に見ていきます。
parse_date 関数は、「YYYY-MM-DD 形式の文字列を date 型に変換する」役割です。text.split("-") で「年」「月」「日」に分解し、それぞれを int に変換して datetime.date を作っています。
もし途中でエラーが起きたら None を返して、「変換できなかった」というサインにしています。
input_tasks 関数は、「タスク名と締切日を何件も入力して、辞書のリストとして返す」役割です。
締切日が正しくパースできなかった場合は、エラーメッセージを出してそのタスクの入力をやり直しています。
print_tasks_with_remaining_days 関数は、「今日の日付と締切日を比べて、あと何日かを表示する」役割です。deadline - today で日数差を出し、
正の値なら「あと◯日」、0なら「今日が締切」、負なら「期限切れ」として表示しています。
ここまで来ると、かなり「実用アプリ」に近い雰囲気になってきます。
9日目で一番大事な感覚
「全部自分で作らなくていい。Pythonの“道具箱”を借りればいい」
今日あなたに持ってほしい感覚はこれです。
乱数を自分で実装しなくていい。
日付計算を自分で実装しなくていい。
ファイル操作も、時間計測も、パス操作も、たいていは「もうある」。
Pythonの標準ライブラリは、「よくある問題に対する、よく練られた解決策の集合」です。
大事なのは、「こういうときに使えそうなモジュールがありそうだな」と思えること。
そして、import して、公式ドキュメントやサンプルを見ながら少しずつ使っていくこと。
random と datetime は、その中でも特に出番の多いモジュールです。
今日触った感覚を、ぜひ体に残しておいてください。
9日目のまとめ
今日のキーポイントを短く整理するとこうなります。
モジュールは「機能をまとめたファイル」で、import モジュール名 で使えるようになる。random.randint や random.choice で、ランダムな数値や要素を簡単に扱える。datetime.datetime.now() や datetime.date.today() で、現在の日時・日付を取得できる。strftime で日時を好きな形式の文字列に変換できる。
日付同士を引き算すると「締切まであと何日か」が計算できる。
もし余裕があれば、今日のタスク管理アプリに次のような機能を足してみてください。
締切が近いタスクだけを強調表示する
タスクをファイルに保存して、次回起動時に読み込む(7日目との合体)
タスクに「優先度」や「メモ」も持たせる
ここまで来ると、あなたが書いているのはもう「学習用のコード」ではなく、
ちゃんと自分の生活や仕事に使える“小さなツール”になっていきます。
