私は学生時代に学園祭実行委員会に所属し、PHPを用いた学園祭Webサイトの開発・運用や情シス業務に携わっていました。その頃の経験を振り返り、学園祭というドメインならではのWeb開発の過去と未来に触れつつ、一般のエンジニアでも他人事ではない技術選定や教育に関する話をします。
学園祭Web開発の現場とPHPのこれまでとこれから── 技術選定と教育から語る2023-10-08 (Sun.) PHP Conference Japan 20231Arthur
View Slide
自己紹介Arthur株式会社はてなアプリケーションエンジニア2022年新卒入社(2年目)id:arthur-1@Arthur1__https://blog.arthur1.dev/2
3お仕事の様子はこちらをチェック👇仮説検証サイクルでユーザーの声を高速に叶える「キカク組」の取り組み/ Mackerel Drink Up #11
学生時代の話東京工業大学で学園祭実行委員をしていたWebサイト制作&情シスを担う部署に所属▶ 規模感 来場者: 4万人 サイト年間 PV: 50万4
PHP 書いてました自分は PHP で動的な部分を作っていた:• FuelPHP で MVP(Model-View-Presenter)• 認証基盤• 参加団体の各種申請フォーム• グランプリ企画投票システムなど5
おしながき学園祭Web開発の現場トークを軸に、こんな話をします:• 講習会と砂場遊びで支える組織• 自分たちの責務をどう絞り、どう委嘱するか6
講習会と砂場遊びで支える組織7
8時は遡り……🕰2015-2017
チームの特徴⚫学園祭実行委員会全体• 3年で強制引退3年経ったら誰もいなくなってる職場を想像してみてください⚫Web担当の部署• 各学年 4〜8人ぐらい• 情報系の学生が多いが、Web開発は初めての人がほとんど9
プロダクトの特徴1年間で外向けに出すプロダクトは2つどちらも毎年1から作り直していた⚫新歓サイト新入生向けにサークルの雰囲気を伝え、新歓イベントを告知⚫学園祭サイト毎年決まったテーマに合わせたデザイン(賞味期限が短い)Webパンフレット・参加団体向けの電子申請システムもある10
3年間の流れ111年目 2年目 3年目とにかく学ぶ● 講習会● 遊びサイト作り実働部隊● 新歓サイト制作● 学園祭サイト制作マネジメント・教育学年ごと役割がはっきりしている
3年間の流れ121年目 2年目 3年目とにかく学ぶ● 講習会● 遊びサイト作り実働部隊● 新歓サイト制作● 学園祭サイト制作マネジメント・教育
講習会3年生が1年生にWeb開発のいろはを教えていた13←semantic coding啓蒙のために意味からタグ名を覚えさせる
講習会のカリキュラム14HTML/CSSJavaScriptサーバサイドプログラミングPHP・PHP フレームワークデザインフロントエンド発展共通専修
3年間の流れ151年目 2年目 3年目とにかく学ぶ● 講習会● 遊びサイト作り実働部隊● 新歓サイト制作● 学園祭サイト制作マネジメント・教育
遊びサイト作り夏/冬の合宿用の内部向けWebサイトを作る:• 委員の紹介ページ• 旅行のしおり• おもしろコンテンツ最低限の要件が満たされていれば何をどう作るかは自由イースターエッグ仕込むのが楽しくて徹夜でコーディング16
学んだことを実践する場17HTML/CSSJavaScriptサーバサイドプログラミングPHP・PHP フレームワークデザインフロントエンド発展共通夏合宿サイト制作冬合宿サイト制作
砂場遊びの意義• 面白いことは単純にモチベーションが上がる• 手を動かすと座学で学んだことが定着する• Project Based Learning• ものづくりができる人間になれる(動くものを作り切る力)18
はてなにも砂場があった社会人になっても砂場は用意されていた(よかった!)• 社内向けのWebサービスを有志で開発・保守する文化• 開発合宿• クラウドサービスを気軽に検証利用できる環境19
開発の様子20
3年間の流れ211年目 2年目 3年目とにかく学ぶ● 講習会● 遊びサイト作り実働部隊● 新歓サイト制作● 学園祭サイト制作マネジメント・教育
当時のアーキテクチャ以下が全部入りのモノレポ• お客さん向けの企画情報サイト(Webパンフレット)• 参加団体の電子申請システムFuelPHP で作ったものがレンタルサーバにぽんと載っていた22
Server Side TemplatingServer Side Templatingサーバで HTML を組み立てて返すPHP の十八番23MySQLPHPheaderfooterレンタルサーバApache企画の情報
大枠は GW に集中開発学園祭サイトはゴールデンウィークに部室に集まって開発なんと当時は git という文明が取り入れられてなかったレンタルサーバ上のファイルを読み書きコンフリクト防止のための編集権(券)24
技術選定:自分たちの責務をどう絞り、どう委嘱するか25
学園祭サイトに求める非機能要件可用性めちゃくちゃ高くなくて良い、紙パンフレットもある学園祭程度の規模なら、普通にやっていれば大体期待に適う※ ただし、バナー広告の契約がある場合注意コスト学生団体に扱える金の規模ってものがある制御可能であって欲しい26
学園祭サイトに求める非機能要件セキュリティ個人情報漏洩とかインシデント起こしたら普通に困る認証・決済周りは手作りをなくす、SaaS に任せるのを検討運用・保守1年使えればとりあえず大丈夫。作り捨て前提日々の運用に労力はあまりかけられない27
28現代の話……🕰2023-
今の自分が設計するなら…… (1)ただの Web パンフレットだったら 静的サイトとして作りたいサーバを持たない方が管理・セキュリティ面で楽SST で作っていたところ→ フロントエンドフレームワークの Static Site Generation に任せるバックエンドのデータ→ JSON ポン置きでもなんとかなりそう29
今の自分が設計するなら…… (2)参加団体が使う電子申請システム部分→ Web パンフレット部分と分離して作るビジネスフローが変わらなければ毎年作り直さなくても良いこの動的なWebアプリケーション、何で作る?Go, Rust, Scala, PHP, Python ……30
31Q. PHP は使われなくなる?
32A. 今のところまだまだ戦えると思う
レンタルサーバー最強説プラットフォームの事情も大きいいわゆる「レンタルサーバー」でPHPが簡単に動く• 定額だしコスパ良しクラウド破産しない• できることの範囲が狭い分、こちらの責任範囲も狭いWebセキュリティ考えるだけでも精一杯33
一般論リソースは有限なので、チームとプロダクトの性質を見極め、どこまで自分たちで頑張るか考えよう筋を通し続けると、尤もらしいアーキテクチャが見えてくる仕事で ADR(Architecture Decision Record)書くときもこういう思考が役に立ってる34
Wrap Up35
学園祭Web開発の特徴• Webサイトとしての賞味期限が短い• 人も短いスパンでどんどん入れ替わっていく• 非機能要件ではコストとセキュリティが気になりがち36
教育• 体系的な学びと砂場遊びを組み合わせ、ものづくりをできる人を育てる37
技術選定• 学生目線では多少可用性を犠牲にしてもコストが予測可能であることが大事• プラットフォームの事情から PHP は今でも優位• リソースは有限なので、チームとプロダクトの性質を見極め、どこまで自分たちで頑張るか考える38
39ご清聴いただきありがとうございましたArthur