見出し画像

筋力強化のためのトレーニングプログラム提示コード(ピリオダイゼーション)

 今回は,ピリオダイゼーションという計画的にトレーニングを行うことで,筋力を高めていくトレーニングプログラムのコードを紹介します.トレーニング種目は,スクワット,ベンチプレス,デッドリフトの3種目です.

 提示するトレーニングプログラムでは,トレーニング動作に適応する期間(adaptation期),筋力強化期間(strength development期),最大筋力強化期間(Maximum muscle strength期),回復期間(deload期)というサイクルで成り立っています.

トレーニングの内容は,
day1:スクワット+ベンチプレス
day2:デッドリフト+Pausedデッドリフト
day3:スクワット+Pausedスクワット
day4:ベンチプレス+Narrowベンチプレス
となっています.
 プログラム設定の流れとしては,
1. 最大重量の設定
2. トレーニング期間の設定
3. トレーニング期間の振り分け
4. 初期のトレーニング強度の設定
5. 週ごとに増加させるトレーニング強度の設定
6 レップ数の設定
7. セット数の設定

を行っていきます.

1. 最大重量の設定

#Max重量,スクワット(SQ),ベンチプレス(BN),デッドリフト(DL)

SQ=200
BN=100
DL=180

 ここでは,スクワット,ベンチプレス,デッドリフトそれぞれの最大重量(kg)を入力します.今回は,例えとして,スクワット200kg,ベンチプレス100kg,デッドリフト180kgを最大重量として入力しています.

2. トレーニングサイクルの設定

#トレーニングに関する情報を入力
#トレーニング週_総数
week=10

#_adaptationの期間
week_ad=2
ins_ad=0.6 #初期の運動強度
k_ad=0.025 #週ごとに増やしたい強度(Ex. k=0.025の場合,1週間ごとに2.5%ずつ強度が上がる)
r_ad=8 #レップ数の設定
s_ad=2 #セット数の設定


#Strehngth developmentの期間
week_st=4
ins_st=0.75 #初期の運動強度
k_st=0.025 #週ごとに増やしたい強度(Ex. k=0.025の場合,1週間ごとに2.5%ずつ強度が上がる)
r_st=4 #レップ数の設定
s_st=5 #セット数の設定

#Maximum muscle strengthの期間
week_ma=2
ins_ma=0.875 #初期の運動強度
k_ma=0.025 #週ごとに増やしたい強度(Ex. k=0.025の場合,1週間ごとに2.5%ずつ強度が上がる)
r_ma=2 #レップ数の設定
s_ma=3 #セット数の設定


#deloadの期間
week_de=2
ins_de=0.6 #初期の運動強度
k_de=0.025 #週ごとに増やしたい強度(Ex. k=0.025の場合,1週間ごとに2.5%ずつ強度が上がる)
r_de=6 #レップ数の設定
s_de=2 #セット数の設定

 ここでは,トレーニングサイクルに関する情報を入力します.
 weekにはトレーニング全体の期間を入力します(今回は例えとして10週のプログラミングを組むために,week=10としています).

 トレーニング動作に適応する期間(adaptation期),筋力強化期間(strength development期),最大筋力強化期間(Maximum muscle strength期),回復期間(deload期)のそれぞれの期間において, 初期のトレーニング強度の設定,レップ数の設定,セット数の設定を入力します

 今回の例としては,adaptation期は2週間とし(week_ad=2),初期のトレーニング強度を最大重量の60%(ins_ad=0.6),レップ数を8回(r_ad=8),セット数を2セット(s_ad=2)としています.また,週ごとに強度を2.5%(k_ad=0.025)上げる設定をしています.週ごとに強度を上げたくないときには,k_ad=0を入力します.

 同じように,筋力強化期間(strength development期),最大筋力強化期間(Maximum muscle strength期),回復期間(deload期)でも 初期のトレーニング強度の設定,週ごとに増加させたい強度,レップ数の設定,セット数の設定を行います.

3. トレーニングプログラムの提示

 ここでは入力する情報はありません.ただ,↓のコードを実行する(Shift+Enterを押す)だけです. 

