TkinterとDatetimeで開発する未来日付での年齢算出GUIアプリケーションプロジェクト

目次

DEMO

このプロジェクトで作成する年齢計算GUIアプリケーションのデモ画面です。シンプルで直感的なインターフェースを持ち、生年月日と基準日を入力することで正確な年齢を「○歳 ○日」の形式で表示します。

アプリケーションは400×250ピクセルのコンパクトなウィンドウで、2つの日付入力フィールド、計算ボタン、結果表示エリアから構成されています。基準日フィールドには現在の日付が自動的に入力され、すぐに使用開始できます。

入力エラーに対しては適切なエラーメッセージが表示され、ユーザーフレンドリーな設計となっています。デスクトップ環境で動作し、WindowsとmacOS両方で利用可能です。実際のビジネスシーンや日常業務で活用できる実用的なツールとして設計されており、保険業界や人事管理などの分野での応用も可能です。

完成したアプリケーションはGitHubでポートフォリオとして公開でき、GUI開発スキルの証明として活用できます。

プロジェクト概要

前提条件

  • Pythonプログラミングの基本的な知識(変数、関数、クラスの概念)
  • VSCodeエディタの基本操作ができること
  • ターミナル(コマンドライン)の基本的な使用経験
  • Gitとバージョン管理の基礎知識
  • 日付と時刻の基本概念に関する理解

開発環境

  • Python 3.7以上
  • VSCode(Visual Studio Code)
  • Git(バージョン管理システム)
  • GitHubアカウント
  • tkinter(Python標準ライブラリ)
  • datetime(Python標準ライブラリ)

プロジェクト内容

このプロジェクトでは、PythonのTkinterライブラリを使用して、生年月日から指定した未来の日付時点での正確な年齢を計算するデスクトップGUIアプリケーションを構築します。初心者でも段階的に学習できるよう、基本的な環境設定から完全なGUIアプリケーションまで、5つのステップに分けて実装していきます。

プロジェクトの核となるのは、Tkinterによる直感的なユーザーインターフェース設計とdatetimeモジュールによる正確な日付計算処理です。ttk(Themed Tkinter)を活用することで、現代的で美しい見た目のアプリケーションを開発します。これにより、実際の業務や日常生活で活用できる実用的なツールを作成できます。

エラーハンドリング機能を組み込むことで、不正な入力に対しても適切に対応できる堅牢なアプリケーションを開発します。try-except文を使用した例外処理により、ユーザーフレンドリーなエラーメッセージを表示し、使いやすさを向上させます。

実装内容

  • Tkinterによるメインウィンドウとタイトル設定
  • ttk.Labelを使用した説明文とガイダンス表示
  • ttk.Entryによる日付入力フィールドの作成
  • grid()レイアウトマネージャーによる整理されたUI配置
  • ttk.Buttonでの計算実行ボタンとイベント処理
  • datetime.strptime()による文字列から日付への変換処理
  • 年齢計算アルゴリズム(年数・日数の正確な算出)
  • try-except文によるエラーハンドリングと例外処理
  • GitHubでのバージョン管理とポートフォリオ公開

得られるスキル

  • Tkinter GUI開発(ウィンドウ、ボタン、ラベル、エントリーフィールドの作成技術)
  • ttk(Themed Tkinter)による現代的なユーザーインターフェース設計
  • datetime モジュールでの日付計算処理と文字列変換
  • grid()レイアウトマネージャーによる効果的な画面配置技術
  • try-except文によるエラーハンドリングと例外処理の実装

得られる経験

  • デスクトップGUIアプリケーションの設計から完成まで一連の開発経験
  • ユーザーインターフェース設計とユーザビリティ向上の実践
  • エラー処理を含む堅牢なプログラム作成の経験
  • GitHubでのポートフォリオ管理と技術スキルの可視化

得られる成果物

  • 完全に動作する年齢計算GUIアプリケーション
  • GitHubでのポートフォリオとして活用可能なプロジェクト
  • 再利用可能なPythonソースコードとドキュメント
  • GUI開発スキルを証明する実用的なデモアプリケーション

