為さねば成らぬ

retia.verno@gmail.com

悪い習慣をやめる

年末年始で自分の習慣づくりに取り組んでいたが、良い習慣を続けるより悪い習慣をなくす方がずっと難しい気がする。

以前知り合いになにかやっている習慣はある?と聞いたことがあった。 悪い習慣の答えが多かったので、そちらを直す方が需要がありそうだと感じた。

悪い習慣をやめるためには、良い習慣を続けるためのコツの逆をやればよい。

つまり

  • 悪い習慣のきっかけを環境から取り除く
  • 悪い習慣を避けることで得られる利益を強調する
  • 悪い習慣にたどり着くまでのステップを増やす
  • 誰かに行動を見張ってもらう

あたり。

難しいのは、悪い習慣はふいにやってしまうものなので、いくら意識していてもそのタイミングで忘れているor意志が弱いと簡単にやってしまう点。

個人的に具体的に無くしたいのがネットサーフィン。対象にするサイトは結構色々あるが、まぁネットには誘惑が多い。

twitterはパスワードをわからなくする(必要あれば再発行)することでいい感じに離れることができたが、他は難しい。

難しい要因として、

  • twitterのようにログインが必要な場合はパスワードをわからなくすればよいが、ログインが必要ない場合はurl叩けば見えてしまうのでダメ。
  • さらにurl叩けば見える、だと色々なブラウザから開けてしまう。例えばPCとスマホ、それぞれのユーザーごと。chrome拡張機能でサイトブロッカーとかもあるけどブラウザのユーザーを使い分けてるとすべてにブロッカー入れないと行けないのでダルい。

基本的に無くしたいが、時々は見てもよいと思うのだが、そうするとブロックの設定を入れたり消したりしなければいけず、更に難しい。

準備をするという習慣

verno3632.hatenablog.com

とも関連して。

習慣にするぞ!といっても結構いとも簡単に忘れがちである。 例えば朝起きたら運動する、と決めていても、朝は頭が働かない・バタバタして忘れてしまったりする。

また悪い習慣を断つことを考えるときも、よく引っかかりがちである。 悪い習慣の経ち方には、それをしそうになったときに別の行動をとる、という習慣を立てるのがよいが、しそうになるときは大概突発的なので、反射的に悪い習慣をやってしまうことが多い。

これらに対して、準備するという習慣をいれておく、のがよいなーと思っている。

朝起きたら運動するという習慣のために、夜寝る前に運動着を枕元に置く、という習慣を作っておく。 あるいは仕事初めにブログを書くという習慣のために、仕事終わりにブログのエディタを開いておく、という習慣を作っておく。

タバコを吸いたくなったらガムを噛むという習慣のために、家を出る時にポケットにガムを入れるという習慣を作っておく。

もちろん準備の習慣も忘れると思うが、準備は割といつでもできるので自分の好きに設定しやすいし、習慣の終わりに次の習慣の準備をするようにしておくのでも自動でやることになりやすい。

習慣の手順書作成・自動化

習慣を明確にする

習慣にするとき、やることを明確にするのは非常に大事である。

研究者が「実行意図」と呼ぶもので、いつ、どこで行うか、予め立てておく計画である。

...

多くの研究により、実行意図は目標達成に効果的だとわかっている。

ジェームズ・クリアー式福利で伸びる1つの習慣 第5章

いつどこで何をやるのかを明確に決める。

タスクの分割

ここで習慣から離れて仕事術てきなところになるが、大きいタスクは細かく分割せよ、というものがある。 大きなタスクのままだと何をやればわからず 不安 が発生するので、細かく分割し、1つずつこなしていけばよいというものである。

更にいうと、定期的に実行してルーチン化するようなタスクは、誰でも出来るように手順書を書く・自動化するのが効率化につながる。

習慣の手順書・自動化

これを習慣にも繋げられないだろうか。つまり習慣の際の手順書を作ってみる。

例えば 毎日腕立てを50回する のであれば

  • 運動着に着替える
  • 水をコップに入れる
  • 腕立てを1回やる
  • 腕立てを5回やる
  • 腕立てを10回やる
  • 腕立てを50回やる

これにより、やることがより明確になり、目の前のステップをこなすことで自然と大きな習慣を達成できる。

またこの手順が自動で実行できるように工夫する。ここでいう自動化とは、機械やコンピュータが勝手にやるようにする、というよりも 自分の体が自動的に動くようにする ということである。

先程の例だと、運動着や水の準備がすぐできるよう、前日の段階でこれらを目につく場所に置いておく等である。 置いてある運動着やコップを見た瞬間、自分自身のスイッチが勝手に入り、習慣を自動的に行う。

習慣のハードルを下げる

手順書を書いたことで、習慣の一番最初に行うことが見えてくる。 これを最低のハードルに設定し、それを1日1回行えば習慣が達成できたことにする。 運動着に着替えるだけならばどんなに時間がなくても毎日続けられるし、また手順書を作っているので、次の手順まではやろう、とモチベーションも上がりやすい。

ハードルを下げる - 為さねば成らぬ

このあたりがうまく出来るようなアプリ作りたいな〜と考えている。

ハードルを下げる

ハードルを下げる

激短時間でできることを習慣とする。5分でできることとか1分でできること、とかも耳にするが、個人的には 10秒 で良いと思う。