#トレーニングメニューの提示_adaptation
week_1 = 0
for i in range(1, week_ad+1):
   week_1 += 1
   ins_ad += k_ad 
   print('week'+str(week_1)+'--adaptation期')
   
   #day1

   SQd1=round(SQ*(ins_ad-k_ad))
   SQr1=r_ad
   SQs1=s_ad
   SQd1t=SQd1*SQr1*SQs1 #総負荷量

   BNd1=round(BN*(ins_ad-k_ad))
   BNr1=r_ad
   BNs1=s_ad+1
   BNd1t=BNd1*BNr1*BNs1 #総負荷量

   print('day1')
   print('SQ:{}kg×Reps:{}×Sets:{}'.format(SQd1,SQr1,SQs1))
   print('BN:{}kg×Reps:{}×Sets:{}'.format(BNd1,BNr1,BNs1))
   print('スクワットの総負荷量:{}kg, ベンチプレスの総負荷量:{}kg'.format(SQd1t,BNd1t))
  
    #day2

   DLd1=round(DL*(ins_ad-k_ad))
   DLr1=r_ad
   DLs1=s_ad
   DLd1t=DLd1*DLr1*DLs1 #総負荷量
   PDLd1=round(DL*((ins_ad-k_ad)-0.2))
   PDLr1=r_ad-2
   PDLs1=s_ad-1
   PDLd1t=PDLd1*PDLr1*PDLs1 #総負荷量
   print('day2')
   print('DL:{}kg×Reps:{}×Sets:{}'.format(DLd1,DLr1,DLs1))
   print('Paused DL:{}kg×Reps:{}×Sets:{}'.format(PDLd1,PDLr1,PDLs1))
   print('デッドリフトの総負荷量:{}kg, Pausedデッドリフトの総負荷量:{}kg'.format(DLd1t,PDLd1t))
   
   #day3

   SQd1_2=round(SQ*(ins_ad-k_ad))
   SQr1_2=r_ad
   SQs1_2=s_ad
   SQd1_2t=SQd1_2*SQr1_2*SQs1_2 #総負荷量
   PSQd1_2=round(SQ*((ins_ad-k_ad)-0.2))
   PSQr1_2=r_ad-2
   PSQs1_2=s_ad-1
   PSQd1_2t=PSQd1_2*PSQr1_2*PSQs1_2 #総負荷量

   print('day3')
   print('SQ:{}kg×Reps:{}×Sets:{}'.format(SQd1_2,SQr1_2,SQs1_2))
   print('Paused SQ:{}kg×Reps:{}×Sets:{}'.format(PSQd1_2,PSQr1_2,PSQs1_2))
   print('スクワットの総負荷量:{}kg, Pausedスクワットの総負荷量:{}kg'.format(SQd1_2t,PSQd1_2t))
 


   #day4

   BNd1_2=round(BN*(ins_ad-k_ad))
   BNr1_2=r_ad
   BNs1_2=s_ad+2
   BNd1_2t=BNd1_2*BNr1_2*BNs1_2 #総負荷量
   NBNd1_2=round(BN*((ins_ad-k_ad)-0.2))
   NBNr1_2=r_ad
   NBNs1_2=s_ad+2
   NBNd1_2t=NBNd1_2*NBNr1_2*NBNs1_2 #総負荷量

   print('day4')
   print('BN:{}kg×Reps:{}×Sets:{}'.format(BNd1_2,BNr1_2,BNs1_2))
   print('Narrow BN:{}kg×Reps:{}×Sets:{}'.format(NBNd1_2,NBNr1_2,NBNs1_2))
   print('ベンチプレスの総負荷量:{}kg, ナローベンチプレスの総負荷量:{}kg'.format(BNd1_2t,NBNd1_2t))
   print('_________________________________________________________________')
   