このプロジェクトから応用できること

  • 勤怠管理システムでTkinterとdatetimeを使用して従業員の年齢計算機能を実装
  • 保険料計算システムでgrid()レイアウトを使用した年齢入力フォームの作成
  • 会員管理システムでttk.Entryとdatetime.strptime()を使用した生年月日入力機能の開発
  • 学校管理システムでtry-except文を使用したエラーハンドリング付き学年判定機能の実装
  • 人事管理ツールでttk.Buttonとイベント処理を使用した年齢自動計算機能の追加

Step1:開発環境の準備とプロジェクト構造の作成

このステップでは、年齢計算GUIアプリケーションプロジェクトを始めるための開発環境を整備し、必要なファイル構造を作成していきます。プログラミングを始める前の準備段階として、とても重要な作業になります。

※Step1の内容がわからない際は、下記記事にGitHubとVSCodeの連携について詳細を記載しているためご参照ください。

GitHubリポジトリの作成

まず最初に、プロジェクト専用のGitHubリポジトリを作成しましょう。

  1. GitHubの公式サイトにアクセスし、自分のアカウントでログインします
  2. 画面右上の「+」アイコンをクリックし、ドロップダウンメニューから「New repository」を選択します
  3. 新しいリポジトリの作成ページで、以下の情報を入力します

リポジトリの設定

  • Repository nameage-calculator-gui」と入力
  • DescriptionTkinterを使用した年齢計算GUIアプリケーション」と入力
  • VisibilityPublic」を選択(ポートフォリオとして公開するため)
  • Initialize this repository with
    • Add a README file」にチェックを入れる
    • Add .gitignore」で「Python」を選択
    • Choose a license」は「None」のままにする
  1. Create repository」ボタンをクリックしてリポジトリを作成します

プロジェクトフォルダの作成

次に、プロジェクトを管理するための親フォルダを作成しましょう。

Windows・macOS共通

  1. デスクトップや任意の場所に新しいフォルダを作成します
  2. フォルダ名は任意ですが、ここでは例として「PythonPortfolio」に設定します

この親フォルダが、今後のプロジェクト全体を管理するルートディレクトリとなります。複数のプロジェクトを整理して管理するために作成しておくと便利です。

VSCodeでプロジェクトを開く

作成したGitHubリポジトリをローカルにクローンして開きましょう。

  1. VSCodeを起動します
  2. 左側のアクティビティバーからソース管理アイコン(分岐のようなアイコン)をクリックします
  3. リポジトリの複製」ボタンをクリックします
  4. GitHubから複製」を選択します
  5. 先ほど作成した「age-calculator-gui」リポジトリを選択します
  6. リポジトリ宛先として先ほど作成した親フォルダを選択します
  7. クローンしたリポジトリを開きますか」というウィンドウが表示されたら「開く」をクリックします

VSCodeの左側にエクスプローラーパネルが表示され、現在のプロジェクトフォルダの中身が確認できるようになります。

仮想環境の作成とアクティベート

Python開発において仮想環境は非常に重要です。仮想環境とは、プロジェクトごとに独立したPython実行環境を作成する仕組みのことです。これにより、プロジェクト間でのライブラリの競合を防ぎ、クリーンな開発環境を維持できます。

詳しくは下記記事をご参照ください。

Windows環境での仮想環境作成

  1. VSCodeの上部メニューから「ターミナル」→「新しいターミナル」を選択
  2. 以下のコマンドで仮想環境を作成します
python -m venv myenv
  1. 仮想環境をアクティベートします
myenv\Scripts\activate

macOS環境での仮想環境作成

  1. VSCodeの上部メニューから「ターミナル」→「新しいターミナル」を選択
  2. 以下のコマンドで仮想環境を作成します
python3 -m venv myenv
  1. 仮想環境をアクティベートします
source myenv/bin/activate

重要なポイント

  • 仮想環境名は「myenv」として作成
  • ターミナルの行頭に「(myenv)」と表示されることを確認
  • この表示があることで、仮想環境が正常にアクティベートされていることがわかります

