広島大学公式ウェブサイト

広島大学は「自由で平和な一つの大学」という建学の精神を継承し、「平和を希求する精神」「新たなる知の創造」「豊かな人間性を培う教育」「地域社会・国際社会との共存」「絶えざる自己変革」の5つの理念の下、11学部11研究科を擁する日本でも有数の総合研究大学として、大きく発展を遂げています。 平成26年度スーパーグローバル大学創成支援のタイプA(トップ型)13大学の1つに、中国四国地方で唯一採択されました。

システムフレンドは、2016年、広島大学の一般競争入札において、「Drupalを用いた新CMS構築業務」一式を受注しました。

この業務の目的は、それまで用いられてきたベンダーによる独自CMSに変わり、オープンソースのCMSであるDrupalを用いて公式ウェブサイト運用システムを構築するというものでした。オープンソースのCMSが選ばれた理由は、様々な要件を満たしていくにあたって、最も全体の費用を抑えることができる方法であったためと思われます。

弊社では、拡張モジュールの導入、カスタムモジュールの作成などによって、以下のような特徴的要件に対応しました。
 

特徴的な要件

100以上のサイトを一元管理

広島大学では、独自CMS時代から、学部や学科、さらには大学病院や附属学校といった別々の組織のコンテンツを、全て1つのCMS上で管理するという運用が取られています。その規模は、100以上の組織・グループ、880人以上のユーザーによる、4万を超えるページの管理に及びます。Drupalによる新CMSでも、この方式がとれる必要がありました。

新CMSでは、このために必要な主要機能を、Organic groups といった拡張モジュールの導入によって実現しています。グループという概念、権限の制御、グループ別のコンテンツ管理といった主要な機能が、既存の拡張モジュールを導入するだけで実現でき、しかもこれだけのコンテンツ量に対応できるというのは、Drupalの大きな魅力です。

また、カスタムモジュールを作成することによって、既存の拡張モジュールだけでは対応できない、細かい使い勝手の向上を図っています。例えば、サイドバーやフッターといった、通常のDrupalサイトであれば、標準のブロックとして管理するような部分も、各グループがグループ内コンテンツだけを編集すれば済むようにしました。

100以上のウェブサイトを個別に立ち上げる場合と比べると、圧倒的に低コストで運用できているものと思われます。
 

スキルの異なる800人以上のユーザーが携わるなかでコンテンツの一貫性を保つ

コンテンツの編集を各グループの担当者に任せるという運用は、コンテンツ作成にかかるコストを下げることにもつながります。とはいえそのためには、HTMLやCSSに詳しくない方でもコンテンツを管理できるようにしたり、800人以上のユーザーが携わっても各要素の見た目が統一され、アクセシビリティが遵守されることを保証する必要がありました。

新CMSでは、この要件を、Paragraphs という拡張モジュールの導入によって満たしています。Paragraphsモジュールを用いると、コンテンツ中のある範囲を(例えば、画像とタイトルと説明がセットになったようなリンク)一つの部品として扱うことが可能になります。コンテンツの管理上は、この部品を追加し、その部品に対して画像やタイトルなど個々の項目を設定していく形になるので、ユーザーがHTMLやCSSのクラスを意識する必要が生じません。
 

Shibbolethと連携したログイン認証

大学サイト特有の要件ですが、広島大学で運用されているShibboleth IdPと連携して、ユーザーの追加・認証を行なう必要がありました。

新CMSでは、Shibboleth authentication といった拡張モジュールを導入するとともに、カスタムモジュールによって、独自の拡張項目や、ロードバランサー配下の環境での認証処理などに対応しました。
 

合格発表時の大量アクセス

合格発表時の大量アクセスを捌くために、新CMSではCDNのFastlyを利用しています。

同時に、コンテンツ更新によるキャッシュクリア範囲を最小限にとどめるため、独自Surrogate Keysの設定、パージ処理をカスタムモジュールによって制御しています。例えば、あるグループのお知らせコンテンツが更新された場合には、そのグループのページと、当該お知らせを連動して掲載しているグループのページのみがパージの対象となります。
 

サービスの停止を伴わないセキュリティ保守

インフラの構築・運用については、「イミュータブルインフラストラクチャー」、「インフラストラクチャーアズコード」方式を採用すると同時に、新CMSに対して独自のメンテナンスモードを追加することで、サイトを稼働させたまま、常に最新のシステム・インフラ環境へアップデートすることを可能にしました。