Re:ゼロから始める文系プログラマ

未経験がプログラミングを通して人生を変える

Node.jsとは?初心者向けにできることや長所・短所を徹底解説

f:id:ShotaNukumizu_1000:20210728070041p:plain

おはようございます。Shotaです。

Node.jsとは、サーバサイドで動くJavaScriptの実行環境の一つです。

その中で、

❓「Node.jsって何?」

❓「JavaScriptとの違いは?」

❓「Node.jsでどのようなことができるんだろう?」

このように疑問を感じていませんか?

そこで、今回の記事ではNode.jsについて主に次のことについて説明します。

  • Node.jsの概要
  • Node.jsでできること
  • Node.jsのメリットやデメリット


それでは早速、本題に入りましょう。



Node.jsとは?

f:id:ShotaNukumizu_1000:20210914102339p:plain


JavaScriptを簡単に解説

f:id:ShotaNukumizu_1000:20210612090942p:plain

JavaScriptとは、ブラウザ上で動くために開発されたプログラミング言語です。ブラウザ上で、ページに動きをつけるのがメインです。

例えば、

  • クリックすると写真が大きくなる
  • メイン画像が横にスライドする
  • 画面の色が定期的に変化する

このような動きは全てJavaScriptでできています。


Node.jsとは?

Node.jsとは、簡単に言えばサーバでも動かせるJavaScriptのことを指します。

JavaScriptといえば、基本的にはWebブラウザ上で動かす言語と認識している人が多いかもしれません。

しかし、Node.jsを活用することでPHPJavaなどと同じようにサーバサイドで動かせます。

MicrosoftYahoo!のような大企業がNode.jsを活用しています。


どうしてサーバサイドでJavaScript

なぜNode.jsが注目を浴びているのでしょうか?

理由は単純です。フロントエンドもサーバサイドも同じ言語で書けたら楽だからです。


Node.jsでできること

f:id:ShotaNukumizu_1000:20210729070911p:plain

これから、Node.jsでできる5つのことを詳細に見ていきます。


スマホアプリの開発

Node.jsを活用すれば、スマホアプリを開発できます。

スマホアプリといえば、「Kotlin」や「Swift」を活用するimageを持っている人は多いかもしれません。

ところが、最近ではハイブリッド型アプリ開発も人気を集めており、「HTML」や「JavaScript」などのWeb技術だけでのアプリ開発も可能になりました。

Node.jsには様々なライブラリが提供されているので、比較的簡単に開発できます。


Webアプリの開発

Node.jsにはWebアプリ開発に使えるフレームワークがたくさんあります。フレームワークとは、プログラミングに必要な機能をあらかじめ用意した便利な機能のようなものです。

フレームワークを活用すれば、ゼロからプログラムを作る必要がありません。それゆえに、初心者でもNode.jsで簡単なチャットアプリを開発できるのです。


Webサーバとして利用

Node.jsを利用すれば、Webサーバの構築もできます。

例えば、チャットなどのネットワーク・サーバの構築はNode.jsの得意分野です。

サーバ側で動作するNode.jsであれば、Webサーバとして機能できます。


Node.jsのメリット・デメリット


メリット

f:id:ShotaNukumizu_1000:20210729144505p:plain

Node.jsの最大の魅力は高速性能です。Node.jsを活用すれば、「C10K問題」を解決できます。

C10K問題とは、サーバへの接続台数が1万台以上になると速度が遅くなるトラブルのことです。Node.jsは多くの接続があってもリアルタイムでレスポンスを返せます。

そのため、TwitterInstagramなどの複数の人が同時に接続を行うSNS開発にも適しているのが特徴です。


デメリット

f:id:ShotaNukumizu_1000:20210906130640p:plain

Node.jsは万能ではなく、当然デメリットもあります。

Node.jsのデメリットはフロントエンドJavaScriptとの互換性がないことです。とは言っても、同じJavaScriptなので言語そのものの記述方法や知識はNode.jsにも活かせます。


まとめ

f:id:ShotaNukumizu_1000:20210723135818p:plain

今日の記事では初心者向けに、Node.jsの概要やできることについて徹底的に解説しました。

Node.jsを習得できれば様々な開発ができ、仕事の幅も広がります。すでにJavaScriptのスキルがある人なら習得しやすいメリットもあります。