プロジェクトファイル構造の作成

次に、今回の年齢計算GUIアプリケーションプロジェクトに必要なファイルを作成していきます。VSCodeのエクスプローラーパネルを使用してファイルを作成しましょう。

メインプログラムファイルの作成

  1. VSCodeの左側エクスプローラーパネルで「新しいファイル」アイコン(ファイルの絵とプラスのマークがあるアイコン)をクリック
  2. ファイル名を「age_calculator.py」として作成

この「age_calculator.py」ファイルが、今回の年齢計算GUIアプリケーションを実装するメインプログラムとなります。.py拡張子Pythonスクリプトファイルであることを示しており、実行可能なプログラムコードを記述するために使用します。

依存関係管理ファイルの作成

  1. プロジェクトのルートフォルダ(age-calculator-gui)をクリックして選択
  2. 新しいファイル」アイコンをクリック
  3. ファイル名を「requirements.txt」として作成

requirements.txtファイルは、Pythonプロジェクトで使用する外部ライブラリとそのバージョンを記録するための重要なファイルです。これにより、他の開発者や本番環境でも同じライブラリ環境を再現できます。

requirements.txtの内容設定 作成した「requirements.txt」ファイルをVSCodeで開き、以下の内容を記述してください。

# tkinterとdatetimeは標準ライブラリなので記載不要

今回のプロジェクトでは、tkinterdatetimeという標準ライブラリを使用します。

  • tkinter PythonでGUI(グラフィカルユーザーインターフェース)アプリケーションを作成するための標準ライブラリです。ボタンやテキスト入力欄などの画面部品を簡単に配置できる便利なツールです
  • datetime 日付や時刻の計算や操作を行うための標準ライブラリです。今回は生年月日から年齢を計算する際に使用します

これらは標準ライブラリなので、Pythonインストール時に自動的に含まれており、追加でインストールする必要がありません。

プロジェクト構造の確認

この時点で、VSCodeのエクスプローラーパネルには以下のような構造が表示されているはずです。

age-calculator-gui/
├── myenv/                      # 仮想環境フォルダ
├── age_calculator.py           # メインプログラムファイル
├── requirements.txt            # 依存関係管理ファイル
├── README.md                   # プロジェクト説明書(GitHub作成時に自動生成)
└── .gitignore                  # Git除外設定ファイル(GitHub作成時に自動生成)

このシンプルな構造が、今回の年齢計算GUIアプリケーションプロジェクトの基盤となります。GitHubで作成したリポジトリをクローンしたため、README.mdと**.gitignore**ファイルが最初から含まれています。

環境の動作確認

仮想環境が正常にアクティベートされていることを再度確認し(ターミナルに「(myenv)」が表示されている状態)、Pythonが正常に動作するかテストしてみましょう。

Python動作テスト VSCodeのターミナルで以下のコマンドを実行します。

python --version

Pythonのバージョン情報が表示されれば、環境が正常に準備できています。次のステップに進む準備が整いました。

今回は標準ライブラリのみを使用するため、追加のライブラリインストールは不要ですが、仮想環境が正常に機能していることを確認できました。

Step2:入力フィールドとラベルコンポーネントの実装

このステップでは、年齢計算GUIアプリケーションの基本的なユーザーインターフェース要素を実装します。Tkinterttkモジュールを使用して、ユーザーが日付を入力できる画面を作成していきます。

Tkinterとttkモジュールの基本理解

まず、今回使用する重要な技術について詳しく説明します。

Tkinterは、Python標準ライブラリに含まれるGUI開発フレームワークです。ウィンドウやボタン、テキストボックスなどの画面部品を作成できる強力なツールです。ttkは「Themed Tkinter」の略で、Tkinterの拡張モジュールとして、よりモダンで美しい見た目のウィジェット(画面部品)を提供します。

grid()レイアウトマネージャーは、ウィジェットを格子状に配置するための仕組みです。行(row)と列(column)を指定することで、整然とした画面レイアウトを実現できます。

基本ウィンドウの作成

まず、age_calculator.pyファイルに基本的なウィンドウを作成するコードを記述します。