その日の習慣を達成するまでなにか続けなければいけないではなく、本当にやれば終わるもの。

毎日したいことを頭に浮かべて、実際にやることを洗い出してみる。そして一番最初にやることを習慣としてやることにする。

  • 運動をする、という習慣であれば運動着に着替える
  • 勉強する、であればペンを持つ
  • ブログを書く、のであればエディタを開く
  • 部屋の片付け、であれば物を1つ移動する・捨てる

どれくらい効果あるの?

根底にあるのはとにかく やる のを 続ける ということ。

やる気・モチベーションは実際に行動していると自然に出てくるものなので、やる気が出てきた時にしか出来ないようなものは習慣にすべきではない。

やる気が出てこなくても出来るものを習慣にして、それにより弾みがついてやる気が出て、最終的に多くのことができるようになる。

やる のを 続ける ためにも、ハードルを激低に設定するべし。

習慣化に必要なこと: 頭を使わなくする

しばらく習慣化というものについて色々考えてきて、 頭を使わない ことが重要ではないかと思っている。 つまり毎日やることを予め決めておき、決まったタイミングでただやるだけにしておく。

頭を使ったり考えたりすることはコストが高い。まず 考えなければ というだけで億劫になりその行動を無意識に避けようとすることがある。これが めんどくさ とやらなくなってしまう原因だ。 また一日で人間ができる判断の量には制限があり、そのリソースを使い切ってしまうと休んで回復するまで判断ができなくなるという話がある。いざ習慣を行う際に判断が必要となると、そのときのHP次第では習慣達成まで至らなくなってしまう。

また頭を使う必要があるということは習慣達成までの不確定要素が多く、見積もりが行いにくいということである。達成完了までの時間が見えないので 時間なさそう・・・今はやめとこ となってしまいがちだ。 漫然と 〇〇について考える ブログを1本書く のような習慣が続かないのはこれも原因であると思う。

具体的に修正すべき習慣の例を考えてみる。

運動する

やることが曖昧すぎる例。毎日何をどのくらいやるかを考える必要がある。そこであらかじめなにをやるか決めておく。

運動する -> 10分歩く

10分歩くにしても実際に歩く際にはどこを回るか考える必要が出てくる。この際あらかじめ決めておかないと、本当に家の近くを歩いて5分程度で戻ってきてしまう可能性がある。 徒歩で往復10分はかかる公園を目標にして、 どこまで行ってくるかを決定する。

10分歩く -> 公園まで行って返ってくる

やろうと思っても、タイミングによってはできないことがある。例えば仕事まであと20分のタイミングでは、やる時間があるといっても ちょっと忙しいしいいか となってしまう。 余裕がある時間に行えるように、いつやるかを決めておく。

公園まで行って返ってくる -> 朝起きたら公園まで行って返ってくる

イレギュラーの場合を考慮する。例えば雨が降っていたら散歩に行きたくなるだろう。 プランBを用意しておき、どんな状況でも習慣を行えるようにする。

朝起きたら公園まで行って返ってくる -> 朝起きたら公園まで行って返ってくる 。雨が降っていたら家でFitBoxingを10分やる。

ここまでやれたら習慣にできそうである。

例えば朝起きた直後は頭が働いておらず、 この習慣をやる という判断さえできないこともある。 前日の夜の段階でランニングシューズと運動着を起きて一番に目につく場所に置いておくのもよいだろう。 夜寝る前にリビングにシューズと運動着を置く というのを習慣にしておくのもよい。

Jetpack Composeを触る時は

結論

リリースノート開いておけ!

解説

Jetpack Composeは開発中のライブラリであり、新たな機能ができては名前を変えていきます。

あなたが見たJetpack Composeのドキュメントは書かれたときそのバージョンでは正しいものですが、今やろうとしてあなたが入れたバージョンでは正しくない恐れがあります。これは公式ドキュメントでも同様です。

ドキュメント通りに書いてもビルド通らないな?という場合にはまずcomposeのリリースノートを開く癖をつけるのがよいです。 ページ内検索をすればだいたい removed とか deleted とか書いてあります。(表記揃えてないんですね)

以下開いておくリリースノート貼っておきます。このとき言語を英語にしましょう。日本語だと翻訳されておらず最新ライブラリの情報が載っていない場合が多いです。

Compose Foundation  |  Android Developers

Compose Material  |  Android Developers

Compose UI  |  Android Developers

Compose Animation  |  Android Developers

useIRとは一体何か

課題

Jetpack Composeを利用する際に、kotlinOptionsに useIR を設定する必要がある。

    kotlinOptions {
        useIR = true
    }

これは何を表すのか。

調査

https://kotlinlang.org/docs/whatsnew14.html#unified-backends-and-extensibility

intermediate representation、つまり中間表現のこと。

Kotlinには最近では Kotlin/JVM Kotlin/JS Kotlin/Native があって、歴史的に前2つは別々に開発されてきたのでコードの多くは別になっていた。 対して Kotlin/Native はKotlinの中間表現でビルドされたインフラものに基づいており、前者2つもこのIRにmigrateしていく\。 3つを同じIRのバックエンドで統一できれば多くの機能追加や最適化、バグフィクスが同時に出来るようになる。

Jetpack ComposeはコンパイラプラグインにこのIRを既に使っている。