TOPハウツー・学習テクノロジーコミットログコミット44: 中本とプロトタイプベース12:22 2025年12月1日 15再生 問題を報告する 再生する シェアする りあクト!読んで学習中です。。。AI目次中本中毒?無意識の行動の理由React学習から知るJSの奥深さオブジェクト指向 プロトタイプベースクラス構文で隠されたJSの仕組みメソッド探索 プロトタイプチェーンAI文字起こし(β版) # 中本 どうも辛いラーメン中本大好きなエンジニア前田です。 このチャンネルはそんな私が感じたこと、考えたこと、学んだことをアウトプットしていくチャンネルです。 さて今日は中本とプロトタイプベースというテーマでお話をしていきます。 では早速雑談ですね。 雑談が先かいという感じですが、中本ですね。 最初に話した辛いラーメン中本、こちらがですね東京と埼玉と神奈川ですかね 関東圏にだけある辛いラーメンで有名なお店になりますが、僕はここのラーメンがめちゃめちゃ大好きだっていう話をね ちょっと冒頭していきたいとおもいます。 僕ね辛さとね野菜がね 野菜の旨味っていうんですかね、あんまりより詳しくないので できそうなこと言ってるかもしれないですが、この組み合わせがね個人的にマジで最高だなと思っています。 いつも野菜大盛りで冷やし味噌野菜っていうねラーメンを僕は頼むんですが、もうこの組み合わせが最高だなと思っています。 で、僕はこのラーメンのねほぼ中毒みたいな感じだと思うんですが、先週金曜日にこのね中毒がねわかるような経験があったんで、それをちょっと雑談で話しておこうと思います。 先週の金曜日は普通に会社に出社しまして、18時くらいに家に帰っていくっていう感じで予定をしていました。 で実際18時に会社出て電車乗ったんですが、おかちまち駅ですね。おかちまち駅という駅をね途中通過するんですけども、ここの駅のアナウンスですね。 おかちまち駅、おかちまち駅みたいなアナウンスがあると思うんですけれども、そのアナウンスがねすごく耳に入ってきまして、はって耳に入ってきて、 あもう中本って頭の中でなって、でもう電車を勝手にね、体がね動いてましたね。勝手に降りてました。いやもうねすごいですねアスリートみたいな経験をしましたね。 まあもう降りてしまったからにはね、そのまま中本をね食べて満足して帰っていったっていう話ですね。 もうこれがやっぱ中毒さをね表すのにね、なんかすごく実感しましたね。そのおかちまち駅にたどり着くまでにいくつか駅をね通過しているはずなんですよね。 会社の最寄りの会社の最寄り駅から乗っていくつか駅を通過しておかちまち駅なんですが、その通過した駅のアナウンスはね全く聞こえなかったんですよね。 別に何も余儀ることなく、ただおかちまち駅っていうのが聞いた瞬間にもうビビッときて降りてましたね。 まあ金曜日ということもあってね、疲れがあって辛さを欲してたのかなと思います。中本の雑談でした。 # プロトタイプベース では、ここから本題です。 少し私にとってはチャレンジングな説明にアウトプットになっています。 プロトタイプベースのオブジェクト思考という話をしていきます。 まず最初に、なんでこれを話そうと思ったのか、そのいきさつからお話をします。 単純にこの辺の知識足りてないなという話ではあるんですが、 今、個人開発でウェブアプリケーションを作るときに、基本的にリアクトを使ってフロントエンドは作成しています。 シンプルなアプリケーションであれば、リアクトを使って作ることができるんですけれども、 JavaScriptの本当に深い部分というのまで理解できているかというと、正直怪しいなと思いながら作っていました。 なんでこの基礎の部分を勉強していこうと思ったためです。 今はリアクトという書籍ですね。 ひらがなでリア、カタカナでクト、びっくりマークがあるのでリアクトって読むのかな。 多分読み方あっているんですが、このリアクトという本で勉強をしています。 これは結構深い部分まで教えてくれる書籍だなと思っています。 なんでこの本を選んではいますと。 この本を読んでいく中で、全然知らないことがあったので、そのうち2つを紹介していこうと思っています。 まだ読み途中ではあります。 その1つ目が、JavaScriptは本来プロトタイプベースという仕組みで動いているという話です。 そもそもプロトタイプベースという言葉もあんまり分かってはいなかった。 この本を読んで、そうなってんのってなったんですが。 なのでプロトタイプベースの説明をここからしていきます。 そもそもオブジェクト思考には2種類ありまして、そのうちの1つがプロトタイプベース。 そのうちもう1個がクラスベースっていうことになっているらしいですね。 クラスベースっていうことの方が僕は馴染みがあるので先に紹介するんですけど、 こっちがRubyとかJavaですね。クラスベースの言語になっているわけです。 クラス、つまり抽象概念から設計図っていうところからインスタンス、実体を作っていくよっていうのがクラスベースですね。 プロトタイプベースが何かっていうと、JavaScriptがこれを採用していると。 オブジェクトからオブジェクトを作るっていうのがプロトタイプベースの世界ですね。 クラスベースでいうその抽象概念、クラス設計図みたいなものがなくて、オブジェクトからオブジェクトが生まれるという仕組みですと。 初めて知りました。プロトタイプっていう言葉の意味が親の要素、親のオブジェクトっていう意味らしいですね。 これがそもそも初めて知ったというところでびっくりしていますと。 なんで今までこのプロトタイプベースを僕は知らずに、ただJSをなんとなくかけてきていたのかっていうところも紹介したいと思います。 これがクラス構文っていうものが導入されているかららしいですね。 JavaScriptの中に。 このクラス構文っていうものが何かっていうと、等位構文、もしくはシンタックスシュガーとかっていうふうに言われています。 等位構文の漢字なんですけども、等類の等ですね。 甘いもの等の衣等位構文っていうふうな漢字になっています。 この言葉ですが、おそらく等以上っていうものがあるので、そこから来ているんだと思っています。 薬ですね、等以上。 薬を飲むときに苦い、薬飲むときって苦いじゃないですか。 それを苦い部分を甘い衣で覆って飲み込めば苦さ感じないよねっていうのが等以上だと思うんですが、 同じことをやっているんだと思っています。 プロトタイプベースが苦いものと認識しているんですかね、ここでは。 苦いものとしてそれをクラスベースっていうもので覆って、 つまりプロトタイプベースっていうものを感じずに私たちが飲み込める、扱えるようにしているのがクラス構文です。 だからクラスベースっぽく書かせてくれているものになっているということも初めて知りました。 これが一つ目の驚きだったというポイントです。 ちょっと詳しい話はね、まだ理解が怪しい部分あるのでちょっとできないですが、概念的な話です。 あと一つ、ここからは若干具体が入ってくるんですが、 プリミティブ値からメソッドを生やすっていう話をしていきたいと思っています。 JavaScriptでは、具体の話をするんですけども、数値の100ですね。 100、JavaScriptだとナンバー型だと思うんですけど、 100、これを文字列に変換するってなったときに、.toStringとかって書くと思うんですけれども、 これ、この100っていうもの自体がtoStringっていうメソッドを持っていないっていうことが初めて知りました。 先にクラスベースの話をしておこうと思います。僕は馴染みがあるので。 例えばRubyの話ですと、数値はインテジャー型ですかね。 ちょっとナンバー型とちょっと違うのであれかもしれないですが、 Rubyで数字の100ってやると、インテジャー型クラスからそこから実体、印刷を作ったというような感じだと思います。 それに対して.toUnderbarSってメソッドが生やせると思います。 100.toSって生やせると思うんですけども、これが生やせる理由っていうのが、 インテジャークラスの中にこのtoUnderbarSメソッドが定義されているから、 そのクラスから実体化したもの、あのインスタンスもtoSメソッドが使えるよねっていうような話だと思います。 JavaScriptはこうはなっていないというところらしいですね。 プリミティブ値100自体は、こいつ自体はメソッドを持っておらず、 じゃあどうやってそのtoStringっていうのをやっているかというと、 その100.toStringっていうのが実行されるときに、そのナンバー100、ナンバーオブジェクトっていうのを一瞬作るらしいんですね。 そうすると、ナンバーオブジェクトっていうのは、それをラップしているラッパーオブジェクトっていうものがあって、 そのラッパーオブジェクトがtoStringメソッドを持っているから使えるっていうような仕組みになっているらしいです。 これを初めて知りましたし、なんか理解するのにだいぶ時間がかかりました。 さらにここで、この仕組み自体を理解するのに欠かせないのが、プロトタイプチェーンと呼ばれる仕組みです。 何かっていうと、このJavaScriptのオブジェクトがメソッドとかプロパティを実行するってなったときに探すらしいんですね。 まず、ジブジーシンを見ますと、今の例でいくと、ナンバーオブジェクトですね。 ナンバーオブジェクト100がtoStringメソッドを探しに行きます。 ナンバーオブジェクト自体にtoStringメソッドはないらしいです。 ないので、じゃなかったら次どうするかっていうと、プロトタイプを見ていく。 つまり、親の要素を見に行くらしいですね。 今の場合でいくと、ナンバーオブジェクトをラッパーしているなんかのオブジェクトがあるらしいんですね。 そのラッパーオブジェクトがそこでtoStringメソッドを持っているから、 さっきの100.toStringっていうのが実行できるっていうような形らしいですね。 これがプロトタイプチェーンですね。 もう一回言いますが、まず自分自身を見て、メソッドがあれば実行します。 ただ、なければその親であるプロトタイプですね。 プロトタイプを見て、そこにメソッドがあるかないかを探す。あれば実行する。 なければさらにその親、さらにその親っていうふうにどんどん上に上っていく仕組みのことをプロトタイプチェーンというらしいです。 だいぶ私は勉強になりました。 ちょっと具体的な話までは説明ができない部分もあるんですが、私としてはここが限界でしょう。 今日はありがとうございました。 また間違っていることとか、ここもっとこうだよってことあればコメントとかいただけるとすごく嬉しいです。 今日は以上です。ありがとうございます。 もっと見る #エンジニア #React #中本 コミットログプレミアム放送配信中!03:091.中本09:132.プロトタイプベースコメント感想・質問・応援メッセージを書こう
コミット84: 熱が冷める前に ─『なぜあなたの感想はふつうなのか』を読んで 8分・19時間前・ 2再生AI目次違和感を活かす感想術とは?感想が形になる前に消える現実アイデアを形にする作業の重要性「書息」を活かす思考の転換アイデアを形にする瞬発力の秘訣
コミット82: キウイのススメ 7分・一昨日・ 4再生AI目次睡眠薬からの脱却を目指すキウイとの出会い睡眠改善の道のりと思わぬ整腸効果食物繊維を増やす皮ごとキウイの食べ方快便がもたらす仕事効率アップの秘密とは睡眠と腸活 キウイが教えてくれた新発見
コミット82: 月10回以上 9分・9月1日・ 4再生AI目次音声コンテンツ配信頻度向上の秘策「作る」から生まれるアイディアの発見カフェ作業を可視化するアプリ「カフェデスク」AI活用を乗り越えるSwift理解への道厳選2冊の読破が示す9月の目標
コミット81: 朝飯前の最大化 6分・8月31日・ 5再生AI目次朝飯前の最大化:生産性向上の秘訣とは?空腹がもたらす集中力と脳の覚醒富山茂彦「思考の生理学」に学ぶ真意午前中5時間を集中に活かす実践法全員に当てはまる?集中法に潜む個人差
コミット80: 同じ轍を踏む 6分・8月30日・ 5再生AI目次繰り返し直面するAI開発の落とし穴理解不能なコードを生むAI依存の弊害個人開発におけるAI利用の難しさとは「カフェデスク」開発での学びとリセット人が理解できる範囲でのAI活用術
コミット79: アイデアの源泉 9分・8月21日・ 6再生AI目次開発者が語る「アイデアの源泉」3選何もしない時間で生まれる創造性とは?野田クリスタル氏のアプリに学ぶ発想術あなたのアプリを変える「ひとひねり」ChatGPTでアイデアを磨き具体化する法
コミット78: 伴走する教育 8分・8月18日・ 7再生AI目次名との読書体験が語る教育の原点教員からプログラミング講師まで教員時代に実践した「伴走」の姿学習効果を高める「隣にいる」理由「伴走する教育」が持つ普遍的価値
コミット77: 忘れる前提で働く 8分・8月17日・ 7再生AI目次忘れやすい記憶への対策とは?長期休暇明けを乗り切る仕事術未来の自分へ残すメモの習慣エンジニアの書くコードの秘訣背景や目的を記すドキュメント術
コミット76: 私にとっての"予防歯科" 14分・8月14日・ 30再生AI目次マーケティング本から得る予防歯科の視点鉄道会社が陥ったビジネス視点の教訓キシリトールガムが築いたブルーオーシャン歯医者の概念転換と市場拡大の秘訣エンジニアが考える市場志向の真意
コミット75: 粉瘤との終わらない戦い 10分・8月4日・ 8再生AI目次粉瘤との長年にわたる奮闘記録ニキビと誤解?粉瘤の正体とは年間医療費10万円超えの現実保険適用「月1回」の壁とその突破術複数の粉瘤除去を望む医療制度への提言