kidoOooOoooOOom

ゲーム開発やってます

「小さな習慣」を読んでから習慣化が更に捗っている

テーマがシンプルなのでサクッと読める上に、とても勉強になった。

この本を読む前から自分は習慣化が好きで色々試してきたけど、この本を読んでから更に習慣化の行動が捗るようになった。

"小さすぎて失敗すらできないこと"

習慣化したい行動は、"小さすぎて失敗すらできないこと", "ばかばかしいほど小さいこと" にすること。

これがこの本の大きなテーマであり、これさえ守れば習慣化は簡単。

例えば腕立て伏せを習慣化したい場合は、「1日1回だけ腕立て伏せをする」という目標にする。

こうすれば、『1回だけだったら簡単だからやろうかな』という気持ちになる。

その結果、人間が嫌いな "最初の1アクション" を乗り越えられるという仕組み。

脳をハックする

人間の脳は、

  • ゆっくりとした変化
  • 同じ行動を繰り返す

が好きで、

  • 急な変化
  • 最初のアクション

が嫌い。

だからこそ、"小さいゆっくりとした変化"を続けていくことで、"同じ行動を繰り返す" 習性に持っていくことができ、習慣化できるようになる。

逆に、今まで何もしなかった人が急に「1日30回腕立て伏せをする」をいう大きい急な変化を目標にしても、脳が拒絶反応をおこして大体失敗してしまう。

人間は基本的に自己評価が高くなってしまうので、(  ダニング=クルーガー効果 - Wikipedia ) 目標を立てる瞬間は『自分ならできるはず』と過大評価しちゃうことが多く、実際やり始めたら辛くて挫折してしまいがち。

習慣化はつまり自動化

エンジニアは自動化して効率化するのが好きだったりするけど、習慣化もつまりは自動化の一種。

研究の結果、人間の行動の45%は習慣化された行動から成り立っているらしい。

だから、自分の人生のためにやっておきたいことは習慣化することで自動的に効率よくできるようになる!

ちなみに、習慣の中には"悪い習慣"も含まれているので、

  • ついつい健康に悪いお菓子を食べてしまう
  • 週末は外に出ずダラダラ寝て過ごす

的なことも自動で行われてしまうので注意。良い習慣を作って、悪い習慣を置き換えていくことが大切。

能力は習慣の積分、習慣は行動の積分

これは自分が大好きな本である "エンジニアリング組織論への招待" に書かれている1節。能力を上げたいのならば、習慣化をしよう。

おすすめのアプリ

習慣化には記録することがとっても重要で、記録先は手帳やらメモ帳やらグーグルカレンダーでもなんでも良いと思うけれど、自分は momentum というアプリがとても使いやすくて助かっている。

Momentum 習慣トラッキング

Momentum 習慣トラッキング

  • Mathias Maehlum
  • 仕事効率化
  • 無料

習慣化したい行動と頻度を登録しておき、毎日行動したらタップするだけ。

連続達成記録とかも可視化できるので、隙間を作らないように毎日頑張れる。

画面はこんな感じ。

1日ひとつだけ、強くなる

やはりプロゲーマーのウメハラダイゴは良いことを言っていた と再確認。これも習慣化の1つ。

kidooom.hatenadiary.jp

「世界一シンプルで科学的に証明された究極の食事」を読んでフルーツジュースを飲まなくなった

最近は自分自身の活動効率を上げるためのことを勉強していて、基本は「運動」「睡眠」「食事」の3本柱を中心に改善中。

その中でも「食事」に関しては本や情報源によって言ってることがバラバラで、同じ食品でも「健康にいい」「健康に悪い」が正反対の主張が書かれていたりする。

「その食品が合うかどうかはアレルギー体質など個人差がある」というのは事実っぽいので、とりあえず自分の食事の方向性としては、

  • 統計的に健康に良いことがわかっている食品は積極的に摂取する
  • 統計的に健康に悪いことがわかっている食品はなるべく摂取しない
  • 誰かの個人的な主張や根拠の無いデータは気にしない

というのをしばらく続けてみようと思う。

