初めて開発者向けイベントに行ってみた【Vue Fes Japan 2024】
Vue Fes Japan 2024に行ってきました。
オープニング&キーノートに加え下記のセッションを見ました。それなりの英語力もあったので、中々Zennや他イベントでは見られない海外の開発者のセッションをメインに聞いてみました。
- VueとViteで作るUIコンポーネントライブラリ ~デザインシステムとプロダクトの理想的な分離を目指して~
- IT未経験者をVue.jsで開発できるITコンサルタントに育てあげる秘訣 - フューチャーの新人研修の取り組み
- AIとともに歩んだライブラリアップデートの道のり
- Piniaの現状と今後
- Oxc - The JavaScript Oxidation Compiler
- UnJS: The Missing Tools for the Modern Web
- Gems of Nuxt: 8 Features Every Nuxt Developer Should Know!
- 2万ページのSSG運用における工夫と注意点
学習したこと
Vue3では大規模開発がしやすいように開発していっているというビジョン
2022/03時点でのこの記事では、Reactと比較して次のように述べられていました。この記事はVue React
等で検索するとZenn記事の中では一番上に出てくると思うので、多くの人が同様のイメージを持っているかと思います。
個人開発〜小規模程度の開発であればアリかと思います。
作り方によっては中規模程度までもいけるかもしれません。
一方で、ある程度のチーム人数や規模になった際にTypeScriptの型によるサポートやtscによるチェックによる恩恵を受けたいというような場合や、単方向データバインディングしかできないことによるシンプルな設計のしやすさはReactに軍配が上がるように思います。
長期での運用を考えた場合、現時点ではVue2 -> Vue3へのBreaking Changeや、それによって引き起こされているであろう周辺ライブラリの対応の遅れによる開発スピードの低下・移行コストの高さが無視できるレベルではないように感じているからです。
Evan You氏はVue3を安定した(Stable)、GitLabや金融機関で使われるようになったことから大規模開発のニーズに応える方向で開発していくようで、
- ビルドの高速化などのパフォーマンスの改善
- Typescript対応済み(3.3:るろうに剣心)
- 破壊的変更はしない
といった方向で進んでいくことをスピーチしていました。OxcやUnJSといった関連技術も「フレームワークへの依存」「各フレームワークの機能の部分的重複」といった無駄をなくす方向で開発が続けられていることから、Vue全体のエコシステムはどんどんパフォーマンスが改善されていくと考えられます❢
Nuxt Scriptsで開発を楽にして、レンダリングを高速化する
一番面白かったのがAlexander Lichter氏の「Gems of Nuxt: 8 Features Every Nuxt Developer Should Know!」というセッションだったのですが、特にすごいと思ったのがこのNuxt Scriptsです。サードパーティーのスクリプトについて読み込み高速化、型サポート等を行っています。
Youtubeの例では、YouTubeProps
にvideoId
や幅高さといった値を渡し、読み込み完了時/エラー時にEmitイベントが発行されるのでそれを元にハンドリングでき、awaitingLoad
やloading
といったslotを用いることでローディング画面も簡単に実装することができます。
気づいたこと
オープンソースのコミュニティの雰囲気がとても楽しそうで、コミットメントしたいと思う気にさせてくれる
OSSや学会のように、特定のコミュニティや個人の利益ではなく、全体の発展のために活動するような人をコスモポリタンと呼びます。Vue Fes Japan 2024ではスピーカーだけでなく、スタッフも日本のVue.jsのコミュニティの方々で、コスモポリタンでしたが、そういった人々から作られた会場から感じるエネルギーはこれまでに経験したことがないものした。
- Vue.jsが好きという純粋な理由で活動し続けている人々から伝わる前向きな気持ち
- OSSに由来する、誰でもウェルカムな精神(セッションでは、常にコミットメントを歓迎する文で締めくくられていました)
- 他の技術と比較せず、あくまでVue.jsの発展に取り組む姿勢:ReactやNext.js批判は一度もなかったですし、UnJSは垣根を越えて全てのJSフレームワークに使えるライブラリ群です。
是非ともVue.jsへコミットしたい、次回のVue Fes Japanは会社で参加したい、もっと知りたいと会場にいるだけで思わさせてくれる、静かな熱気がありました。
推しがある開発者になるべき
Vue.jsメイン開発者以外のセッションでは「Piniaの現状と今後」というのがとても面白かったです。その理由が、
- 特定の技術について精通していることからくるコンテクスト豊かで、複雑な概念を面白く説明できる
- 楽しそうに話しているのでこっちも楽しくなる
だとわかりました。どの開発者も客観的に見て「成功している」開発者であることを考えると、今後自分が開発者として成長していくためには、特定のもの、技術だったり製品だったりに愛情をもって接することで、その技術や製品とともに自分も開発者経験をし、成長していけるのだろうと思いました。逆に言えば自社開発ならなんでもいいですはNGってことで、就活していたころの自分は猛省しないといけないとも思いました。
まだ開発者向けイベントに参加したことがない人へのアドバイス(ソロ参加向け)
8000円という、自分のような20代にはそれなりの出費が伴ったので、First🐧としていくつかアドバイスを残しておこうと思います。ソロ参加の話のため、仲間や会社で参加するなら是非乗ってあげてください。損しません。、
好きな技術なら参加するべき、少しでも義務感があるなら避けるべき
自分はVue/Nuxtが非常に好きで、一から開発する際は常に第一候補にしている技術だったので、どのセッションも興味深く、また関連付けに伴う深い理解を出来たので、とても実りのあるものでしたが、これがReact/Next.jsのイベントだったり、あるいはAWSのイベントだったらどうだったでしょうか。
どちらも学ぶべき技術(と答える人は多いと思う)ですが、学びたいとは純粋には思っていません。このような気持ちで、それらの技術大好き!な人々に囲まれても、楽しめずこのようなイベントの魅力がガクっと下がってしまうかなと思います。
全く使ってないけど興味があるというタイプの人についても、Vue Fes Japanではハンズオンで初心者向け講習を行っているので一律に否定はしませんが、お金に余裕がないなら、ある程度学習してセッションの内容を興味深く聞けるレベルになってから参加した方が、より費用対効果のある経験ができるかなと思います。仲間や会社の人と共に参加するなら何の問題もありません。
1技術について深堀しているセッションを優先するべき
推しのある開発者のセッションはめちゃめちゃ面白かった一方で、個人的には「IT未経験者をVue.jsで開発できるITコンサルタントに育てあげる秘訣 - フューチャーの新人研修の取り組み」はあまり面白い内容ではありませんでした。なぜならば話の趣旨として、
- 期待:Vue.jsを研修したときにどのような点が難しいと初学者が感じるか、またそれに対してどういったアドバイス、記事が有効だったかを具体的に紹介する、Vue.js固有の内容
- 実際:長期的に取り組む難しい課題を与え、先輩社員でサポートしながら自分で最後まで開発する体験をさせるという研修方法の説明
であり、Vue.jsの知見を期待するとがっかりするような内容でした。いくつかのトラックで同時にセッションが進行していて全ては見れないので、迷った場合は特定の技術の紹介をしているものを見ると間違いないかと思います。
Geekの知識を知っておくべき
開発者の人々はGeekというタイプの人々なので、めっちゃ日本のAnime/Manga大好きだし、meme[1]も入れてきます。
- Vue3のアップデート名は、るろうに剣心(3.3)、スラムダンク(3.4)、天元突破グレンラガン(3.5)
- Distracted Boyfriend
もしこういったネット文化に触れる機会があまりなく、こういった画像が出てきても「・・・」となってしまうのでしたら、いくらかknowyourmeme.com(NSFWに注意)を読んでおいて、memeを理解しておくともっとセッションが楽しめるかと思います。
まとめ
一人で思い切ってVue Fes Japan 2024に参加してみましたが、開発者として全体的に成長出来たのに加えて、ちょっとドキュメント作成や保守業務に追われていることによって失われつつあった興味、楽しさみたいな前向きな感情を思い出させてくれて、開発や記事作成(自分の投稿日時を見れば大分やる気なかった)をまた頑張ってみようと思いました!
また来年も参加したいですし、もし出来るならばスタッフ、会社として参加などより深い形で参加できればよいなと思います。
-
説明の難しい概念ですが、自分の解釈としては「ネット上で素早いコミュニケーションを可能にする、特定のコンテクストを持つ文章、画像」です。インスタントラーメンみたいなもんです。 ↩︎
Discussion