筋肉とエンジニアリングで すべてを解決するブログ

筋トレ、JavaScript、Ruby で世界を変えてやります。

エンジニアが筋トレにアモーレしてしまった、5つの理由


f:id:ma3tk:20161204222026j:plain

筋肉 Advent Calendar 2016

こんにちは、 @ma3tk です。

この記事は、筋肉 Advent Calendar 2016 - Qiita 5日目の記事です。

この Advent Calendar を通じて、エンジニア界隈にもガチ勢がたくさんいらっしゃることがわかって感動してます。仲間いるんだなー。

みなさん、筋トレの進捗はいかがですか?

僕はバーベルスクワットでやっと 100kg * 6-8reps * 3sets いけるようになってきて、いい感じに大腿筋が大きくなってきてるのを感じています。

筋肉って結構スケーラブルだなぁって思います。無限にでかくできるし小さくできるし。

筋肉は裏切らない。

簡単な自己紹介

まずは簡単に僕の最近の筋トレについて。

ホームジムはティップクロス渋谷で大体朝います。

ゴールドジムは月1回ビジターで行くか行かないか程度のガチ度です。

今年中に、バーベルスクワット 100kg、デッドリフト 110kg、ベンチプレス 80kg (それぞれ 8reps * 3sets) を目標にしています。

それぞれ現在 バーベルスクワット 100kg、デッドリフト 100kg、ベンチプレス 65kg です。ベンプレはフォーム直したら 7.25kg ほど落ちました。フォームは大事。

ScalaGolang などの静的型付き言語を触ってる方と同じくらい筋トレのフォーム(型)は重要です。

きっかけ・筋トレ歴

学生時代、筋トレはたしなむ程度でした。

2011年某日、タクシーに相席した友人から「おまえムチムチしてんなー!」と言われ、翌週ジム即契約。

そこから現在まで場所は変わっても1ヶ月以上ジムを辞めてないまま5年続けてます。

ジムに行くは行ってるけど、サボる事も多々あるのでまだまだ初級者と中級者の間にいます。

ちなみにラウンドロビン方式で毎日部位ごとに分けて筋トレすることで負荷分散しながらやっております。

エンジニアが筋トレにアモーレしてしまった5つの理由

f:id:ma3tk:20161204230125j:plain

エンジニアのアルバイトも含め5年ほどエンジニアとして働きながら同時に筋トレをしてきましたが、いつのまにか当初の目的である「痩せる」という事よりも「筋トレする」という事が目的になってしまいました。

筋トレにアモーレしていたんですね。

いわゆる、筋肉バカです。 Muscle Oriented。

5年筋トレエンジニアを続けてよかったことがたくさんあるのですが、その中でも、

  • 筋トレ駆動人生による仕事効率化
  • エンジニアリングに対して自信が持てる
  • チームメンバーの健康意識を改善できる
  • 問題に対するソリューションを思いつける環境が持てる
  • エンジニアリングよりも物理的に難しい世界があることを感じられる

この5つを順に紹介していきます。

1. 筋トレ駆動人生による仕事効率化

Muscle Oriented Life.

まず、筋トレを始めると、「2日に一回ジムに行こう」から「成果出すために毎日ジムに行きたい!」といった要望に自然となってきます。ええ、なってきます。なってくるはずです。

一日の中で、筋トレする時間を十分に取りたいので、最低1時間の滞在で、実際にはストレッチやウォームアップ含めて2時間半程度確保したくなります。

ジムの始まる時間や終わる時間を考えると、早朝か夜に行くことになると思います。

結論から言えば、どの時間帯に行くにせよ、筋トレ駆動で人生が動いていきます。

早朝ジムに行くパターン

前提として、健康な体には睡眠は必須です。

朝行くことを考えると、夜寝る時間が早くなります。

すると、さっさと家に帰る時間も早くなり、無駄に残業できなくなります。

仕事の効率化が勝手に出来てしまいます。

夜ジムに行くパターン

ジムが終わる時間が決まっている場合で夜行くパターンだと、逆算して「何時に行かないと2時間確保できないな」となるのでこれまた残業できなくなります。

仕事の効率化が勝手に出来てしまいます。

ただ、夜はどこのジムでも混むので個人的には早朝がおすすめです。

実はジム通いによる仕事の効率化って

前日の カノジョできてるエンジニア Advent Calendar 2016 - QiitaK-BOY さんも同じような内容で投稿されてます。

silver-gym.net

合わせてどうぞ!

2. 精神が鍛えられ、エンジニアリングに対しても何故か自信が持てるようになる

