本記事では、本年度(2023 年度)に自分が受講した enPiT カリキュラムの体験談になります。最終レポートがブログ形式だったので、こちらで公開させていただきます。
本記事で掲載している内容は 2023 年度の内容であり、来年度以降は開講時期が一部変更されます。詳細は公式ページ(enPiT の 1 年 - enPiT-BizSysD × 筑波大学)やシラバスなどを必ず確認してください。
enPiT とは?
「enPiT」は情報学群(情報科学類、情報メディア創成学類、知識情報・図書館学類)の 3 年次学生を主な対象とし、ICT/IoT を活用して社会ニーズに応えるアプリケーションやシステムをチームで開発する PBL (Project Based Learning)形式のカリキュラムです。情報科学類では「主専攻実験」の一部、情報メディア創成学類では「情報メディア実験」の一部、として実施します。知識情報・図書館学類および情報学群以外の学生向けには情報学群共通科目「ビジネスシステムデザイン A、B」として実施します。
どうても良い余談
上記で引用した公式の紹介文、括弧が対応していない部分がありましたね w(VSCode の Syntax Highlight で気づいた)
enPiT は PBL: 実際にちゃんと手を動かす形式の授 業です。自分は知識情報・図書館学類(klis)ですのでそれ以外の学類の事情には明るくないのですが、klis が受講する場合、ビジネスシステムデザイン A(春学期) or ビジネスシステムデザイン B(秋学期)を受講することになります。
ここでの or は xor ではないので、いずれか、または両者という意味です!両方とっても良いし、任意の片方だけを取ることもできます。
ただ、自分はできるのであれば 両方を受講する ことをおすすめします!春学期のプロジェクトを引き継ぐことが可能だったり、両者受講することでより内容の深い理解に繋がります(単位的にも美味しい...)。
日程的にどうしても A xor B しか受けられないよ;;という方もご安心ください。自分も実際秋学期にインターンがあって受講が難しく断念する予定だったのですが、教員と相談してどうにか受講することができました! どうやってそれが実現したかは明言できないのですが、受けたいのにスケジュール的に受けられない!という方はまずは教員と相談しましょう!
具体的に授業で何を学ぶのかというと、
ニーズ駆動でのチームによるシステム開発技法を学びます。
身の回りの課題を取り上げて解決策を提案し、適切なシステム構成を設計、実装とレビューを繰り返して問題を真に解決するシステムを探索的に作り上げます。開発言語や技術は開発内容により異なります。具体的な学習の内容や特徴に関しては、「 enPiT の 1 年 」をご覧ください。
です。「それ、本当に必要?」「なんでそれがいるの?」を突き詰めた開発技法を学びます。具体的な開発技法としては、
それがアジャイルだ
―謎の自動音声1
が学べます。冒頭でも述べた通り 、学類やとる授業によって様々な受講スタイルを選べます。詳しくは、enPiT の 1 年をご覧ください。自分はビジネスシステムデザイン A(春学期)とビジネスシステムデザイン B(秋学期)の 2 つを通年で受講しました。
以降の説明では、enPiT で用いたビジネス・専門用語について文中で解説しません。enPiT 受講予定の皆様は、Footnotes2をご覧ください。
作ったプロダクト
我々のチームでは、筑波大学の芸術専門学群に所属する学生向けのポートフォリオサイト: Tsukugeiを開発しました。
プロダクトの EVP3は以下の通りです。
Tsuku Gei は作品を知ってもらう・応援してもらう機会が少ない問題を解決したい。
自分が作っている作品を知ってもらいたい芸専の人向けの
ポータルサイトです。
これは芸専専用のポートフォリオサイトを用意することによって、
SNS・メルカリとは違って
より自分の作品のバックグラウンドを知ってもらうことができます。
人に出会うように、作品に出会える4
―Tsukugei
使用した主な技術は以下の通りです。
- Next.js
- Cloud Run
- Firestore / Firebase Cloud Storage
- Tailwind CSS
- FireCMS
チーム
- PO
- 名の通り、プロダクトのために一番動いてた。絶望しがち。
- SM
- 芸専の人脈のプロ。後半は完全にオタク共のタイムキーパー/仕切り役/母をやっていて大変そうだった。。
- haku
- 同じく芸専の人脈のプロ。バグダイナソー5の生みの親
- slimalized
- Tsukugei の UI の良さをよく褒めていただけますが、ほぼ slimalized の功績と言って良いでしょう。Web デザインの依頼はslimalized.devまで。
- makiart
- 技術・プロダクトの観点・諸々で全て自分を勝っているので勝ち目はありません。残念でした6。
- ren
- 秋学期から参加したにもかかわらず、音速でプロダクトと開発手法/内部事情を把握して大量の PR を生やしたエース
- 俺
- 無限残業
自分の立ちふるまい
主に以下をしてました(基本的には開発が多め)
- 機能開発
- CI/CD 周りのお手入れ
- 各メンバーのフォローアップ(w/ makiart)
- レビューよろしく頼んだゾウ bot
- 微修正 PR を永遠に投げる無限残業マシン7
軌跡
ここでは主に秋学期で行ったことを紹介します!
本当は通年の内容をたっぷり書きたかったのですが、提出期限が本日の 23:59だったので諦めました 😅😅😅😅😅
余力があったら今度通年の部分も書きます........
迷走 ―そして混沌へ―
春学期の集中講義でこのテーマを掲げて以降、音速で開発を進めていましたので、ある程度プロダクトとしては持っていきたいところまでできていました(経緯は他の人のブログを見てください 😅)。具体的には
- 作品の一覧
- 作品の詳細
- ユーザーページ
が実装され、当初の EVP をある程度満たしていると言えます。
EVP(再揚)
Tsuku Gei は作品を知ってもらう・応援してもらう機会が少ない問題を解決したい。
自分が作っている作品を知って もらいたい芸専の人向けの
ポータルサイトです。
これは芸専専用のポートフォリオサイトを用意することによって、
SNS・メルカリとは違って
より自分の作品のバックグラウンドを知ってもらうことができます。
ですが、それが仇となり、 我々はやることを見失いました。 この授業は機能の数やページの美しさで評価が決まるものではありません。 どのユーザーをターゲットにした、どんなプロダクトなのか がはっきりしていなければ、プロダクトとして価値があるとは言い難いです。
迷走した我々は、各スプリントでとりあえず開発する機能を挙げていきます。
-
?「うーーん、取り合えず通報機能作るかあ?」
-
?「ほら、作品に出逢いたいって言ってたじゃん、T◯nder 風の UI にすれば満たせるくね」
-
?「作品のバックグラウンドを示すのに詳細を書かない輩がいるなあ...せや!GPT に勝手に書かせる機能を作ろう!」
毎スプリントでゴールを聞かれ答えるのが苦しい日々、我々は当初の EVP に縛られ、なかなか結論が出ない日々を過ごしました。
ここでのゴールは、スプリントで "すること" ではなく "ユーザーに対してどのような価値が付加されるのか" が重要です。
リファクタリングしました!
はだめってことですね(キビシイ...)
耳をすませば
我々は開発の手をいったん停めました。 そもそもこのプロダクトは 芸専向けのプロダクト。彼らの声なしでは今後の方向性は決まりません。
こうして我々は芸専の人から生の声を聞くために、あの手この手で声を収集しました。
ここで気付かされたのが、我々がターゲットにしている芸専の方々は enPiT で授業を受けていない人が多いため、声を聞くだけでも一苦労です。ほかチームではターゲット層が授業履修者にいるので、授業時間内で聞きに回ることができますが、我々はその時間内で終わることが難しく、基本的には時間外で聞きに行くことがほとんどでした。改めて、 プロダクトづくりの難しさってこういうところにあるんだな... と実感した瞬間です。
具体的に行った活動や議論:
- 芸専の教員にプロダクト゚に関する意見を求める
- 大学オフィシャルにするよう働きがけて(例えば課題提出方法にしてしまうなど)、そうすればみんなが使うようになるのでは?
- 教務に卒展で使っていただけないか提案
- 時間的に厳しいかなあ
- 春学期に収集した意見をまとめてみよう
- ↓ それを元にして作った PBL8
- ↓ それを元にして作った PBL8
Tsukugei v2 へ
そして最終的に出来上がったのが現在の形の Tsukugei です。大きな仕様は変わっていないので厳密には v1.90 と行ったところでしょうか?
- トップページは作品一覧に: YouTube のように初手から出会える
- 応援機能: ハートでブックマークと応援を兼ねる
- コメント機能: 本人にのみ閲覧可能なコメントを残せる
- レビューで一般公開でも良いのでは?という声を頂いた
- スワイプ機能: 本人の好みではなく、パッタリと出会える
- もっと見るボタン廃止: 無限スクロール
- ロードを高速化: 画像サイズを小さくし、データフェッチ時のアルゴリズムを改善
- などなど...
基本的には芸専やメンターの方、我々が感じた改善点などをベースに機能開発、改善を行いました。