#トレーニングメニューの提示_strength development
print('_________________________________________________________________')
week_2 = 0
for i in range(1, week_st+1):
   week_2 += 1
   ins_st += k_st 
   print('week'+str(week_2+(week_ad))+'--strength development期')
   
   #day1

   SQd1=round(SQ*(ins_st-k_st))
   SQr1=r_st
   SQs1=s_st
   SQd1t=SQd1*SQr1*SQs1 #総負荷量

   BNd1=round(BN*(ins_st-k_st))
   BNr1=r_st
   BNs1=s_st+1
   BNd1t=BNd1*BNr1*BNs1 #総負荷量

   print('day1')
   print('SQ:{}kg×Reps:{}×Sets:{}'.format(SQd1,SQr1,SQs1))
   print('BN:{}kg×Reps:{}×Sets:{}'.format(BNd1,BNr1,BNs1))
   print('スクワットの総負荷量:{}kg, ベンチプレスの総負荷量:{}kg'.format(SQd1t,BNd1t))
  
    #day2

   DLd1=round(DL*(ins_st-k_st))
   DLr1=r_st
   DLs1=s_st
   DLd1t=DLd1*DLr1*DLs1 #総負荷量
   PDLd1=round(DL*((ins_st-k_st)-0.2))
   PDLr1=r_st-2
   PDLs1=s_st-1
   PDLd1t=PDLd1*PDLr1*PDLs1 #総負荷量
   print('day2')
   print('DL:{}kg×Reps:{}×Sets:{}'.format(DLd1,DLr1,DLs1))
   print('Paused DL:{}kg×Reps:{}×Sets:{}'.format(PDLd1,PDLr1,PDLs1))
   print('デッドリフトの総負荷量:{}kg, Pausedデッドリフトの総負荷量:{}kg'.format(DLd1t,PDLd1t))
   
   #day3

   SQd1_2=round(SQ*(ins_st-k_st))
   SQr1_2=r_st
   SQs1_2=s_st
   SQd1_2t=SQd1_2*SQr1_2*SQs1_2 #総負荷量
   PSQd1_2=round(SQ*((ins_st-k_st)-0.2))
   PSQr1_2=r_st-2
   PSQs1_2=s_st-1
   PSQd1_2t=PSQd1_2*PSQr1_2*PSQs1_2 #総負荷量

   print('day3')
   print('SQ:{}kg×Reps:{}×Sets:{}'.format(SQd1_2,SQr1_2,SQs1_2))
   print('Paused SQ:{}kg×Reps:{}×Sets:{}'.format(PSQd1_2,PSQr1_2,PSQs1_2))
   print('スクワットの総負荷量:{}kg, Pausedスクワットの総負荷量:{}kg'.format(SQd1_2t,PSQd1_2t))
 


   #day4

   BNd1_2=round(BN*(ins_st-k_st))
   BNr1_2=r_st
   BNs1_2=s_st+2
   BNd1_2t=BNd1_2*BNr1_2*BNs1_2 #総負荷量
   NBNd1_2=round(BN*((ins_st-k_st)-0.2))
   NBNr1_2=r_st
   NBNs1_2=s_st+2
   NBNd1_2t=NBNd1_2*NBNr1_2*NBNs1_2 #総負荷量

   print('day4')
   print('BN:{}kg×Reps:{}×Sets:{}'.format(BNd1_2,BNr1_2,BNs1_2))
   print('Narrow BN:{}kg×Reps:{}×Sets:{}'.format(NBNd1_2,NBNr1_2,NBNs1_2))
   print('ベンチプレスの総負荷量:{}kg, ナローベンチプレスの総負荷量:{}kg'.format(BNd1_2t,NBNd1_2t))
   print('_________________________________________________________________')