筋トレすると、

  • セロトニンという神経伝達物質による精神安定
  • テストステロンという男性ホルモンにより自信、決断力、ポジティブ効果

が実感できるらしく。

昔は「『ボディビルダーとか気持ち悪い!』って言われても続けるのアホなんじゃないの?」って思ってましたが、今となっては毎日筋トレしてると彼らの気持ちがわかる。「そうなっちまうわなー、しゃあない」って感じです。

クソコードとディスられても、せっかくリリースしたのにバグを発見しても「やっちまったのはしゃあねえ、反省して直してさっさと次いくか!」ってすぐに切り替えられるところが筋トレのいいところ。

また、誰かが怒ってるのを見てると、「筋トレ足んねーんじゃねーか?それともおすすめのプロテインとサプリ試しに飲む?」って言いたくなりますし、どれだけ大規模な障害を起こしても冷静でいられます。

エンジニア全員におすすめしたい技術、それが筋トレではあるのですが、特に、大規模サービスを提供しているエンジニアや、長期間同じプロジェクトで開発を続けてるエンジニアほどストレスは多くなると思いますし、是非筋トレはしてもらいたいです。いやもう、全員一緒にやろうよ!!

3. チームメンバーの健康意識を改善できる

f:id:ma3tk:20161204225712j:plain

これは副産物なんですが、自己紹介で、

ジム行ってます、食事制限してます

ってなると、チームメンバーも気を使ってくれ、最終的にチームメンバーも積極的にお菓子を食べなくなったりします。

僕のチームだけでなく、前職で糖質制限されていた別のチームでも同じ現象が起こってました。

特に、スクラムや朝会などがある場合は、体重の変化をホワイトボードや Slack に書いたりしていくとさらに健康への意識付けできて良いと思ってます。

そしていつの間にかアドバイザーに近い存在になり、

  • 風邪引いた時の栄養学を提供
  • 良いジムの選択とプラン相談を受ける
  • デスクワークによる肩こり解消方法の提供
  • プロテインサプリメントの紹介が多くなる
  • 「●●さん、今週ジム行ってますか?」が挨拶代わりになる

という感じになります。

チームメンバーにもいい影響を与えますし、エンジニアリング以外のコミュニケーションが取りやすくなりますのでおすすめです。

どうでもいいですが、他にもメンバーとコミュニケーション取る時に「〜します。」が「〜しマッスル。」と語尾が変わってきたり しマッスル。

4. 悩んでいた問題に対し、いきなりソリューションを思いつける環境が持てる

f:id:ma3tk:20161204225924j:plain

複雑な処理やアルゴリズムに対し、プロトタイプでコード書いてみたものの「イマイチ」と思うシーンがたまにあったりしませんか?

よく「風呂に入ってる時やトイレに入っている時に思いついた」という話は聞きますが、筋トレしているとそのタイミングが多数訪れます。

10reps バーベルを上げた後のインターバルや、筋トレ後のストレッチ中に「あれ?もしかしてこれでいけるんじゃ!?」と斬新なアイディアが生まれてきます。

もちろん、風呂でもトイレでもそういうのあります。

個人的な経験では筋トレ前後のリラックスがそのタイミングになっていたりしていくつかクリエイティブなアイディアが出てきています。

問題を考えない時間を作る事もすごい大切だなーと感じています。

通常よりも筋トレによりタイミングが増えることで得られてるなーと。

5. エンジニアリングよりも物理的に難しい世界があることを感じられる

f:id:ma3tk:20121111163157j:plain

筋トレと比べ、プログラミングは僕は結構イージーだとも思います。

何故なら大抵の場合正しく書けば正しく動くからです。

しかしながら、思った通りに書いても思った通りには動いてくれないところが難しさでもあると思います。

逆に筋トレは正しくやろうと思っても、一発で正しく出来ない側面があります。

当たり前ですが、実行するのが機械ではなく自分だからです。

逆に言えば、正しさを自分が担保できるということは、ステークホルダーが自分のみになります。そのため、プログラミングよりもコントローラブルな実行環境であるともいえます。

プログラミングではサーバに負荷がかかりますが、筋トレでは自分に負荷がかかります。

ダンベルの重さの選択による負荷のマニュアルスケーリング、筋肉の収縮と伸展による正しい実行精度、適切な栄養摂取による筋肉インフラの増強……

筋トレには、サーバとちょっと違った熱いパラメータチューニング、健康と栄養の常時運用と保守が待っています。

まとめ

Webの世界だとプログラムのライフサイクルは比較的短めですが、筋トレは人生通して付き合えマッスル

電源もPCも要りません。極論筋トレ自体にはバーベルもダンベルも要りません、もちろん自重トレーニングでもOK。

