↑: [[blogRoot]] ←: [[20261017-2 G検定合格小話]] →: [[20261111 日が空いてしまったのでとりあえず頭に描いていたこと]] 今日の話は習慣についてです。 [[Cacapon]]なりの習慣についての考えを思うがままに書いていこうと思います。 ちなみに、一通り書いた後でここの文章書いてますけど、考察はしているものの改善策とかどうしていくかの部分はほとんど書いてません。そういうのが欲しい方はスッとこのページから離れましょう。 まず正直に言いますと私は開発に対するモチベーションのコントロールが あまりうまくいっていません。 公開できているものだと[[Zkey]] 他に今アイデアとして麻雀+落ちものパズルゲームとか Android用のオートクリッカーを作りたい[^1]とか ローカルで動作するAIを作ろうみたいな考えは持っています。 2年前に頓挫中のものもあるとヒトフデマジック[^2]もそうですね。 ただ、どれも着手ができていなかったり、なかなか手が進まなかったりします。 それよりかネット小説を読んだりyoutubeを見たりソシャゲをやったりする方が遥かに上手く行動できています。 はて、この違いはなんでしょうか?今回は開発とネット小説、この二つの行動が何が違うのか?ネット小説よりも夢中に開発に取り組むことはできるのか?その辺を考えようと思ってます。 ここで、キーワードになるのは**習慣**です。 習慣は[[Cacapon]]なりの定義でいうと「無意識、もしくはとても軽い決断コストで始められる継続的な活動」のことを言います。 私自身は決断にはエネルギーがあると思っていて、やりたくない難しいことなんかは始めるのが億劫だったりするのは皆さんも経験があるのではないかなと思ってます。こういう行動はその人にとって決断するためのエネルギーを多量に要するものと考え、そのような必要エネルギー量のことをここでは決断コストと呼んでいます。 なんか言葉の定義とかから始めると冗長になってしまいますね。 まあ読みにくかったら申し訳ないけど自分の思考の垂れ流しみたいなところなのでご容赦ください。 話を戻すと、決断コストが0ないし非常に軽いものだとその行動に取り組みやすく、尚且つ継続的に行えているものを私は習慣と呼ぶことにしました。 私の中だとネット小説を読む、ゲームで遊ぶは習慣と言えるでしょう。 自分の体験的に習慣をうまく使えば、開発など習慣になっていない行動が習慣になればもっと+な効果があるんじゃないかと思っています。 そこをどうするのか、何が違うのかを今回このブログで考えてみることにしました。 まず、ネット小説見るのと開発が何が違うのか考えてみます。 私の読んでいるネット小説はハーメルンで、このサイトにはしおりやお気に入り機能で、読みたいと思っている小説が更新されたら続きから読むことができる仕組みになっています。そしたら、「お、新しいのきてる!」と読み始めて幸せな気分になります。 読み終わった後は、「気になる作品」ないかなとランキングを探します。 ハーメルンは300位まで表示されるので、まだ見ぬ作品がそこに眠っているかもしれませんし、見つからないかもしれません。見つかったら喜びながらしおりやお気に入りに入れて、見つからなかったら若干残念に思いながらも見るのをやめる、というのがルーティンになっています。 ネット小説を読んでいるときの[[Cacapon]]はこんな感じです。 新しいのがきてたら喜び、文字を読んでワクワクドキドキする。 おそらく、私にとってはそれがご褒美になっているんでしょう。 本を読む→楽しい!=ご褒美 みたいな感じです。 一方開発はどうでしょうか? 先ほど[[zk/ref/ChatGPT|ChatGPT]]と壁打ちしてて気づいたのですが、私が開発に期待している報酬は次の二つみたいです。 1. 完成形そのものが欲しいという報酬 2. 創意工夫をしてものを作り上げる報酬 最初疑問に思ってた時点では「ネット小説など習慣化されている行動はフィードバックが早いからではないか?」って仮説を立てたんですけど、開発もちゃんと整備すればかなり速いフィードバックをもらうことができます。コンパイル通して、動いた!とかはわかりやすいフィードバックですよね。 ただ、残念ながら[[Cacapon]]は昔ほどコンパイル通った!プログラム動いた!で心が揺さぶられなくなっているようです。フィードバックが早いのは良いとして、その上で心を満たせるような報酬も用意しないと習慣化は難しそうです。 私の場合、先であげた2点の報酬のうち、完成形が欲しいは明らかにフィードバックが遅いので、それを当てにするのはダメそうです。なので、「どうしたら創意工夫できたと感じ、尚且つ継続的に感じられるか」を考えて、仕組み化する方が良さそうな気がします。 ただ、仕組み化についてはまだ答えは見えてません。なので別の視点で見つけた発見について話を進めようと思います。 私の体験の中で成功例は[[zk/core/42Tokyo|42Tokyo]]のある課題でActorモデルを使用したプロジェクトで開発してた時ですね。あれは[[zk/core/C言語|C言語]]でActorモデルを再現しようみたいな感じでチャレンジしたのですが、その時はうまく継続的に開発に取り組むことができました。 一方で麻雀+落ちものパズルも挑戦的な取り組みでElixirという[[zk/core/プログラミング言語|プログラミング言語]]を使ってバックエンドを超細かく分割したコンピュータとの通信で動くシステムを作ってみようと決めたのですが、全然進められなかったりしてます。 これの差はなんだろうと思ったんですけど、「未知の度合い」が関わっているんだと思います。 [[zk/core/42Tokyo|42Tokyo]]の方は段階的に[[zk/core/C言語|C言語]]の理解が進んでいる中で、事前に知っていたActorモデルをCで再現することで課題をクリアする、という形で、未知な部分は「どうやってCでActorモデルを再現できるか」という部分だけでした。なのでそこに集中できましたし、実現したいところと実際に行動しているところが一致していました。 一方で麻雀+落ちものパズルの方はそもそもElixirの概要程度で一切プログラミングしたことがありません。その上でバックエンドサーバーの構築やPhoenixというバックエンドのプラグイン?を使う必要があったり、さらにその上でゲームルールを定義するといった感じで、未知の上に未知を重ねている状態になっています。未知のバベルの塔ですね。 こう考えると、最初に話していた決断コストが高くなっている理由の一つは、未知の要素が多すぎることなのかもしれません。だから着手が億劫になっているんだと思います。 本来私がやるべきなのはElixirでHello worldなのでしょう。練習しないで大会に出るみたいな状態なのでモチベーションが低く、開発そのものが億劫に感じているんだと思います。 確か、前に心理学の本を読んだ時にそういう時って全体化して考えやすくなるので、より注意ですね。あるクエストがすごく難しくてクリアできないと、ゲームそのものやりたくなくなっちゃう的な感じです。 という感じで習慣について思っていることを色々書いてみました。 改善策とかは全然書いていないので、読んでももやっとするかもしれません。 まあこれからの話ですので、また思いついたら書いているかもしれません。 うお、今回3000文字も書いてる。結構書けるもんですね。 それではまたどこかでお会いしましょう。 [^1]: GooglePlayでインストールできるオートクリッカーを使用しているが、マクロ登録数が少ない、色判定が遅い、サブマクロの呼び出しが制限によってほぼ使えない機能のようになっていて、かなり不満があるため自分用のオートクリッカーを作りたかったんです。 [^2]: ボタンのタップではなく、図形を描くことでコマンドを選択できるMMORPG...の予定。現在入力システムを作ったところで頓挫しています。