#トレーニングメニューの提示_Maximum muscle strength
print('_________________________________________________________________')
week_3 = 0
for i in range(1, week_ma+1):
   week_3 += 1
   ins_ma += k_ma 
   print('week'+str(week_3+(week_ad)+(week_st))+'--Maximum muscle strength期')
   
   #day1

   SQd1=round(SQ*(ins_ma-k_ma))
   SQr1=r_ma
   SQs1=s_ma
   SQd1t=SQd1*SQr1*SQs1 #総負荷量

   BNd1=round(BN*(ins_ma-k_ma))
   BNr1=r_ma
   BNs1=s_ma+1
   BNd1t=BNd1*BNr1*BNs1 #総負荷量

   print('day1')
   print('SQ:{}kg×Reps:{}×Sets:{}'.format(SQd1,SQr1,SQs1))
   print('BN:{}kg×Reps:{}×Sets:{}'.format(BNd1,BNr1,BNs1))
   print('スクワットの総負荷量:{}kg, ベンチプレスの総負荷量:{}kg'.format(SQd1t,BNd1t))
  
    #day2

   DLd1=round(DL*(ins_ma-k_ma))
   DLr1=r_ma
   DLs1=s_ma
   DLd1t=DLd1*DLr1*DLs1 #総負荷量
   PDLd1=round(DL*((ins_ma-k_ma)-0.2))
   PDLr1=r_ma-2
   PDLs1=s_ma-1
   PDLd1t=PDLd1*PDLr1*PDLs1 #総負荷量
   print('day2')
   print('DL:{}kg×Reps:{}×Sets:{}'.format(DLd1,DLr1,DLs1))
   print('Paused DL:{}kg×Reps:{}×Sets:{}'.format(PDLd1,PDLr1,PDLs1))
   print('デッドリフトの総負荷量:{}kg, Pausedデッドリフトの総負荷量:{}kg'.format(DLd1t,PDLd1t))
   
   #day3

   SQd1_2=round(SQ*(ins_ma-k_ma))
   SQr1_2=r_ma
   SQs1_2=s_ma
   SQd1_2t=SQd1_2*SQr1_2*SQs1_2 #総負荷量
   PSQd1_2=round(SQ*((ins_ma-k_ma)-0.2))
   PSQr1_2=r_ma-2
   PSQs1_2=s_ma-1
   PSQd1_2t=PSQd1_2*PSQr1_2*PSQs1_2 #総負荷量

   print('day3')
   print('SQ:{}kg×Reps:{}×Sets:{}'.format(SQd1_2,SQr1_2,SQs1_2))
   print('Paused SQ:{}kg×Reps:{}×Sets:{}'.format(PSQd1_2,PSQr1_2,PSQs1_2))
   print('スクワットの総負荷量:{}kg, Pausedスクワットの総負荷量:{}kg'.format(SQd1_2t,PSQd1_2t))
 


   #day4

   BNd1_2=round(BN*(ins_ma-k_ma))
   BNr1_2=r_ma
   BNs1_2=s_ma+2
   BNd1_2t=BNd1_2*BNr1_2*BNs1_2 #総負荷量
   NBNd1_2=round(BN*((ins_ma-k_ma)-0.2))
   NBNr1_2=r_ma
   NBNs1_2=s_ma+2
   NBNd1_2t=NBNd1_2*NBNr1_2*NBNs1_2 #総負荷量

   print('day4')
   print('BN:{}kg×Reps:{}×Sets:{}'.format(BNd1_2,BNr1_2,BNs1_2))
   print('Narrow BN:{}kg×Reps:{}×Sets:{}'.format(NBNd1_2,NBNr1_2,NBNs1_2))
   print('ベンチプレスの総負荷量:{}kg, ナローベンチプレスの総負荷量:{}kg'.format(BNd1_2t,NBNd1_2t))
   print('_________________________________________________________________')
   
