【Pythonで科学計算】温度・気圧・湿度から空気密度を計算するツールを作ろう(モジュール分割とGit管理)

ALL

こんにちは、Tech Samuraiです!
ドローンやボート、あるいはロケットの設計まで、流体力学が関わる多くの場面で重要となる物理量、それが「空気密度」です。空気密度は、温度、気圧、湿度によって常に変化するため、正確なシミュレーションには都度計算が必要になります。

今回のプロジェクトでは、これら3つのパラメータから、物理公式に基づいて**空気密度を精密に計算するPythonツール**を開発します。さらに、

  • 計算ロジックを再利用可能な**「モジュール」**として分離する、プロフェッショナルな設計手法
  • 完成したコードを**Gitでバージョン管理**するまでの、一連のワークフロー

についても探検します。さあ、物理の世界をPythonでモデル化しましょう!


ステップ1:プロジェクトの設計とRyeによる環境準備

まず、プロジェクト全体の構成を設計します。今回は、計算ロジックと実行プログラムを分離します。

  • air_density_calculator.py: 空気密度を計算する関数を格納する「部品(モジュール)」ファイル。
  • main.py: 上記のモジュールをインポートし、実際に関数を使って計算を実行する「本体」ファイル。

この構成により、将来別のプロジェクトで空気密度計算が必要になったとき、air_density_calculator.pyをコピーするだけで、簡単に機能を再利用できます。

Ryeによる環境準備

それでは、Ryeを使って、このプロジェクト用のクリーンな環境を準備します。

# 1. プロジェクト用のフォルダを作成し、そこに移動します
mkdir air_density_project
cd air_density_project

# 2. Ryeプロジェクトを初期化します
rye init

# 3. このプロジェクトで使うPythonのバージョンを固定します
rye pin 3.11 # お好みのバージョンに

# 4. 環境を同期させます
rye sync

これだけで、プロジェクト専用の仮想環境の準備が整いました。


ステップ2:空気密度計算モジュールの作成

次に、計算ロジックの心臓部である`air_density_calculator.py`を作成します。

# air_density_calculator.py
import math

def calculate_air_density(temperature_c: float, pressure_hpa: float, relative_humidity_percent: float) -> float:
    """
    温度、気圧、相対湿度から空気密度を計算します。
    国際単位系(SI)に基づいた物理公式を使用しています。

    Args:
        temperature_c (float): 摂氏温度 (°C)
        pressure_hpa (float): ヘクトパスカル単位の気圧 (hPa)
        relative_humidity_percent (float): パーセント単位の相対湿度 (%)

    Returns:
        float: 空気密度 (kg/m^3)
    """
    # --- 1. 定数の定義 ---
    R_d = 287.058  # 乾燥空気の気体定数 (J/(kg・K))
    R_v = 461.495  # 水蒸気の気体定数 (J/(kg・K))

    # --- 2. 単位換算 ---
    temp_k = temperature_c + 273.15
    pressure_pa = pressure_hpa * 100
    relative_humidity = relative_humidity_percent / 100.0

    # --- 3. 水蒸気圧の計算 (August-Roche-Magnus近似式) ---
    saturated_vapor_pressure_pa = 610.94 * math.exp((17.625 * temperature_c) / (temperature_c + 243.04))
    vapor_pressure_pa = relative_humidity * saturated_vapor_pressure_pa

    # --- 4. 乾燥空気の分圧の計算 (ドルトンの法則) ---
    dry_air_pressure_pa = pressure_pa - vapor_pressure_pa

    # --- 5. 空気密度の計算 (理想気体の状態方程式) ---
    air_density = (dry_air_pressure_pa / (R_d * temp_k)) + (vapor_pressure_pa / (R_v * temp_k))

    return air_density

if __name__ == '__main__':
    # このファイルが直接実行された場合のテストコード
    test_temp_c = 25.0
    test_pressure_hpa = 1013.25
    test_humidity_percent = 50.0
    density = calculate_air_density(test_temp_c, test_pressure_hpa, test_humidity_percent)

    print("--- 空気密度計算モジュールのテスト実行 ---")
    print(f"入力: 温度={test_temp_c}°C, 気圧={test_pressure_hpa}hPa, 湿度={test_humidity_percent}%")
    print(f"計算された空気密度: {density:.4f} kg/m^3")

ステップ3:メインスクリプトの作成

次に、作成したモジュールをインポートして利用する`main.py`を作成します。

# main.py
# air_density_calculator.py ファイルから calculate_air_density 関数をインポート
from air_density_calculator import calculate_air_density

def main():
    """メインの処理を行う関数"""
    print(">>> 空気密度計算プログラム <<<")

    # 例1: 暑い夏の日の条件
    temp1 = 30.0
    pressure1 = 1005.0
    humidity1 = 70.0
    air_density1 = calculate_air_density(temp1, pressure1, humidity1)

    print("\n--- 計算結果 (夏の日) ---")
    print(f"入力値: 温度={temp1}°C, 気圧={pressure1}hPa, 湿度={humidity1}%")
    print(f"空気密度: {air_density1:.4f} kg/m^3")

    # 例2: 寒い冬の日の条件
    temp2 = 5.0
    pressure2 = 1020.0
    humidity2 = 40.0
    air_density2 = calculate_air_density(temp2, pressure2, humidity2)

    print("\n--- 計算結果 (冬の日) ---")
    print(f"入力値: 温度={temp2}°C, 気圧={pressure2}hPa, 湿度={humidity2}%")
    print(f"空気密度: {air_density2:.4f} kg/m^3")

if __name__ == "__main__":
    main()

ターミナルでrye run python main.pyを実行すると、夏と冬の条件での空気密度の違いが計算・表示されます。


ステップ4:Gitによるソースコード管理

コードが完成したので、Gitを使ってバージョン管理を始めましょう。Ryeは`rye init`の時点で、自動的に`git init`を実行してくれています。

Gitの初期設定や詳しいワークフローについては、以前の記事「RyeプロジェクトにおけるGitの初めの一歩」で詳しく解説していますので、そちらも参考にしてください。

ここでは、このプロジェクトの最初のコミットを完了させます。

# 1. .gitignoreファイルを作成し、Ryeが管理するフォルダなどを管理対象外にする
echo ".venv/" > .gitignore
echo "__pycache__/" >> .gitignore
echo ".rye/" >> .gitignore

# 2. 全てのファイルをステージング
git add .

# 3. 最初のコミット
git commit -m "Initial commit: 空気密度計算ツールの基本機能を実装"

# 4. ログを確認
git log --oneline

これで、プロジェクトの最初のセーブポイントが作成されました。今後、機能追加や修正を行うたびに、git add .git commitを繰り返していくことで、安全に開発を進めることができます。


まとめ

今回は、物理公式に基づいた空気密度計算ツールを、Pythonで実装しました。このプロジェクトを通して、

  • 計算ロジックを独立した**モジュール**として分離する、再利用性の高い設計方法。
  • **Rye**を使った、モダンでクリーンなプロジェクト環境の準備。
  • 完成したプロジェクトを**Gitでバージョン管理**する、開発の基本的なワークフロー。

といった、プログラミングにおける非常に重要な概念を探検しました。ぜひ、あなたの身の回りの物理現象を、Pythonでモデル化する楽しさを体験してみてください!

【Python開発】RyeプロジェクトにおけるGitの初めの一歩(初期設定と最初のコミット)

コメント

タイトルとURLをコピーしました