今日の記事を参考に、Node.jsのスキルを目指してみてはいかがでしょうか!

今日の記事はこれで終了です。

【参考サイト】

eng-entrance.com

web-camp.io

IDE(統合開発環境)とは?概要、使用のメリット、使い方を解説

f:id:ShotaNukumizu_1000:20210717144545p:plain

おはようございます。Shotaです。

❓「IDE(統合開発環境)って何?」

❓「IDE(統合開発環境)のメリットや使い方を知りたい」

このような悩みを抱えていませんか?

IDEはプログラミングでよく聞きますが、具体的にどのようなものかわかりませんよね。

そこで今回はIDEについて詳細に解説していきます。



IDEとは?

f:id:ShotaNukumizu_1000:20210722172609p:plain

プログラミングを行う上で、開発環境を形成するのは必要です。IDEは開発環境の一種で、プログラミングを行う上では非常に便利です。

IDE(Integrated Development Environment)の略称で、プログラミングを快適に行えるソフトのことです。

これまでプログラミングには、下記のような独立したソフトを別で準備し、操作する必要があり面倒でした。

  • エディタ――コードを書くためのソフト
  • コンパイラ――言葉を機会が理解できる言葉に変換するソフト
  • リンカ――プログラムの断片を連結、編集して実行できるファイルに変換するソフト
  • デバッガ――プログラムのバグを見つけるため


IDEはこれらのソフトをまとめて使えるようにして、一つの開発環境で扱えるようにしたものです。これのおかげで、無駄な手間を省くことができスムーズにプログラミングを行えるようになりました。

IDEを選ぶポイント

IDEにはいくつか種類があり、選ぶポイントがあります。

  • 使用する言語に対応しているか
  • MacWindowsなど自分が使っているパソコンやOSに対応しているか
  • 使いたい機能や必要な条件があるか
  • 有料か無料か


以上のポイントと自分の場合と照合させ、必要なIDEを選択しましょう。


IDEを使う4つのメリット

f:id:ShotaNukumizu_1000:20210729070911p:plain


すぐに準備できる

IDEはすぐに準備できます。非常に簡単で時間もかかりません。

導入したいIDEをインストールさえすればすぐにプログラミングを行うことができます。

エディタやコンパイラなど独立したソフトをそれぞれダウンロードする必要がないので非常に便利です。


チームで開発できる

IDEはチームでの開発を円滑にしてくれます。ソースコードや情報を共有できたり、それらの管理や運営、修正などをチーム全体で行うことができます。

チームでアプリケーションを開発するときは十数人でプロジェクトを進行することが多いです。このような環境でスムーズに情報を共有するためには、IDE導入が欠かせません。


入力補完が充実している

IDEは様々な入力補完をしてくれます。

入力補完とは、コードを入力する際に文字を途中まで打つと文字を予測して自動表示してくれる機能です。プログラミングのエラーで最も多いのがタイプミスによるエラーです。

入力補完機能のおかげでタイプミスが減ってコーディングスピードが上昇し、開発効率も上がります。


プログラムのエラーを事前にチェックしてくれる

IDEにはプログラムのエラーチェック機能がついています。

プログラムのエラーチェック機能とは、コードの間違いをエラーメッセージや赤線で教えてくれる機能のことです。

エラーがあるとプログラムが正常に作動しなくなり、間違いを見つけ出して修正するのはとても大変です。

プログラムのエラーをチェックする機能は、プログラマーにとっては必要不可欠な機能です。


IDEフレームワークの違い

f:id:ShotaNukumizu_1000:20210614080252p:plain

IDEフレームワークは別物です。


フレームワークとは「予め用意されている”骨組み”」

フレームワークとはWebアプリやシステムを開発するのに、必要な機能があらかじめ用意されている骨組みのことです。

Webアプリやシステムを最初から構築するとなると、膨大な時間と知識が必要になります。

ところが、初心者でもフレームワークを使えば比較的短時間でWebアプリ雨やシステムを開発できます。

フレームワークはネット上にたくさん存在するので、構築したいアプリのフレームワークを選べばスムーズに開発できます。


IDEは「予め用意されている”開発環境”」

IDEフレームワークは全くの別物です。

IDEはエディタやコンパイラなど開発に必要なソフトを集めて提供するのに対し、フレームワークは開発を効率化するためのプログラムの骨組みになります。