そこで今回ちゃんと読んだのは下の本。去年買ったときにサラっと読んだけれど、改めて読み直したら忘れてる部分が多かったのでちゃんと記録しておく。

果物は糖尿病を予防するが、フルーツジュースは糖尿病のリスクを上げる

お酒を飲まない自分は、間違った健康意識でフルーツジュースや野菜ジュースをガンガン飲んでたりしていたが、それは逆に糖尿病のリスクを上げていたことを知り結構なショックを受けた。

ジュースへの加工の段階で食物繊維などが消えているので、果糖だけを抽出して摂取することになってしまい血糖値が上がってしまう。

野菜や果物は、その食品まるごと摂取しないと逆に良くないかもよ と改めて気づけたのは良かった。

地中海式の食事が健康に良い傾向にある

なんとなく知ってはいたものの、なかなか実践できていなかった地中海式食事。

改めてその研究結果などを学んでモチベーションが湧いたので、最近はこれをかなり意識している。

オリーブオイル、魚、野菜と果実をかなり食べるようにして、砂糖を含むお菓子や悪い油を使った料理はなるべく摂取していない。

以下は自分がとても参考にしているサイトの情報。

地中海式ダイエットで脳の働きがバージョンアップする | パレオな男

「地中海式ダイエット」の効果について知っておきたい3つのこと | パレオな男

「地中海式ダイエット」の有名論文が間違いだった!地中海式ダイエットって間違いなの?問題 | パレオな男

食品に含まれる「成分」だけを重要視しない

例えば、緑黄色野菜に含まれるβカロテンは、これだけを抽出して摂取した研究データによるとむしろ健康に悪いという結果が出ている。

しかし、βカロテンを含む野菜をまるごと摂取した場合はむしろ健康に良い結果になる。つまり、食品に含まれる「成分」単体を見て良し悪しを見るより、その「食品」全体を見ることが大切。

簡易まとめ

グループ1: 健康に良いことが複数の信頼できる研究で報告されているもの

  • 野菜と果実
  • 茶色い炭水化物
  • オリーブオイル
  • ナッツ類

グループ2: 少数の研究で健康に良い可能性が示唆されているもの

  • ダークチョコレート
  • コーヒー
  • 納豆
  • ヨーグルト
  • 豆乳
  • お茶

グループ3: 特にメリット・デメリットが報告されていないもの

  • その他の多くの食品

グループ4: 少数の研究で健康に悪い可能性が示唆されているもの

  • マヨネーズ、マーガリ

グループ5: 健康に悪いことが複数の信頼できる研究で報告されているもの

  • 赤い肉と加工肉
  • 白い炭水化物
  • バターなどの飽和脂肪酸

ただこのルールを厳密に守り過ぎると、それはそれで摂取する食品の偏りができて体に悪そうなので、たまには許して多様性を作るのも大事かなぁと思う。

「脳を鍛えるには運動しかない! 最新科学でわかった脳細胞の増やし方」を読んでから運動をちゃんとやり始めた

今まで、運動が体に良いことは分かっていつつも、結局は習慣化できなかった。 でもこの本を読んでから、意識が変わって運動を習慣化できるようになった。

自分はライフハック系とか知的生産術系の本で効率をあげるのが好きなので、この本のこの文がかなり脳に刺さった。

運動で気分が爽快になるのは、心臓から血液がさかんに送り出され、脳がベストな状態になるからだ。運動が脳にもたらすそうような効果は体への効果よりはるかに重要で、魅力的だ。筋力や心肺機能を高めることは、むしろ運動の副次的効果にすぎない。

つまり、運動は健康に良いとか病気になりにくいなどの効果もあるが、脳を鍛えて学習効率を良くするという効果が大きいということが研究で分かってきている。

ライフハック系のテクニックで、記憶に残りやすい方法とかポモドーロなどの集中ハックなどあるが、そもそも記憶の基盤となる脳細胞を鍛えないとパフォーマンスが発揮できない。

脳をストレージと考えると、ストレージの容量を大きくしたり、書き込み読み込み速度を早めるのが"運動"という感じ。

