音声書き起こし
1. オープニング
Guest
ユーザーインターフェイスと、テクノロジーを愛する開発者のためのウィークリーポート、ギスト、テインサイド。今週もやっていきたいと思います。
Guest
今回はですね。私とえた田さんえ、スプリングレーニングさんのえ、2人ですねえ、ウェブパのチューニングについて話していきたいと思います。
Guest
えた田さんよろしくお願いいたします
Guest
よろしくお願いします。
Guest
はい
2. webpack チューニングを実践してみた話
Guest
ええというわけで、最近結構テンサイドはなんか何かを紹介して、最近やった仕事を1つまとめて紹介するって話がまあ多かったかなと思うんですけど、ちょっと今回は経路を変えて、最近やってる仕事の話をしようかなと
Guest
思っておりまして。
Guest
はい、
Guest
その一環として、ちょっと。最近あの前にUITミートアップ、6月ですかね。あえにやったitミートアップで、フロントエンドツーリングの話を結構していたかなと思うんですけど、
Guest
あれから
Guest
まあ1か月半ほど経って、はい、最近なんか、た田さんがウェブパックのチューニングを色々やってるっていうことで、なんかちょっと話聞きたいなと思って、今日はお時間いただきました。はい、
Guest
で、ちょっとお聞かせいただければと思います。はい、
Guest
そうですね、これはあの、まあ元々ちょうど7月末ぐらいからちょっと時間が空き始めたので、
Guest
まあこうなんですかね。か、開発環境の改善とかやっていこうかなということで、まあ
Guest
またまたまではあったんですけれども、そういうフロントエンドツーリングの分野のマイラップのチューニングができそうっていうところがあったので、そこに取り組んだっていう話ですね。
Guest
で、まあ前提で言うとまeブバック4でミードする。まあ、あの伝統的な
Guest
ウェブアプリケーションがありましてですね。これがあの、まあ元々私が
Guest
結構な関わってはいたんですけれどもま、最近そのプロジェクトが関わることなくて、最近、あの久しぶりにそういう関わりが
Guest
できるっていうことになって、で、あのこう開発環境を立ち上げよう。久しぶりにやったら、尋常じゃないぐらい遅いっていう
Guest
そうですね。そのバックデブサーバーを立ち上げ、大体6分から78分な
Guest
ブレがあるんですけど、それそれぐらいかかるっていうちょっとやばかったですね。
Guest
なんか、前こんな遅くなかったんですけど、知らないうちに、あの、もちろん私以外の会社がいっぱいいるので、かい。それ、色々こう
Guest
増えていったのかなっていう気はするんですけど、それにしても遅すぎだろうっていうことで、まあこれを大体
Guest
いいし、この1週間ぐらい取り組んでましたね。うん
Guest
ま、ちょっと時間空いたからせっかくだし、
Guest
改善している、はいっていう感じですね。なるほど、
Guest
なんかどういうことやってたんですか、
Guest
ええって書いてます。そうですね、はい、あのまあ、もちろん何かをビルをする、
Guest
何に時間がかかっているのかなというところで、ちょっと。まあ、最初のなんて言うか、1歩がほんとはなんて言うんすかね。計測
Guest
した方がいい。よかったんですけれども、なんかすごいなんて言うんですかね。その、例えば、esbドローラーとか。最近あの早くなりそうみたいな話も
Guest
やりましたし、なんか、手取りバイクはしくなりそうなところがいくつかあったので、それをまあ、手当たり次第にやっていったっていうのが最初ですね。
Guest
ああ、はい、
Guest
そうそうなんですよで、結構
Guest
あのまあさっき言ってたesbトローダーとかも。まあ、とりあえず導入してみようっていうことで導入してみたら、
Guest
まあ、ちょっと早くなったってぐらいですね。で、ただ
Guest
まあ1分ぐらい体育館として短くなって、確かに早くなるなとは感じたんですけど、まあ、そんなに1分って6分に対して
Guest
対してそんなに体感として
Guest
変わらないなっていう。まあ、あの、もちろんこれも導入しても良いとは思うんですけれども、まあ、もっと別のところが原因があるんじゃないかとか。
Guest
あとは、まあ大体こういう時のセオリーというか、上等手段としてこう並列化とか。あと、
Guest
なんかこうキャッシュとか、そういったところがあると思うので。はい、それをこう順番に試していった感じですね。あとは
Guest
で、例えばまあ、あのスレットローダーっていう、その並列化のためのローダーがあるんですけれども、それを使ってみたら、
Guest
そんなに変わらないな、みたいな。スレットローダーを導入してみて、あんまりあの感じなかったっていうところなんですけれども、まあ、これ
Guest
はまやる前からちょっと薄うは感じていたんですけれども、あんまりそのウェブファックの平でって、
Guest
結構あの限定されてるかなと思うんですよ。その依存が依存をこう、あの、最初に見つけないといけないっていうところがあって
Guest
っていうところで、そのスレットローダーっていうのは、その複数こう。あの、ローダーを
Guest
があった時に、それをあのワーカーで別のワーカーに逃がすっていう感じの動きだったんですけど、そもそもあの、そんなにあの手の込んだあの、バックの設定とか入ってなかったですし、まだ単純に
Guest
数が多いからっていうところで、多分そのオーバーヘッドの方が、
Guest
そのそれとをアーを立ち上げるためのオーバーヘッドがあったりとかして、全然あんまり効果なかった。ああ、なるほどね、はいっていう
Guest
単純に1つのローダーがま閉めている時間がそうあ、そのコはコードが増えるにあたって線形に増加してて、そこが重かった
Guest
というとこです。
Guest
あ、そうですね、まあの規模間で言うとですね大体そのページ数単位で言うと10数十ぐらいあって
Guest
で、まあファイル数もあとそうです。で、ペンデンシーもちらっと見たら2万5000とか、ページ数ほうほう
Guest
ていう感じだったんで、まあ、単純に数が多いから遅いんだろうなっていう予感ははしていたので、多分難しいだろうなっていうとこでした。
Guest
で、あとキャッシュですねキャッシュははい、もう最初ビルド遅いのは諦めて、まあ、それを
Guest
あの基本的にウェブバックって、そのキャッシュしない方針だと思うので、それをあのキャッシュする方針に、
Guest
あのデベロップ環境ではやろうっていうところ、はいはいはい、あとはこれは
Guest
まああのキャッシュキャッシュウェブパックで検索して、出てきたキャッシュオーダーを導入したり。っていうところで、ま、これもあんまり
Guest
差はちょっと感じなかったですね。ちょっと原因までは調べてないんですけれど、
Guest
あ、初回だけじゃなくて、差分も結構そんなに有意な差はキャッシュでは。
Guest
そうそうですね。はいすね、うんていうところで、まあ、あとはその
Guest
キャッシュがあんまりその聞いてないんじゃないかなっていう。そのキャッシュローダーの導入したところでは、はいてい
Guest
ま。これもあんまりよくないんですけど、そのそうそういう想像をして、で、あの、そのさ、あの
Guest
こう手動でキャッシュをするっていうのを、はいはいはいいのだしました。で、これはどういうものかと言いますと、そのまページの中がその
Guest
ダイナミックインポートで、このあのコンポーネント単位で分かれてるんですけれども、例えば、その
Guest
開発中って、その複数のコンポーネントを同時に開発するってことはなくて、
Guest
まあ、ある1つの梱包についてこう、フィーチャーをあるフィーチャーを追加するっていう。はい、流れになっているので、ま、それ以外のあの
Guest
フィーチャーのコンポーネントは、もうあらかじめそのビルドしておくっていう形
Guest
をやっていて、ま、それをあの手でやあの、そのコンポーネントだけをビルトするっていう、あの、ウェブパックの設定をもう1つ用意して、で、
Guest
その後にリゾルブのエリアですね。エリアで、あの、はい、そのリードした先のバンドのバンドラーをお読みこえー指すように設定するっていう
Guest
のをやってみてま。これが大体2分ぐらいになりましたね。はい、なんで、
Guest
まあ、やっぱり単純に数が多いので、1度ビルドしたものを、あの残しておくっていう方針がやっぱり良いっていうところは、ここでわかりました。
Guest
で、そうですね、ま、なかなか
Guest
今今まで結構なんて言うんですか。推測でこう色々あのあてずっぽにやってきたんですけれども、多分ほんとは良くなくて、
Guest
はいはいはい、
Guest
そうですよね、あの、このこの時に結局計測をしようというところになりましたね。
Guest
割と今時系列で話してるんですけれどもで、え
Guest
と、あ、でもなんかあれですね。あの、結構初めから計測しようって思うと、多分1週間で終わらないとすぐになっちゃったりするんで、そういう意味では、
Guest
とりあえず試行錯誤してみてま。有意な戦略があるとわかってから、ちゃんと継続して戦略的に
Guest
やり出すっていうのは、はい、全然なし、あの、なんでしょう。理想ではないかもしれないけど、実際仕事上でこういう
Guest
開発環境の改善ってできる時間。はい、限界があると思うんで、そん中だと割と
Guest
妥当な戦略かもしれないですよね。あの、もちろん最後まで計測しなかったらダメなんですけど、まずは計測せずに。はいはい、思い当たりそうな手法はやってみて、うまくいくのであれば、そこから
Guest
論理的に潰していくみたいなのは、結構全然業務だ、悪くないかもしれん。そう
Guest
ですよね、今回とかだと、特にその1回の思考が6分っていうことになってしまうので、
Guest
単純になんか試せるものを試した方が早いんじゃないかなっていう。
Guest
そうですね、うん、
Guest
感じにはなってたんですけど、まあでも今思い返すと、やっぱり最初に計測した方がよかったな
Guest
ところですね。うんで、これあのま計測、結局やることになってですね。
Guest
で、ま計測
Guest
で、例えばそのウェブパック計測でググったら大体そのバンドルサイズに関する計測う情報
Guest
がメインなんですよ。で、まあ、もちろんそのバンドルサイズを減らすっていうなると、多分、皆さん最初にバンドローナライザー入れて、
Guest
あの計測すると思うんですよ。ただ、ビルド時間の計測って、実際どうすればいいんだっていうのは、
Guest
これも割と時間かけて調べたんですけれども
Guest
さい
Guest
ま、結局あの、そのノードのインスペクター、あのレバッカーをこうタッチして
Guest
やるっていう。そのノートのはいはいはい、機能を使う形になってで、
Guest
ノードインスペクトでぶパッと立ち上げて、で、クログのデブツールをアタッチしてみたいなっていうところまでは
Guest
やったんですけれども、これ、あの、ちょっと
Guest
これもまだ原因に掴めてないんですけど、そのノードのあのけ、あのビルドまで、あの、そのレコーディングはできるんですけど、レコーディングを保存するタイミングで、黒が必ず落ちるっていうも。
Guest
なるほど、
Guest
ちょっとよくわからなかったんですけど、cromは負荷に耐えられなかったのか、
Guest
なかなか面白い現象ですね。
Guest
そ、そういう感じですね、結構辛い状態になってますね、
Guest
辛いっすね、もう私なんかバンドル系の時間とか、ビルドル系の時間とか、あと、テストの時間とか測るとき、なんか結構めんどくさくて、あの、
Guest
実行結果として出てくる時間をなんかもう10回ぐらい10回ぐらいずつ実行したら平均取れるだろう。はいはい、はいちゃいがちで、サボっちゃいがちなんで、なんか、ちゃんと
Guest
ノードインスペクト使うだけでも、すごい
Guest
ちゃんとして。いやいや、これはほんとにあのが、あの、頑張って調べようと思ったから、そうしてるだけかも。
Guest
そうなんだかんだで、最近のツールって時間表示してくれるんで、なんかそれでサボりがちになっちゃうんですよね。
Guest
ま、でも、それがそれが有効な場面とかもあるかもしれないですね、例えば、例えばそうですよ、その定期、定期的に計測するとかだと。
Guest
ああ、そうですね、
Guest
なんて言うんですかね、こう、実際の環境に寄せた方がいいみたいな。うん、うん、うん、うん
Guest
こともありますし、そのインスペクトをアタッチすることによって、遅くなる時間とかもあるかもしれない。ま
Guest
あまあまあそうですね、
Guest
そこなんで
Guest
まこん。今回みたいに、そのほんとに原因を追求するみたいなケースだと、まあ、ちゃんと認識とやった方がいいっていうとこですね。うん、
Guest
いや、でも、ちょっとcomのインスペクターが死んじゃうのはちょっと厳しいので、こっちは対処していきたいですよね。
Guest
そうですね、これはちょっとまだけ結論出ないんで、もうこの話は
Guest
了解です。まあ、なんかまた続報あったら、はい、
Guest
聞かせてください。はい、了解です。はい、
Guest
いや、でも1回10個あたり6分かかるって考えると、やっぱりそのイデレーション回しづらいっていうのがあるんで、こう継続じゃ継続してたら、1日とか2日終わりました。っていうのになると、やっぱり厳しいよなってなっちゃうんで、
Guest
なんかまあまず思い当たる会双方があるなら、試してみるってのは全然あれかもしれないですね。
Guest
それにしても結構あれなんですね、あの、1回ビルドしようと思うと、自分が触るところ以外もなんかは多分
Guest
そのここしか触らないってことは、いわゆる。あの、なんかマイクロサービスみたいなとか、モノレポみたいな。1個1個の機能が独立してる状態のはいになってるのかなと思うんですけど、それでも結構全部ビルドするように。今なってるんですね。
Guest
あ、そうですね、これはあのなんていうんですかね。そのまもりぽみたいな感じにはなってるんですけども、最終的のは、ビルドはその
Guest
こうセントラルな感じになってきて、はい
Guest
はいはいはいはい、なるほどなるほど、なんでビルトだけま。コードベースジョンは結構モレポで分かれて綺麗だけど、ウィルトが結構重いって感じだったんですね。うん、
Guest
そうですね、あ、
Guest
なんか初めからうまく分割する前提で決めるといいかもしれないですよね。
Guest
そうなんですよね、それもやりたい
Guest
なんか。でも、あの、ウェブパック使ってるプロジェクトってことですし、なんか、ウェイパックファイブで入る。なんか、モジュルフェデレーションとか、うまく使えると、
Guest
ビルドを切り分け、はいはい、うまくこう取り扱えるみたいなのが出てきそうですし、なんか1回そういうのもチャレンジしてみてもいいかもしれないですよね。そういう
Guest
状態だったらなるほど、なるほど、あ、そうですねあ、あともう1つあの試したのがあります。ルファック5にああげるっていう方針ですね。これ、
Guest
あの、最初にwebpをあの導入しているっていう話をしたと思うんですけれども、
Guest
まあ、エファック5にあげたら早くなるんだろうな。というのは、最初から頭の片にはあったんですけれども、あんまりはいはいはい、
Guest
それをやるための時間がどれぐらい必要なのか、ちょっとわからなかったんで、こう避けてたっていう。
Guest
まあ、ちょっとコストかかりますもんね。体感的はい
Guest
という感覚があって、で、あの、これはほんとに昨日とか、
Guest
昨日の夕方とかで試したことなんですけど、ほんとにウェバック5にあげるっていうのもこれも試しました。で、これあの
Guest
結構あの効果があってですね。多分ほんとにウェルパックファイブのり載せ替えるだけで、2分半ぐらいには。はい、
Guest
縮まりましてですね。なんだかんだ試したんですけども、やっぱりウェブファイブあげた方がいいんじゃないかっていう
Guest
のは、それも思いつつありますね。なんで、ウパックファイブを採用してそうですね、ウパックファイブキャッシュも、デフォルトでフォルトというか、その
Guest
あの公式に適応しているはずですよね。
Guest
そうですね、確か提供してる
Guest
はずです。はい、あ、そうですね、パーシステントキャッシングとビルトした情報を、まあ、そのキャッシュファイルシステムに
Guest
キャッシュするっていうところはあったはずなので、ま、これをやれば、さっきのそのキャッシュ戦略とかも合わせて早くなるんじゃないかな、という
Guest
ところははいあります。これは現在進行形ですけど、これでなんとか終わらせたい
Guest
までもなんかあれですね。こう結構やっぱりみんなイエス、ベルドローダーとか。ああいうのを入れると、なんかこう早くな
Guest
なると思ってるとか、早くなってほしいと思ってるじゃないですか、やっぱり、あのパッケージを入れたら、解決するなら、したいっていう気持ちにすがっちゃいますけど、なんだかんだで
Guest
そういうわけではないし、ただ、一方でちゃんと技術をアップグレードしたら、ちゃんと技術の進化、我々の現場に
Guest
コフィットするように。そうそうなんですよ、
Guest
進化してくれるんですね、
Guest
難しいのが
Guest
これだ。あの、まあ遅いのはこういう理由だからっていうのが全然、そのあの環境によって全然違うっていうところがあって、あ、
Guest
あですよね。
Guest
今回の例だと、ほんとにその数が多いので、複合的なあの作戦をとるっていうところに
Guest
なってくると思うし、まあ、もちろん、そのesウィルドローダーを導入したら、めちゃくちゃ早くなるっていう環境もあるので、
Guest
なかなか一概にその回答ができないっていう辛さがある
Guest
そうですね。なんか
Guest
ととることができる戦略を列挙することはできても、どれが効くかっていうのは、現場により切りなんで、どれが効くような課題感なのかっていうのを
Guest
正しそうそうそうに対する必要がありそうですよね。あの、まだいぶ
Guest
こうは飛躍した話かもしれないんですけど、この大学、私が大学院の時のなんか、このdプラーニングのハイパーパラメーターの調整とかも、なんか
Guest
そのなんていうかね。そう、色んなこうパラメーターがあって、で、それをこうオンにしたり、オフにしたり、これぐらいの数字にするみたいな。そういう調整みたいなの
Guest
をちょっと思い出しましたね。なんか、これをやったら早くなる、これをやったら遅くなるってのがわから。まあ、それはわかるんですけれども、
Guest
いったいどれぐらい試せばいいのか、みたいな。でも、やっぱりこれをそこの戦略を取るためには計測するしかないですね。
Guest
ていうことだと思いますね。
Guest
なので、できるだけたくさんの引き出しを用意しつつ、まあ、それに合った戦略を取れるように計測していって、
Guest
はい、
Guest
実践していくっていうのが
Guest
1番な気はしますね。すごい地味な感じ、結論になってしまったんです。
Guest
なっちゃいましたけど、まあまあでも多分みんな仕事は
Guest
こう
Guest
こうなるかなっていうのはあると思いますね。うん、まあ、でもなんか最近ちょっと話飛んじゃい
Guest
ちゃう感じもしますけど、最近、フロントエンドってなんかアクセシビリティとかもそうですけど、
Guest
なんか、こうちゃんとやるものは、まあちゃんとやりましょう。っていう話が増えてきてると思うんで、なんか、こういう足回りとかもちゃんと継続して、ちゃんとアットスリューションを使いましょう。っていうのは、
Guest
まあ、最近みんなが思っている仕事のやり方になってきてるのかなと思いますね。なんか、フレームワークの話みたいなん
Guest
ま、そういうこうキャッチーなものは減ってきてますけど、なんかみんなこう。白しにタイリングとか、アクシビティとかに取り組んでる感じがあるんで。
Guest
そ、そうなんですよ、うん、
Guest
なんか大切なま地味だけど、大切なことな気はしますね。
Guest
多分、フロンフロントエンドツーリングとかの話も、多分、ほんとに興味ない人が興味ないんだろうなとはなかなか思うんですよね。そういうキャッチーな
Guest
新しいフレームワークとか、そういうのを求めがちかもしれないんですけれども、
Guest
そうっすね。なんか、それで解決する方が楽しいかもしれないし、それが解決で解決してほしいという。やっぱり祈りもあるとは思うんで。
Guest
ですけど、まあ、なんだかんだ地味なものがうまくいくっていうのはありますよね。
Guest
そうですね、これは
Guest
なんか永遠の辛いな
3. クロージング
Guest
えーではえ、というわけでえ、今回はですねえ、ウェバックチューニングについて、たださんに詳しく話を聞いていきました。
Guest
ラインのフロントエンド組織UITではえ、このようなフロントエンドに関するえ、意見交換や、え議論など日々行っております。
Guest
社内でえ行われている議論や、企画から生まれたものをえ、イテンサイトで公開していることもありますので、え、これからもぜひぜひ聞いていただければと思います。
Guest
またえ、この意外にサイドを聞いて、ラインに興味を持っていただいた方は、えぜひぜひカジュアル面談からでもえ、やりましょう。え、シノートの再花の方
Guest
ですね、球人の方のリンクを貼っておりますので、えぜひ、そちらからご連絡いただければと思います。
Guest
今ですとえズムによるカジュアル面談を行っておりますので、え、時間や場所問わずえできるかなと思います。
Guest
というわけで、今回はえ、玉田さんとともにルバックのシーリングについて話していきました。え、今回はありがとうございました、
Guest
ありがとうございました。