#トレーニングメニューの提示_deload
print('_________________________________________________________________')
week_4 = 0
for i in range(1, week_de+1):
   week_4 += 1
   ins_de += k_de 
   print('week'+str(week_4+(week_ad)+(week_st)+(week_ma))+'--deload期')
   
   #day1

   SQd1=round(SQ*(ins_de-k_de))
   SQr1=r_de
   SQs1=s_de
   SQd1t=SQd1*SQr1*SQs1 #総負荷量

   BNd1=round(BN*(ins_de-k_de))
   BNr1=r_de
   BNs1=s_de+1
   BNd1t=BNd1*BNr1*BNs1 #総負荷量

   print('day1')
   print('SQ:{}kg×Reps:{}×Sets:{}'.format(SQd1,SQr1,SQs1))
   print('BN:{}kg×Reps:{}×Sets:{}'.format(BNd1,BNr1,BNs1))
   print('スクワットの総負荷量:{}kg, ベンチプレスの総負荷量:{}kg'.format(SQd1t,BNd1t))
  
    #day2

   DLd1=round(DL*(ins_de-k_de))
   DLr1=r_de
   DLs1=s_de
   DLd1t=DLd1*DLr1*DLs1 #総負荷量
   PDLd1=round(DL*((ins_de-k_de)-0.2))
   PDLr1=r_de-2
   PDLs1=s_de-1
   PDLd1t=PDLd1*PDLr1*PDLs1 #総負荷量
   print('day2')
   print('DL:{}kg×Reps:{}×Sets:{}'.format(DLd1,DLr1,DLs1))
   print('Paused DL:{}kg×Reps:{}×Sets:{}'.format(PDLd1,PDLr1,PDLs1))
   print('デッドリフトの総負荷量:{}kg, Pausedデッドリフトの総負荷量:{}kg'.format(DLd1t,PDLd1t))
   
   #day3

   SQd1_2=round(SQ*(ins_de-k_de))
   SQr1_2=r_de
   SQs1_2=s_de
   SQd1_2t=SQd1_2*SQr1_2*SQs1_2 #総負荷量
   PSQd1_2=round(SQ*((ins_de-k_de)-0.2))
   PSQr1_2=r_de-2
   PSQs1_2=s_de-1
   PSQd1_2t=PSQd1_2*PSQr1_2*PSQs1_2 #総負荷量

   print('day3')
   print('SQ:{}kg×Reps:{}×Sets:{}'.format(SQd1_2,SQr1_2,SQs1_2))
   print('Paused SQ:{}kg×Reps:{}×Sets:{}'.format(PSQd1_2,PSQr1_2,PSQs1_2))
   print('スクワットの総負荷量:{}kg, Pausedスクワットの総負荷量:{}kg'.format(SQd1_2t,PSQd1_2t))
 


   #day4

   BNd1_2=round(BN*(ins_de-k_de))
   BNr1_2=r_de
   BNs1_2=s_de+2
   BNd1_2t=BNd1_2*BNr1_2*BNs1_2 #総負荷量
   NBNd1_2=round(BN*((ins_de-k_de)-0.2))
   NBNr1_2=r_de
   NBNs1_2=s_de+2
   NBNd1_2t=NBNd1_2*NBNr1_2*NBNs1_2 #総負荷量

   print('day4')
   print('BN:{}kg×Reps:{}×Sets:{}'.format(BNd1_2,BNr1_2,BNs1_2))
   print('Narrow BN:{}kg×Reps:{}×Sets:{}'.format(NBNd1_2,NBNr1_2,NBNs1_2))
   print('ベンチプレスの総負荷量:{}kg, ナローベンチプレスの総負荷量:{}kg'.format(BNd1_2t,NBNd1_2t))
   print('_________________________________________________________________')

今回入力した情報で,↑のコードを実行すると以下の結果が得られます.

図1

図2

 上記で設定した通りに,トレーニングプログラムが提示されます.提示されたプログラムをもとに,週単位でトレーニングを管理できるようになっています.また,1日のトレーニングにおける総負荷量が自動的に計算されます.総負荷量をもとにトレーニングプログラムを立案する方には,提示された総負荷量をみてレップ数やセット数を組み立てることができます.
「明日のトレーニングをどうしよう?」とか「トレーニングプログラムを立案したいけど,どのように組み立てたらいいか分からない」という方は,ぜひこのプログラムをベースにしてトレーニングプログラムを立案していただきたいです.

 トレーニングプログラムの作成に関して,「こんな機能があったらいい」などの要望があれば,ぜひ教えていただきたいです.また,今回のトレーニングプログラムでは「ここを修正したほうがいい」などありましたら,ぜひご教示ください.それらの意見を取り込んで,さらに質の高いトレーニングプログラム提示コードを作成します.

 今回紹介したコード(python)のダウンロードは↓からできるようになっています.

今回作成したコードの解説をYoutubeにあげています.動画を観ると,上記に示したコードを実行するとどのような結果が得られるのかが分かると思います.

 参考資料
1. TSA 9 Week Intermediate Powerlifting Program (v1.0 + v2.0)
https://liftvault.com/programs/powerlifting/tsa-9-week-intermediate-program/
2. パワーズ運動生理学 体力と競技力向上のための理論と応用
3. Periodization Training for Sports
4. Science and Practice of Strength Training
5. Peterson, M. D., Rhea, M. R., & Alvar, B. A. (2004). Maximizing strength development in athletes: a meta-analysis to determine the dose-response relationship. The Journal of Strength & Conditioning Research, 18(2), 377-382.
6. Rhea, M. R., Alvar, B. A., Burkett, L. N., & Ball, S. D. (2003). A meta-analysis to determine the dose response for strength development.