例えば、IDEは開発したいプログラムを最初からコーディングしますが、フレームワークを利用するとその中に書き込みたいコードの雛形が自動で挿入されます。

IDEフレームワークの両者があれば、スムーズに開発を進められます。


おすすめのIDE4つ

f:id:ShotaNukumizu_1000:20210728070041p:plain

IDEには数多くの種類があります。

目的や開発したいシステムで、選ぶIDEの種類は大きく変わります。


IntelliJ IDEA

f:id:ShotaNukumizu_1000:20210914095537p:plain

IntelliJ IDEAは最新言語が使えるIDEです。

無料版と有料版療法ともありますが、有料版のほうがバグ対応が早く、プラグインを追加しなくても十分な機能があります。


Visual Studio

f:id:ShotaNukumizu_1000:20210914095604p:plain

Visual Studioとは、Microsoft社が開発したIDEです。

C#VBなどの言語の他に、PythonJavaScriptなども利用可能です。


Android Studio

f:id:ShotaNukumizu_1000:20210914095627p:plain

Android StudioAndroidアプリ開発に特化したIDEです。

Googleが開発したFlutterというフレームワークを使えるので、Androidアプリ開発をスムーズにできます。


AWS Cloud9

f:id:ShotaNukumizu_1000:20210914095700p:plain

AWS Cloud9はクラウドに構築されているIDEです。

クラウド上にあるのでダウンロードする必要がないので、Webブラウザさえあればどこでも利用できます。

基本的に無料ですが、利用開始から1年が経過したり高スペック機能を追加したりすると有料になります。

AWS Cloud9は難しいダウンロードや環境構築をする必要がないので、プログラミングを勉強した初心者に非常におすすめのIDEです。


まとめ

f:id:ShotaNukumizu_1000:20210903081245p:plain

今回の記事では、IDEについて徹底解説しました。

IDEを導入すると、実際にプログラミングができるだけではなくコーディング全般をサポートしてくれます。

IDEを使いこなせるようになると、様々なプログラムを開発できたりスキルを得て優秀なプログラマーになれたりできます。

今日の記事はこれで終了です。

【参考サイト】

web-camp.io

【Kotlin入門】④条件分岐・可変長引数

f:id:ShotaNukumizu_1000:20210627142712p:plain

おはようございます。Shotaです。

今日の記事では、Kotlin文法における条件分岐について解説します。



制御構文


if

Kotlinにおけるifelseは次のように書きます。

▼プログラム①

fun main() {
    val x = 10
    if (x > 5) {
        print("true")
    } else {
        print("false")
    }
}

▼出力結果

true

プログラム①で、

val x = 10

この一文を、

val x = 4

これに置き換えてみて再度実行すると、次のように出力されます。

false


when

▼プログラム②

fun main() {
    val x = 1
    when (x) {
        1 -> print("x == 1")
        2 -> print("x == 2")
        else -> {
            print("x is neither 1 nor 2")
        }
    }
}

whenは複数の条件分岐によく使われます。()の中に任意の変数あるいは処理を書いて、条件とそれに付随する処理を->で表現します。

▼プログラム②の出力結果

x == 1


while, do while

whileの場合

fun main() {
    var x = 0
    while (x < 4) {
        println("Hello Kotlin")
        ++x
    }
}

do whileの場合

fun main() {
    var x = 0
    do {
        println("Hello Kotlin")
        ++x
    } while (x < 4)
}

▼実行結果(両者とも同じ)

Hello Kotlin
Hello Kotlin
Hello Kotlin
Hello Kotlin

while文で使う条件式は、truefalseで判定できるboolean型で記載しなければなりません。

以降、サンプルコードでは前者の方を使います。(後者はwhileの処理を書き忘れることがあるため)


break

breakを使うことで、処理を中断させることができます。

fun main() {
    var x = 0
    while (x < 4) {
        if (x == 2) break
        println("Hello Kotlin")
        ++x
    }
}

▼実行結果

Hello Kotlin
Hello Kotlin


continue

continueを使うことで、ループ処理をスキップすることができます。

次のサンプルコードでは、変数xが2のときだけcontinueprintlnの処理がスキップされます。そのため、2は出力されません。

fun main() {
    var x = 0
    while (x < 5) {
        x++
        if (x == 2) continue
        println(x)
    }
    println("finish")
}

