器具なし自宅筋トレを2年続けたら体脂肪-7%になった話

「自宅でやればいい」と思ったのに続かない……そんな経験ありませんか?在宅エンジニアが試行錯誤しながら2年続けた週3回プログラムと、挫折しない仕組みを全部さらします。

2年間続けてわかった「自宅筋トレ」の本質

正直に言うと、最初の3ヶ月は全然続かなかった。ジムに行くのが面倒で「自宅でやればいい」と思い始めたのに、そっちも続かない。でも2年後の今、体脂肪率は7%落ちて、腰痛も肩こりもほぼなくなった。何が変わったかというと、メニューじゃなくて「仕組み」だったんですよね。

在宅エンジニアって座りっぱなしが多くて、運動習慣を作るのが本当に難しい。スタンディングデスクを導入してみたり、ストレッチを試したりしても、気づいたら元の生活に戻ってる。デスクワーク腰痛・肩こりを解消するストレッチ記事でも書いたけど、根本的な体力向上には筋トレが必要だと痛感した。

というわけで、器具なしで2年間やってきた実際のプログラムと、続けるために実装した仕組みを全部書く。完璧なプログラムじゃないし、まだ改善中のところもあるけど、「続く」という点では自信がある。


週3回プログラムの全体設計

最初にめちゃくちゃ大事なことを言うと、「毎日やる」はほぼ確実に失敗する。エンジニアの業務は突発的なインシデントやデプロイで予定が崩れる。週3回、30〜40分というのが現実的な上限だと思ってる。

2026年時点での自分のプログラムはこんな構成:

月曜: 上半身プッシュ系 + 体幹
水曜: 下半身 + 有酸素
金曜: 上半身プル系(タオル・椅子活用)+ 体幹

曜日は固定じゃなくていい。「週に3回、48時間以上空ける」だけ守れば十分。

実際のメニュー詳細

月曜: 上半身プッシュ系(約35分)

種目セット数回数休憩
プッシュアップ(通常)3限界-2回60秒
ダイヤモンドプッシュアップ3限界-2回60秒
パイクプレス310〜15回60秒
ディップス(椅子使用)3限界-2回60秒
プランク345〜60秒45秒
サイドプランク2(左右)30秒30秒

水曜: 下半身 + 有酸素(約40分)

種目セット数回数休憩
スクワット420回60秒
ブルガリアンスクワット312回(片足)90秒
ヒップリフト315回45秒
ワイドスクワット315回60秒
ジャンピングジャック or バーピー330秒30秒
マウンテンクライマー330秒30秒

金曜: 上半身プル系(約35分)

これが一番難しい。器具なしでの「引く動作」はどうしても制限があって、タオルと椅子を組み合わせた種目がメインになる。個人的にはこの日が一番工夫のしがいがある日でもある。

種目セット数回数休憩
タオルロウ(机の端につかまり)310〜15回60秒
インバーテッドロウ(テーブル下)3限界-2回90秒
フェイスプル(タオル使用)315回45秒
スーパーマン315回45秒
バイシクルクランチ320回(左右)45秒
レッグレイズ315回45秒

インバーテッドロウは最初ほぼできなかったけど、今は20回ぐらいできるようになった。これが一番効いたかもしれない。


2年間の体脂肪変化と実測データ

毎朝の体重・体脂肪率を記録してきたデータから、主要ポイントを抽出するとこんな感じ。

xychart-beta
    title "体脂肪率の変化(%)"
    x-axis [開始時, 3ヶ月, 6ヶ月, 9ヶ月, 12ヶ月, 18ヶ月, 24ヶ月]
    y-axis "体脂肪率 (%)" 10 --> 25
    line [22.1, 21.3, 20.2, 18.8, 17.5, 16.1, 15.0]

最初の3ヶ月はほとんど変化なかった。正直「やっぱり器具なしじゃ無理か」と思いかけた。でも6ヶ月を過ぎたあたりから明確に変わってきた。体脂肪率の数字よりも「疲れにくくなった」「午後の眠気が減った」という体感の方が先に気づいたくらいで、それがモチベーションを保つのにも地味に大きかった。

コードの集中力については完全に主観だけど、エンジニアが運動習慣を続けるコツの記事でも触れているように、運動後2〜3時間は明らかに頭が動く感覚がある。

週ごとのトレーニング完遂率も記録してたので一緒に:

xychart-beta
    title "週3回トレーニング完遂率(月別)"
    x-axis [1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月]
    y-axis "完遂率 (%)" 0 --> 100
    bar [45, 52, 60, 71, 78, 82, 85, 80, 88, 90, 92, 91]

