home
Posts

enPiTという授業を受けた感想

公開|2024-02-11
更新|2024-02-22


学部の通年実験としてenPiT2(以下、enPiT)という講義を履修しているのですが、この講義の期末レポートは「ブログ形式で執筆して、全世界にドンドン公開しちゃいましょう!(意訳)」という大変ユニークな形式をとっています1。私も教員の方々のそんな説明を受けて、

を本記事に書き連ねました。この記事が今後enPiTを受講しようか悩んでいる本学後輩の方々の参考に少しでもなれば、幸いに思います。

enPiTとは

少し古いですが上記のnote記事に概要がとてもキャッチーに分かりやすくまとめられています。2

端的に表すと「インタビューやレビューによる反復開発を主眼に置いたチーム開発を通して、 身近な困り事を解決する為のプロダクトを作り上げる講義」がenPiTであり、その中で

などを体系的に身に着けられることが、この講義の醍醐味と言えるでしょう。

本学でのenPiTの1年間は以下のような流れで進みました。

以下、夏休みの合宿から最終成果発表会にかけて、開発したプロダクトやチームのことや1年間を通して学んだことに重点を置いて話していこうと思います。

チームメンバー

私達のチームは春学期は6名、秋学期は7名と、比較的人数多めの体制で開発を行いました。

  1. A氏 (PO/プロダクトオーナー)
    • 開発の各段階で責任を持ち、最終的な判断を下すプロダクトオーナーとしてチームを引っ張ってくれました。発表も基本的にA氏が中心となって取りまとめてくれて、とても頼れるリーダーでした。
  2. B氏(SM/スクラムマスター)
    • 時間や進捗を管理し開発が円滑に進むようチームを主導するスクラムマスターとして、チームに規律をもたらしてくれました。人数が多いチームで統率を取るのが難しい中最後まで完走できたのはB氏のおかげです。
  3. C氏
    • 高い開発力を持ち、フロント・バック問わずいろいろな実装をしてくれました。受け持ったタスクを時間内に爆速で仕上げる職人で、新しい機能を追加する時の下地の多くはC氏がやってくれたため他のメンバーも円滑に引き継いで作業ができた気がします。
  4. D氏
    • 高い開発力を持ち、フロント・バック問わずいろいろな実装をしてくれました。細かいところに色々手が回り、メンバーの中で誰よりも多くコーディングをしてくれたのは確実にD氏です。プロダクトの細かい部分は彼の手によって支えられています。
  5. E氏
    • とてもノリが良くチームの士気を高めてくれました。プロダクトのロゴを作ってくれたりスタートページを実装したりと、縁の下の力持ちでもあります。
  6. F氏
    • チームの再編に伴い秋学期から加入してきました。とても学習意欲が高く、自分から率先してタスクを引き受け卒なくこなす姿からは見習う部分が多くありました。
    • デザイン周り全般の設計、加えてフロントの一部を担当しました。

…とかなり簡潔に書きましたが、私達のチームは他のチームの何倍も和気あいあいとしていて、常に笑いの絶えないhappyなチームでした。

チームでは

という共通認識の下で開発を進めました。心理的安全性の担保を重要視し、自分の悩みや考えを一人で抱え込まずに誰もが気軽に質問・議論できる雰囲気の中で開発できたのは、本当に素晴らしいことだったと思います。加えて合宿中にはメンバーの運転する車でランチに出かけたり、開発には時たまメンバーが差し入れを持ってきてくれたり、学期末には打ち上げを開いて交流を深め合えたりと、ゆるやかで心地のよい関わりが総じてプラスに働きました。

開発したプロダクトについて

「TsukuGei」という、自分が所属する筑波大学の芸術専門学群(以下、芸専)の学生の方々向けの作品ポータルサイトを開発しました。

TsukuGei
TsukuGei

顧客:芸専の作品に興味があり、作者さんを知りたい・応援したいと思っている人/芸専の学生であり、作品をもっと多くの人に見てもらいたい・知ってもらいたいと思っている人。

問題:芸専の実学的な講義は専門生にのみに履修が限られるものが多いです。そのため、芸専の方々の作品を見れる機会は卒展や芸術祭などの一部期間に限られてしまい、芸専の作品を知る機会は多くありません。学生の方々が個別にSNSを通して作品の発信をしているケースもいくつかありますが、SNSの世界は広くて見つけ出すのが大変です。