# GUIアプリを作るのに必要なライブラリを読み込む
import tkinter as tk
from tkinter import ttk
from datetime import datetime

# アプリのメインとなるウィンドウを作成
main_window = tk.Tk()
# ウィンドウの上部に表示されるタイトルを設定
main_window.title("年齢計算システム")
# ウィンドウのサイズを横400ピクセル、縦200ピクセルに設定
main_window.geometry("400x200")
# ユーザーがウィンドウサイズを変更できないように固定
main_window.resizable(False, False)

このコードでは、tkinterモジュール全体をtkとして、ttkモジュールを個別にインポートしています。datetimeモジュールは後のステップで日付計算に使用します。

tk.Tk()でメインウィンドウオブジェクトを作成し、main_window変数に格納します。title()メソッドでウィンドウのタイトルバーに表示される文字を設定し、geometry()メソッドでウィンドウサイズを幅400ピクセル、高さ200ピクセルに指定しています。resizable(False, False)により、ユーザーがウィンドウサイズを変更できないよう制限しています。

生年月日入力セクションの実装

次に、ユーザーが生年月日を入力するためのラベルとエントリーフィールドを作成します。

# 生年月日入力の説明文を表示するラベルを作成
birth_date_label = ttk.Label(main_window, text="生年月日 (YYYY-MM-DD)")
# ラベルを画面の1行目、1列目に配置(余白付き、左寄せ)
birth_date_label.grid(column=0, row=0, padx=15, pady=8, sticky="w")

# ユーザーが生年月日を入力できるテキストボックスを作成
birth_date_entry = ttk.Entry(main_window, width=20)
# テキストボックスを画面の1行目、2列目に配置
birth_date_entry.grid(column=1, row=0, padx=15, pady=8)

ttk.Labelは、画面に文字を表示するためのウィジェットです。textパラメータで表示する文字列を指定し、ここでは日付の入力形式を示すガイダンスとして「生年月日 (YYYY-MM-DD)」と設定しています。

ttk.Entryは、ユーザーがテキストを入力できるテキストボックスです。widthパラメータで表示幅を文字数で指定し、ここでは20文字分の幅を確保しています。

grid()メソッドの各パラメータについて詳しく説明します。columnrowでウィジェットを配置する格子の位置を指定します。padxpadyはウィジェット周囲の余白をピクセル単位で設定し、sticky="w"により西(左)方向に寄せて配置します。

基準日入力セクションの実装

続いて、年齢を計算したい基準日を入力するフィールドを作成します。

# 基準日入力の説明文を表示するラベルを作成
target_date_label = ttk.Label(main_window, text="基準日 (YYYY-MM-DD)")
# ラベルを画面の2行目、1列目に配置
target_date_label.grid(column=0, row=1, padx=15, pady=8, sticky="w")

# ユーザーが基準日を入力できるテキストボックスを作成
target_date_entry = ttk.Entry(main_window, width=20)
# テキストボックスを画面の2行目、2列目に配置
target_date_entry.grid(column=1, row=1, padx=15, pady=8)

このフィールドは生年月日入力フィールドと同様の構造ですが、row=1を指定することで2行目に配置されます。ここに入力された日付を基準として年齢が計算されます。

現在日付のデフォルト値設定

ユーザーの利便性向上のため、基準日入力フィールドに現在の日付を自動的に設定します。

# 今日の日付を取得して文字列形式に変換
current_date_string = datetime.now().strftime("%Y-%m-%d")
# 基準日のテキストボックスに今日の日付を自動入力
target_date_entry.insert(0, current_date_string)

datetime.now()メソッドで現在の日時を取得し、strftime()メソッドで「YYYY-MM-DD」形式の文字列に変換しています。strftime()%Yは4桁の年、%mは2桁の月、%dは2桁の日を表すフォーマット指定子です。

insert()メソッドの第1引数0は文字列の挿入位置を表し、0番目(先頭)から文字列を挿入することを意味します。これにより、ユーザーがアプリケーションを起動した時点で、基準日フィールドに今日の日付が自動入力されます。

