閑話108|ラブラドールの体重管理をハックせよ:愛犬のためのPython給餌計算機
去年の2月頃のことである。 我が家の愛犬、ラブラドール・レトリーバーの「ろみ」が、獣医からイエローカードを突きつけられた。
「ちょっと太り始めてますね。ご飯の量、気をつけてください」
ラブラドールはとにかく食欲旺盛な犬種だ。油断するとすぐわがままボディになってしまう。老生は決意した。どんぶり勘定の給餌をやめ、データと計算に基づく「ダイエット作戦」を遂行することを。
結果から言えば、この作戦は大成功を収め、ろみは現在28kgというベストな体重で落ち着いている。今回は、ろみの健康を守るために老生が書き下ろした「Python給餌計算プログラム」の話をしよう。
🎥 愛犬ろみのダイエット作戦(ドキュメンタリー動画)
💡 [ヒント] 多言語版は提供していません。翻訳はご自身のデバイスで行ってください。
この音声や動画には、意図的に日本語版を用意していません。別の言語で聴きたい場合は、スマートフォンの「Google 翻訳」アプリで音声翻訳(リアルタイム翻訳)機能を有効にし、イヤホンを使って聴いてみてください。
最新のAIは、男性と女性の声を瞬時に判別してリアルタイムで「自動吹き替え」を行い、完璧な多言語ラジオを実現できます。これこそが2026年のコンテンツ視聴スタイルになるでしょう……たぶん。知らんけど。

