筑波大学の学園祭を支えるさくらのクラウド

はじめに

さくらインターネットでは、ITコミュニティや学生の活動にサーバなどを提供する支援活動を行っています。今回はその中から、筑波大学の学園祭「雙峰祭」における支援の例を紹介します。2022年の雙峰祭の実行委員を務めた、西丸優貴さん(情報メディアシステム局 局長)、伊藤祐聖さん(情報メディアシステム局 ネットワーク部門長 兼 インフラ担当長)に話をうかがいました。

伊藤さん(左)と西丸さん。今回の取材はオンラインで行いました

雙峰祭とは

雙峰祭は前述の通り筑波大学の学園祭です。例年、11月上旬に開催されています。2019年までは大学のキャンパスで開催していましたが、新型コロナウイルスの流行により2020年は中止になり、2021年は全面オンラインでの開催となりました。なお、2021年の開催については本誌で取材しましたので記事をご覧ください。

さて、2022年の雙峰祭は、11月5日(土)、6日(日)の2日間にわたって行われました。会場が3年ぶりに大学のキャンパスに戻りましたが、感染症拡大防止の観点から事前予約制度による入場制限を設けた形での開催となりました。また、会場での催し物に加えて、オンラインで楽しめるコンテンツも多数用意されました。例えば会場からのライブ配信(これは従来もやっていたようです)や、事前に収録したものの配信、研究発表などのオンライン展示、オンライン物販などです。

このように雙峰祭も、オフライン開催からオンライン開催を経て、オフライン/オンラインの両面を兼ね備えるハイブリッド開催に進化を遂げました。

雙峰祭を支えるシステム

雙峰祭2022のウェブサイト

雙峰祭を支えるシステムとしては、主に以下の3つがあります。

  1. 雙峰祭公式ウェブサイト
    文字通り、雙峰祭のウェブサイトです。
  2. 雙峰祭コンテンツ掲載システム(CMS)
    研究発表などのオンライン展示に用いるコンテンツを各団体から集めるために利用するサイトです。
  3. 雙峰祭オンラインシステム(SOS)
    実行委員会や企画を実施する団体などが内部的に利用するシステムで、企画の管理などを行います。

このうち1は、Next.jsで実装したものをVercelにデプロイして運用しています。2と3を構築するにあたり、当社からの支援として、さくらのクラウドを無償提供しています。

雙峰祭CMSの構築

雙峰祭CMSは、研究発表などのオンライン展示に用いるコンテンツを各企画から集めるために利用するサイトです。コンテンツが掲載されるまでの流れは以下の通りです。

  • 企画者(サークルなど)が記事を投稿
  • 実行委員会が記事をチェックし、問題がなければ公開

システム構成

雙峰祭CMSのシステム構成

このCMSは以下のような構成になっています。

Strapi

StrapiはオープンソースのCMSで、Headless CMS(コンテンツ管理機能に特化したCMS)と呼ばれる類のCMSです。本システムでは記事のストレージ部分を担っています。なお、Strapiでは記事の管理にデータベースを使用しますが、ここではPostgreSQLを利用しています。

記事編集システム

記事の投稿や編集、Strapiとの間でのデータの読み書きを担っています。こちらは実行委員会メンバーがRustで独自に実装しました。

雙峰祭ウェブサイト

記事が掲載されるサイトです。前述した通りVercel上で動いています。Vercelでビルドするときに記事編集システムから記事を取得して掲載しています。

Strapiの利用

前回はこれらの機能をFirebaseで実装しましたが、いろいろと苦労が多かったそうです。そこで今回はこの部分をさくらのクラウドに移行し、Strapiを採用しました。

しかし、Strapiをそのまま使うと、実行委員会が要件と考えている権限設定が難しいという問題がありました。例えば、来場者と企画者と運営者では記事の閲覧や編集を行える範囲が異なるとか、記事を公開する前に運営者によるチェックが入るのですべての記事を閲覧できる権限を入れたいといった要件です。そこでこれらの要件を満たすような記事編集システムを自作し、それを通してStrapiを使うという構成にしました。

Rustを使う理由

雙峰祭CMSだけでなくSOSも含めて、実行委員会が開発した部分は全面的にRustを使用しています。その理由をうかがってみました。

真っ先に挙がったのは、開発メンバーたちがRustが好きで、Rustで開発すればモチベーションが保てるという点でした。やはり、担当者がやる気になるかどうかは重要なようです。

また、技術的な観点では、Rustは強力な型システムにより高い表現力と安全性が両立でき、堅牢なシステム構築が可能である点も重視しました。雙峰祭には独特のロジックが多く存在します。例えば、企画を集める段階で各団体から仮企画登録をしてもらい、その後で本企画登録に進んでもらうとか、各種企画の実施場所の割り振り、運営者や企画者などの役割によってシステムへのアクセス権限を制御する、などです。このような機能を正確に実装する必要があり、そこでRustのメリットを享受できたとのことです。

なお、Rustでの実装に関連する話として、今回のシステムはNixOSを使用しました。Rustで依存関係を記述し、crate2nixというツール(Rustの依存関係をnixのパッケージとして取り扱うことができる)を用いてNixOSのファイルに変換してから、NixOSでビルドしたものをさくらのクラウドで動かしています。