ウィンドウの表示とイベントループ

最後に、作成したウィンドウを画面に表示し、ユーザーの操作を待機する状態にします。

# アプリケーションを起動してユーザーの操作を待つ
main_window.mainloop()

mainloop()メソッドは、GUIアプリケーションのイベントループを開始します。イベントループとは、ユーザーのクリックやキーボード入力などの操作を監視し続ける仕組みです。このメソッドが呼び出されることで、ウィンドウが画面に表示され、ユーザーが操作できる状態になります。

動作テスト実行

VSCodeのターミナルでプログラムを実行してテストします。

python age_calculator.py

出力結果 アプリ画面

Step3:計算ボタンと結果表示領域の追加

このステップでは、ユーザーが年齢計算を実行するための計算ボタンと、計算結果を表示するための結果表示エリアを追加します。また、ボタンが押された時の動作を準備するための関数も作成していきます。

計算処理の準備関数

ボタンがクリックされた時に実行される関数を準備します。この関数は、現時点では結果表示ラベルにテスト用のメッセージを表示するだけの簡単な実装にします。既存のimport文の下、メインウィンドウ作成コードの前に、以下の関数を追加してください。

# ボタンが押された時に実行される計算処理の関数
def perform_age_calculation():
    # 結果表示ラベルのテキストを変更してテスト
    result_display_label.config(text="計算機能は次のステップで実装します")

defキーワードで関数を定義し、perform_age_calculationという名前にしています。関数内ではconfig()メソッドを使用して、結果表示ラベルのtext属性を変更しています。この方法により、ラベルに表示される文字を動的に変更できます。

計算ボタンの実装

まず、年齢計算を実行するためのボタンを追加します。既存のコードの基準日入力セクションの後に、以下のコードを追加してください。

# 年齢計算を実行するボタンを作成
calculate_button = ttk.Button(main_window, text="年齢を計算", command=perform_age_calculation)
# ボタンを画面の3行目に配置(2列分の幅で中央配置)
calculate_button.grid(column=0, row=2, columnspan=2, pady=15)

ttk.Buttonは、ユーザーがクリックできるボタンウィジェットです。textパラメータで「年齢を計算」という文字をボタン上に表示します。

commandパラメータにperform_age_calculation関数を指定することで、ボタンがクリックされた時にこの関数が自動的に実行されます。ここで重要なのは、関数名に括弧()を付けないことです。括弧を付けると関数がその場で実行されてしまうため、関数オブジェクト自体を渡す必要があります。

grid()メソッドのrow=2により3行目に配置し、columnspan=2によって2列分の幅を占有させています。これにより、ボタンが画面の中央に配置され、見た目のバランスが良くなります。pady=15で上下に15ピクセルの余白を設定し、他の要素との間隔を適切に保っています。

結果表示ラベルの実装

次に、計算結果を表示するためのラベルを追加します。計算ボタンのコードの下に、以下のコードを追加してください。

# 計算結果を表示するための空のラベルを作成
result_display_label = ttk.Label(main_window, text="")
# ラベルを画面の4行目に配置(2列分の幅で中央配置)
result_display_label.grid(column=0, row=3, columnspan=2, pady=10)

このttk.Labelは結果表示専用で、初期状態ではtext=""として空文字を設定しています。これにより、アプリケーション起動時には何も表示されず、計算実行後に結果が表示される仕組みになります。

row=3で4行目に配置し、columnspan=2でボタンと同様に2列分の幅を使用します。pady=10で適度な余白を確保しています。

ウィンドウサイズの調整

新しい要素が追加されたため、ウィンドウサイズを調整します。メインウィンドウ作成部分のコードを以下のように変更してください。

# アプリのメインとなるウィンドウを作成
main_window = tk.Tk()
# ウィンドウの上部に表示されるタイトルを設定
main_window.title("年齢計算システム")
# ウィンドウのサイズを横400ピクセル、縦250ピクセルに設定(高さを拡張)
main_window.geometry("400x250")
# ユーザーがウィンドウサイズを変更できないように固定
main_window.resizable(False, False)

