高校生が校内情報基盤をさくらのVPSで自作した話
はじめに
さくらのナレッジ編集部の法林です。
さくらインターネットでは、技術コミュニティや学生の活動を支援するために、サーバなどのインフラを提供する活動を行っています。本記事ではインフラを提供している団体の中から、静岡県立浜松北高等学校での利用についてご紹介します。浜松北高校の生徒会執行委員長を務めていた三田悠真さん(3年生)と、三田さんの次の代の委員でうんどう会の運営委員長を務めた宮﨑奏和さん(2年生)に話を伺いました。
(以下の本文中に掲載している資料は三田さん作成のものです)
浜松北高校と学校行事
浜松北高校は創立から130年以上の長い歴史を持つ県立高校で、地元では「北高」と呼ばれています。普通科と国際科があり、全校生徒は約1000人です。校則を持たず、自主独立の精神を伝統としているのが大きな特徴で、この伝統に基づき、学校行事や生徒会活動も生徒主体で行っています。
その生徒主体の活動を総括する組織が生徒会執行委員会です。毎年6月に執行委員長を選出(任期は1年)するとともに、学校行事を運営する運営委員会を組織して各種活動を行います。行事だけでなく校内環境の改善などといった活動も行っています。
学校行事の中では、大きなものが2つあります。1つは5月末に行われる「学校祭」で、いわゆる文化祭にあたるものです。生徒だけでなく保護者や地域住民など約3000人が来場します。大規模な展示を行うのが特徴で、学校祭の目玉になっています。また、体育館に本格的なステージを設営し、バンドやダンスの発表などを行ったりしています。もう1つの大きな行事は9月に実施される「うんどう会」です。これは要するに体育大会ですが、単なるスポーツ競技大会的な種目だけでなく、凸(デコ)と呼ばれる数メートル級の巨大展示物を作ったり、縦割り(※)対抗でのダンス発表など、運動にしばられない多様な内容が含まれているため、漢字ではなくひらがなで「うんどう会」としています。
※「縦割り」は、1・2・3年生からそれぞれ1クラスずつを抽選で組み合わせたグループです。校内では「ブロック」と称しています。ブロックごとに共通のイメージカラーを使用します。
これらの学校行事の企画・準備・運営はすべて運営委員会に所属する生徒たちが担っており、その人数は約100人に達します。運営に際しては、各種行事ごとに企画内容を詳細にまとめた「企画書」や、行事の運営を円滑に行うためのルールをまとめた「ルールブック」などの文書を作成し活用しています。
開発の動機
三田さんは、このような生徒会の活動をサポートするための校内情報基盤システムの必要性を感じ、そのシステムを「Polaris」と名付けて開発を進めてきました。
開発の動機として、2つの大きな課題を挙げました。1つは迅速で正確な情報伝達の必要性です。生徒間でやりとりする情報は、LINE、およびそれに添付されるPDFファイル、あるいは紙など、さまざまな媒体に分散しています。加えて多種多様な組織が並行して動くこともあり、生徒会で活動するメンバーは情報が飽和してしまい、各自が欲しい情報をすぐに探せないという課題がありました。さらに紙での閲覧を想定した資料はスマートフォンで見るには向いていないといったような、情報の最適化がなされていないという問題もありました。
もう1つの課題は、膨大な資料の保管が難しいというものです。浜松北高校は1学年9クラス、3学年で27クラスを擁する学校ですが、各クラスで20ページの企画書を1つ作ったとしても全校で500ページ以上になります。生徒会室では過去数年分の資料を保管していますが、紙による保管には限界があるため、電子化するとともに誰でも閲覧できるような環境を実現したいと考えました。
過去にはうんどう会のホームページを作成したこともありました。これは通常のホームページ機能(日時・会場・プログラム紹介など)に加えて、現在進行中のプログラムがひと目でわかる予定表示機能や、自分の出席番号を入力すると出場する競技や集合時刻などがわかる検索機能、AIを使って資料を横断的に検索する機能を実装しました。
しかし、これらの開発を通して感じたのは、個人に最適化した情報提供は難しいということでした。AIによる検索機能も、AIに質問するという手間が発生してしまいます。その人の所属組織や何を求めているかというデータに応じた情報提供を行う仕組みが必要と三田さんは感じました。
Polarisが目指したもの
このような動機のもとで開発したのがPolarisです。システム構成や使用したソフトウェアなどを紹介する前に、Polarisで実現したかったことを説明します。
まずは、学校固有のシステムに対応した生徒の情報管理です。学校は年度によって生徒の入れ替わりがあり、また組織も入れ子状になっていて複雑なので、既存のソフトウェアでは解決することが難しい課題です。そこで自作による解決を試みました。次に、さまざまな情報を一元管理し、個人に合わせて情報提供する仕組みです。また、生徒の卒業によって資料が失われないような、適切な管理の仕組みも実現したいと考えました。それから書類の編集環境も自由で柔軟に作業できるようにしたいという目標を立てました。ちなみに生徒の皆さんは主にChromebookを使っているそうです。
Polarisのシステム構成
これらの目標を実現するために開発したPolarisでは、主に以下のソフトウェアを使用しました。(後ほど個別に解説します)
- 認証基盤 – Authentik
- ユーザー情報基盤 – dir-console(自作)
- ポータルサイト – Polaris Portal(自作)
- Webファイラー – OpenCloud
- Office編集 – ONLYOFFICE
- ドキュメント基盤 – MediaWiki
システム構成図を上に掲げます。Authentikを使ってシングルサインオン(SSO)によるログイン基盤を構築し、自作したdir-consoleという組織情報を扱う基盤を同期しながら、各種アプリケーションに情報を提供していくという構成になっています。
ちなみに設計思想としては、OSSを積極的に使う、1つのサービスに機能を載せすぎないように適切にモジュール分割する、既存のソフトウェアで賄えないものだけを自作する、技術スタックをできるだけ統一する、シンプルでわかりやすい構成および管理の仕組みにする、といったことを心がけました。
認証基盤
認証基盤にはAuthentikという、OSSの認証基盤ソフトウェアを利用しました。セルフホスト可能なものを求めていたので、それに合致するこちらを採用しました。認証やSSOログイン、それから簡易的なディレクトリ機能もあります。Authentik自体は多機能でありながら、非常にシンプルで軽量で利用しやすいのが良い点とのことです。
ユーザー情報基盤
ユーザー情報基盤として三田さんが開発したのがdir-consoleです。これは学年や所属組織、権限管理などを担当するソフトウェアです。階層型のディレクトリ情報や入れ子になっているディレクトリ情報を扱えるようになっており、また年度別の組織管理も行えるようにしています。Authentikとの間の双方向同期も実装しました。内部実装としてはフレームワークにNext.js、データベースにPostgreSQLを使用しています。
上図はdir-consoleに保存される情報を模式的に描いたものです。出席番号などユーザーを識別する情報が年度ごとに変わるので、それに対応した設計になっています。また、生徒は複数の組織に所属するので、それにも対応しています。それからアクセス権限の管理もdir-consoleの仕事で、アプリケーションへのアクセス権限や文書の編集権限などを管理できるようになっています。
特に組織情報の管理は、組織構成が複雑なので実装も難しくなります。上図は生徒会の組織構造です。生徒会の中に執行委員会という組織が存在し、その中も執行委員長、監査、広報などさまざまな役割が存在します。このような構造において、例えば執行委員長であり、図書委員会にも所属しているというような状態を正確に表現するには、既存のソフトウェアではうまくいかないので自分たちで新たに開発しました。また、組織情報が入れ子になっているという、この学校特有の事情に合わせて開発を行いました。
それから実装に際しては、外部アプリケーションから利用するためのAPIの整備や、ピッカーUIをパッケージ化し、他のソフトウェアから柔軟に使えるような仕組みを整えました。また、Authentikのグループ機能やディレクトリ機能を応用することで、既存サービスに追加実装することなく統合できるようにしました。
ポータルサイト
生徒が利用するポータルサイトもPolaris Portalという名前で自作しました。dir-consoleに記録された組織情報を利用し、各生徒が所属している組織に応じた予定や伝達事項などを表示します。部活動の予算もここで管理できるようになっています。こちらの実装も、フレームワークはNext.js、データベースはPostgreSQLを使用しています。
Webファイラー
ポータルサイトから各種ファイルにアクセスして閲覧するためのWebファイラーとしてOpenCloudを使用しています。OpenCloudはOSSのWebファイラーで、シンプルで軽量なのが特徴です。この種のソフトウェアで有名なのはNextCloudですが、リソースを多く消費することや、NextCloudが持つ機能が今回の要件以上に豊富すぎるため、OpenCloudを採用しました。
OpenCloudは各組織ごとにワークスペースを用意することができるので、データの属人化を防ぎつつ保持することができます。また、過去の資料の保存や検索も実現しました。ちなみに過去の資料は20年分ぐらいあるそうで、これをすべてスキャンして閲覧できるようにしました。著作権などの関係で全生徒には公開できないような資料も、dir-consoleを利用して必要な人にだけ閲覧権限を付与しています。
文書編集基盤
生徒会で使用する資料の編集ソフトウェアとして、ONLYOFFICEを用意しました。これはオープンソースで開発されたMicrosoft Office互換のソフトウェアです。ブラウザで動作するので、OpenCloudから利用することができます。生徒が使っているChromebookでも動作しますし、複数人による同時編集にも対応しています。生徒会で作成する資料はWordやExcelを使ったものが多いのですが、ONLYOFFICEであればこれらのファイルも自由に扱うことができます。
それから、テキストのドキュメントの基盤としてMediaWikiを利用しています。こちらも共同編集が可能なことや、複雑な図表の作成にも対応していることが選定の理由です。エディタがWYSIWYGなので誰でも直感的に編集できることや、レスポンシブデザイン対応なのでスマートフォンでも閲覧できることも重要です。下図はMS-Wordで作成した書類をMediaWikiで変換して閲覧できるようにしている例です。
インフラ
Polarisを支えるインフラについても説明がありました。
まずサーバは、さくらインターネットから提供されたさくらのVPS(メモリ8GBプラン)を使用しています。選定理由として、シンプルであること、学校というアクセス数がある程度固定された環境のためスケールが不要であること、Linuxの知識があれば使えるので学習コストが低いことを挙げました。ちなみに使用しているディストリビューションはDebianだそうです。
次に、このさくらのVPS上に、DockerおよびDocker Composeを利用して仮想化環境を構築し運用しています。仮想化環境はKubernetesが有名ですが、それに比べてシンプルで学習コストが低いのでこちらを選択しました。学習コストが低いことは引き継ぎにおけるハードルも下がるので、今後三田さんが卒業して他のメンバーに管理してもらうことも考慮すると重要な観点です。
それから、アウトバウンドのトラフィックはすべてCloudflare経由で配信しています。Polarisは学校の内部で使うソフトウェアであり、学外の人が使うことはないので、Cloudflareのゼロトラスト認証を利用して部外者のアクセスを防止しています。また、CloudflareのCDNを利用したWeb配信の高速化や、Cloudflare Tunnelを使ってポートを開放することなくサイトを公開することも行っています。
開発期間
上図は開発のタイムラインです。2025年9月から約9か月をかけて開発しました。はじめに技術選定を行い、まずAuthentikを使ったSSO基盤を構築しました。10月からは3か月ほどかけてdir-consoleを開発し、続いて2026年1月からはPolaris Portalの開発に着手しました。そして5月に学校祭のホームページをリリースするタイミングでPolaris Portalも一緒にリリースしました。その後も日々更新を続けています。
システムの応用
Polarisの応用例として、学校祭のホームページについても紹介がありました。こちらではPolarisのログイン情報を利用した情報表示を実装しています。例えば上図はホームルーム(クラス)でブース出展するときの申し込み画面です。申込者の所属組織情報からホームルームを推定し、その情報を使って入力するように実装しています。
また、今回は学校祭当日の入場規制を行わなかったので実際には利用されませんでしたが、入場するための整理券を発行する仕組みも実装しました。人数を設定して申し込むとチケットが用意され、券面が表示されます。ステージが組まれる体育館の座席検索もできます。ちなみに前回まではGoogleフォームを利用していましたが、生徒の名前が違うとか入力した番号が違うなどでトラブルの原因になっていました。それが今回はPolarisのデータを利用することでそういった不整合が起きないようになりました。
引き継ぎと運用体制
最後に運用体制の話です。
今回、Polarisを開発するにあたっては、執行委員会の中に書記部署を設立し、開発・運用の中心部署に位置づけました。開発のⅠ期(2025/7〜2026/7)は現在の3年生(三田さんの代)が中心となり、初期開発やうんどう会・学校祭ホームページの作成を行いました。続くⅡ期(2026/7〜2026/10)は現在の2年生(宮﨑さんの代)が中心となり、今年のうんどう会ホームページを作成しました。11月からは現在の1年生に引き継いでⅢ期が始まり、各種改善やホームページ作成を担っていく予定です。宮﨑さんによると、Polarisはまだリリースされて日が浅いので、まずは多くの生徒に使ってもらうように普及することが大事と考えているそうです。
おわりに
今回の取材にあたり、筆者が事前に聞いていた情報は「浜松北高校に提供したサーバを使って生徒さんが何かを作った」という程度だったのですが、取材してみたら全校生徒が使うシステムをさくらのVPS 1台で自作したという話で、とても驚きました。有意義に使っていただき、とてもうれしく思いました。三田さんの今後のご活躍と、浜松北高校の皆さんがPolarisをより良い形で発展させ、学校生活に役立ててくださることを願っています。取材にご協力いただいた三田さん、宮﨑さん、ありがとうございました。

















