useReducerを試す

写経しながら試す。 一部変えたりして、動きを試す。

useStateでは、複雑になりそうなケースについて、useReducerを使うといいっぽい。

import {useReducer} from "react";

function reducer(state, action) {
    switch (action.type) {
        case 'increment_age':
            return {
            age: state.age + 1
            }
        case 'decrement_age': 
            return {
                age: state.age - 1
            }
        default:
         throw Error('Unknown type');
    }
}

export default function App()  {
    const [state, dispatch] = useReducer(reducer, {age: 40});

    return (
        <>
            <button onClick={() => {
                dispatch({type: 'increment_age'})
            }}>
                increment age
            </button>
            <button onClick={() => {
                dispatch({type: 'decrement_age'})
            }}>
                decrement age
            </button>
            <p>age is {state.age}</p>
        </>
    )

}

参考 ja.react.dev

写経について

アクティブリコールやリトリーバル観点で、考えるとプログラミングのいわゆる写経について思ったことを書く。

サンプルコードを見ながら、一文字ずつ、写していくのはだめで、見本を見て、何も見ずに、自分の頭で思い出しながらある程度の塊で、書いて、見本を確認して違ってたら直してみたいなことをやっていくと良さそう。

もしくは、プログラム全体を見て、流れを把握して、何も見ずに、おおまかにこう書いてあるなというのを思い出して、アウトラインだけ書いて、もう一回見本見て、詳細を見ずに埋める。

とかがいいのではないかと思った。

具体的なステップ

  • 興味がある分野の公式を参照する
  • 初見で意味が分からなければ技術ブログなどを参照する
  • 見て理解する
  • 何も見ないで、エディターに打ち込む
  • できなかった見本を見る
  • 繰り返す

学校のテストではないので、100%できる必要はなくて、コード補完がでるぐらいまでの頭出しとしての記憶ぐらいでよいと思われる。

それよりも知識の広さが重要だと思われる。

公式を目次として、ブログで理解しやすいものを探して、学習してまた、公式の目次に戻って内容を把握するのが良さそう。

5月振り返り

sakurai-norio-exhibition.com

僕ヤバ作者の方の展示に行ってきました。 平日昼間に行ったので、空いていて、ゆっくり見たり、漫画を見れたりして満足度が高かったです。 混むところは平日に行くといいなという知見を得ました。

今月は、なんだか忙しくて学習をあんまりやった記憶がありません。

iPadで技術記事を読むのがなんか楽しいので習慣化したいなと思います。 直近ではpropsの型について調べ、そこから派生して、型定義について深掘りしています。

DIの書籍が新発売されていたので、reactでDIやったらどうなるかを妄想し、ネットで調べて見たりしていましたが、すぐに実践できるtipsみたいなものは見つけられませんでした。

typeとinfterfaceについての使い分けについて

調べた感じ、どちらも同じようなことができますが、interfaceのほうが、object指向的というか、継承してなんとかするみたいなことがやりやすそうな印象です。 実務では使ったことがありませんが、ライブラリの中身を読むと出てくるのでそんな感じかと思いました。

科学的根拠に基づく最高の勉強法を読んだ

www.kadokawa.co.jp

内容をアクティブリコールしながら書き出す。 読み終わってからだいたい1ヶ月ぐらい経っていると思うので、どこまで思い出せるだろうか。

アクティブリコール(学習したものを思い出す)

憶えるには思い出すことによる適度な脳への負荷が必要

アクティブリコールの具体的なやり方の例

  • 満員電車の中で、学んだ内容を頭の中で思い出す
  • 読んだ本の内容を白紙の紙に、何も見ずに書き出す
  • うまく、書き出せないところを本で確認する

プログラマとしての学習で実践できそうなこと

コピペでなくて、何も見ずに、プログラムを0から書いてみる。 書けないところは、ドキュメントに戻る。

コピペはできるだけ避けていて、見ながら書くようにしていたが、それを少し変えて、何も見ずに書けるんだったらそれで、書く。 もちろん、進捗を出すために、内容が理解できるところをコピペするのはいいと思う。