解決:芸専の方々の作品を集約したポータルサイトを作り、作品を一箇所でまとめて見れる場を提供します。芸専の学生はサイトに登録することで作品を自由に発信することができ、芸専の作品に興味がある人も迷うことなく作品を見ることができます。同時に、作品の購入サイトやSNSへとつなぐハブ空港のような役割を期待することができます。

上記のように対象となる「顧客・問題・解決」を定義してプロダクトを開発しました。ベーシックなSNSと同じように作品の投稿・削除・通報・一覧表示、作品に対するいいね・コメントの投稿機能を備え、加えて作品に使った画材や作品の詳細な解説を書ける説明欄や、作品の購入リンク項目を登録できる仕様、作品のランダム表示機能4なども実装しました。

活動の変遷

自己学習期間

Chrome向け拡張機能5を作ったり、積み本を消化したり、Next.jsのようなモダンなWebフレームワークに入門したりしました。学習はかなり自由で、Unityでゲームを作っている人とか人工知能でおしゃべりBOTを作っている人とかも見られました。受講生の自由な活動から触発されてやる気が出た部分も多々あり、かなり有意義な時間でした。

合宿

アジャイル的な考えにチームのみんながまだ慣れておらず、聞きたいことを聞くためのレビューの仕方に苦労した合宿でした。開発期間も少なく毎日が忙しく本当にあっという間でした。投稿・削除・閲覧機能を実装して最低限の形としてプロダクトを提供できたところで、合宿は幕を閉じました。

秋学期

スプリント1

一旦開発の進捗を少し遅らせ、大学で11月序盤に開催される芸術祭で広報活動をするべくNotionでの特設サイトの制作に力を入れました。「広報のためだけにわざわざ自前でプロダクトを作るのはコストパフォーマンスが悪い」と判断して存在するサービスを使用して特設サイトを作りましたが、そんな割り切った判断が案外評判が良く、驚きました。特別な例かもしれませんが「価値を提供できるのなら既存のサービスを一部使用しても構わない」ということを知れたのは良かった反面、広報で得られた成果は芳しいものとは言えませんでした。芸専の方々の一部にはプロダクトを知っていただけましたが、広範囲に広めることは出来ませんでした。

スプリント2

芸専側の意見を芸術祭で多く回収するつもりでいたのに対して予想以上に意見を得ることが出来なかったため、プロダクトの方針にブレが生じました。いいね機能の実装などの進捗はありましたがクリティカルに進んだ部分は少なかった印象です。チームとしての共通認識を再確認するためにも議論をする時間を増やし、芸専側のニーズをこちら側で探って芸専の教授のもとへ相談しに行くということになりました。

スプリント3

芸専の教授のもとへPOとSMのお二方がインタビューにお伺いし、貴重な意見を多くいただきました。当初私達は「大学の名を冠した芸専向けのポートフォリオサイトに方向転換するのはどうか?」と迷っていましたが、「芸専のポートフォリオは独自なものが多く、テンプレートなものに当てはめるのではなく自分で1から制作して個性を出すものも多い。そのため、価値提供としては不十分である。」とバッサリ切っていただけたのは、とてもありがたい経験だったと思います。他にも芸専目線での意見を多くいただき、総仕上げに向けてやることの方針を強固に決めることの出来た、学びの多い期間でした。

スプリント4

溜まっていたタスクをうまく振り分けてプロダクトの総仕上げを行いました。開発練度の成熟具合も最高潮に達し、後述する開発スタイルもうまく合わさり、通報機能やスタートページの追加、CMSとの連携など、最後の短い期間ながら多くの機能を盛り込むことができました。また、最終成果発表会に向けて各々の感じたことを話し合い、プレゼン資料をまとめ上げました。

全体を通した振り返り

当事者の意見の重要性

これは私が最終成果発表会の原稿としても提示してメンバー間で深く共有し合った部分であり、やはりenPiTの1年間は当事者の意見の重要性を身にしみて理解した1年間であったと感じます。

私達が選んだテーマはレビューをもらう上で非常に難しいものでした。というのも「作品を投稿する芸専側」と「作品を見るユーザ側(非芸専側が主体)」の2つのユーザが存在し、両者からレビューをもらう必要性があるからです。特に「芸専の学生」は情報学群生向けに開講されているenPiTの授業内には居ないので、意見をもらうのにとても苦労しました。