▼実行結果

1
3
4
5
finish

このように、continueはループ処理をスキップすることができます。


可変長引数

可変長引数とは、引数の数が定まっていない引数のことを指します。型が同じであれば任意の数を引き出すことができます。

引数にはvarargを指定することで、複数の引数を指定できます。

fun vafunc(vararg values:Int):Unit {
    for(value in values) {
        println(value.toString())
    }
}

fun main(args:Array<String>) {
    vafunc(1,2,3)
}

上記にあるUnitとは、「戻り値がない」ことを意味しています。

▼実行結果

1
2
3

可変長引数と普通の引数を混ぜて使うことはできますが、その際は可変長引数を最後に置きましょう。

fun vafunc(arg:String, vararg values:Int):Unit {
    for (value in values) {
        println(value)
    }
    println(arg)
}

fun main() {
    vafunc("kotlin", 1, 2, 3, 4)
}

▼実行結果

1
2
3
4
kotlin


余談

本章で紹介したKotlinプログラムと同じ処理をPythonプログラムで書くと、次のようになります。

def vafunc(arg, *values):
    for value in values:
        print(value)
    print(arg)

vafunc("kotlin", 1, 2, 3, 4)

上述のKotlinプログラムと比較すると、シンプルにコードを書けますね。


まとめ

今回の記事では、Kotlinで条件分岐や可変長引数について解説しました。

今日の記事はこれで終了です。

【Kotlin入門】③データ型、変数、繰り返し、関数の定義

f:id:ShotaNukumizu_1000:20210627142712p:plain

おはようございます。Shotaです。

今回の記事では、Kotlinを扱う上で基本となる文法を紹介していきます。今回の記事で紹介するのは以下のとおりです。

  • データ型

  • 変数(val, var)

  • 繰り返し

  • 関数の定義



データ型

▼Kotlinでよく使われているデータ

説明
Double 64ビット浮動小数点数
Float 32ビット浮動小数点数
Long 64ビット符号付き整数
Int 32ビット符号付き整数
Short 16ビット符号付き整数
Byte 8ビット符号付き整数
Char 1文字を表現する 文字型
Boolean 真偽値(tureかfalse)
String 文字列


数値

// 整数
val x = 10 //Int
val twobillion = 3000000000 //Long

// 小数
val a = 3.22 //Double
val aFloat = 2.31f //Float(Float型にする場合、最後にfを付ける)

整数は自動的にIntとして認識されます。しかし、値が-231を下回ったり、231から1を引いた値を上回ったりするとLongとして認識されます。

そもそも、数値定数にByteを指定する方法がありません。

小数は自動的にDoubleとして認識されます。Floatとして認識させるためには、最後にfを付け加えます。


文字と文字列

1文字のChar型を表すにはシングルクォート、文字列を扱う場合はダブルクォートを使います。ここは十分に混同しやすいので気をつけてください。

ちなみにトリプルクォートを使うと改行できる文字列に変換されます。

$を使って文字列の中に変数の値や計算結果を埋め込むことができます。

文字列(String)は中身を変更できませんが、配列のように[]で指定した位置の文字を取得できます。

// 1文字の文字
val t = '1'
val u = 'x'

// 文字列
val a = "Hello Kotlin"
val text = """
改行、インデント含めてここに書いた通りの
文字列になる
"""

// $を使って文字列の中に変数の値や計算結果を埋め込める
val i = 20
val b = "i = $i, i × 2 = ${i * 2}"

// 文字列。forループでイテレートできる
val a0 = a[1]
for (x in a) {
    println(x)
}


配列

配列を表現するときはarrayOfを使います。数値の場合はarrayListOfを使います。

val list = arrayOf(2, 4, 6)

例えば、次の2つのプログラムをそれぞれ実行すると同じ出力結果が得られます。

▼Kotlinファイル

fun main() {
    val list1 = arrayListOf(2, 4, 6)
    println(list1)
}

Pythonファイル

list1 = [2, 4, 6]
print(list1)

▼出力結果(両方とも同じ)

[2, 4, 6]


map型

mapは、Pythonの辞書型と似たような働きをします。

例えば、つぎの2つのプログラムを出力すると以下の結果を出力します。

▼Kotlinファイル

fun main() {
    val map = mapOf(1 to "Hello", 2 to "See you")
    println(map)
}