この本では、そういった運動が脳にもたらすメリットを研究結果と一緒に説明してくれているので、運動への意識が超高まる。

他にも、様々な病気や老化を防ぐ効果についてや、どんな運動をすればいいかについて書かれている。

死因の多くを占める脳卒中、糖尿病、心疾患、骨粗鬆症は、運動によって防止できるし、それらが脳の働きもよくすることにつながる。運動が体だけでなく脳の老化も防ぐことをみんな知っていれば、もっと真剣に運動について考えるようになるだろう

とりあえず最近は

  • 毎日1万歩近く歩く
  • 帰る前に公園で10分ほどの縄跳び
  • ポモドーロの休憩時間などで会社の階段10階分上がる

あたりを習慣化できている。

統計によると、運動を習慣化しようとした人の半分は半年から1年以内にやめてしまうらしいので、そうならないようにそれだけ気をつけたい。 逆にいえば、1年以上続けられることができたら貴重な資質になって自分の強みの1つになるから良いチャンスだなぁと思う。

BIG5の性格診断をやってみた

現在の心理学で最も信頼性の高い性格テストが、BIG5と呼ばれるものらしい。

簡単に書くと下記5つの要素について点数をつけるテスト。

  • 外向性=社交的で活動的
  • 情緒安定性=不安や緊張の感じやすさ
  • 誠実性=まじめさ
  • 協調性=他人にやさしいかどうか
  • 開放性=知的好奇心の強さ

詳細は下記サイトや、自分で診断を受けてみた結果を読むとよく分かる。

yuchrszk.blogspot.com

こちらのサイトで無料で診断できるので、自分もやってみた。

www.sinritest.com

診断結果は以下の通り。(各点数は30点満点)

f:id:gidooom:20190321123300p:plain
BIG5_result

自分は結構メンタル安定していると思うので、情緒安定性が高いのは納得。

あと、コツコツ勉強するのが好きなのが誠実性の高さ、新しい情報や知識を試すのが好きなのが開放性の高さにも繋がっているなと感じた。

逆に、外向性や協調性がそこそこの点数なのも納得・・・。まあ思ってたより協調性はあったけど。

自分の強みを改めて理解できたので、今後も安定して勉強しながらアウトプットしていこうと思う。

「マンガでよく分かる 怒らない子育て」を読んだ

6歳と3歳の子育て中ということもあり、育児もちゃんと勉強していきたい分野。

今回読んだこの本は、マンガのページがそこそこ用意されていてとても読みやすく、勉強になることもたくさんあった。

まず参考になったのは、自分の子供が例えばジュースをこぼしてしまった時は「何やってんの!」と怒りがちだけど、友人の子供がジュースをこぼした時は「大丈夫?」と心配して自分の子供の時のように怒らないんじゃないですか?という話。

これは確かにそうだなと思っていて、同じジュースをこぼされるという出来事でも「自分の子供だから怒ってもいい」という認識が自分の中で気づかないうちに存在しており、怒ってもいいんだから怒るという行為に走ってしまっている。

怒りは、怒った側はストレスを発散しているように見えて実は毒を撒き散らしているようなもので、周りに悪影響を及ぼして最終的には自分にも悪影響を及ぼしてしまう。

イライラや怒りを感じてしまった時は、「イライラしている自分」に気付いて、一度時間を置いたり、なんでイライラしてしまっているかを客観的に見つめ直すことで実はなんとかなるケースの方が多い。

イライラしてしまうのは、コントロールできないものを無理にコントロールしようとしてしまうから思い通りにいかずに、その結果イライラして怒ってしまう。 自分の子供とはいえ他人なので考えていることは把握できないし、ましてや子供なんて何しでかすか分からないものとして対策をとった方がいい。

このあたりの話は、僕が大好きな「エンジニアリング組織論への招待」にも同じような内容がたくさん書かれていて、育児とチームビルディングってのはとても近いんだなぁと感じた。

ただ怒らずに甘やかせばいいって訳ではなくて、「叱る」という行為も適切に必要だし、叱る時には「ポジティブに叱る」という話もとても参考になるなと思った。

SlackBotでクイズ機能を作ってチームの学習を促す

