Reduxなんもわからなかったけど、気づいたらいつの間にか理解してた話

今働いているインターン先が、フロントエンドでReactを使っているのですが、ステート管理にReduxを用いているんですね。

Redux意味不明すぎwww

僕がそこで働き始めたときは、まだReactを勉強し始めたばかり、というかそもそも、ガチでJavaScriptをちゃんと書いた経験もありませんでした。

ということで、日夜業務に追いつくためのキャッチアップの勉強に勤しんでいたのですが、Reduxなんもわからん、と壁にぶち当たりました

プログラミング自体はそれまでに1.5年ぐらい経験があったので、JavaScript、Reactを理解するのは割と簡単でした。しかし、Reduxとなると話は別です。Reduxの経験がある人ならわかると思うのですが、コードが、Aに渡されて、Bに渡されて、みたいなたらい回しで、何がなんやらほんじゃらほいって感じですね。

あの複雑な状態遷移が意味不明でした。そして、Reduxだけならまだしも、そこにReactが入ってくると、また事態が悪化しました。ReactとReduxは独立して存在するため、両者を同時に使うためには、この二つを「つなげる」何かが必要です。

そこで出てくるのがReact-Reduxというライブラリなんですが、こいつのせいで僕はさらに苦しみました。

一瞬、Reduxが理解できたと思ったのも束の間。結局なんもわからん。。。となってしまいました。

とはいえ、仕事は仕事です。Reduxわからないので、できません、なんて言い訳は通用しません。既存のコードを読んだり、社員の方に質問したりして、なんとかタスクをこなしていきました。

平日はインターンが終わってからはプログラミング。休日もプログラミング。Reduxを習得しようと必死こいてコードを書きまくっていました。

あ、Reduxわかった!!!

そしてインターンに入ってから数ヶ月後、ふと、あれ、Reduxわかるぞ...という瞬間が訪れました。

今まで、あんなに意味不明に見えた状態遷移が、スッと頭に入ってきました。プロダクトのコードを見ても、ここがこうなってるから、あっちがああなるのか、とコード間の繋がりがわかるようになったんですね。

こうなってしまえば後は占めたもの、基本がわかったので、応用概念の習得も楽勝でした。数ヶ月前とは見違えるほどです。

全然終わらなかったタスクも、バンバンこなせるようになっていきます。一日にこなせるタスクの量がどんどん増えていって、プルリクエストをがんがん上げていけるようになるのは快感ですよね。

こんな感じで、なんもわからん、となっても、諦めずに粘り強くやりつづければ、いつのまにかブレークスルーできるんですよね。僕はこの、今まで意味不明だったことが手に取るようにわかる瞬間が大好きです。

高校生の頃、初めてベクトルを学んだとき、意味不明だったんですよね。基本的な概念はわかるんですが、位置ベクトルあたりの話になると、うーん、よくわからん...と。しかし、問題演習をしているうちに、いつのまにか、位置ベクトルってこういうことなのか、と体で理解していることに気づきました。

初めてRuby on Railsを学んだときも、MVCってなんだとか、インスタンスメソッドってなんだ、とかわからないことだらけでした。

初めて大学の授業でC言語を学んだときは、ポインターという概念で撃墜されました。

ですが、コードを書いているうちに、いつのまにか、「わかる」ようになっているんですよね。マジで。これって超能力でもなんでもなくて、脳が情報を蓄積していくうちに、脳の回路が繋がっていって、みたいなことなんですよ。

逆にいうと、新しい概念にでくわしても、わからないのはある意味当たり前のことなんですよね。

プログラミングは誰でもできるんですよ。本当に。ただ、ちょっとつまづいたからといって、学習をストップしてしまうと、いつまでたっても理解できないままです。

わからないことがあったからといって、自分にプログラミングの才能はないのかな、なんてがっかりしないで欲しいんですよね。プログラミングの才能なんて、関係ないですよ。やれば誰だってできるようになります。こんなものは。

プログラミングだって言語ですよね。東進の安河内先生は、「英語なんて言葉なんだ。こんなものやれば誰だってできるようになる」という名言を残していますが、本当にこの通りです。プログラミングだって言語なんですよ。誰だってできるようになります。