▼出力結果

{1=Hello, 2=See you}

Pythonファイル

dic = {1: 'Hello', 2:'See you'}
print(dic)

▼出力結果

{1: 'Hello', 2: 'See you'}


変数(val, var)

変数は後から変更する場合は変数名にvar、変更しない場合は変数名にvalを使います。

var x = 10 // 変更できる
val X = 10 // 変更できない


繰り返し

繰り返しは、forと書いてその後に行いたい処理を()の中に記しましょう。

// rangeの場合(この場合は1から6までの範囲)
fun main() {
    for (x in 1..6) {
        println(x)
    }
}

▼実行結果

1
2
3
4
5
6
//3回繰り返し処理
fun main() {
    for (x in 1..3) {
        println("Hello Kotlin")
    }
}

▼実行結果

Hello Kotlin
Hello Kotlin
Hello Kotlin
//配列の要素取り出し
fun main() {
    val list = arrayOf("kotlin", "java", "python")
    for (l in list) {
        println(l)
    }
}

▼実行結果

kotlin
java
python


関数の定義

fun sum(x: Int, y: Int): Int {
    return x + y
}

fun main() {
    val res = sum(4, 5)
    println(res)
}

▼出力結果

9

関数を定義し、その関数を使う方法は次の通りです。

①まず最初に関数名をこのように書いて、()の中に引数のデータ型をそれぞれ指定する。引数はなくてもかまわない。

②{}の中に行いたい処理を書。戻り値はreturnを使う。

③変数に関数を格納させ、printlnで結果を出力する。


fun sum(x: Int, y: Int): Int {
    return x + y
}


まとめ

今回の記事では、主に次のことについて説明しました。

  • データ型

  • 変数(val, var)

  • 繰り返し

  • 関数の定義


今日の記事はこれで終了です。

【参考サイト】

dogwood008.github.io

【毎週日曜更新】本の要約・考察第25回~『複利で伸びる1つの習慣』~

f:id:ShotaNukumizu_1000:20210912071418p:plain

おはようございます。Shotaです。

今日は日曜日なので、本の要約・考察記事を書いていきます。

今日紹介する本は『複利で伸びる一つの習慣』です。



習慣化するには「小さな変化」が必要

私達はある決定的な瞬間を過大評価し、日々の小さな改善を過小評価します。大きな成功には大きな行動が必要だと、私達は思い込みやすいです。体重を減らすこと、会社を立ち上げることなど、どのような目標であれ、よく話に聞く劇的な向上が必要だと、自分にプレッシャーをかけるのです。

しかし、1%の改善は目立たないし、気づかれないことさえあります。ところが長い目で見ると、はるかに大きな効果を発揮します。 小さな改善が長い時間を書けてもたらす変化は驚くほどです。毎日1%の改善が見られたら、1年後には37倍良くなっていきます。逆に、毎日1%悪くなっていくなら1年後にはゼロに近くなってしまいます。小さな勝利もささやかな敗北も、積み重ねればはるかに大きなものになります。

習慣とは、自己改善が複利の利子を生んでいくようなものです。一日ではそこまで大差がないように感じられますが、数ヶ月や数年を書けてもたらされる影響は計り知れません。2年後、10年後に振り返ってはじめて、良い習慣による利益と悪い習慣による過失がはっきりと目に見えるのです。

これは普段の生活ではわかりにくいかもしれません。私達は日々の生活にある小さな変化を見過ごしがちです。たとえ今、少し貯金したからと言ってまだ億万長者になれるわけではありません。3日続けてジムに通っても、すぐに体型は変化しません。少々習慣を変えても結果はすぐに現れないので、いつもの生活に戻ってしまいます。

習慣は諸刃の剣では、悪い習慣は、良い習慣があなたを築き上げるのと同じくらい簡単に、私達を打ちのめします。だからこそ、私達は習慣についてよく理解することが重要です、習慣の作用の仕方や、自分の好みに合うように習慣を設計する方法を知る必要があります。そうすれば、悪い習慣の悪影響を少しでも避けることができます。

そこで、今回は習慣を作るためのステップを4段階に分けてざっくり解説していきます。


法則①:はっきりさせる

行動変化の第一の法則は、「はっきりさせる」ことです。


「いつ」、「どこで」を明確にする