システムのスケールアップ/スケールダウン

雙峰祭のようなイベントのウェブサイトは、開催時期にアクセスが集中し、それ以外の時期はアクセスが少ない傾向にあります。そこで、繁忙期はアクセスの増大に耐えられるようにシステムをスケールアップし、閑散期は反対にスケールダウンするという運用を行うことが多いです。

これらの点についてうかがったところ、雙峰祭のサイトもスケールアップ/スケールダウンは行っているが、それらの自動化まではやっておらず、必要に応じて手動で実施しているとのことでした。その理由は、イベントの開催時期やそれに至るスケジュールが決まっており、過去のデータからアクセス数の変化が予想できるので、それに合わせて事前にスケールアップ/スケールダウンしても対応できるからです。ただしアクセス数の監視は行っていて、予想外の変化があっても対応できるようにはしていました。

SOSにおけるTerraformの活用

一方、SOSについても話をうかがいました。

SOSのシステムそのものは昨年と同様のものを使用しましたが、データ(各種企画)は毎年変わるので、いったん全部消して再度作ることになります。ここで役立ったのがTerraformです。SOSのインフラ構成(サーバやスイッチなど)をTerraformで記述しておき、Terraformを実行するとインフラが構築されます。

雙峰祭の場合は、昨年の実行委員会メンバーがTerraformを使ってインフラ構成を記述していました。よって、今年のメンバーはそれを多少修正して実行するだけで今回用のシステムを構築することができ、非常に楽だったそうです。

Terraformは、複雑なインフラを構築するときの省力化やオペレーションミスの防止に役立ちますが、今回のような学生による運営は卒業による代替わりが毎年発生するため、その際の引き継ぎにも役立つことが示されました。

ハイブリッド開催を経験して

雙峰祭当日の様子 (出典)

このような準備を経て、初のハイブリッドイベントとして開催された雙峰祭。実行委員会の皆さんに感想をうかがってみました。ちなみに雙峰祭の実行委員会は1年生と2年生で構成されることになっていて、西丸さんも伊藤さんも2年生です。つまり2人を含め実行委員会のメンバーは全員コロナ後に入学したので、対面での学園祭は初体験となります。

2人からの感想としては、まずライブ配信の重要性が増した点が挙がりました。配信そのものは以前から実施していましたが、今年は会場に入れる人数を制限しており、また入場チケットも完売に近い状態だったので、会場に行きたくても行けない人がいました。そういった人たちはライブ配信を見ることが学園祭への参加になるので、会場の様子がわかるように配信することがとても重要になりました。

それから、今年は対面で実施したことで、前年のオンライン開催に比べて全体的に活気が感じられたという感想もありました。雙峰祭に限らずオンラインイベントで出演側に回った人からは、オンライン開催は観客がどれぐらいいるかが実感できず、また講演やパフォーマンスをしても観客の反応が見えないので非常にやりづらいという感想をよく聞きます。雙峰祭においても同様だったようで、会場で開催することで観客が盛り上げてくれることを感じられたそうです。

また、イベントの認知度もオンラインとオフラインでは違うという感想もありました。前回のオンライン開催は認知度が上がらず、「いつやるの?」というような声が学内外からよく聞かれましたが、今回はそういう話は全然出なかったそうです。

このように対面での開催はいろいろな効果を生んだようですが、その一方で、システムに関してはそれほど大きな変化はなかったそうです。対面で実施することにより、各種企画で使用する部屋の割り当てという作業が発生するので、各企画の部屋の案内などを実装する必要が出たのがおそらく最大の変更点だったとのことです。

今後の展望

西丸さんも伊藤さんも2年生ということで実行委員会を引退するため、今後やりたいことがあっても自分たちでは実現できないのですが、一応聞いてみました。すると、実行委員会内外のコミュニケーション環境に課題を感じているという回答が返ってきました。現在、実行委員会および学内のコミュニケーションにはSlackを使用していますが、対外的なコミュニケーション(例えばさくナレの取材対応や協賛各社とのやりとりなど)にはメールを使用しています。現在はGoogle Workspaceを使っていますが、より良い方法があれば改革したいと話していました。

また、次回はオンライン開催の部分を縮小して対面の割合を増やすとのことで、そうすると部屋管理の重要性が増します。システム上で部屋の割り当てまで完結できればさらに便利になるだろうというコメントもありました。

おわりに

学生が制作する学園祭のウェブサイトや、その実行委員会が内部で使用するシステムといっても、新しい技術が存分に使われていて、すばらしいと思いました。こうしたシステムにさくらのクラウドを使っていただけることはとてもうれしいです。学園祭の運営が学生の皆さんにとって良い経験となり、社会に出ても今回の体験が何らかの形で役立つことを祈念しています。

さくらインターネットはこれからも、学生やコミュニティの活動を応援していきます! サーバなどのインフラを構築/運用する費用に困っている団体がありましたら、著者紹介の下にある「この記事へのフィードバック」からご相談ください。