などと、芸専側の意見を汲み取れるように活動しましたが、振り返ってみるとやはり十分な量の意見を得られたとは言えず、芸専側のニーズに十分にフィットした他に変わりが存在しないような価値提供が出来たとは言い難いプロダクトになってしまいました。

そのような中でも芸専の学生の意見を反映できた一例として、「いいね数やコメントが作者のみにしか見えないという、情報の半隠匿実装」があります。我々のプロダクトにおけるいいねやコメントは他のSNSとは異なり、受け取り手である作品の作者本人からしか見ることが出来ません。これは、「一般的なSNSではいいね数が可視化されるので、作風が似ているのに自分に比べて沢山のいいねがついている作品を見てしまうと、少し辛くなってしまう」という、実際に芸専の学生の方から頂いた意見を反映させた実装です。

一方、興味深いことに、授業内でのレビューでは一転して「なぜ他のSNSのようにいいね数が見れないのか?」という意見が多く挙げられました。レビュワーの方々に対しては芸専側のコンテクストに基づいてあえてこのような実装をしているのだと説明することで、納得していただけました。

授業内でのレビューで頂いた意見は、そもそも我々のプロダクトに興味がない(すなわち、芸専の作品や芸専への応援に興味がない)人の意見を含むものです。ゆえに、得られるレビューは良くも悪くも万人に共通する感性に根拠を持つレビューが多々含まれました。確かに「いいね数が見れた方が良い」は常識的な感性に基づく妥当な意見です。しかし「本当に困っている顧客の課題を解決する為の実装であるか?」を考えると、「万人に共通するもっともらしい意見に応じて、いいね数を表示させれば良い」というわけでは必ずしもありません。プロダクトを求めている顧客、すなわち当事者の意見を反映させることがとても重要です。多数票の意見を愚直に反映し続けるだけではなく、スコープを当事者に狭めて、当事者ならではのコンテクストで語られた意見に大きな価値を置くべきであるのだと、強く実感をしました。

総じて、enPiT受講者のような様々な属性を持つ集団から意見をもらう際は、多く得られた意見が必ずしも価値提供につながるとは限らないという難しさを感じました。

技術力格差への向き合い方

enPiTでは様々なバックグラウンドを持つメンバーが集まってチーム開発が行われるため、個々の得意な部分・不得意な部分がまちまちです。そのような中、「プロダクトの進捗の為には技術的背景を多く持つ人が多くのタスクを受け持ったほうが効率が良い」一方で、「チームの成長の為には全員が万遍なくタスクを受け持った方が良い」という進捗と成長の2つの視点から生じるジレンマは、多くのチームが直面した課題であったと思います。

私達のチームも秋学期にプロダクトの詳細な機能を作る段階に入ってからこの課題が顕在化していました。私達はチームとして「プロダクトの開発も重要であるが、それ以上に我々一人一人がenPiTを通して技術的に成長することが重要である」という結論にいたり、「技術的背景を多く持つ人があえて特定のタスクを持たず、他のタスクを持っている人の元を回りながらヘルプやアドバイスをする」という形式を導入しました。開発スピートが少し遅くなって毎週のレビューでの報告量は減少してしまいましたが、そのかわりに、

と、両者にとって良い開発体験になりました。総合的に得られたメリットのほうが多く、技術力に差のあるチームでは技術リーダーが一旦手を止めて全力でサポートに回ることが、有力な手法なのだと実感しました。

初学者がモダンな技術を扱う難しさ

少し脇道にそれる話ですが、このブログはAstroというモダンなwebフレームワークを用いて、年のはじめから1ヶ月ほどかけて生活の合間にちまちまと作り上げたものです。現在(2024年02月11日時点)、Astroの開発はHOTなものでこの1ヶ月の間でも数回アップデートがありました。現在での最新versionは4.3.5ですが、およそ1年ほど前のversionは2.0でした7。私がブログを作るうえで当たり前のように使っているAstroの便利な機能も、1年前には公式にサポートされていなかったものが多く、もし1年前にこのブログと同等のものをAstroで作ろうとしていたらおそらく完成までに倍以上の時間がかかっていたことでしょう。モダンな技術の変遷は目まぐるしいものであり、「IT系で働くということは、本当に(最新の情勢をキャッチアップするために)一生勉強をし続けないといけない、勤勉者の世界なんだなぁ」と思うところであります。