習慣を引き起こすきっかけとなるのは、様々な形でやってきます。ポケットで震えるスマートフォンだったり、チョコチップクッキーの匂いだったり、救急車のサイレンの音だったりします。しかし、最もよくある2つのきっかけは時間と場所です。実行意図にはこれらきっかけの力を強めてくれます。

言い換えれば、いつ、どこで新しい習慣を行うか明確な計画を建てる人は、最後までやり通す可能性が高いです。この基本的な点を明確にせず、習慣を変えようとする人があまりにも多いのが現状です。

「もっと健康的な食事をしよう」「もっと文章を書こう」と自分に言い聞かせながら、いつ、どこでその習慣を始めるかということは明確にしない。「思い出したらやろう」とか、適切な時に殺る時に気になるだろうとか、チャンスや希望、その時の気分に任せています。実行糸は「もっと成果を上げたい」という曖昧な考えを一層して具体的な行動計画に変えるものです。

この方法を習慣に適用させるためには、次の文を完成させるだけでいいです。

私は〈いつ〉〈どこで〉〈何を〉する。

具体例:私は午前6時から8時までの2時間は自宅でプログラミング、あるいはブログを書く。


実行意図にはもう一つの利点があります。それは、自分が何をほしいのか、同達成したいのかを明確にすると、それを邪魔するものや注意をそらすもの、コースから引き離すものに対してノーと言えるようになることです。

新しい習慣を作る際には、場所と時間をセットで検討するようにしましょう。


新しい行動を前の古い行動の上に積み重ねる―「習慣の積み上げ」

私達人間の行動の多くは、「次に何をするかは、やり終えたことに基づいて決めること」が大半です。これを習慣を作る時に応用しましょう。

習慣の積み上げが、新しい行動を古い行動の上に積み上げることで、習慣を継続しやすくなります。このプロセスを繰り返すと、様々な習慣がつながって、各習慣が次の習慣のきっかけとなります。

この方法を習慣に適用させるためには、次の文を完成させるだけでいいです。

〈現在の習慣〉をしたら、〈新しい習慣〉をする。

具体例:毎朝1コップ分の水を飲んだら、すぐにパソコンでブログ執筆用のエディターを開く。


大事なコツは、身につけたい習慣を、すでに行っている習慣と関連付けることです。この基本的な構造をマスターすれば、小さな習慣を積み上げていくことでもっと大きな習慣の山が積み上がるようになります。

そうなれば、一つの行動が次の行動を招くという自然の勢いを利用することができます。

習慣の積み上げによって、今後の行動を導く簡単な法則を作り出すことができます。次に何をするかという行動計画を、常に持っているようなものです。この方法に慣れたら、ふさわしい状況の時に常に導いてもらえるように、様々な習慣の山を作ることができるようになります。


法則②:魅力的にさせる


行動を魅力的なものにする

行動を起こす確率を上げたければ、その行動を魅力的なものにする必要があります。第二の法則について考える中での目標は、習慣を魅力的にする方法を学ぶことです。


誘惑を引き合わせることで習慣を魅力的にする

自分の好きなことと新しい習慣を同時に行えば、その習慣を魅力的に感じやすいです。この方法は、「プレマックの原理」として知られている心理学の理論を応用した方法です。この原理は、「起こる確率の高い行動は、起こる確率の低い行動を強化する」というものです。

この方法を習慣に適用させるためには、次の文を完成させるだけでいいです。

〈現在の習慣〉をしたら、〈必要な習慣〉をする

〈必要な習慣〉をしたら、〈したい習慣〉をする

具体例
①パソコンの電源を入れたら、ブラウザでYouTubeを開いてリラックス音楽を聞く

②ブログの下書きを1記事書き終えたら、Twitterで自分の投稿に対するリアクションを見る


このように、誘惑と新しい習慣をセットにすることで、習慣を魅力的なものにすることができます。これは、やりたい行動とする必要のある行動をセットにする戦略です。


法則③:易しくする

習慣を身に着けたいなら、大事なのは完璧を追求することではなく、繰り返しから始めることです。新しい習慣について、あれこれと未来の計画を建てる必要はありません。必要なのは実行することだけです。


新しい習慣を身につけるためにかかる時間は?

