こんにちは!メドピアの福田(@Yusa136)です。
2024年11月01日(金)に弊社オフィスにて、MNTSQ株式会社、STORES株式会社と3社でVue Fes Japan 2024 After Meetupを合同開催しました!
Vue Fes Japan 2024 の感想や思い出を語り合いました。この記事では当日の様子やセッションの内容をお届けします。
LT
「VitePressで見つけたアウトプット習慣」
トップバッターは弊社メドピアの岡澤さんです!
VitePressを活用したアウトプット習慣の作り方についての話が印象的でした。「飽き性だけど続けられる」という岡澤さんの言葉の示す通り、VitePressはフロントエンドだけでブログやドキュメントを簡単に作成でき、Vue.jsを使って気軽に情報発信ができるツールです。
なぜVitePressなのか?
岡澤さんがあげた理由は以下の通りです。
- Markdownで簡単に書ける点
- フロントエンドで完結
- Vueチーム推奨のSSG
- Vueで遊びたい!
VitePressはファイルベースルーティングを採用しています、必要なパッケージも少なく、設定がシンプルな点も良い点として挙げられていました。また、簡単にダークテーマも切り替えられるなど、カスタマイズの自由度も魅力的ですね!
私としてもアウトプットできる場を求めていたので、VitePressを通してVue.jsを学び直すのも良いと思いました!みなさんもぜひこの機会にVitePress触ってみてはいかがでしょうか?
「ReactからVueへの転向:思考の変化とアプローチの違い」
続いては、MNTSQ株式会社の森山凪さんのLTでした!
ReactとVue.jsのライフサイクル表現の変化についてのお話が印象的でした!両者のアプローチの違いに注目してお話しされています。
1. ライフサイクルの違い
Reactのライフサイクル
useEffectを使うと、更新(update)、マウント(mount)、アンマウント(unmount)の処理をまとめて管理できます。例えば初回のマウント時や、ある状態が更新されたときにAPIコールを行うといったことが可能です。この凝集性の高さから、関連する処理を一つのuseEffect内に完結させやすいのが特徴みたいです。 useEffectは再利用しやすいことが大きなメリットですね!
メリットが大きいのは理解できましたが、やはりuseEffectは難しいですね。。。 森山さんも「lifecycleを理解している人でないと(useEffect)難しい」とおっしゃってしました。
2. Vue.jsのライフサイクルフック
一方でライフサイクルフックはどうでしょうか?
Vue.jsではmountedやbeforeUnmountといったフックで、それぞれのタイミングに応じた処理を明確に分けています。機能が時間ごとに分かれるため、コードの流れが直感的に理解しやすいのが利点みたいです!
ReactとVue.jsは機能的な凝集性と時間的な凝集性で異なるみたいです。
Vue.jsでも機能的な凝集性が欲しい場面が出てくると思います。そこでVue.jsのComposableでライフサイクルフックを使うと機能的な凝集性が高いライフサイクルフックが実装できる「いいとこどり!」だと紹介されていました。
そのほかにも、ReactのJSXとVue.jsのSFCについてどちらも「関心の分離」を重視していることをお話しされていました!
「1つのtsxコンポーネントをVueとReact向けにビルドする」
vue-fes-after-meetup-2024-ushironokos-projects.vercel.app
最後のLTはSTORES株式会社のushironokoさんです!
Vue.jsとReactの両方に対応できるtsxコンポーネントについて話されました!TypeScriptで書いたコンポーネントをどちらのフレームワークでも活用できる点が魅力的ですね
tsxとは?
TypeScriptを使ってテンプレートを定義できるファイル形式で、tsxだけではコンポーネントに状態を保つことはできないみたいです。
tsx では Vue.js も書くことができ、Babelのプラグインを用いることでtsxに変換できることを紹介されていました。 レンダー関数と JSX | Vue.js
Reactでは独自にtsxを解釈、ReactのランタイムでJSを生成するとお話しされていました。最終的にはcreateElementになりますが、オプションを組み合わせることで、ビルド後のjsx構文を誰に・どのように解釈させるかを指示できるらしいです。
tsxからVue.jsとReact向けにビルドする
状態管理が不要な部分はtsxのみで対応し、工夫が必要な部分については「unbuild」などのビルドツールで補完すると良いみたいです。
stateを持たせるとReactかVue.jsのランタイムに依存してしまうようです。なので、stateを持たなければ、ReactとVue.jsで使えるコンポーネントになるみたいです。
Vue.jsには固有の問題と解決方法について紹介されていました。
- esbuildのオプションでtsconfigを拡張し、
tsx:"preserve",jsxFactory: "h"
を追加する - hが参照エラーにならないようにビルド結果に
import{ h }from "vue";
を追加する - 元コードがClassNameを用いている場合は、classに変換する。
VueとReactのどちらのエコシステムでも活用できるtsxコンポーネントの可能性が広がるお話でした。
パネルディスカッション
「Vue Fes LGTM」
登壇者のご紹介
- メドピア株式会社:小林さん
- STORES株式会社:ushironokoさん
- MNTSQ株式会社:安積洋さん
最後のパネルディスカッションでは、小林さんが司会役としてVueのマイグレーションや最新トレンドについてざっくばらんに話し 合いました。今年は新しいことにチャレンジする前向きな話が多く、昨年に比べてバランス良く知見が共有された印象でした。
議論のハイライト
マイグレーションと技術負債の解消
まず話題に上ったのは、Vueのマイグレーションについてです。去年のVue Fesでは、Vue 2からVue 3への移行に関するセッションが多く開催され、技術負債の解消がテーマとして取り上げられました。一方で、今年は次世代ツールチェインや新技術の導入など、未来志向の明るい話も増えており、会場には期待感が漂っていました。
Rustと次世代ツールチェインへの関心
特に注目を集めたのが、JavaScriptと並行して注目を浴びているRustについてです。「われわれはRustを書くしかないのか?」という話も飛び出す中、パフォーマンス向上や開発体験を改善するため、RustのエコシステムをVueと組み合わせて活用する動きが増えているとのことでした。例えば、Rustで書かれた「oxc」などのツールチェインが紹介され、これによりビルド時間やローカル開発の効率化が期待されています。
一方で、Rustを採用するかどうかについては、「事業にどれほどのインパクトがあるか?」という実務面での意見もあり、導入には慎重な検討が必要という話も。VueエコシステムにRustがどう寄与していくのか、今後の動向が注目されると感じました。
ブースのお話
よくわからないトラック名が呼ばれていたと話題にあがりました。Vue Fes Japan 2024でのトラック名、「MNTSQが全ての合意をフェアにするぞ」トラックは私もスタッフとして参加した時に印象に残っています。 STORESさんのブースではコードに改善点として付箋を貼る展示をされていました。コードが見えなくなるほど付箋が貼られていたみたいですね。私が訪れた時にはLGTM付箋も多かった印象です! 弊社メドピアでは握力測定を行いました。脅威の75kgを記録された方がいるみたいです! 当日の参加レポートはこちら Vue Fes Japan 2024に参加しました!#vuefes - メドピア開発者ブログ
懇親会の様子
懇親会ではたくさんのご飯をMNTSQさん、ドリンクはSTORESさんが用意してくださり、皆さんで交流を行いました。
多くの参加者と交流することができ、良い交流ができました。 私としてもすごく刺激になりました。
最後に
登壇者の皆さん、合同開催のMNTSQ株式会社、STORES株式会社の皆さんありがとうございました!
LTやパネルディスカッションでもあった通り明るい話が多かった印象でした。
これからもVue、Nuxtのコミュニティの発展を祈るとともに、貢献していきたいと思います!
来年のVue Fes Japanも楽しみです!
是非読者になってください!
メドピアでは一緒に働く仲間を募集しています。 ご応募をお待ちしております!
■募集ポジションはこちら medpeer.co.jp
■エンジニア紹介ページはこちら engineer.medpeer.co.jp
■メドピア公式YouTube www.youtube.com
■メドピア公式note
style.medpeer.co.jp