㊗️

Go Conference WEBサイトをNext.jsにリプレースしました

2023/06/11に公開

https://gocon.jp/2023/

今年も Go Conference が開催されました。
興味深いセッションを聞くことができ、コミュニティ内での交流を楽しむことができました。
私は2022年からWEB班スタッフとして参加しています。
今年は僭越ながらWEB班のリーダーを担当させていただきました。(所属歴の長い人が今年はWEB班に不参加だっただけで、私は特に凄くも偉くもないです)

Next.jsにリプレースしました

2022年以前はHugoを採用していましたが、2023年 のWEBサイトはNext.jsで実装されています。
具体的な工夫ポイントについて、kiyokawaさんがとても良くまとまった記事を書いてくれました。
今回は沿革と思い出話に近いものを記念に書いてみます。

公式サイトの要件

Go Conference公式サイトは現在GitHub Pagesでホスティングされています。
スポンサー企業からの寄付があるとはいえ、イベント、組織の性質上余計なコストをかけないに越したことはないでしょう。
従ってWEBサイトは無料でホスティングできる技術選定が求められます。
以前はFirebase Hostingが採用されていたようです。
参考: 2021年秋のgocon.jpのサイト構成

何故Hugoだったのか

私が参加した時には既に前例として出来上がっていたので推測が混じっていますが、静的サイト生成の内部的な仕組みにGoが使われていることなどが選定理由に挙げられるでしょうか。
似たようなツールとしてはHexoなどがありますね。
2022年までは前年度のHugoテンプレートをもとにカスタマイズしていく手法をとっていました。
確か初回のWEBサイトもHugoのテンプレートの中からイベントページ向けのものを見繕ってきたという話を小耳にはさんだような...

Hugoに大きな不満はありませんでしたが、大変失礼ながらReactなどの技術と比較するとニッチなものをキャッチアップしながら学んでいる感覚はありました。
内部のエンジンがGoで書かれている、というだけなので、Hugoを使うことからはGoの書き方を学ぶことはできません。
あくまでもHugoの使い方を学ぶことになります。

Go Conferenceスタッフは無給のボランティアです。
どうせならイベントスタッフとしての参加経験が、より業務に役立つ可能性が高いものになった方が嬉しいであろう、という理由からNext.jsで0から書き直しリプレースすることにしました。
こういった決断を受け入れ、余裕をもって実現できる優秀なメンバーが揃ったことに感謝です。
次回以降もこの遺産が引き継がれれば、Go Conferenceのスタッフになると何故かTypeScriptが書けるようになる、という不思議な状況になる事でしょう。

何故Next.jsなのか

Next.jsサーバーサイドレンダリングAPI Routesといった機能があり、素のReactと比較すると多機能すぎてとっつきづらい、オーバースペックなフレームワークとして敬遠される意見を見た事があります。
GitHub Pagesにデプロイする場合は成果物を静的なHTMLファイルとしてビルドする必要があるため、SSRなどの機能は封印され、Next.jsである意義は一般的なユースケースと比べると薄いです。

しかし個人的には画面遷移のためのRouterライブラリがあらかじめバンドルされたReactだと思って使う程度の認識でも充分採用する価値があるものだと思っています。
久々に素のReactを書くとあれもこれも自分で入れないといけないのか、と失うものの大きさに気がつきます。
一方でコンポーネントを実装する際にReactを実装している感覚と異なる部分はありません。
一回使うと二度と素のReactには戻れないですし、戻りたかったらいつでも戻れる程度にはReactですし、今後の進化でよほど破壊的な変更が入らない限りは本業でもとりあえずNext.jsを選定すると思います。

Next.jsアプリケーションを作る事からの学び

これはNext.jsではなくReactの話ですが、Atomic Designにおける、OrganismsとMoleculesの違いのような、少々小難しい話があります。
これらはAtomic Designを採用されたアプリケーションを実際に開発することで腹落ちするものが大いにあると思います。
細かいところでは会社、案件ごとの流派があるわけで、そういった異文化交流が学びになる可能性もあります。
スタッフ経験がこういった学びの場としてより役立つものになると良いなと思っている次第です。

スタッフ経験から学べるもの

タイトルからは話が逸れますが、スタッフとしての感想です。
Go Conferenceはメルカリ社をはじめとした素晴らしい企業の社員が運営スタッフに参加しています。
スタッフの皆さんの仕事ぶりから学べる事に私は大きな魅力を感じています。

WEB班として

WEB班はその名の通り開催当日までにWEBサイトを良い感じに整えることが仕事です。
スポンサー、スピーカー募集のタイミングで募集の導線を作り、本番までにタイムテーブルをはじめとした各種コンテンツを作ります。

WEB班は去年一緒に働いた人も凄かったけど今年も凄かったな、と感じることができました。
シンプルに技術力、特定の機能の着手から完成までの速度、品質から、CI/CDに何があるのを当たり前と感じるかといった要素。
どのようにコミュニケーションを取るか、タスクの優先度はどのように把握するかといった仕事の進め方を見ることで、ここまで実力があればどこでも生きていけそうだな、という何かを悟ることができます。

リーダーとしての反省ですが、もくもく会の開催など、和気あいあいと開発する機会を一回くらい設けた方が楽しかったと思いますが、一度も開催することなく完成を迎えました。
放っておいても非同期コミュニケーションで完璧に完成に向かっていく状況だった事に甘えてしまいました、それはそれで先端を走っている感じがあるかもしれませんが。

他チームから学ぶもの

WEBサイト制作以外にも仕事は沢山あります。
スポンサー班
コンテンツ班
セッション班
ノベルティ班
といったチームがあり、当日の運営スタッフの仕事もあります。
プロジェクトマネジメント業務もあるわけで、月に1度、佳境に入ると週1頻度で会議が開催されます。

会議にはアジェンダがあり、Nextアクションがある、議事録は参加者全員が書くものである、といったフレームワークが染みついているメンバーでの会議はとても生産的です。
また次回に向けた振り返りのフレームワークとしてKPT法を採用するなど、プロジェクトが健康的に稼働するための手法を学ぶことができます。

メルカリDesign Systemのtottieさんが作成したFigmaやその他デザインワークに触れることができるのも良い経験でした。

まとめ

Next.jsが学べるようになったし、凄い人の仕事ぶりを見ることができるので、
エンジニアは勿論デザイナー、マネージャーの皆さまにもスタッフとして関わる事をオススメします、というお話でした。
自分もこのイベントに関わる事が出来て良い刺激を受けることができました。

Discussion