習慣形成とは、繰り返しによって、行動が次第に自動的に起こるようになる過程のことです。何度も繰り返すほど、脳の構造が効果的に行動できるように変わっていきます。繰り返すことこそが、新しい習慣を符号化するために最も重要なステップになります。

全ての習慣は努力を要する行動から自動的なものへと、同じ軌跡を描いていきます。この過程を自動化と呼びます。自動化とは、いちいち考えずに行動できることを指し、無意識がその行動を引き受けた時に起こります。

「新しい習慣を身につけるのにどのくらいの時間がかかるか」ということがよく聞かれる質問としてありますが、実際習慣が自動化するのにどれくらいかかるかはそこまで重要な問題ではありません。大事なのは、進歩に必要な行動をすることだからです。


最小努力の法則

どのような行動にも一定量のエネルギーが必要です。必要なエネルギーが多いほど、その行動は起こりにくくなります。

例えば、あなたの目標が一日3000文字のブログ記事を執筆するなら、それはものすごいエネルギー量です。しかし、数日後にはそのような大変な努力に疲れを感じるようになります。一方、一日100文字のブログを書くことを続ける場合、始めるのにエネルギーはそこまで必要としません。必要とするエネルギーが少ない習慣ほど実行しやすくなります。

良い習慣を継続するためには、良い習慣を行うのに生じる抵抗やハードルを極限まで下げましょう。ハードルが小さければ小さいほど、習慣は簡単になります。


法則④:満足できるものにする

私達は、経験して満足するとその行動を繰り返しやすい傾向があります。これは実に論理的です。香りと泡立ちのよう石鹸で手を洗うという小さな子度でも、楽しいという感覚は脳に、「これは気持ちいい、今度もまたやろう」というような信号を伝達します。喜びが、記憶して繰り返す価値のある行動だと脳に教え込むのです。

本章では、新しい習慣を再び繰り返す確率を上げる方法を詳細に解説します。


良い習慣を毎日継続させる方法

「習慣トラッカー」とは、習慣を行ったかどうかを測るシンプルな方法です。最も基本的なやり方は、カレンダーを買い、ルーティンを守った日を線で消すことです。本書では、良い習慣を毎日継続させる方法の一つとして、「習慣トラッカー」を強くおすすめしています。


習慣トラッカーのメリット①―自分の行動を視覚化できる

私達の最後の行動を記録することは、次の行動を始めるきっかけになります。習慣を記録することで、カレンダーに並んだ❌印や食事記録の食事リストのように、目に見えるきっかけを自然と作り出すことができます。カレンダーを見て❌印が目に入るたびに、また行動しようという気持ちを作ってくれます。

それだけではありません。習慣トラッカーは私達を正直にしてくれます。多くの人は、自分の行動に対して歪んだ見方をします。日々の習慣を記録すると、自分の行動に眼をつぶるのをやめ、本当は毎日何が起きているのかを正確に認識できます。


習慣トラッカーのメリット②―魅力的である

習慣トラッカーは「前へと進んでいる」という明確な証拠そのものなので、このままもっと続けようというやる気を上げてくれます。

これは、特に調子の悪い日に実に効果的です。習慣トラッカーは視覚化できる証拠です。どんなに頑張ってきたのか、私達に思い出させてくれます。更に毎朝目にする空欄が、さあ始めようという気にさせてくれるのです。


習慣トラッカーのメリット③―満足できる

これが最大のメリットです。記録すること自体が報酬になります。

習慣トラッカーは、大切なことから目をそらさないように助けてくれます。その御蔭で、私達は結果よりもそのプロセスに集中できます。


まとめ:習慣化は「量」じゃなくて「やったこと」という事実が大事

今回の記事では、『複利で伸びる1つの習慣』を解説しました。

最後に個人的な補足を入れて記事を終了したいと思います。習慣化するために必要なことは「量」ではなく「やったこと」という事実です。

例えば、毎日勉強する習慣をつけたいときは「毎日10分勉強する」とか、「本を1ページだけ読む」というように取り組んだ量ではなく、「やったこと」という事実を作った日数を増やしていくことがより大事です。

今回の記事で紹介した書籍は、管理人にとって自分の行動を見直すきっかけを作ってくれました。管理人も「習慣トラッカー」を記録して、一日にやった自分の行動を記録し、目に見える形で作り出すことが重要であることを改めて痛感しました。

今日の記事はこれで終了です。

【参考図書】