geometry()メソッドの高さを200ピクセルから250ピクセルに変更し、追加されたボタンと結果表示ラベルが適切に表示されるようにしています。

動作テスト実行

VSCodeのターミナルでプログラムを実行してテストします。

python age_calculator.py

アプリケーションが起動したら、「年齢を計算」ボタンをクリックしてみてください。結果表示エリアに「計算機能は次のステップで実装します」というメッセージが表示されれば、ボタンのクリックイベントが正常に動作していることが確認できます。

出力結果 アプリ画面

Step4:日付計算機能とエラーハンドリングの完成

このステップでは、実際の年齢計算ロジックを実装し、入力エラーに対応するエラーハンドリング機能を追加します。datetime.strptime()を使用した日付解析と、try-except文によるエラー処理を組み込んで、実用的な年齢計算アプリケーションを完成させます。

完全な計算機能の実装

Step3で作成したperform_age_calculation()関数を以下のように完全に書き換えてください。

# ボタンが押された時に実行される年齢計算処理の関数
def perform_age_calculation():
    try:
        # 生年月日のテキストボックスから文字列を取得して日付に変換
        birth_date = datetime.strptime(birth_date_entry.get(), "%Y-%m-%d")
        # 基準日のテキストボックスから文字列を取得して日付に変換
        target_date = datetime.strptime(target_date_entry.get(), "%Y-%m-%d")
        
        # 基準日から生年月日を引いて日数の差を計算
        age_difference = target_date - birth_date
        
        # 総日数を365で割って年数を計算(小数点以下切り捨て)
        years_old = age_difference.days // 365
        # 総日数を365で割った余りで残り日数を計算
        remaining_days = age_difference.days % 365
        
        # 計算結果をわかりやすい文字列にまとめる
        age_result_text = f"年齢: {years_old}歳 {remaining_days}日"
        # 結果表示ラベルに計算結果を表示
        result_display_label.config(text=age_result_text)
        
    except ValueError:
        # 日付の形式が間違っている場合のエラーメッセージを表示
        result_display_label.config(text="日付は YYYY-MM-DD 形式で入力してください")

日付解析機能の詳細説明

datetime.strptime()は、文字列を指定されたフォーマットに従って日付オブジェクトに変換するメソッドです。第1引数で変換する文字列、第2引数でフォーマット指定子を受け取ります。"%Y-%m-%d"は「年-月-日」形式を表し、例えば「2000-12-25」のような文字列を解析できます。

get()メソッドは、Entryウィジェットに入力されているテキストを取得します。これにより、ユーザーが入力フィールドに記述した文字列を取得し、日付解析に使用できます。

日付オブジェクト同士の減算により、2つの日付間の差を表すtimedeltaオブジェクトが得られます。このオブジェクトには日数や秒数などの時間差情報が含まれています。

年齢計算アルゴリズムの詳細説明

//演算子は整数除算(切り捨て除算)を行い、365で割った整数部分を取得します。これにより、総日数から年数を算出できます。

%演算子は剰余演算を行い、365で割った余りを取得します。これにより、年数では表現できない残りの日数を算出できます。

f-string(フォーマット文字列)を使用して、計算結果を読みやすい形式にフォーマットしています。{}内に変数を記述することで、文字列内に変数の値を埋め込めます。

エラーハンドリング機能の詳細説明

try-except文は、プログラム実行中に発生する可能性のあるエラーを捕捉し、適切に処理するための構文です。ValueErrorは、関数に正しい型だが不適切な値が渡された時に発生する例外です。

datetime.strptime()メソッドは、指定されたフォーマットに合わない文字列が渡されるとValueErrorを発生させます。例えば、「2000/12/25」や「12-25-2000」のような形式、存在しない日付(「2000-13-32」など)が入力された場合にエラーが発生します。

動作テスト実行

VSCodeのターミナルでプログラムを実行してテストします。

python age_calculator.py

アプリケーションが起動したら、生年月日欄に「1990-05-15」、基準日欄に今日の日付(自動入力済み)を入力して「年齢を計算」ボタンをクリックしてください。正確な年齢が「年齢: ○歳 ○日」の形式で表示されれば成功です。

