音声書き起こし
1. オープニング
Guest
こんにちは、UITのホットfdです。
Guest
ユーザーインターフェースと、テクノロジーを愛する開発者のためのウィークリーポッド、キャストUIT INSIDE。今週も始めたいと思います。
Guest
今回はですねえ、テーマをスノーパックといたしまして、ゲストにフロントエンドエンジニアのえ、このさんをお呼びして、え、ちょっとプロジェクトにおけるスノーパックの導入について聞いていきたいと思っております。
Guest
このさん、本日はどうぞよろしくお願いいたします
Guest
よろしくお願いします。
2. 自己紹介
Guest
では、本題に入る前にこうまさんは、えいテンサイドの出演が初めてかなと思いますので、簡単にゲスト紹介の方、えーしていいと思います自己紹介お願いできますでしょうか
Guest
はいえ、このすと申しますえ、今年のLINEの新卒で、現在はLINEバイトの開発に携わっています、よろしくお願いします
Guest
はい、よろしくお願いいたします
3. snowpack の概要について
Guest
では本題に入っていきたいなと思うんですけれども、今回ですね。LINEバイトの中で、snowpックを導入し出して、まあ、それなりにお時間が経ったっていうところで、ちょっとお話をお伺いできればなと思ってるんですが、
Guest
まあ、まずそのバックというと
Guest
まできた時ま、誕生した時に、え、ちょっと話題になって、以降、あんまりどういったものかえ、ちゃんとキャッチアップしてないんだよね。っていう人も聞いている方の中には
Guest
多くいらっしゃるのかなと思っているので、簡単に概要について紹介してもらってもよろしいでしょうか。
Guest
はいえ、スノーパックはえ、イエスモジュールベースのビルドツールで、ウェブパックが
Guest
コードを全部バンドルして、1つのチャンクにするのに対して、スノーパックはえ、ブラウザー側のえ、esモジュールの機能を使って、え、jsを配信しようという仕様の元でできています。
Guest
なんか、あの、そういった手法に対しての利点みたいなんで
Guest
あるんですかね。はいえ
Guest
ウェブパックだと、どうしてもビルドに時間がかかってしまったり、え、そもそもえ。ブラウザーで読み込む時も、1つのチャンクを読み込むので、どうしてファイルサイズが大きくなってしまうんですけども、そのパックだと、1つ1つのファイルをそのまま配信することになるので、ビルド時間の短縮と、
Guest
あと、ブラザガのesモジュールを使うので、呼び込むときも、ファイルサイズが小さくなるっていうメリットがあげられると思います。
Guest
ああ、なるほど
Guest
ま、単純にまトランスパイルまてかえと、バンドルをしなくていいっていう感じの店と、
Guest
あの、そのパックがファイル単位で分割されていることによってま。並列でアクセスできたりするっていうところとま、専用のコードが不要っていうオーバーヘッドが少ないっていう方な。
Guest
そのバックはちょっと話が出た時に、私もちょっと知ったぐらいで、全然触ったことがないんで、ちょっとえ。次の
Guest
こうで詳しく導入のえ、話とかを聞ければなと思っております。
Guest
えとは、それを踏まえてえなんですけど、今回LINEバイトにおいて、スノーパックを導入して、今運用されてるかなと思うんですけど、
Guest
そのパックを導入するに至った経緯とか。ま、プロジェクトで、なんでスノーパックが必要だったのか、みたいなところ、ちょっと聞いていきたいかなと思うんですけど、
Guest
まずえ、なんで、メラインバーにスノーパック導入しようと思ったって感じですかね。
Guest
はい、1番の目的としては、ウェブパックのビルド時間がえ、とても長くて
Guest
開発体験が悪くなっていたっていうのがあげられます。既存のバンドルのビルド時間が大体2、3秒後とかかっていたので、すごい開発体験が悪かったっていう状況が
Guest
ありました。
Guest
2分2秒ぐらいかかるのは結構重いですよね。そうですね、うん、
Guest
これはあれですかね。行動を書き換えるために、10秒ぐらい待つっていう風な状態だったって感じですかね。はい、そうですそれはかなり
Guest
重いですね、なるほど、1回初回フィールドが重いってのは結構よくあるかなと思いますけど、ちょっとコート数行書き換えるぐらいで、
Guest
20秒かかってたら、ちょっとたまったもんじゃないですよね。なるほど、や
Guest
やまあ、できるだけ開発をこう高速化したいっていうところから、そのパック導入するっていう方向に至ったっていう感じですかね。
Guest
はい、
Guest
もう1点副次的な効果として期待していたのは、既存のコードベースに、コモンジェースのインポートなども含まれていたので、それをなるべくesモジュールに寄せたいっていうのもありました。
Guest
あの、そのそのパック自体がイエスモジュールベースのえ、ツールで、え、イエモジュール、
Guest
フレンドリーな書き方を強制されるので、そういうところもいいのかなと思い、
Guest
選択しました。はい、
Guest
なるほど、なるほど、私もバックを使っているとなんでしょうが、ベースというか、まあ、基本的に後からワイヤの方に寄せていくような技術には
Guest
バックなるかなと思うんですけど、まあ、ロールアップとか
4. snowpack を導入するに至った経緯とLINEバイトでの課題感
Guest
あれですね。それこそ、スノーバックとかになってくると、結構よりモダンなイエスモ、ジュール、ネイティブな方をこうベースとして
Guest
運用できるし、それが許容されるっていうのが、まあ、結構メリットになり得るんじゃないかなっていうとこですね。
Guest
はい、そうです。
Guest
なるほど、確かにそうですね、どうしても、あのモンジェースの書き方とかって意識しない
Guest
したり、強制されないと残ってしまうものでもあるかなとは思うんで、なんか確かに副次的作用といえど、かなりいいところがあるなと
Guest
ありました。
Guest
なるほど、ああ、確かにそういうメリットもあるんですね。
Guest
はい、そのスノーパックを導入する過程で、やっぱり既存のコードベースを見直してこう。どこか。将来的に
Guest
esモジュールで直進配信するとなった時に衝撃になるかみたいなところも洗い出したので、それはすごいよかったなとあ、
Guest
はい、いいですね、
Guest
ありがとうございます。
5. snowpack という選択肢をとった理由
Guest
はえ、その上でスノーバック。ちょっと私がワンドラについて、正直ウェブパックぐらいしかあんまり普段使うことがなくて、他の選択肢ってのはあんまり。詳しくないんで。
Guest
ですけど、なんか、スノーパックの他にあげられる。なんか、こういったバンドルツールま、バンドルツールではないのかもしれないです。けれども、なんかこういうものの選択肢って他に考えたものとかってあったりしましたかね。
Guest
はい
Guest
似たようなツールとしては、え、ビートっていう
Guest
ビーの開発者が作っているツールがあるんですけど、もはいえ、リアクトとの相性であったり、あとは、バベルを使えるっていう点からのスノーパックの方が、今回にはふさわしいかなと思い、選択しました。
Guest
ああ、確かにビートも結構最近は使われつつあるツールである気はします。けれども、どうしてもなんかbjsか、あと、普通のいわゆる
Guest
ノートジェース用のコードというか、パッケージというかの開発に使われてるのが中心な気はしますよね。
Guest
そうですね、で、リアクトのホットモジュールリロードとかに対応するためにも、スノーバックの方が今回は妥当なのかなっていう結論になりました。
Guest
リアクトとえ、まあ、ちょうどLINEバイトがリアクトで作られてるっていうのもあって、ま。そこの新和制をかなり重視してやったっていうところが
Guest
ある感じですね。はい、なるほど、なるほど、ありがとうございます。
Guest
スノーバック自体は、結構リアクトとは、相性ばっちりって感じなんですかね。
Guest
そうですね、まただこう最初からスノーパックのプロジェクトを初期化するよりは、こう既存の設定もあるので、こう色々と設定を
Guest
触る必要があったんですけども、おおむね。リアクトにはえ、対応できる形になってたと思います。
Guest
ま、多少アップデートすべきところあれど、まあ、全体としては、そんなにコストかからずにスパック導入ってのができた。はいっていうか、そうですね、
Guest
ちなみに、今回適用した範囲っていうのは、まあ、多分課題が開発環境のえコスっていうところだったかなと思うんで、デベロップ向けのビルドかなと思うんですけど、それはデベロップ向けビルトとして、そのパックを
Guest
適応し、使い出したっていう感じですかね。
Guest
はい、そうですね、まだスノーパック自体あのすごい新しくて、こうプロダクション環境で使われてる例も少ないと思うので、
Guest
こう、プロダクション向けのビルドのツールチェーンとして使うのには、まだ早いのかっていう判断で、とりあえずは開発環境から始めようっていうところで
Guest
導入した次第です。
Guest
あ、なるほど、なるほど、ありがとうございます。じゃあ、今はま開発環境は改善しつつ、まあ、自分たちが開発する時は
Guest
高速かつasモシルネイティブみたいなのを強要されるような状況で開発をするけど、まあのデリバリーする時にはま、ある程度信頼性と実績のあるウェイパックっていう形で使き、あ、使い分けてる
Guest
ような状態なんですね。
Guest
はい、
Guest
いいいいですね、なんか、どうしてもスノーパックとか、こういうもの入れるってなるとこう。
Guest
これって、プロダクションレディーなんだっけ。みたいな話で、結構出てきちゃいがちな印象があるんですけど、そこをこううまく切り分けて、
Guest
あの、別々のツールを使うっていう選択を取る、取れるっていうのは結構いい気がしますよね。
Guest
はい、そうです、
Guest
なかなかそういう意思決定やってるのは多くない気がするんで。ああ、確かに
Guest
なんかそういう考え方を取り入れると、すごい簡単にこういった新しいツールを試すっていうのもできるようなっていうのがあって、ちょっと個人的にはなかったそうなんで、
Guest
いいなと
Guest
思いました、
Guest
ありがとうございます
Guest
あ、ありがとうございます。今、ちょっとLINEバイトのsnowバックをえ、追加したプルリクエストを覗いてみたりしてるんですけど、なんか、ここにあの
Guest
アップトセタイムファスタービーとかって書いてあって、すごすごいなと改めて思いますね。
Guest
やっぱり早いっていうのは、開発においては、まあ、開発効率に直する部分だから、まずは入れたい開発環境に入れたいとこではありますもんね。
Guest
そうですね、やっぱりそれで作業か効率が変わるのであれば、積極的に取り組みたいところではあるのかなと思っています。
Guest
ちなみに、さっき、ウェイパックを導入した時には、あの
Guest
20秒ぐらいかかってたって話があるかなと思うんですけど、スノーバックの方法導入してみてからは、どれぐらいに変わりましたかね。
Guest
はい、スノーパック自体、最初にあののモジュールズのそれぞれのライブラリをえ、イエスモジュール形式に変換するっていう作業があるので、初期
Guest
初期の部分では多少時間がかかるんですけども、それ以降はえ、例えば1つのファイル変更したら、こう全てのバンドルを作り直すのではなくて、
Guest
そのファイルだけをトランスファイルすることになるので、え、変更ごとのビルド時間はま、先ほど2、3秒ぐらいっていう話があったと思うんですけど、そっから2、3ミリセック
Guest
ぐらいまで短縮することができ。
Guest
ああ、じゃあ、もうほぼラグがないぐらいの速さにはい感じですね。書いた瞬間に反映されるというか、
Guest
もう良さそうですね。
Guest
すごいっすねおあ、じゃあ初めはちょっとかかるってのは、まあ、ウェブバックとまあ同じというか
Guest
なんですけど、ま、差分更新っていうのに、やっぱりファイルごとに分割されてる利点がめっちゃ現れてるっていう感じそうですですね、なるほど、
Guest
すごいですね、ほんとに2、3秒が23ミリセックになるのはすごいっすね。
Guest
いや、ちょっと
Guest
結構うちの会社ラインだとウェブパックを使ってて、まあ、あの、そのクレイトリアクトアップとか、ネクストとか、そういったツールをかまさずに、ウェブパックを普通に使っていて、特有の機能をなんかこう。色々も盛りで使ってるわけでもない
Guest
けど、ウェバックを使ってるっていうプロジェクトも多いかなとは思うんで、なんか、他のプロジェクトでも、ちょっとスノーパックどうっていうのを話してみても、面白いかもしれないですね、
Guest
確かにそうです
Guest
いや、なかなかすごい結果ですね、この差はありがとうございます
6. 導入した結果と現在
Guest
では、ですねえ、その上で
Guest
スノーバックの導入がま、結構前半年ぐらい前かなと思うんですけど、半年ほど経って、今、えー。スノーバックでを使って開発していて、なんか感じることとか実感して得られる恩恵とかって、やっぱり結構
Guest
きいですかね。
Guest
はい、そうですね、やっぱり何よりも開発体験が良くなったっていうのがあげられると思っていて、ウェブバックの時は、
Guest
こう1つの変更を行うごとに待っていたのが、まそのバックを導入することによって、すぐに変更を確認することができるようになったので、その意味で
Guest
あのすごい開発体験が向上したかなっていう風に考えています。
Guest
はい、単純にこれまではちょっとここで書く書いたら、ちょっと待って書いてあってか書いてあって、みたいな感じになってたのが、かなり変わったっていうとこ
Guest
ですね。そうですうん、うん、確かになんか結構
Guest
なんでしょう。ビルド時間が重くなってくると、できるだけいっぱいコード書いてから保存したみたいになりがちなとこあるかなと思うんですけど、なんか
Guest
短くなるとこうシュッと保存して、とりあえず確認しとかもできるからいいですよね。
Guest
そうですね、ま、あとあとやっぱりこう2、3秒かかるのはおかしいっていう意識があったので、その部分を意識しなくてもよくなったな。
Guest
確かにやってて、これおかしいよなと思いながら、開発するのはちょっと辛いものがありますもんね。
Guest
そうですね、
Guest
実際今もう開発は。じゃあスノーパックベースで、というか、スノーバックを基本的に使って開発してるっていう風な状態なんですかね。
Guest
はい、そうですね、ローカルで開発する時は、snバックで開発してま最後にはまブバックでビルドするので、そこでこう
Guest
万が一問題があったとしても、一応確認できるような状態になっています。
Guest
ちなみに、ちょっと導入して運用してみてって話で1個聞きたいんですけど、それで言うと、実際やってて、スノーバックとウェイバックで、なんかビルド結果が違って困ったこととかってあるんですかね。
Guest
今のところないですね、ただ、やっぱり新しいライブラリとかを導入するときに、スノーパックでもビルドすることが、あの求められるので。
Guest
はい、
Guest
そこでこうよりesモジュール、フレンドリーな書き方を強制されてるっていうのは、何回かありました。
Guest
ああ、なるほど、なるほど、なんかこのライブラリいいじゃんって思っても、実はコモンジェースのなんか、ライブラリーレみたいなのは、一応あるっていう感じ。
Guest
そうですね。エクスポートの方法とかが、イマイチで、こう少し対応が必要っていうのはありました。はいはいはいはい
Guest
まそんなところで、あの導入する時はちょっとあのスノーパックに対応してるから、見ないといけないが、今のところプロダクションとか。まあ、何か運用にあたって、なんか問題が起きたってことは全然ないって感じはですね。そうですね、
Guest
なるほど、
Guest
あ、ちょっとウェイバックのビルド時間に困ってるプロジェクトにこそ、ちょっとこういった情報は伝えていきたいですね。車内にも社内にもですけど、
Guest
そうですね、やっぱり開発体験があの、ほんとに変わるので、そうでも積極的に導入したいところですね。
Guest
いや、なかなかやっぱりプロダクションで使えるのかっていうのが、みんな気にしちゃうところかなと思うんですけど、それがこういう形で開発環境だけで使うっていう視点が新たに生まれたっていうのもかなりとかな
Guest
あ、ありがとうございますはい、
Guest
ではですね、最後にあ、最近やってる他にこういった開発環境の改善がもやってるよみたいなのがあったら、ちょっと聞きたいなと思ってるんですけど、なんか最近やった。こういった
7. 最近やっている開発環境の改善
Guest
開発環境の改善とかってあったりしますかね。
Guest
はい、あのスパックの導入は開発環境の改善なので、ちょっと違うかもしれないんですけど、
Guest
はい、
Guest
あの、コードスプリッティングであったりとか。はいこう。コードベースを改善するってことは、あの積極的に取り組んでいます。
Guest
なるほど、なるほど、コードスプリッキングは結構あれですかね。これまでは、普通にあのチャンク分けされていなかったとこに、今していってるっていう感じですかね。
Guest
はい、ウェブパックでマントルしていたものを、あのページごとに分けようっていうことは、現在進行形で取り組んでいます。
Guest
結構なかなかあれですよね、なんか、こう歴史があるコードベースになってきたりとか、結構前に構築されたやつとかになってると、オードスプリッティングとかって、ちゃんとされてなくて。とはいえ、
Guest
craとかネクストとかに乗ってもないんで、自動でされてるわけでもないみたいなのって結構ありますもんね。
Guest
そうですね、あの、サーバーサイドレンタリーとかの自前で書いてたりするので、
Guest
色々とあの詰まるところがあります。
Guest
そうか、サーバーサイドレンダリングもやってると結構大変ですよね。
Guest
そうです、
Guest
自前で書いてるサーバーサイドレンダリングしてるプロジェクトもそんな多くない気がしますし、なんかそういう意味でも、ちょっと。もしかしたら、社内で言うと、バイトは特徴的な
Guest
プロジェクトかもしれないですよね。
Guest
ネクスト使ったり、ナクスト使ったりって事例はちょこちょこ聞きますけど、自分たちで頑張ってさ。サイトのコード書いてますっていうのは、多くない気がしますよね。
Guest
いや、コードスプリッティングとか、そういう改善も結構少しずつやっていけるといいですね。
Guest
はい、
Guest
ちなみに、こういった改善とかって、結構開発の手が空いてるタイミングでやっていたり、って感じなんですかね。
Guest
そうですね、あの、開発の個数がよに余裕があるとま、積極的に改善の話が上がるみたいな環境はできてるのかなと思います。はい、
Guest
あ、その環境ができてるのはすごいいいですね。なかなかちょっと空いたら仕事空いたら仕事みたいな状態だと、こういうのってなかなかできない
Guest
感じになるかなと思うんで、ちょっと改善とかに時間かけられるっていうのが、チームの前提としてあるってのは、かなりいい状態な気がしますね。
Guest
ありがとうございますちょっとももしえぜひ、また、なんかこういった開発ツール導入したよみたいなのがあったら、ええ。インサイトでも
Guest
聞きたいなと思っているので、なんかまたぜひぜひお話をお聞かせいただければと思います。はい、
Guest
お願いしますはい
Guest
というわけでえ、今回はえ、このさんにえ。スローバックをえ、LINEバイトにえ導入して運用していたえことについての経緯やえ、実際導入してみても、書館や今行ってる改善などなどについて聞いていきました。
Guest
ラインのフロントエンド組織UITではま、このようなフロントエンドに関するえ、議論やえ、意見交換などを日々行っております。
Guest
UIT INSIDEで公開されているコンテンツのえ、中にはえ、こういった社内で話しているものから、生まれたエピソードというものも多くございますので。
Guest
今後ぜひぜひ発信していければと思っております。
Guest
また、エピソードについての感想などなどがありました。らえ、ハッシュタグえ、シャープUIT、アンダースコアインサイドにえーついていただきますとえ、運営メンバーの方で拾っていきますので、ぜひぜひご意見やご感想などなど、つぶやいていただければと
Guest
思います。
Guest
そして、え、最後にですが、え、今ですねLINEではえ、新卒中とともに、新たなメンバーをどんどん募集しているような状態となっております。
Guest
小のと最下部の方にですね、求人へのリンクの方を貼っておりますので、カジュアル面なからでも、ぜひぜひえご連絡いただければと思っております。
Guest
というわけで、今回はえ、LINEバイトにおけるスノーバックの導入というところで、このさんに話を聞いていきました。このさんお話ありがとうございました、
Guest
ありがとうございました。