さぁ、まだ筋トレをしていない&&最近やってないエンジニアのみなさん、筋トレという新たな実行環境を開拓してみませんか!?

ティップネスでもゴールドジムでも待ってるよ!!

...

明日は @ken5cal さんによる 「まだ上半身で消耗してるの? タバタトレーニングのすゝめ」 です。

ちなみに

アモーレは名詞です。

あわせてどうぞ

ma3tk.hateblo.jp

ma3tk.hateblo.jp

【2016年】美味そうなプロテイン6種類を飲んでレビューしてみマッスル!

f:id:ma3tk:20161114230331p:plain

家賃補助とプロテイン

こんにちは、東大に入学する女性に対して 3万円の家賃補助が出るという件で炎上しているのを見ながらプロテインを飲んでいる @ma3tk です。

でも、家賃補助より福利厚生で無限に好きなプロテインが飲める会社がいいなぁ。

とも思っている始末に最近プロテインを飲みまくっています。

ちょっと今日はそろそろ12月も近いので、今年に注文して飲んでみたプロテインについてまとめておこうと思います。

たぶん今飲んでるプロテイン飲みきるペースじゃないし、今飲んでるので今年最後の注文かもってところなので。

うん、結構飲食物って好みが分かれますよね。

飲んでみないと味や食感がわからないですし、溶けやすさも比較しにくいですよね。

というわけで、個人的な感想になりますが今年のんだものを一覧化してみました。

その前に

プロテイン ≒ タンパク質 が摂取できてるかどうかについて去年まとめてましたので、もし事前にプロテインについて知りたい場合は以下を。

ma3tk.hateblo.jp

さて、上記の知識を持った上でお話を進めます。

評価軸

評価軸ですが、プロテインを選ぶ上で判断材料が色々あると思いますが僕は以下で評価してみます。

  • 内容量と価格のコスパ
  • 甘さやおいしさなどの味
  • 水への溶けやすさ
  • 発送やリピートしやすさ
  • 付属品や栄養などその他
  • 総合

色んなサイトで上3つは書いてあるところが多いですが、発送についてや付属品などはあんまり書かれてないので、そこも評価軸に。

2016年に飲んだプロテイン一覧と総合評価

6種類ほどのリスティングと総合評価。基本★5が最高です。※一部例外あり

  • ビーレジェンド 激うまチョコ風味 1kg ★★☆☆☆
  • ザバス ウェイトダウン ヨーグルト風味 1.05kg ★★☆☆☆
  • DNS プロエックス マンゴー風味 350ml ★★★☆☆
  • チャンピオン ピュアホエイスタック プロテイン チョコレート 2.27Kg ★★★★☆
  • バルクスポーツ ビッグホエイ 5kg ストロベリーショートケーキ ★★★★★
  • 『筋』B-STハイグレードプロテイン ★★★★★

順に紹介していきます。結構厳し目に書いてるので悪しからず。

ビーレジェンド 激うまチョコ風味 1kg

内容量と価格のコスパ ★★★★☆
甘さやおいしさなどの味 ★★☆☆☆
水への溶けやすさ ★★☆☆☆
発送やリピートしやすさ ★★★★☆
付属品や栄養などその他 ★☆☆☆☆
総合 ★★☆☆☆

安めで Amazon からすぐに手に入るのでいい。しかし、空けた時にパラパラ舞うくらいに粉っぽさがあり、水に溶かしても若干溶けにくいなぁという印象。

美味しさを謳っているが、過熱しているプロテイン市場からすると激うまチョコ風味の味感はもうビーレジェンドの味がデフォルトくらいになっている気がする。

Amazon から買うと軽量スプーンが入っていないので初期の選択肢に上げにくかった。でも、もらったら嬉しいな。

他の味はもしかしたら美味しいかもしれないので、いつも飲んでるプロテインに飽きたらチェックしてみると良いかも。

ザバス ウェイトダウン ヨーグルト風味【50食分】 1,050g

ザバス ウェイトダウン ヨーグルト風味【50食分】 1,050g

ザバス ウェイトダウン ヨーグルト風味【50食分】 1,050g

内容量と価格のコスパ ★★☆☆☆
甘さやおいしさなどの味 ★☆☆☆☆
水への溶けやすさ ★☆☆☆☆
発送やリピートしやすさ ★★★★☆
付属品や栄養などその他 ★★★☆☆
総合 ★★☆☆☆

The ソイプロテイン

ソイプロテインは溶けにくくて、美味しくなくて、粉っぽいというところがあります。