1. パッケージの裏は信じない(獣医学に基づくカロリー計算)
ドッグフードのパッケージの裏には「体重〇kgなら〇グラム」という目安が書いてあるが、あれはあくまで平均値だ。個体差や避妊の有無、毎日の運動量によって必要なカロリーは大きく変わる。
そこで老生は、獣医学に基づく正確なカロリー計算式を採用した。 まずは、犬が何もしなくても消費する「安静時エネルギー要求量(RER)」を割り出す。
(※ は犬の体重・kg)
ここに、その犬の活動レベルに応じた係数を掛けることで、1日に本当に必要な「維持エネルギー要求量(MER)」が導き出される。
2. 5:8のブレンド地獄をPythonに丸投げする
計算式はわかった。しかし、我が家の給餌には**「面倒極まりない運用ルール」**が存在していた。
- 2種類のフード(ソルビダ:350kcal/100g、ビューティープロ:380kcal/100g)を混ぜて与える。
- 黄金比率は「ソルビダ 5 : ビューティープロ 8」。
- これらを1日2回に分けて給餌する。
ろみの体重や運動量が変わるたびに、これを電卓で叩くのは正気の沙汰ではない。 「面倒な反復計算は機械にやらせる」。これが電脳古老の鉄則である。老生はサクッとPythonでスクリプトを書いた。
💻 Lab_gr.py(給餌量自動計算スクリプト)
import pandas as pd
# RER (Resting Energy Requirement) 計算
weight_kg = 28
RER = 70 * (weight_kg ** 0.75)
# 活動レベル別の係数
activity_levels = {
"低活動(避妊済み・室内飼い)": 1.6,
"標準的な活動(散歩1〜2回)": 1.8,
"活発(長時間の運動あり)": 2.0,
"非常に活発(スポーツ犬など)": 2.5
}
# 各活動レベルのMERを計算
MER_values = {level: RER * factor for level, factor in activity_levels.items()}
# 各フードのカロリー情報(kcal/100g)
calories_per_100g = {
"ソルビダ": 350,
"ビューティープロ": 380
}
# 給餌割合
solvida_ratio = 5 / (5 + 8) # 5:8 の比率
beauty_pro_ratio = 8 / (5 + 8)
# 各活動レベルにおけるフードの必要量を計算
feeding_amounts = []
for level, mer in MER_values.items():
solvida_kcal = mer * solvida_ratio
beauty_pro_kcal = mer * beauty_pro_ratio
# 100gあたりのカロリーからグラム数を出し、1日2回なので 1/2 にする
solvida_g = solvida_kcal / calories_per_100g["ソルビダ"] * 100 / 2
beauty_pro_g = beauty_pro_kcal / calories_per_100g["ビューティープロ"] * 100 / 2
feeding_amounts.append([level, round(solvida_g, 2), round(beauty_pro_g, 2)])
# データフレーム作成
df_feeding = pd.DataFrame(feeding_amounts, columns=["活動レベル(1食分)", "ソルビダ (g)", "ビューティープロ (g)"])
print(df_feeding)
Pythonアルゴリズムの全工程(フローチャート)
flowchart TD
Start([START]) --> Step1["1. 【初期値のセットアップ】<br>・愛犬の体重(28kg)<br>・フードのカロリー情報(ソルビダ: 350kcal, ビューティープロ: 380kcal)<br>・給餌の黄金比率(5 : 8)"]
Step1 --> Step2["2. 【RER(安静時エネルギー要求量)の計算】<br>・計算式: RER = 70 × (体重 ^ 0.75)"]
Step2 --> Step3["3. 【活動レベル別のループ処理開始】<br>(低活動 / 標準 / 活発 / 非常に活発 の4パターンで反復)"]
subgraph Loop ["ループ内の処理"]
Step3 --> Step3a["(a) MER(維持エネルギー要求量)の算出<br>・MER = RER × 活動レベル係数 (1.6 〜 2.5)"]
Step3a --> Step3b["(b) フードごとの必要カロリー分配<br>・ソルビダのkcal = MER × (5 / 13)<br>・ビューティプロのkcal = MER × (8 / 13)"]
Step3b --> Step3c["(c) グラム数への変換 & 1食分(半分)の計算<br>・ソルビダの量(g) = (kcal ÷ 350) × 100 ÷ 2<br>・ビューティプロの量(g) = (kcal ÷ 380) × 100 ÷ 2"]
end
Step3c --> Step4["4. 【データの集約】<br>・ループ結果をリストに格納"]
Step4 --> Step5["5. 【表の作成と出力】<br>・Pandasを使ってリストをデータフレームに変換<br>・ターミナルに出力"]
Step5 --> End([END])
3. 実行結果:一瞬で導き出される「今日の最適解」
このスクリプトを実行すると、ターミナルに以下のような表が出力される。ろみ(28kg)の1食分のブレンド量である。
| 活動レベル(1食分) | ソルビダ (g) | ビューティープロ (g) |
|---|---|---|
| 低活動(避妊済み・室内飼い) | 74.87 | 110.33 |
| 標準的な活動(散歩1〜2回) | 84.23 | 124.12 |
| 活発(長時間の運動あり) | 93.58 | 137.91 |
| 非常に活発(スポーツ犬など) | 116.98 | 172.39 |
たとえば「今日は雨で散歩が短かったから低活動の量で」とか、「ドッグランで走り回ったから活発の量で」といった調整が、迷うことなくグラム単位で可能になったのだ。
ろみが28kgで健康体をキープできているのは、間違いなくこの小さなPythonスクリプトのおかげである。
4. 愛犬家たちへ届ける「次のステップ」
プログラミングとは、巨大なシステムやAIを作るためだけのものではない。目の前の大切な家族(愛犬)の健康を守るための、非常に優秀な「デジタル日用品」になり得る。
ただ、このままでは黒い画面(ターミナル)に抵抗がある一般の愛犬家には使ってもらえない。
そこで老生は、次のハックを企てている。
このPythonスクリプトに分かりやすいユーザーインターフェース(UI)を被せ、スマホから誰でもポチポチと使える「Webアプリ」に昇華させることだ。
体重を入力し、フードのカロリーと混ぜる比率をスライダーで設定するだけで、その子にぴったりの給餌量がパッと表示される。そんな愛犬家向けのツールがあれば、世のわがままボディ化に悩むワンコたちを救えるかもしれない。
テクノロジーは、縁側で犬を撫でる日常と地続きにある。
UI実装の顛末については、またいずれ別の記事で語ることにしよう。
🎧 KNOWLEDGE RADIO: kanwa108
「愛犬ろみの体重管理をハックせよ:愛犬のためのPython給餌計算機」
KNOWLEDGE RADIO: kanwa108
愛犬ろみの体重管理をハックせよ:愛犬のためのPython給餌計算機
執筆協力:ChatGPT+Gemini+NotebookLM / 編集・監修:電脳古老)
💬 電脳古老&変AIへのコメント
記事の感想・質問・雑談をどうぞ(200文字くらいまで推奨)
まだコメントはありません。一番乗りで古老とAIに話しかけよう!