音声書き起こし
1. オープニング
Guest
こんにちは、UITの玉田です。今回も、UIT INSIDEを始めたいと思います。
Guest
UIT INSIDEは、ユーザーインターフェースのテクノロジーを愛する開発者のためのポットキャストです。
Guest
エピソードの一件や、ご感想がもしありましたら、いつでもツイートしてください。それでは早速今回
Guest
お呼びしたゲスト者さんをお呼びしておりますので、あのお2人でま、2人ではい、話していきたいと思いますよろしくお願いします
Guest
はい、今日です今日はよろしくお願いします。
2. React 18注目のアップデート
Guest
はい、ではえ、今回はおなじみの所産をお呼びしまして、大注目の役と18
Guest
について話していきたいなと思います。はい、で、
Guest
まあ、もしこれ聞かれてる方は多分ご存じかなとは思うんですけれども、先日。リアクトバージョン18のライブアアルファがはい、
Guest
公開されました。
Guest
でですね、これは、まあのちの正式リリースされていくんですけど、あと数ヶ月後にパブリックベータが出て、で、その数週間後にrcが出てで、そのすし、週間後に
Guest
はい
Guest
正式リリースという形のもので、まあまだまだあの、多分こうフィードバックを待っているっていう状態ではあると思うんですけれども、まあ、なかなかこう
Guest
でかい変更が色々あるということで、まあそこについて、まあ、まずは人さんにどんなことがあ、
Guest
起こるのかっていうところをまざっくりとお話していただきたいと思います。では、よろしいでしょうかね。
Guest
はい、そうですね、リアと18のアルファが出てから、twitterとかでも色々感想を見てたんですけども。
Guest
まあ、1番反響が大きいのは、このオートマティックバッチングってやつですね。つまり
Guest
ま従来リアクトってこうステートのアップデートをこう連続して、何回も行うと、
Guest
ま一部の場合を除いては、毎回毎回リギにサイレンダリングが走ってたんですよね。
Guest
それをまリアクト18からは、自動的にこうバッチしてくれる、つまり、1回のサイレンダリングしか怒んないようにしてくれる
Guest
ていうのがありましてま、これはまあまあ何も考えずに使えて、普通に便利だっていうことで、なかなかその意味では反響が大きかったかなと思います。
Guest
そうですね、これは特になんかあのこちら側で対応みたいな。そういう結構バッチって、なんか別に
Guest
それは自動でやってくれるもんなんですかね。
Guest
あ、そうですね、こっちは従来通り、普通にセットステートみたいな指出しを並べて書くだけで、自動的にリラフト18からは
Guest
あ、パッチされて、1回のサイレンダリングになるっていう流れみたいですね。
Guest
はいはい、
Guest
これは従来そういうコードがもしあったとしたら、リアクト18にアップデートしたら、自動的にバッチリま挙動が変わることにはなるんですけど、ま、ある意味では、
Guest
プリーキングチェンジであるところなんですけど、ま、これはさすがにリスクが少ないだろうっていうことで、リア18では、自動的にそういう風になるようになってますね。
Guest
確かに、それ前提にコード書いてるっていうのは見たことないです。まあ、そうですよね、
Guest
なんかでも一応なんかバラバラなアプレートっていう需要もないわけではないらしくて、見た感じ。新しいオフトアウトのためのバッチしないためのAPIみたいなのが
Guest
提供されるらしいですね。なんか、フラッシュシンクみたいな、そんな名前だったと思います。あと、まあそれとは別の話で、
Guest
私がちょっと気になっていたのが、前々から2019年くらいからリアクトって、次はコンカレントモードだぞ。みたいなことを言ってたじゃないですか、自分も
Guest
結構コンカレントモードがすごい気になってて、生地とか書いたりしてたんですけど、まあ、そのコンカレントモードってのもいよいよ、リアと18で
Guest
リリースされそうな見込みが出てきたわけですよね。ただ、コンカレントモードって名前は実はやめたらしくて、
Guest
コンカレントレンダリングという風に変わったらしいです。
Guest
そう、これまで散々言ってたコンカレントモードっていう名前を忘れてきたのは、ちょっと驚きだったんですけど、中身を覗いてみると、なんか、モードっていうのが
Guest
ゼロが。百科の概念で、コンカレントモードを使うためには、完全にコンカレントモードにスイッチしなきゃいけないみたいなのが、
Guest
やっぱり移行の障壁になるっていう考えがあるみたいだったので、従来、コンガレントモードって言われてた機能、もっと分割して、徐々にオプトインできるように
Guest
していくという、そういう意図を込めて、コンカレントレンダリングという風に名前を変えたらしいですね。
Guest
あ、なるほど、じゃあ要するに動画自体はあの、今回イントモードから変わらずになんかこうなんてすか。段階的にこうできるっていうことを分かりやすくするための
Guest
名前の変更って感じですか。
Guest
そうっすね、そうですね、なんか、ラブ的に多分、ちゃんと段階的な移行をサポートするために、なんか、APIの変更とか、アキテクチャの変更とかあったのかもしれないですけど、
Guest
まあ、目指すところとか、どういうことができるようになるのかっていうのは、基本的にコンファレントモードと言ってた時代から変わらないとは思います。
Guest
昨日の一覧見てたら、ユーズトランジションとか、ユーズディファードバリューとか。あと、サスペンスリストっていうAPIが名前が上がってますけど、この辺は
Guest
まあ以前出ていたホンカレントモードのエクスペリメンタルなビルドにもま入っていた機能ですね。なので、その辺はそんなに変わらずに
Guest
使っていけるリアクト18で、無事に入りそうという見込みなんだと思います。
Guest
なるほど、ありがとうございますじゃあまあ次18ではもう次に使える。もうちゃんとなんか
Guest
こう正式な機能として使えるっていう。
Guest
そうですね、そうですね、ほんとに楽しみですね。
Guest
あ、じゃあともう1つ反響が大きかったのが、ssrが強化されるっていう話ですね。
Guest
はいはい、
Guest
つまり、従来と17枚のssrというのはま、基本的にはまデータを全部取ってからaml1発ばって出力して、それを
Guest
クラウンドに送るみたいなことやってたんですけど、それがどうもまだ満足いかないと。つまり、
Guest
ssrって、大抵はデータベースとかから取ったデータをhmlに混ぜ込んで、こう表示できることに意味があると思うんですけど。
Guest
でも、よく考えると、ページの中で、実際にそのデータベースから読んだデータを使ってるのは一部分だけで、他の部分はま極論ssr
Guest
じゃなかった極論データベースから取ってきたデータがなくて、も、ま表示はできちゃうはずなんですよね。
Guest
なので、そういったものまで、データベースからのレスポンスを待ってるのはちょっと。なんかベストではないっていうことらしくて。なので、
Guest
なんか、データベースからもうデータを待ってる途中にもうhtmlを送り始めるみたいな。そういうことが、
Guest
リアと18ではssrでできるようになるらしいです。
Guest
おお、なんかあれですよね、あの、結構ssrと言いつつ、
Guest
ほぼあの側だけしかかいかい。最初は帰ってこないみたいなのとか、たまにはいありますけど、なんはいい、これはい
Guest
はあれですよね。その今回の形でなんか
Guest
な治るっていうか、あの解決策を得られるみたいな感じですよね。うん、
Guest
そうですね、リアクト18のssrだと、本当にまデータを使う部分
Guest
だけはまだまあ、1番最初のレスポンスhtmlでは帰ってこなくて、それ以外はもう全部ちゃんと埋まってるみたいな状況にはなるらしくて、
Guest
しかも面白いところがなんかssrの最中にデータが読み込み完了した場合、
Guest
あっていうのは、まあ、サーバー側でデータベースとかからデータを読み込むのが終わった場合、そのhtmlのスリーの中で、なんかjavaスクリフトを送ってきて、
Guest
すでにレンダリングされたローリングの部分を書き換えて、下のデータを入れるみたいな。そういう挙動らしくて、はいはい、だから、
Guest
なんかデータが来たら、ローディング画面から、実際のデータにサイレンダリングするっていう処理さえも、クライアントのリアクトがなくても、ssrだけで動くという
Guest
あ、途中途中で差し込んだりっていうことができるんですね。
Guest
そうそうそうなんですよ、そうだから、amlは上から下に。はいはい、データが流れてくるだけだから、普通はできないんですけど、
Guest
そこはなんかamで流れてるから、途中に唐突にスクリットタが出てきて、ジャバスクリットで、前にレンダリングしたやつを書き換えるっていうま、ちょっとア技みたいな感じで、
Guest
うん、クリアしてるわけですね。
Guest
ああ、なるほどなんかあれですね、その今あの予算が書かれた
Guest
やと、18アルファバン発表まとめのブログを読みながら話してるんですけれどもあれですね。このそれ
Guest
ありがたいあ、はい、
Guest
あのhtmをなんかその1回そのスクリプトを埋め込んだ状態で送ってるのかと思いきや。
Guest
そっか、そうもう送ってる途中でも、うん、あ、そっかってなると、ま、その
Guest
あの、別にその送ってる途中で、そのhtmlの前のあの、もう既に送ったところを書き換えたりとかっていうところが
Guest
できるから、挙動としては、はい、多分挙動としては、なんか最初まローリング中のhtmlが一瞬でサーバーから送られてきて、
Guest
だけど、まだなんか、サーバーからのamのストリームが閉じてないみたいな状態が多分続く
Guest
で、サーバーバーで読み込み完了したら、サーバーバでssrして、できたら、ももにスクリフトがサーバーからamlで送られてきて、
Guest
それを読んだクライアントがレンダリング済みのところを書き換えるという挙動ですね。
Guest
はあ、なるほど、すごいあれあれですね。サーバーサイドレンダリングそこまでやるかっていう
Guest
そうま、多分そうしてる理由は、クライアント側でフルのリアクトを読み込むのは、多分もっともっと時間がかかるだろうっていう。
Guest
ああはいはいはい。
Guest
クライアント側でリアクト読み込まれて、サイレンダリング走るのを待つよりは、サーバー側からスクリフト送って書き換えちゃった方が多分早いという
Guest
そういうことらしい。なるほど、
Guest
すごいすごいですね、
Guest
そうしかも、なんかもっとすごいことがあって、なんか、そういうサーバーからhtmlが送られてきてる途中に
Guest
クラウントであ、リアクトの読み込み完了しちゃったみたいなことも起こり得ると思うんですけど、
Guest
そういう時は、すでにレンダリングされたところだけ、ハイドレーションが進むらしくて、ssr完了前から、
Guest
部分的にハイドレーションが行われるという。個人的にはそうこれ見た時、そこまでやるかって思いましたね。
Guest
これすごいですね。つまり、その追加のそのレンダリング結果をえ、受け取ると同時に、まあ読み込みもらって
Guest
そうですね。ほんと。もうこれはssrで理論的に行ける催促まで行ったなって印象ですね。
Guest
これ、あの、私最初読んだ時、ちょっとあのあれを思い出しましたね。今年の
Guest
冬頃ですかね。リアクトサーバーコンポンレンズっていう、
Guest
はいはい、
Guest
あの、あ、rfcが出たと思うんですけど、
Guest
ありありましたね。
Guest
それに、近いのかなと思ってたんですけども、その送る仕組みが全然違いますね。さっきの話を聞くと、
Guest
そうっすね、ま、ssrssr独自でなんか進化してる感じですね。でも、なんか、
Guest
サーバーコンポーネントだと、クライアントとサーバーのやり取りが、なんかamじゃなくて、変なjソみたいなものが送られるはずで、
Guest
ssrはそうじゃなくて、あくまでhtmlを送ってくるんですよね。
Guest
まあ、その辺が違うのかなと。あと、そもそもサーバーコンポーレンスってssrっていうか、ユニサルレンダリングだけじゃなくて、ステードルアップデートのサイレンダリングの時も、
Guest
いちいちサーバーに問い合わせるみたいな。そういうアキテクチャだったと、自分の記憶はあ、そうそうそうそうですよね、なので、
Guest
そういう点でも、まあ、ssrとはちょっと別物かなっていう印象ですね。
Guest
まあ、そのまどっち使おうかっていう問題ではない感じはしません。どっちも伝えますけど、ssrのこっちは
Guest
あれですね、めちゃくちゃそこまでやるかっていう感じがします。
Guest
そう、これはなかなかすごいと思いますね、
Guest
なるほど、はいでは、じゃあ、さっきあのサスペンスの
3. React 18におけるSuspense
Guest
話がちょっと出てきたと思うんですけれども、まサセンスのなんか変更っていうか、こう18で
Guest
新しく入ってくるっていうか、まあまだそもそもサスペンス入ってないんですけど、あの、正式に入ってないんですけれども、18で変更されるところっていうところを
Guest
もう少し聞いてみたいなと思います。
Guest
そうですね、確か、リアクトからの発表でそんな記事というか、ディスカッションが1つありました。
Guest
リフェラルチェンジと、サスペンスンリアクト18みたいなんですけど、これ割と。なんか従来の
Guest
リアト16でのサスペンスっていうのも、リアクト16でも、サスペンスは実は存在していて、ただ、リアクトロットレイジーと組み合わせるという音だけが存在していたんですけど、
Guest
そん時なんか、サスペンスの中で、片方のコンポーネントがサスペンドして、もう片方はそうじゃないみたいな時に、なんかもう片方の
Guest
サスペンドしない方のレンダリングは進むか、進まないかみたいな挙動の違いが、リアルと16から18で発生してみたいですね。
Guest
ただ、これはまい一応まブレーキングチェンジだから説明されてるっていう側面があると思っていて、多分
Guest
実用上そんなに問題になることはないんじゃないかなって思っています。だからこそ、リアクトでも、まあ、オプトインとかじゃなくて、
Guest
ベーキングでチェンジを起こしちゃうっていう選択肢を取ったのかなと思いま。
Guest
はいはいはいま、そもそもサッセンス自体があのちゃんと導入されているわけではないっていうま、その実験的な機能、
Guest
一応、一応そういうこと扱い
Guest
そうですね。
Guest
ただ、今後リアクト18が出てきたら、このサスペンスっていうのは、ものすごく重要になってくると思っています。
Guest
っていうのも、さっき、ちょっと今までコンカレントモードってたものが、コンカレントレンダリングに名前変わりましたよ。みたいな話をしたと思うんですけど、サスペンスは特に
Guest
変更なく、サスペンスのままでまサスペンスの挙動とか、セマンティクスっていうのも、ほとんどま、最初にコンカレントモードが発表された時から変わってないんですよね。
Guest
つまり、このサスペンスこそがまあ、コンカレント時代のリアクトのま基礎というか、コアというか、ベースになるものなので、
Guest
なんかリアクト18能、新機能。ちょっと色々興味あるなっていう人は、まずこのサスペンスをがっつりと理解するのがとてもおすすめだなと思っています。
Guest
なるほど、はいはい、確かに、さっきのssrのところとかも普通にサスペンスをそうサスペンスがこう境目になっているので。
Guest
あ、そうなんですよなんか、最初ローリング中の部分は、ローリング中のhtmlが最初は送られてくるよみたいな話をしましたけど、
Guest
どこがじゃあローリング中なのかっていうことは、我々がコンポーネントツリーの中にサスペンスって書くことによって
Guest
まリアクトが知ることができるっていうアクテクシャーになってるので、その意味で我々が適切にこうサスペンスを配置してあげることが
Guest
ま、ベストのパフォーマンスのために必要になってくるんですよねね。幸いにもまさっきも言った通り、サスペンスの概念しては、最初にリアクトが
Guest
コンカレントモードとか言い出した時からあんまり変わってないので、多分既存の情報とかもサスペンスに関しては結構あると思うので、ぜひですね。
Guest
ほんとに、リアフトの18のこういった新しい縄の恩恵受けたいっていう方は、今からサスペンスについて予習しておくといいんじゃないでしょうか。
Guest
はい、もう是非しよし、私もなんか説明できるほどわかっているかというと、そうでもないので、まあ、
Guest
あれですね、説明できるレベルに勉強したいですね
Guest
ね、ほんとにまとても面白いので、ぜひ勉強してみてください。
4. startTransitionのGlobal API化
Guest
で、まあ、なんかいきなりそのサスペンスとか出てきて、
Guest
もういきなりここのこ。これからの話はもうサスペンス前提みたいな感じになってしまい、申し訳ないんですけれども。あと、もう1つ変更
Guest
点でいうと、スタートトランジションのグローバル、picというところが、はい
Guest
はいはい、このスタートトランジションていうのが、リアクトのディスカッションで、ニューフィーチャーとして、説明されてるんですよね。
Guest
実際、完全に新しいってわけじゃなくて、マグローバルapaか、グローバルAPIかっておっしゃっていただいた通り。
Guest
なんか、リアクトコンバレントモードの時のユーズトランディションというAPIを経由することで、既にこのスタートトランジションソートのものを使えたんですけど、
Guest
まあ、今回のアナウンスでは、ユーズトランディションを経由しなくても、直接スタートトランディションっていう関数が
Guest
リャフトからエクスポートされて、使えるようになりましたよ。っていう、そういう話なんですよね、なので、
Guest
ま、スタートトランジションという概念しては、実は完璧に新しいものではなかったんですけど。ただ、今回
Guest
のリアト18の発表にあたって、なんかリアクトチームがすごい。なんか、ドキュメンテーション頑張ってるじゃないですか、
Guest
なんか、そん中でこのスタートトランディションの説明を見ると、従来よりかなり分かりやすく明確に書かれてるなって印象がありまして。なんか、
Guest
昔のリアクトコンパレントモードのドキュメントで説明されていたやつを見ても、トランジションで結局なんなの。っていうことは、いまいちピンと来なかったんですよ。
Guest
でも、今回は公開された説明を見ると、トランジションっていうのは、まあ、優先度の低いステート更新だよって、めっちゃ明確に書かれていて、
Guest
んで、順も前々からこのユーズトランディションは理解していたつもりだったんですけど、今回説明を見て、ああ、改めて勉強になったなと思いましたね。
Guest
ふんふんふんなんかとらトランジションってあれですよね。こい、最初聞くとすごいあの、アニメーションのトランジションかみたいな。
Guest
はいはいはいはいそ、
Guest
そういう感じをしますね。
Guest
そうですね、なんか今となっては、なんかトランジションって名前がベストなのかどうかは正直わかんないんですけど、まあ、概念としては
Guest
ちょっとなんか完了するまで待たされるかもしれない。時間がかかるかもしれないっていう意味で、ちょっとアニメーションのトランディションとかかってるのかもしれないですね。
Guest
そうすね、優先度が低いと何が起こるかというと、なんか
Guest
なんかトランジションとして行われたステート更新に対して、こうまレンダリングは走るじゃないですか。関数コンポーネントを再レンダリングするとか。
Guest
でも、もしそういうことをしている最中に、なんかトランジションではない、優先度の高いステート更新が起こった場合、
Guest
なんか、そのトランジションのための仕事は一旦破棄されるんですよ。一旦やめて中断してというか、もう多分消しちゃうと思うんですけど、
Guest
それでトランジションじゃない。つまり、優先度が高いステート更新の処理の方に即座に移っていくと、
Guest
つまり、実際にステート更新が起こった順番に関わらず、まトランジションよりは、トランジションではない、ステート
Guest
の更新がま優先して、レンダリングされるというま、そういうある、そのスケジューリングっていうんですかね。
Guest
が、できるようになるっていうのが、このトランジションの意味だと思います。で、まさにこのなんか今やってる仕事を中断して、もっと優先度の高い
Guest
やつを先にやるってのが、多分、リアクトがずっと昔からやりたかったもので、このコンカレントレンダリングっていうのも、こういう
Guest
だから、今やってるのを中断できるっていうことを指してるはずなんですよ。だから、リアクトがコンカレントとか言い出した時点で、多分ゴールは
Guest
まひとまずのゴールはここにあったんですよね。つまり、優先度の低いステート更新という概念を作ってま、それの間で
Guest
こうスケジューリングできるようにする、これが、リアクトがずっとやりたかった1つのゴールなんだと思います。
Guest
なるほど、あの、結構なんかそこいっぱいステートがこうなんて言うんすかね。更新されたとしても、なんかこう裏ではなんかこう
Guest
なんよなにまとまっててでな。最終的になんかこうエフェクトとして実行されるのはなんか
Guest
なんていうか、ま、大体1回っていうのが前提になっているっていう感覚はあるんですよね。ただ、まあそれはうん、
Guest
あの、それをこう明治的にこう送らせるっていうことで、その優先度を下げるみたいな自体が求められるっていうところもあります。あの、そういうところが求める状況だと、まあ嬉しいですし、
Guest
まあ、あとはあれですよね。そのちゃんとそのすごいより、このリアクトの考えに近づいた感がありますよね。その、例えば、エフェクトがなんかこう
Guest
なんか依存したとして、それが何回起こるかとか、まあ、そういうところとかっていうのがま、今までだとこう。なんか、1回1回とか
Guest
なんか変更されたら
Guest
まとまって1回実行されるみたいなのは、なんとなく、そういう感覚はあったもののま、これからそういうなんかこう
Guest
優先度が色々こう決められるようになってくると、まあそのへん。あの、すごい何回も起こる可能性があるしま。それを前提にした
Guest
動きみたいなのが、どんどんこう求められてくる。あ、
Guest
そうですね、それはなんかとってもあると思います。
Guest
それ、なんか、さっきちょっと言ったま。レンダリングを中断できるっていう仕組みが導入されたことによって、
Guest
ま。逆に言うと、ちょっと重い。レンダリングでも、ポンポンポンポンと、まあ、発酵できるようになってきたんですよね。
Guest
それはなぜかというと、そういうのをま、優先度が低いとマークしてることによって、ちょっと贅沢して、重いレンダリングを走らしたとしても、ちゃんと
Guest
もっと重要な即座に画面に反映すべき優先度の高いものはまリアよ。なに
Guest
ちゃんと優先度を高めて反映して、uxを落とさないでくれるっていう。もっと気軽にレンダリングをポンポン走らせられるようになったかなって印象はあります。
Guest
確か、リアクトがうん、トランディションの例として、なんかちっちゃい。
Guest
なんか、検索欄みたいなコードサンプル出してましたけど、ちょうどそこで、そういうなんか、気軽に重めのレンダリングをポンポン走らしていくみたいな、
Guest
そういう考え方のコードになっていたと思います。
Guest
あれですよね、なんかそういう時って大体私すごいありがちなのは、その遊説ェクトの中で
Guest
こうなんですか。あの、あ、あの、無縁のアシンク関数作ったりとか、そういう感じで。なんかまあまあそれで
Guest
いいっちゃいいんですけど、それって、あのそらそれがあの、今回のまスタートトランジションで囲ってあげるだけで、ま。どれだけ重い処理がその中であっても、
Guest
なんか優先度下げて実行してくれみたいな
Guest
ま、まさにそうだと思います。
Guest
なんか、そう、リアトのqアンドウェイで、そうなんか、ちょっと。なんかそれこそセットタイムアウトとか、遊説フェスで送らしちゃダメなの。みたいな。そういう気は確かあったと思うんですけど、
Guest
確かリアトの答えはなんかそれは無駄に遅れるよみたいなことが1つで、というのも、いくらトランジションで、優先度が低かったとしても、
Guest
他に仕事がやることがなければ、リアクトは即座にま、レンダリング始めてくれるわけですよ。だから、
Guest
本来優先度が低いからといって、無駄に送らせる必要がなかったんですよね。あ、そのなんか昔存在していた無駄っていうのを、ちゃんと
Guest
トランジションっていう風に表現しておくことで、その無駄がなく、ベストな仕組みで、かつuxも担保できる。そういうところは、ゴールだったのかなって思いま
Guest
はあ、なるほど、なるほどね、なんかもう絶対タイムアウトとか、もう、そんなブラウザの持ってるやつよりも、リアに任せてしまった方が早いという自信が
Guest
あるという。
Guest
そうですね。そうです、そうですね、
Guest
いや、すごいなで、あと、最後にもう1つ。
5. StrictModeでのuseEffectの挙動
Guest
あのまあ変更点変更点っていうか、まあこう気を付けなければいけない点みたいなのが挙げられていまして。ま
Guest
あ、あと1つストリックトモードでの遊説、フェクトの挙動の変化っていうところが、さんが上げていました。じゃあ、ここもう少し
Guest
見てるっていうのはよろしいでしょうか。
Guest
あ、これをまたtwitterで結構話題になってましたよねえ、遊説フェクトの動作変わるのみたいなああ、はいはい、
Guest
しかも確か結構衝撃的な書かれ方をしていて、というのも、遊説フェクトでよく第2引きそうにかの配列渡したりするじゃない。はいですか。
Guest
そしたら、もう、リアクトがマウントされた時に1回だけ走りますっていうのが従来の挙動だったんですけど、
Guest
なんとリアクト18両はそれが崩れてしまいますよ。という発表がされていて、まあ、最初は
Guest
ストリクトモードの中だけなんですけど、こうコンポレントがマウントされた時に、遊説フェクトのマウントエフェクト、つまり、最初の
Guest
まあ、なんでしたっけ。エフェクトが即座に走って、なんかそのあとわざとあそこにアンマウンドにエフェクトをもう1回走らされてしまうという
Guest
のが最大。今回、このストリヒトモードで起こる遊説、フェクトの共同の変化ですね。1回マウントをしたと思ったら、即座に
Guest
アンマウントされてしまうんですよ。ま、あ、くまで遊説フェクトだけに限った話ですけど。で、そのあともう1回マウントされて
Guest
終了みたいな。つまり、従来コンポーネントがマウントされた時は、遊説フェクトのマウントが1回走って終わりだったんですけど、
Guest
スリフトボードでは、わざとマウントアンマウントマウントって、余計に処理が走っちゃうんですよね。これによりま1回コンポントマウントしたら、
Guest
なんかたとえ第2引数をかの配列にしたとして、も、まマウントアンマウントマウントっていう風に、マウントが結局2回走っちゃう
Guest
ていうのが、まあひと一言でもないですけど、今回、ストリクトモードに対して、有説フェクトで起こった変更ですね。だから、例えば、
Guest
なんかこのコンポーネントが表示された時に、なんかイベント発火して、トラッキングします。みたいなことをしてる時は、意外と問題になりやすいパターンで、
Guest
そういうことをしてるときは、1回のコンポーネントがマウントされたら、トランキングは2回送られちゃうわけですよね。
Guest
そうですよね、
Guest
そうなんですよ、だから、そういう意味で結構これはまあおっきな変更かなという風に思います。
Guest
これはあれですよね、あの、わ、わざとそうしてるんですよね、すごいあの気をき、気が付くための
Guest
あ、それはもちろんそうですね。リアクトのストリクトモードっていうのが、なんか、変なコンポーネントというか、正しくないコンポーネントあり出すためのもので、
Guest
あ、ストリフトモードの中に書かれたコンポーネントだけ、わざとこう変な挙動が起こされるんですよね。あ、もちろんこれは開発環境だけで、プロダクションでは、
Guest
ストリクトモードに囲っておいても、何も怒らないんですけど、なんかリアクト18より前からあったストリクトモードの動作だと、関数コンポーネントが
Guest
わざわざ関数2回呼ばれて、1回は無視されるみたいな、そんな挙動がスリフトモードであったと思って、これもちょうどコンカレントモードで、
Guest
なんか関数レンダリングしようと思って呼びだし、関数呼び出したけど、やっぱやめたいみたいなことが実際に起こり得る。だから、そのための布石として、昔から
Guest
ストリクトモードに感想に通うっていう挙動があったわけなんですけど。なので、今回リアクト18で、このストリクトモードの中で、遊説フェストの挙動が変わるっていうのも、
Guest
同じように、将来の布石だと思ってもらって大丈夫です。つまり、いくらストリフトモードの中で、
Guest
なんかユーフェクトの中でマウントが2回走っちゃうよ。みたいなことがあったとしても、じゃあ、リアクト18にアプデートしたからといって、プロダクトで実際にそういうシチュエーションが
Guest
怒るかというと、ま、今のところは多分リアクト18.0の段階では起こらないはずです。そうなんですよ、
Guest
じゃあ、なんでこんな変更する人モードに入れたかって言うと、やっぱ将来の席で
Guest
あ、確か一応具体例が1つ書いてあって、それがオス。オフスクリーンエpiって呼ばれてるものなんですけど、コンポーネントが
Guest
マウントされた状態で、アンマアウトされたわけじゃないんだけど、画面から隠れてますよ。っていうことみたい、はいはいはいはいはい、
Guest
状態をま宣言できるようになるってのは、この新しい将来的にリアクト18.何ぼかで導入される
Guest
予定のオフスクリーンAPIなんですけど、なんか、リアクトチームの意図としては、このコンポーネントがマウントされて
Guest
はいるけど、画面に表示されてない、隠されてますって時は、なんか遊説フェスト的には、アンマウントの状態として扱いたいらしいんですよね。
Guest
そうなんですね、
Guest
そ、そうなんすよ、コンポーネントが実際にアンマウントされたわけじゃないんだけど、遊説フィフトから見ると、アンマウントされてる状態みたいな。
Guest
なんでこその結果、コンポーネントワンマントされないけど、遊説フェクトのアンマウントだけ走りました。みたいなことが、
Guest
あ、この新しいオフスクリーンAPIってのを使うと、実際に怒り始めるんですよ。
Guest
ああ、そうなんですね、
Guest
そういうコンポーネントは、再び非表示がなくなって、画面に表示されることがあって、
Guest
そしたらま同じコ包店ト内で、2回目のマウントエフェクトが走るわけですね。実際に
Guest
ま、確かにリニはかってはいますね。なんか、それているものだけマウントうんで、
Guest
はい、だから、これが実際まあ、ある意味リアクト18での結構大きいブレーキングチェンジだなと思っていて、
Guest
なんか実際に挙動が変わるというよりは、遊説フェクトの意味がこう。なんか再定義されたというか、
Guest
なんか遊説フェクトってのはこういうことなんですよ。っていうのを、リアクト18で、ちょっと変えてきたんですよね。リアクトチームが
Guest
そう、完全にコンポーネントのマウントアンマウントっていうライフサイクルに紐づいたものではなくて、
Guest
遊説フェクトってのは、あくまでコンポレントが表示されてる時のための、まあ、エフェクトなんですよ。というような、そういう風に遊説フェクトの意味が
Guest
再定義されたっていう風に理解するのはいいと思います。
Guest
なるほど、あのさっきのあれですよね、コンカレントもり、コンカレントレンダリングやったりとか。ま、あと、その
Guest
優先度の話とかもあったし、あありましたし、結構まあほんとに自身のあれですよね。そう
Guest
ちゃんとどんどんなステートでも、ちゃんと正しく動くっていうことが、今改めて求められたいっていう
Guest
感じですよね。そう、リアクトっぽいですよ。
Guest
ですよね、そうなんです、やっぱこのなんか俺たちについてこいみたいな。こういうやり方は、個人的にはとても好きですね。
Guest
なんか、ここまで頑張って説明して。でも、まあ、リアクトはリアクトチーム的には、
Guest
このなんか考え方を我々に変えてほしいんですよね。これ、遊説フェフトってのはこういうもんなんだよとか、
Guest
なんか、そこをこんだこれだけ頑張るって選択をして、でも、まあ、ちゃんと理想的な方向にま。リアクト、あるいは、リアクトのエコシステムを持っていこうっていう。
Guest
なんか意思というか、着がというかを感じて。なので、リアクト18の説明を見た時は、リアクトチームってやっぱりすごいなって思いました。
Guest
うん、すごいです、確かにちゃんとあれですよね、こうなんか、破壊的変更する代わりに、ちゃんとその
Guest
すごいサスペンスの仕組みがまた入ってきたりとか。っていうところは、まあ、すごいなんて言うんですか。上げるための
Guest
こう、痛みもあるけれども、全然それをにこう見解があるみたいなところがすごいし、
Guest
そうなんですよ、
Guest
感じますね。うん、
Guest
そうなんですよ、結構twitterとかで反応見てると、これはやりすぎなんじゃね。みたいとか、こんなのもうついついていけねえよとかわかんねえよっていう反応も
Guest
まちらほら、ミラーレーはするんですけど。でも、個人的には意外とみんなちゃんとついてくるんじゃないかなって思っていて、
Guest
というのは、そもそも。今、フロントエンドって、ある程度の規模の
Guest
アプリはなんだかんだで、かなり制限iがもう対当したというか、支配しちゃったじゃないですか。だから、
Guest
なんだかんだでま宣言はっていうのは、最初はかなり難しい概念だったと思うんですけど、なんだかんだで。フロントエンドエンジニアがこうついてきてるんで、
Guest
まあ、リアクターがこうやって、また新しい概念って言うんですかね。考え方を入れようとしても、ま、最終的にはちゃんと。
Guest
もちろん、リアスはこの調子で。まあ、成功していけばではありますけど、最終的にはちゃんと受け入れられるんじゃないかなっていう風に、
Guest
個人的には、ちょっと楽観的にこの辺りは思ってます。
Guest
あれですね、ちゃんとすごい私たちは試されてますよね、ちゃんとついてくること。
Guest
そうですね、だから、私としても、だから、皆さんが我々がみんなでついていけるように、情報発信とか、やっぱしていきたいなとはちょっと
Guest
思いました。なので、まさにこのutインサイドのこのリアクト18回なんかもそうで、これを聞いてる皆さんが、
Guest
リアクト18に対する理解をちょっとでも深めてもらえたら、まあ、我々としては大変嬉しいですよね。
Guest
そうですね、というか、まあ私もここれを聞いて勉強します。
Guest
まあ、あのまあ改めて言いますけど、これはまだアルファンなので、まあ、勉強する時間自体は全然ありますよね。数か月少なくともあるということなんで。
Guest
そうですね。そうですね、しかも、元々このアルファバンって、なんかライブラリ作者向けみたいな位置付けで、一応出されてるんですよね。
Guest
はいはい、
Guest
というのも、結構こうやって、いろんなリアクトの新機能とか見てきましたけど、なんか、我々が直接使うというよりは、ライブラリーの中で使われるみたいな機能も
Guest
まちらほらあるような気が。ちょっとしてるんですよ。はい、特にさっき話に出たトランジションなんて、
Guest
なんか、リアスト的には、もう一部の例外を除いたほぼすべての生徒管理が、トランジションにマークしてあげたいくらいの勢いらしいんですけど。
Guest
でも、さすがに後方線の五感から、トランジションをデフォルトにすることができなかったらしくて、ちょっとこれはちょっと予測というか、推測ですけど、
Guest
なんかリアット的にはこう。新しいステート化にライバイとしても、デフォルトがトランジションになってるようなで、トランディションじゃないものをプトアウトできるような、
Guest
そういう感じのステート管理ライブが出ることをちょっと期待してるんじゃないかなっていう。ほんとにただの推測ですけど、
Guest
そういう気はちょっとしています。
Guest
確かに、なんかリコイルはすごいいいですよね。そのファン、あのフックがちゃんとあの普及普及してから、ああいうhaがせた
Guest
ので。ええ、まあ、今回もそういう。まあ、トランジション
Guest
でこうスタートトランジションで、こうラップするっていうところがこううん
Guest
ま、具体的にどどういう感じになるのかは全然想像つきませんけど。
Guest
そうですね、まだこうリアクトの進化が、ただ書き方を変えるだけじゃなくて、ライブラリの進化もちゃんと先導する形になってるのが、
Guest
個人的にはすごくいいなと思ったところですね。あと、それで言うともう1つだけあって、そうなんか、
Guest
リアクトで、なんかキャッシュっていう名前のコンポーネントが、エクスペリメンタルのものとして作られたらしくて、これもリアクト18に入る気がするんですけど、
Guest
なんかざっくり言うと、まリアクト本体の中にこう。なんか、エピア呼び出しの結果とかをキャッシュできるような
Guest
キャッシュするのをサポートできるような仕組みが導入される予定らしくて。っていうのを聞くと、え、何。それって自分は思ったんですけど、
Guest
よくよく見ると、我々が直接リア島の内部にある脚手を叩いて、なんかキャシを更新するとか、そういうことをするわけじゃなくて、どっちかって言うと、
Guest
なんか今使われてる。なんか、データフェッチングのライブやり、なんかswrとかですね。あの辺のキスの内部実装として使われること
Guest
が想定されているっぽい、そういう新機能も、実はリアクト18に入るらしいんですよね、
Guest
なんか、あれみたいですよね、コンテキストみたいですよ。
Guest
あ、そうですね、なんか、コンテキストのなんか、もうちょっとキャッシュオに特化した版みたいな、そういう印象でした。そうなんか、そういうのも密かに入るらしくて、
Guest
ま。多分、その辺我々が直接触ることはあんまりなくて、多分ライブラリー系より触られると思うんですけど。ま、そういう風に
Guest
ま、エコシステムもちゃんと理想的な形に持っていこうとするリアクト本体でやった方がいい部分は、ちゃんとリアクト本体に取り込むというか、
Guest
そういうのも、このリアクト18の発表からは見えてきましたね。
Guest
ま、キャッシュはまだあれですね。こう徐々に。まあ、もしかしたらこう広がっているのかもしれないですね。あのま、
Guest
基本そのコンテキストとかも元々そのライブラリオートみたいな感じだったと思う。
Guest
あ、確かにそうですね、なんか、ライブがちょっとつかめてみて、あ、これは便利だっていう風になったら、だんだんこう我々が直接使えるような、一般向けの
Guest
ものも、何か発展してくるかもしれなくて、確かにそうなったら、とても楽しみですね。
Guest
そう考えるとあれですよね、こうし、リアクトリの導入の仕方ですね。すごい。
Guest
確かに
Guest
うん、いや、めちゃくちゃ密度の高い話でしたね。
Guest
では、今回は先日発表された薬と、18アルファについて、お医者さんに聞いてみました。
6. クロージング
Guest
ラインのフロントエンド組織UITでは、このような技術的なキャッチアップを日々行っております。
Guest
UIT以外にも、毎週の社内勉強会でロイドの情報交換を行ってい、
Guest
今後もUITミサイルを通して、このような情報を外部に発信していけたらと思います。
Guest
最後に、現在、LINE株式会社では、インターン中途採用ともに大募集しています。
Guest
このポッドキャストを聞いて、第に興味を持たれましたら、小のと1番下にある巨人ページから、ぜひアクセスしてください。それではさんありがとうございました、
Guest
ありがとうございました。