はじめに
最近は生成AIの成長が目まぐるしく、どんどん新しい技術が台頭してきています。
私自身、この技術の荒波に食らいつくため継続的に自己研鑽を続けていますが、なかなか身についている実感が得られていません。
そんな中、この前本屋で手に取った『アウトプット大全』という本を読んで、エンジニアの勉強は何をどうすれば良いのか再度考え直してみました。
その内容をまとめたいと思います。
『アウトプット大全』を読んで得た気づき
知識を効果的に吸収するには インプット < アウトプット が大切であるということ。
インプットは意味記憶であり、アウトプットは運動性記憶である。
- 意味記憶:読むことを通して得た知識としての記憶
- 運動性記憶:話す、書くといった行動も伴って定着した技術としての記憶
意味記憶は「脳」だけで覚える記憶に対して、運動性記憶は「脳 + 体」を使って覚える記憶といったイメージでしょうか。
こうして見ると、アウトプット(=運動性記憶)って重要なんだなと感じます。
『アウトプット大全』の中でもインプットとアウトプットの黄金比は 3:7 だと言われています。
良いアウトプットを出すためには何が必要なのか
最も効果的なのは「他の人に教える」こと
アメリカ国立訓練研究所の研究によると、学習方法と平均学習定着率の関係は「ラーニングピラミッド」として示されています。

参考:平均学習定着率が向上する「ラーニングピラミッド」とは?
これを見るとインプットにおける記憶定着はわずか20%にすぎず記憶定着を図るにはアウトプットが重要だと言えますね。
その中でも「人に教える」には内容を理解し自分の中で咀嚼できるようにならないといけない。
教えられないということは、理解が不十分だと言い換えることができますね。
マルチタスクしない
人間の脳はマルチタスクには不向きです。
ある研究によると人間の脳は17.5TB程の情報を記憶できるらしいです。
※ Wikipedia全体の情報量が約1TBなので脳の記憶量は凄まじいです。
その一方で、同時処理できるのは多くて3個程度のようです。
ハードディスク容量はものすごいあるがメモリ量は非常に乏しいPCといった感じですね。
常に少し難易度の高いことに挑戦する
出来るかわからない少し難易度の高いことに挑戦することでドーパミンが分泌されます。
ドーパミンが分泌されると集中力、やる気が高まり学習機能が向上します。
下図のラーニングゾーンに当てはまる目標を設定し続けることが大切です。

参考:「コンフォートゾーン」を広げて組織・個人の成長を促がす方法とは
エンジニアのアウトプットは何をするべきか
いよいよ本題です。
これまででアウトプットの重要性を書きましたが、結局エンジニアのアウトプットはどうすれば良いのでしょうか。
コードを書くこと!
結局のところ コードを書く に尽きると思います。
最近は生成AIが優秀になってきて 「書く」 から 「書かせる」 に主軸が移りつつありますが、理解促進する上では手を動かして自分で書くプロセスが重要だと思います。
AIが書いたものから学ぶこと自体は悪ではないし、むしろ効率的だと思います。
ただ重要なのは、AIが書いたものを読んで終わりではなく実際に手を動かして書くこと だと思っています。
書くといった意味では 写経 はとても有効だと考えています。
なぜ書くのが重要なのか
少し脳科学的な話になりますが、
手を動かして書くことで「脳幹網様体賦活系(RAS)」が刺激されます。
RASとは脳幹から大脳全体へ向かう神経束のことで、この神経束が刺激されることで脳は対象物に対して集中力を高め積極的に情報を収集しに行きます。

参考:RASスイッチ
RASの刺激が脳全体の活性化につながる、それが図からイメージできると思います。
手を動かしてコードを書くためには
コードを書くとなった際に何から手をつければ良いかわからない人は多いと思います。
今回は実際に私がどのようにしてコードを書いているのか、その方法を紹介します。
1.書籍のサンプル実装をそのまま書いてみる
手っ取り早いのはこれです。
気になる言語や技術関連の書籍を購入し、そこに記載されているサンプル実装を書いてみる。
書籍は環境構築手順から細かく記載しているものが多く、手順通りに実装を進めていけば楽に動くコードを書くことができます。
- サンプルコードを書いて仕組みや動きを理解する
- 自分なりの拡張やカスタマイズを加えてみる
こんな形でまず基礎知識を身につけ、そこから +α を実装して学んでいくというスタイルがオススメです。
2.Webサイトやアプリをそのまま実装してみる
何もない状態からアイデアを出して形にするのが大変なのであれば、すでに存在するサイトの模倣品を作るというのも一つの手です。
注意点として、いきなり全コピしようとせず、出来そうなところから少しずつ作っていくことを心がけましょう。
作成したアプリやWebサイトはあくまでローカル環境に留めておきましょう。外部公開は絶対NG。
3.作りたいアプリやサイトを作る
そもそも自分で作りたいものがあるのであれば、それを作るのが一番です。
その際は、いきなり完璧を求めるのではなく叩き台でも良いので一通り作りきっちゃいましょう。
そこから30点版→50点版→70点版といったようにブラッシュアップしていくのがオススメです。
実装において意識すべきこと
構成を考えてから実装する
新しく何かを作る、自分なりの拡張やカスタマイズを行う時には大まかでも良いので作る機能とその構成について軽く考えてから実装に移りましょう。
思いつきに身を任せて、闇雲に手を動かし続けると、あれもこれも手を出して結局何を作りたかったのかわからなくなってしまいます。
その結果、何も作れない or 中途半端になりやる気の低下につながる可能性があるので、ある程度計画を立てて実装に取り掛かる方が良いです。
実装中に良いアイデアが閃いた時はTODOコメントを残しておき、一通り今の実装が終わってから着手するようにしましょう。
理解を怠らない
書籍のサンプル実装、Geminiのような生成AIが実装・修正したコードで動作したら、それで満足して「なぜ動いたのか」「どういう処理フローで動いているのか」理解せず次に進みたくなります。
ただ、ここでしっかり理解し自分の言葉で説明できる状態を作ることが知識定着には欠かせないです。
外部発信する
最も効果的なアウトプットは「他の人に教えること」です。
ただ、コーディングは個人ワークになることが多く、人に教えるという機会が少ないです。
そのためQiitaやnote、個人サイトに記事を書き発信することが良いです。
(私も最近アウトプットの場としてQiitaをよく使っています)
個人メモとしてアウトプットするのも悪くないですが、色んな人に見てもらえる所に投稿する方が得られるメリットが大きいと考えています。
誹謗中傷を書かれるというデメリットも存在しますが、有名人でもない限り気にする必要ないと思います。(素人相手に攻撃してくる人も皆無でしょうし)
最後に
知識定着させる上でアウトプットは重要である、ということを『アウトプット大全』を読んで再認識しました。
昨今はなんでもAIにやらせる風潮になってきていますが、AIを「使う」から「使いこなせる」のレベルに持っていくためには、 自分で書いて理解すること が重要だと思います。
今どき自分でコードを書くなんて時代遅れだという人の声もあるかと思いますが、理解して記憶に定着させるには自分で書くことが最も良い勉強なのではないでしょうか。