enPiTの授業では使用技術スタックは自由に決めることができるのですが、私の所感としては例年モダンなフレームワークを用いたweb開発が多く感じられます。ゆえに、enPiTもモダンな技術の変化の影響を大きく受ける授業です。現に、私達のプロダクトではwebフレームワークとしてNext.jsを採用しましたが、ちょうどApp Routerのルーティングが安定版扱いになった時期であり最新のApp Routerを用いるか、旧来のPages Routerを用いるかで話をした覚えがあります。

モダンな技術が発展するほど、私達がめんどくさく思う難解な概念は透明度を増し、そんな難しいことを考えなくても良い、誰もが高度なことをより簡単に効率よく開発できる環境が成熟していきます。一方、それは私のような初学者からしては難しい部分でもあり、プロダクトを作るような複雑な処理をしようとした途端、その透明性故にどこから手をつけていいのかが分からないことがしばしばありました。「分からない言葉を調べたら、その説明文にも分からない言葉がたくさんあり、その言葉を調べたら、さらに分からない言葉が…」が無限のように続くことがしばしばあり、この透明な部分に対する知識量の違いが、技術的背景を多く持つ人と初学者との格差の本質的な部分であるのだと思います。

enPiTの最初、春学期の自己学習期間というのはこのモダンな技術を扱う上での準備期間であったはずです。しかし振り返って見ると、この時間はチュートリアルを通して単にモダンな技術をキャッチアップする時間ではなく、「モダンな技術の枠組みを飛び越え、自分が限られた時間を通して考えるべき対象を、透明な部分の中から取捨選択するための準備期間」であったのだろうなぁと感じます。先ほど述べたように初学者にとっては分からない概念が無限のように存在するのに対し、enPiTに充てられる時間には限りがあります。その様な中からうまく取捨選択をするためには、チーム単位での強みを生かすべきです。既存のスケジュールではなく、先んじて始めの方にチームを組んでプロダクトの像を作り、必要な技術スタックを見据え、合宿に向けてチーム単位で相談し合いながら学習を進める授業設計にした方が良いのではないかと思いました。

むすびにかえて

紆余曲折あったenPiTの講義でしたが本当に実りのある1年間になりました。こうして無事プロダクトを形あるものとして仕上げて完走し、最終レポートまでたどり着けたのは、教職員・メンターの方々およびレビューをくださったenPiT受講生・芸専の学生の皆様、そしてなによりもチームのメンバーのおかげであると心から思っています。実はこのチームは私だけがcoinsの学生で他の6名は全員klisの学生という、私からしたら学類違いの完全アウェーなチームで最初はうまく馴染めるか不安でした。しかし、そんな不安がまるでなかったかのように毎授業本当に楽しいひと時の連続であり、他の畑の人間である私をあたたかく受け入れてくださったチームの皆様にはとても感謝しています。本当にありがとうございました。

そして、情報学群の後輩の方々!もし興味が湧きましたらenPiTを受講し、ぜひとも世の中の困り事を解決するプロダクトを作って喜びを分かち合いましょう!皆様にも実りのあるenPiTライフが訪れることを心から願っています!

Footnotes

  1. 実際の所、必ずしもブログ形式で公開する必要はなく、「LaTeXやword等で作成したものを受講生・教職員・メンターのみに共有する形で限定公開」という択も用意されています。やさしい。

  2. ミルクボーイが優勝したM-1グランプリから今年でもう5年が経つの、マジで時の流れの早さを感じますね…note記事の終盤、enPiTについて「今年度で(enPiT)プロジェクトは終了」との記載がありますが、私がこの期末レポートを書いている通りenPiTはなんやかんや続いていて(おそらく、企画母体が文科省から各大学に変化した上で継続されている?要出典)、2024年度も本学では引き続き開催予定らしいです。

  3. 合宿という名を冠していますが、どこかに旅行するわけではなく全日大学内で行われます。初日はガイダンス、最終日は成果発表会なので、開発期間は実際の所わずか4日間しか用意されておらずとても歯ごたえのあるひと時でした…

  4. YouTubeのショート動画のように、作品をランダムに1つずつ表示して一期一会の出会いに重きを置いた機能

  5. 好評公開中!良ければ使ってください~!

  6. 大学公式のイベントと連携させるにはやはり事務的な手続きをいくつか介す必要があり、開発時間の都合上泣く泣く断念しました。もっと早くから行動していれば実現できたかもしれない話であり、非常に悔やまれる部分です。

  7. https://astro.build/blog/astro-2/ 2023/01/24の公式ブログでのリリース記事


enPiTという授業を受けた感想

slimalized・2024-02-11

share on

or