最初の2ヶ月がひどい。でも半年で80%を超えてから、習慣として安定した。この変化のきっかけは後述する「仕組み化」を本格実装したタイミングと完全に一致してる。


継続するための「仕組み化」実装

意志力に頼った継続は確実に失敗する。これはソフトウェアの設計と全く同じで、「人間がミスしないようにする」じゃなくて「ミスしても大丈夫な仕組みを作る」が正解。

カレンダーブロックとリマインダー

Googleカレンダーに週3回のトレーニング時間を1年分ブロックしておく。会議の招待みたいに「削除するのが手間」な状態を意図的に作る。リマインダーは30分前と5分前の2段階。

# Google Calendar APIで自動スケジュール登録するスクリプト(一部)
import datetime
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build

def create_training_event(service, date, title, duration_minutes=40):
    start_time = datetime.datetime.combine(date, datetime.time(7, 0))
    end_time = start_time + datetime.timedelta(minutes=duration_minutes)
    
    event = {
        'summary': f'🏋️ {title}',
        'description': 'ホームトレーニング - スキップ厳禁',
        'start': {
            'dateTime': start_time.isoformat(),
            'timeZone': 'Asia/Tokyo',
        },
        'end': {
            'dateTime': end_time.isoformat(),
            'timeZone': 'Asia/Tokyo',
        },
        'reminders': {
            'useDefault': False,
            'overrides': [
                {'method': 'popup', 'minutes': 30},
                {'method': 'popup', 'minutes': 5},
            ],
        },
        'colorId': '11',  # トマト色で目立たせる
    }
    
    return service.events().insert(calendarId='primary', body=event).execute()

# 月曜・水曜・金曜を一括登録
def schedule_weekly_training(service, weeks=52):
    today = datetime.date.today()
    schedule = {
        0: ('上半身プッシュ系', 35),   # 月曜
        2: ('下半身+有酸素', 40),       # 水曜
        4: ('上半身プル系', 35),        # 金曜
    }
    
    for week in range(weeks):
        for weekday, (title, duration) in schedule.items():
            days_until = (weekday - today.weekday()) % 7 + week * 7
            training_date = today + datetime.timedelta(days=days_until)
            create_training_event(service, training_date, title, duration)
            
print("1年分のトレーニングスケジュールを登録しました")

エンジニアっぽくてちょっとやりすぎかもしれないけど、「設定した後は考えない」状態を作るのが目的。一回セットしてしまえば脳のリソースをゼロにできるので、個人的にはこれが一番コスパがよかった。

トレーニングログの自動化

毎回のトレーニング後に記録するのが面倒で続かなかったので、Notionのシンプルなテンプレートと、完了時にSlackへ自動通知する仕組みを作った。

# トレーニング完了をSlackに通知するシンプルなスクリプト
import requests
import datetime
import json

def notify_training_complete(workout_type: str, duration_min: int, notes: str = ""):
    webhook_url = "YOUR_SLACK_WEBHOOK_URL"
    
    emoji_map = {
        "上半身プッシュ": "💪",
        "下半身": "🦵",
        "上半身プル": "🏋️",
    }
    
    emoji = emoji_map.get(workout_type, "✅")
    today = datetime.date.today().strftime("%Y/%m/%d")
    
    message = {
        "text": f"{emoji} [{today}] {workout_type} 完了!{duration_min}分",
        "attachments": [
            {
                "color": "#36a64f",
                "fields": [
                    {"title": "種目", "value": workout_type, "short": True},
                    {"title": "時間", "value": f"{duration_min}分", "short": True},
                    {"title": "メモ", "value": notes or "なし", "short": False}
                ]
            }
        ]
    }
    
    response = requests.post(webhook_url, data=json.dumps(message))
    return response.status_code == 200

# 使用例
notify_training_complete("上半身プッシュ", 38, "プッシュアップ最高15回達成")

自分のSlackに通知が来るだけで「やった感」が出て、地味に継続モチベになってる。自分で自分をほめる仕組みを自動化するのって、ちょっとバカっぽいけど本当に効く。

「2回連続スキップしない」ルール

これだけは絶対守るルールとして設定した。1回サボっても次は必ずやる。このルールにしてから「今週もう無理か」という諦めが激減した。完璧主義をやめることが一番大事だったかもしれない。3年続かなかった運動が習慣化できた話でも同じような話が出てくるので、合わせて読んでみてほしい。


2026年の最新知見:どのセットが本当に効くか