また、意図的に間違った形式(例「1990/05/15」)を入力してエラーメッセージが表示されることも確認してください。

出力結果 アプリ画面

Step5:プロジェクトをGitHubにアップロード

このステップでは、完成した年齢計算GUIアプリケーションプロジェクトをGitHubにアップロードし、ポートフォリオとして活用できる形にします。最終的なファイル整理とコードの公開を行っていきます。

.gitignoreファイルの更新

既存の.gitignoreファイルに、プロジェクト固有の除外設定を追加します。

VSCodeで「.gitignore」ファイルを開き、以下の内容を末尾に追加してください。

# Virtual environment
myenv/

# Application cache and temporary files
__pycache__/
*.pyc
*.pyo

# IDE settings
.vscode/settings.json

これらを追加する理由について説明します。

  • myenv/ 仮想環境フォルダはプロジェクト固有のため、リポジトリに含める必要がありません
  • pycache/ Pythonが自動生成するキャッシュフォルダを除外
  • .pyc、.pyo Python実行時に生成される一時ファイルを除外
  • .vscode/settings.json VSCodeの個人設定ファイルを除外

README.mdファイルの更新

リポジトリ作成時に生成されたREADME.mdファイルの内容を、プロジェクトの詳細情報に更新します。

VSCodeで「README.md」ファイルを開き、内容を以下のように全て置き換えてください。

# 年齢計算GUIアプリケーション

## プロジェクト内容

生年月日と基準日を入力することで年齢を自動計算するデスクトップアプリケーションです。TkinterとttkによるGUI開発、datetimeモジュールによる日付計算処理、エラーハンドリングによる入力検証機能を実装しています。PythonによるGUIアプリケーション開発とユーザーインターフェース設計の学習を目的として作成しました。

## プロジェクト構成

```
age-calculator-gui/
├── age_calculator.py       # メインプログラム
├── requirements.txt        # 依存関係管理
├── README.md              # プロジェクト説明書
└── .gitignore             # Git除外ファイル設定
```

## 必要要件/開発環境

- **Python 3.7以上**
- **VSCode** (開発環境)
- **Git** (バージョン管理)

### 使用ライブラリ

- **tkinter** デスクトップGUIアプリケーション開発
- **ttk** モダンなUIコンポーネント提供
- **datetime** 日付計算と文字列変換処理

## 機能

- **日付入力フィールド** 生年月日と基準日の入力欄
- **自動日付設定** 基準日フィールドに現在日付を自動入力
- **年齢計算処理** 2つの日付から正確な年齢を計算
- **結果表示機能** 年数と日数での詳細な年齢表示
- **入力検証機能** 不正な日付形式のエラーチェック
- **エラーメッセージ表示** わかりやすいエラー案内
- **レスポンシブレイアウト** grid()による整理されたUI配置
- **ユーザビリティ** 直感的で使いやすいインターフェース

## 実行方法

### 1. リポジトリのクローン

```bash
git clone https://github.com/yourusername/age-calculator-gui.git
cd age-calculator-gui
```

### 2. 仮想環境の作成・アクティベート

**Windows**
```bash
python -m venv myenv
myenv\Scripts\activate
```

**macOS**
```bash
python3 -m venv myenv
source myenv/bin/activate
```

### 3. プログラムの実行

```bash
python age_calculator.py
```

実行後、GUIウィンドウが表示されます。生年月日を「YYYY-MM-DD」形式で入力し、「年齢を計算」ボタンをクリックしてください。

## 使用方法

1. **生年月日の入力** 「1990-05-15」のような形式で生年月日を入力
2. **基準日の確認** 自動入力された基準日を確認(変更も可能)
3. **計算実行** 「年齢を計算」ボタンをクリック
4. **結果確認** 「年齢: ○歳 ○日」の形式で表示される結果を確認

## 入力形式について

* **入力形式** YYYY-MM-DD(例: 2000-12-25)
* **エラー時の表示** 不正な形式の場合はエラーメッセージを表示
* **計算精度** 日単位での正確な年齢計算