SlackBotのランダム機能を使うと、何かの担当者(レビュー担当とか)をランダム抽選する時とかslack上でサクッとできるのでとても便利。

qiita.com

最近はこのランダム機能を使って、「今作っているプロダクトの仕様に関する質問」や、「Unityに関するクイズ」を作成している。 例えば"unity_quiz"ってのを発言すると、こんな感じで問題が出てくる。

f:id:gidooom:20190316121112p:plain

答えはスレッド内だけの返信に書いておけば、わかった人や答えを見たい人だけがスレッドを展開して確認する形になるのでクイズっぽくて良い。

脳科学の研究では、記憶というのは"思い出す"時に強化されるということが分かっているらしい。

なので、チームのみんなや自分が理解しておいて欲しいことをクイズにすることで、チームの学習が促されると思う。

ちなみに今はひたすら自分が問題を作っていてかなり大変。だけど、「問題を作ること」も相当負荷の高い勉強になって良いな感じている。

複数フラグ判定を行うenum実装とそれのUnityTestRunnerコード

ゲームでよくある武器の属性をC#enumで実装する時、こんな感じで書ける。

using System;

[Flags]
public enum WeaponElement
{
    Fire = 1,
    Water = 1 << 1,
    Earth = 1 << 2,
    Wind = 1 << 3
}

public static class WeaponElementExtension
{
    public static bool IsSatisfy(this WeaponElement e, int checkBit)
    {
        return ((int) e & checkBit) != 0;
    }
}

bit flag で宣言してるのは、属性判定を行う時に便利なケースがあるから。 例えば、何かしらのスキルや装備の効果で、「炎のみ」「炎と水」「全ての属性に対して〜」などの判定バリエーションがある時、一つのプロパティでそれらを判定できる。

上のenum実装がちゃんと動作するかどうかは、Unity Test Runner を書いておけば確認できるし、今後も自動テストとして運用できるようになる。

UnityTestRunner に作り方については、下記サイトが参考になった。

qiita.com

今回作成したTestコードは下記のとおり。属性チェック用のメソッドがちゃんと期待通りの動きをするかテストする。

using NUnit.Framework;

public class WeaponElementTest
{
    [Test]
    public void IsSatisfyTest()
    {
        int checkFire = 1;
        Assert.IsTrue(WeaponElement.Fire.IsSatisfy(checkFire));

        int checkWater = 1 << 1;
        Assert.IsTrue(WeaponElement.Water.IsSatisfy(checkWater));

        int checkEarth = 1 << 2;
        Assert.IsTrue(WeaponElement.Earth.IsSatisfy(checkEarth));

        int checkWind = 1 << 3;
        Assert.IsTrue(WeaponElement.Wind.IsSatisfy(checkWind));


        int checkFireAndEarth = checkFire + checkEarth;
        Assert.IsTrue(WeaponElement.Fire.IsSatisfy(checkFireAndEarth));
        Assert.IsFalse(WeaponElement.Water.IsSatisfy(checkFireAndEarth));
        Assert.IsTrue(WeaponElement.Earth.IsSatisfy(checkFireAndEarth));
        Assert.IsFalse(WeaponElement.Wind.IsSatisfy(checkFireAndEarth));


        int checkAllElement = checkFire + checkWater + checkEarth + checkWind;
        Assert.IsTrue(WeaponElement.Fire.IsSatisfy(checkAllElement));
        Assert.IsTrue(WeaponElement.Water.IsSatisfy(checkAllElement));
        Assert.IsTrue(WeaponElement.Earth.IsSatisfy(checkAllElement));
        Assert.IsTrue(WeaponElement.Wind.IsSatisfy(checkAllElement));
    }
}

作成したTestを実行するには、下記Windowを開いて

f:id:gidooom:20190309084022p:plain
UnityTestRunnerのWindow開く

今回はEditModeのTestとして作成したので、EditModeのタブで Play all を実行すればテスト実行できる。

f:id:gidooom:20190309084419p:plain

Unityのコードを普通に再生してテストとかすると非常に時間がかかるので、このテスト機能はとても嬉しい。