ここ数年で読んできた研究をもとに、実際のプログラムへ取り入れたポイントをまとめる。

週セット数と筋肥大の関係

「週10〜20セット/筋肉群」が最適域という見解が最近の研究でかなり固まってきた。器具なし自宅筋トレだとどうしてもセット数が増えがちなので、これは都合がいい。自分のプログラムの配分はこんな感じ:

pie title 週あたりの筋肉群別セット数配分
    "胸・肩・三頭" : 28
    "背中・二頭" : 21
    "脚・臀部" : 28
    "体幹" : 21

プログレッシブオーバーロードの実装方法

器具がないと重量を増やせないので、「負荷の上げ方」が課題になる。実際にやってる方法は4つ。

方法内容具体例
回数増加基準回数を達成したら回数を増やすプッシュアップ 10回→15回→20回
バリエーション変更より難しい種目へ段階的に移行通常→ナロー→アーチャー→片手補助
テンポ変更同じ回数でもゆっくり動かすエキセントリック5秒かけて下ろす
ポーズ追加最低点で静止を加えるデッドストップ2秒停止

ここはまだ完全に体系化できてないし、個人差も大きい。正直、自分も試行錯誤中だ。

回復の重視

以前は「もっとやれば効果出るだろ」と思って毎日やろうとして失敗した。今は休息日に科学的ストレッチを10〜15分やるだけにしてる。これが一番継続に効いた気がする。

睡眠もめちゃくちゃ大事で、7時間以下だと明らかに次の日のパフォーマンスが落ちる。体感レベルの話だけど、数ヶ月記録を続けると相関がはっきり見えてくる。「休むのもトレーニングのうち」というのを体で理解するまでに半年かかった。


よくある失敗パターンと対策

2年間で自分がやらかしたことと、チームメンバーや友人から聞いた話を合わせると、失敗パターンはかなり共通してる。

flowchart TD
    A[自宅筋トレ開始] --> B{続くか?}
    B -->|よくある失敗| C[毎日やろうとする]
    B -->|よくある失敗| D[完璧なメニューを探し続ける]
    B -->|よくある失敗| E[成果が出ないと判断が早い]
    B -->|成功パターン| F[週3回・固定曜日]
    
    C --> G[過負荷で怪我・燃え尽き]
    D --> H[分析麻痺で始まらない]
    E --> I[3ヶ月未満でやめる]
    
    F --> J[カレンダーブロック]
    J --> K[ログ記録の仕組み化]
    K --> L[2回連続スキップしないルール]
    L --> M[6ヶ月で習慣化完了]
    M --> N[体脂肪・筋力の変化を実感]
    N --> O[内発的動機が生まれる]
    O --> P[長期継続へ]

「完璧なメニューを探し続ける」は本当にあるある。最初の2ヶ月はYouTubeやReddit、各種論文を読み漁って、全然トレーニングしてなかった。エンジニアって調査フェーズが長くなりがちなんですよね。「とりあえず動かしてみる」が筋トレでも正解だと思う。完璧なアーキテクチャを設計しようとして何も実装しないのと、構造は全く同じだった。

みなさんは最初どんな失敗をしましたか?ぜひコメントで教えてほしい。


まとめ

2年間の器具なし自宅筋トレで得た知見を整理するとこうなる:

  1. 週3回・30〜40分が現実的な最適解。毎日やろうとすると確実に失敗する。エンジニアの突発タスクを想定した設計が必要

  2. プログラムより仕組み化が先。カレンダーブロック・自動リマインダー・ログ通知の自動化が継続の核心だった

  3. 器具なしでも6ヶ月で体脂肪2〜3%は動く。ただし食事管理なしでは限界がある。PFCバランス管理と合わせて取り組むと効果が大きい

  4. プッシュ系は簡単、プル系は工夫が要る。インバーテッドロウとタオルロウを組み合わせるのが現時点のベスト解

  5. 「2回連続スキップしない」ルールだけで継続率が大幅改善。完璧主義をやめることが長期継続の前提条件

次のアクション: まずカレンダーに来週3回分の30分ブロックを入れてみてほしい。メニューは後回しでいい。最初の1回さえやれば、90%以上の確率で2回目もやる気になる。それだけでいい。

U

Untanbaby

ソフトウェアエンジニア|AWS / クラウドアーキテクチャ / DevOps

10年以上のIT実務経験をもとに、現場で使える技術情報を発信しています。 記事の誤りや改善点があればお問い合わせからお気軽にご連絡ください。

関連記事