ただ、ソイプロテインの中では比較的飲みやすくて、牛乳や豆乳と割ると割といける商品ですね。

Amazon からも若干安く買えるけど、ホエイプロテインと比べるとやはり割高かな。

安定してゲットできるし、付属してるスプーンもちょうどいいのが魅力的。

減量用、比較的女性向きって感じです。ちなみに会社に一袋置いてます。

DNS プロエックス マンゴー風味 350ml×24本

DNS プロエックス マンゴー風味 350ml×24本

DNS プロエックス マンゴー風味 350ml×24本

内容量と価格のコスパ ★☆☆☆☆
甘さやおいしさなどの味 ★★★★★
水への溶けやすさ ★★★★★
発送やリピートしやすさ ★☆☆☆☆
付属品や栄養などその他 ★★★☆☆
総合 ★★★☆☆

うまい。これはうまい。

紹介している中では唯一のドリンクタイプ。

でも、ぶっちゃけ高いのが少し痛いところ。栄養素的にもタンパク質はあるけど、マルチビタミンとかってわけでもなく、糖質脂質もやや多めなのでつらみがあるかなーというところ。

とは言ってもそれを凌駕するほど圧倒的な事が、この溶かす行為のなさ、容器洗浄の不要性、携帯性、十分なタンパク質量!これは他のものにはない!

それを考えると、★3というところですね。

常用にはちょっと向かないかな。でも、遠征する時とか、プロテイン忘れて自動販売機に売ってるときとかだと手っ取り早くていい。

めちゃくちゃ美味いから最後の一滴まで飲み干したくなる一品ですね。

チャンピオン ピュアホエイスタック プロテイン チョコレート 2.27Kg

海外直送品 Pure Whey Plus Supplements, Chocolate Brownie 2.18kg

海外直送品 Pure Whey Plus Supplements, Chocolate Brownie 2.18kg

内容量と価格のコスパ ★★★★★
甘さやおいしさなどの味 ★★★★☆
水への溶けやすさ ★★★★★
発送やリピートしやすさ ★☆☆☆☆
付属品や栄養などその他 ★★★★☆
総合 ★★★★☆

あまあああああい!!おいしいい!!!!プロテインってこんなにうまいんだ!!!!!って思える素晴らしい一品。

甘党の僕には最高です。でもちょっと甘味料感強めで後味が海外っぽいなーってところです。

しかし、水にもすごい溶けるし、もし溶けなくて塊になってもチョコブラウニー食べてる感じだし、毎日おやつ食べてる感じです。

海外直送なので注文から到着まで大体10日〜14日くらいかかってしまうので、飲みきるかな、って時に注文するとプロテイン切れが起こります。

また、栄養も海外の製品なので少しBCAAの比率に偏りがあるっぽくて、嘆いてる方も見受けられます。

容器もプラスチックのボトルなので、ごみ捨ての時にかさばるのが少しネックですが、それを差し置いても理想に近い甘々プロテインですね。

コスパもいいので、チョコレート感欲しくなったらこれ飲んでみると世界がさらに変わると思います。

バルクスポーツ ビッグホエイ 5kg ストロベリーショートケーキ

バルクスポーツ ビッグホエイ 5kg ストロベリーショートケーキ

バルクスポーツ ビッグホエイ 5kg ストロベリーショートケーキ

内容量と価格のコスパ ★★★★★
甘さやおいしさなどの味 ★★★★★
水への溶けやすさ ★★★★★
発送やリピートしやすさ ★★★★★
付属品や栄養などその他 ★★★★☆
総合 ★★★★★

いや、僕はもうこの商品に恋をしました。

うめえええ!っとなる感覚よりも、ナチュラルにずっと飲めるって感じです。彼女にしたいというより、嫁にしたい。

もちろん好みはあると思いますが、1kg頼んですぐになくなったので、5kg も入ってるこれをリピートして絶賛ごくごくしてます。

価格もコスパもいいし、味も甘みの後にスッキリがあるし、水にも溶けるし、Amazonで頼んでもすぐ来るし。

非の打ち所がない最強の商品だなと感じています。

一番甘いと言われているストロベリーショートケーキですらスッキリしているのでリピートしやすい一品かなと思います。

これを年末まで飲み続けるかと思います。

『筋』B-STハイグレードプロテイン

内容量と価格のコスパ ★★☆☆☆
甘さやおいしさなどの味 ★★★★★★★★(限界突破)
水への溶けやすさ ★★★★★
発送やリピートしやすさ ★★★☆☆
付属品や栄養などその他 ★★★★★
総合 ★★★★★