## 開発者

YuYu(自分の名前に変更)

プロジェクトのコミット・プッシュ

プロジェクトの全ての変更をGitHubに反映させましょう。

変更のステージングとコミット

  1. VSCodeの左側のアクティビティバーからソース管理アイコンをクリックします
  2. 変更内容セクションで、すべての変更ファイルを確認します
  3. 各ファイルの横にある「+」アイコンをクリックしてステージングします
  4. コミットメッセージ入力欄に「Add age calculator GUI application system」と入力します
  5. コミット」ボタンをクリックします

GitHubへのプッシュ

  1. コミット完了後、「変更の同期」または「プッシュ」ボタンをクリックします
  2. 初回の場合、GitHub認証が求められる場合があります
  3. 認証完了後、ローカルの変更がGitHubリポジトリに反映されます

GitHubでの確認

プロジェクトが正常にアップロードされたか確認しましょう。

  1. ブラウザでGitHubリポジトリページを開きます
  2. 以下のファイルが正しくアップロードされていることを確認します
  • age_calculator.py (メインプログラムファイル)
  • requirements.txt (依存関係管理ファイル)
  • README.md (更新されたプロジェクト説明書)
  • .gitignore (更新された除外設定ファイル)
  1. README.mdが適切に表示され、プロジェクトの説明が読みやすく表示されていることを確認します
  2. ファイル一覧にmyenv/フォルダが含まれていないことを確認します(.gitignoreで除外されているため)

これで実用的な年齢計算GUIアプリケーションが完成し、GitHubでのポートフォリオ公開も完了しました。作成したプロジェクトは、就職活動や案件獲得時の実績として活用できる実用的なシステムとなっています。

まとめ

このプロジェクトを通じて、PythonのTkinterライブラリを使用したGUIアプリケーション開発の基礎から実践的な応用まで幅広く学習することができました。

得られたスキル

  • Tkinter GUI開発 – ウィンドウ、ボタン、ラベル、エントリーフィールドの作成技術
  • ttk(Themed Tkinter) – 現代的なユーザーインターフェース設計手法
  • datetime モジュール – 日付計算処理と文字列変換の実装技術
  • grid()レイアウトマネージャー – 効果的な画面配置とUI設計
  • try-except文 – エラーハンドリングと例外処理の実装

得られた経験

  • デスクトップGUIアプリケーションの設計から完成まで一連の開発経験
  • ユーザーインターフェース設計とユーザビリティ向上の実践
  • エラー処理を含む堅牢なプログラム作成の経験
  • GitHubを使用したポートフォリオ管理の実践的経験

得られた成果物

  • 完全に動作する年齢計算GUIアプリケーション
  • GitHubでのポートフォリオとして活用可能なプロジェクト
  • 再利用可能なPythonソースコードとドキュメント

次に学ぶべきこと

  • より多くのTkinterウィジェット(チェックボックス、ラジオボタン)の実装
  • ファイル入出力機能の追加による計算結果の保存機能
  • より複雑な日付計算(うるう年対応、月単位計算)の実装
  • メニューバーとツールバーの追加によるUI機能拡張

このプロジェクトから応用できること

  • 勤怠管理システムでTkinterとdatetimeを使用した従業員年齢計算機能の開発
  • 保険料計算システムでgrid()レイアウトを使用した年齢入力フォームの作成
  • 会員管理システムでttk.Entryとdatetime.strptime()を使用した生年月日管理機能の実装
  • 学校管理システムでtry-except文を使用した学年判定機能の開発
  • 人事管理ツールでイベント処理を使用した年齢自動計算機能の追加

このGUI開発技術を基盤として、様々な業務システムでの年齢計算や日付処理機能を効率的に実装することが可能です。特に、データ入力が必要な管理システムや計算ツールでは、実用的な価値を提供できる技術として活用できます。

この記事が気に入ったら
フォローしてね!

この記事が参考になった方はシェアしてね!
  • URLをコピーしました!

本コンテンツへの意見や質問

コメントする

目次