覚えたい関数・メソッドを何も見ずに名前を思い出したり、使い方を思い出して、0から書いてみる。

教えるもしくは教えるつもりで声に出す

学んでる時に、学んでいる内容を声に出して、説明する。 うまく説明できないところは、理解が足りてないので、学習ソースを見直す。

分散学習

一度に全部やるよりも、期間を空けて、反復したほうが効果がある

マーカーや再読はあまり効果がでない

僕はこれ結構やっていて、あんまり覚えた気がしてなかったので、そうかーという感じです。 マーカーはドラゴン桜でもあんまり効果ないという話が出てた気がします。

思い出しながら書いてきましたが、もう思い出せないので、ここでちょっと書籍を確認します。

自分に質問する

なぜそうなっているのか?、どのようにそうなっているのか?を自分自身に質問して答える

睡眠大事

よく寝ることが必要

コーネル式

コーネル式で学習内容をまとめると良さそう

目次を見ながら思い出そうとして、思い出せないので、適宜、本文に戻っています。

イメージ記憶術

覚えづらい内容を記憶しやするようにイメージを作る。

本書で一番大事なことは、アクティブリコールだと思います。 youtubの動画内でも出てきますね。

動画の内容がとてもよかったので、書籍も購入して読んだのですが、書籍で読んだ方が内容が詳細でとてもよいです。

プログラマー脳 ~優れたプログラマーになるための認知科学に基づくアプローチ

www.shuwasystem.co.jp

  • ベテランは経験によって、コードをチャンク(まとめて塊として認知できる)できるので、理解も記憶も容易にできる
  • 初心者は、コードをチャンクできないので、理解も記憶も困難
  • ひとによるが7塊ぐらいしか一回で認識できない
  • 新しいことをおぼえるのにフラッシュカードがおすすめされている

感想

初学者の場合は、ある程度、文法や関数など、覚えていないと理解できないし、コードを読むことも難しい。 たしかにと思うところがあります。

世界一流エンジニアの思考法 を2回読んだ

時間を置いて2回読みました。

アクティブリコールがてら、思い出しながら書いていきます。

発売したてに、一度読み、2回目は半年経ってからまた読みました。

1回目は前半部分だけで大変実際に仕事で使えるヒントがたくさんあったので、後半は、流し読みしてました。

時間をおいて2回目は後半をゆっくり読みました。

前半だけでなく後半もよいです。

前半について

  • 技術イケメンの考え方・仕事の仕方
  • 試行錯誤するのではなく、仮説をもって、検証していく
  • アメリカの仕事の仕方
  • アメリカの上司
  • 頭のいい人でも理解に時間がかかる

僕個人的には、仕事で解決方法が考え付かなくなって、ローラー作戦で試行錯誤することはあるなとは思っています。 ローラー作戦してそれでもだめなら有識者に聞いてます。

後半

  • 1日の過ごし方
  • 休み方
  • 栄養の取り方

2周しましたが、都度発見があって考え方の参考になっています。 文章も好みで読みやすいです。

books.bunshun.jp

ガンダムseed フリーダム映画

公開日に見に行きました。 年齢層が若い方から上の方までいろいろでした。

思いつくままにネタバレありで書いていきますので注意です。

映画の内容はとてもよかったです。 地味にサイやカズイも出てセリフはないかんじでしたが、久しぶりに見た感じで、同窓会に来た感じに懐かしかったです。

物語は飽きがなくてずっと面白かったです。

マリュー艦長のイーゲルシュテルンやバリアントとか久しぶりに聞いていいなーと思いました。

キラは、ディスティニーのときには、達観した穏やかな賢者みたいな感じになってましたが、映画ではseedのころのように迷い、弱さを見せる感じであのころのキラだなと思いました。

ムウは活躍しましたが、尺が短い感じを受けました。ムウが一番好きなので、残念でした。

シンは、こんなに強かったのかと思いました。ディスティニーと相性いいですね。

アスランはフィジカル・テクニックともにとても強く最強なのではと思いました。

ズゴックがサプライズでした。

www.gundam-seed.net