「俺は今一体何といううまいものを飲んでるのか」と思うくらいに激うま、甘くて美味しいプロテインです。

この美味さを味わったら、他のプロテインが全部激マ○って言ってもいいくらいに美味いです。やばいです。他のプロテインさんごめんなさい。

このプロテイン、わざとクッキーのかけらみたいなものが入っています。ただ飲んでも美味しいのに、このチップも同時に食べれて満足感も相当に得られる。最高じゃないですか?

美味いだけじゃなくて、栄養もすごいリッチで、カルシウムHMBとか入っているので本当に筋肉に特化したプロテインなんだなというのがわかります。

値段が比較的高いところがウッってなりますが、サプリメント買ったらそれ以上出費するけども、プロテインの栄養価が高いので、価格に見合った商品かなと思います。

Amazonには売っていないので、他の商品と比べると注文から到着まで時間がかかるのと、送料が500円/1個しますが、3個まとめ買いすると送料無料になるので、最初からまとめ買い推奨です。

そろそろ飲みたいなぁ。

まとめ

というところで、今年飲んだ6つのプロテインを紹介しました。

色々厳し目に書いたのですが、もちろんどれも10年前の高校時代から考えると全て美味しいです。

特に『筋』B-STハイグレードプロテイン、バルクスポーツ ビッグホエイはどちらもおすすめなので、両方買って試してみると良いかなと思います。

というわけで、みなさんも Muscle Happy!

Redux + Rails4.2 のベースを作ってみた

前回に続き

一ヶ月前以下のような記事を書きました。

ma3tk.hateblo.jp

Redux の考え方を自分なりの言葉で落としてみたんですが、実際コードがないとわからんよね、ってところで React + Rails なコードをちょうど友人がサンプルで上げていたのでそこからフォークして Redux 組み込んでみました。

ベース

github.com

詳しくはこの Qiita の記事 に書いてあるので、大前提はこちらを参考に。

Redux を組み込んでみる

Redux を組み込んでみるサンプルとして、

  • 入力可能な input box (update_box) の設置
  • 入力した文字を送信するための Update Info Button の設置
  • 入力した文字を適当な場所に表示する

事を考えます。

やること

上記のような内容ですが、もっと具体的に書くと、

  • 入力可能な input box (update_box) の設置
    • input box を設置
    • ref 属性をつけて値を取得できるようにする
  • 入力した文字を送信するための Update Info Button の設置
    • button の設置
    • onClick した時の動作 ( Action の updateArticleInfo を呼び出すための関数、ref からの値取得) の記述
    • updateArticleInfo 内で Action 内の updateArticleInfo(update_text) を呼び出す
    • Action 内の updateArticleInfo(update_text) では Reducer へ渡すための object を記載
    • Reducer 内で Article の article_info を更新する
  • 入力した文字を適当な場所に表示する
    • Article という state の article_info を表示するよう記載する

こんなところでしょうか。

ディレクトリ構成と main.js

前回の記事にあるようなつくりにします。

$ tree frontend/src/javascripts
frontend/src/javascripts
├── actions
├── components
├── constants
├── main.js
├── reducers
├── store
└── utils

で、実際に変更した diff

github.com

上記のコミットになります。

詳しいことはコメントしてあるので Github 上を見てください。

ルーティングもしてみる

色々不要なのも実は上記のコミットに入っちゃってるのですが、React-Router を導入し、一部ちょこちょこ変更して、新しい component ファイルを入れて呼び出すとページ遷移も可能になります。

github.com

Link という機能が React-Router に入っていますので、それを使うと勝手に遷移してくれます。

また、Router にはいろんなものがあるのですが、 React-Router がデファクトスタンダードだという情報を見たのでこれにしてます。

Ajax でデータを取得する

もちろん、ネットワーク関係ない簡単なものであればそれはそれで楽なのですが、大体の場合 API を介してやり取りする必要が出てくるかと思います。

https://github.com/ma3tk/react-test/pull/2/files#diff-c1e153d5c761452afbe856e869f84099R12

上記のような形で fetch() し、 then() に取得時の処理を記載しておけば非同期通信が可能になります。

非同期通信後は 別な function で定義した Action を Dispatch してあげて state を更新するとうまくいくかと思います。

github.com

まとめ

コードベースではありますが、実際に React と Redux をコードに落としていけば良いのかをまとめてみました。

上記の 3つ (ベース部分、ルーティング、非同期通信) 周りの理解が進めばだいたい Redux の記述がしやすくなると思います。

ベースの部分の理解も少々大変なところはあると思いますが、大規模になればなるほどこの Redux の良さが効いてきますので、是非うまく使いこなしてみてください。