見出し画像

enPiT2023受講レポート ~プログラミング初心者向け~


はじめに

  • この記事の主なターゲット
    enPiT受講・ひいては実践的な開発経験に興味がある、プログラミング初心者の筑波大学情報学群2年生(+次期M1)

  • 結論
    enPiT受講によって劇的に何かが変わるとは考えづらいが、滅茶苦茶良い経験になるので、興味があるなら是非取ろう

  • ちょっと長めになっちゃったけどすいません((+_+))


はじめまして、hakuです。
筑波大学知識情報・図書館学類3年の、ちょっと強面の学生です。

今回は筑波大学の情報学群向け開設の、通年でチーム開発によりプロダクトを作るといった授業「enPiT」の最終課題として、enPiTの受講レポートを執筆したいと思います。

(↓enPiT公式サイト。この記事では授業形態などの詳細は述べませんが、今学期は「春AB:週2コマ×2で自主学習」「春C:7月上旬に4回ほど授業+7月下旬の平日6日間で集中開発」「秋学期:週2コマ×2でチーム開発」という進め方だった、ということくらいは説明しておきます。来学期は変わるかも?らしいです。)


詳しくは下に書きますが、僕自身がenPiT受講を考える際先輩方のブログを見てすごく参考になり受講を決断したという経緯があり、これからenPiT受講を考えている学生のために参考になればと思い、noteという媒体でレポートを一般公開しようと思った次第です。
(個人的に、アウトプットの習慣をつけたいのでこれを機にnoteを始めたということもあります。)

enPiTに興味を持っている人、特に僕のような技術に自信のないプログラミング初心者にとって、良い参考となれば幸いです!



軽く自己紹介

  • 知識情報・図書館学類3年。知識情報システム主専攻。

  • プログラミングは1年時の秋学期に初めて触れたような、完全な初心者(つい最近まで、サークルして飲み会してバイトして授業は切って、、、の繰り返しの、どこにでもいる学んでない学部生でした)

  • 2年の11月~3年の11月の1年間、某ダンスサークルの代表を務めていました。(是非フォローしてね→https://twitter.com/kiri_kiri_mai

  • enPiTを受講した動機:プログラミングを上達したいと何となく思ったから(割とノリで受講を始めました。そんな奴でもたくさんの学びを得られました。)

  • enPiT受講をきっかけに、エンジニアになりたいという意志が固まる。最近某スタートアップで長期インターンを始めました。



チームについて

自分のチーム「つくげいサポートクラブ」は、以下のメンバー+自分の、計7人で活動していました。
クソうるさく快活に賑やかに、高い心理的安全性の下楽しく活動できました笑
この記事の執筆は打ち上げの直前に締め切りに追われながら行っていますが、打ち上げがすごく楽しみです。
(追記:写真でも載せたかったですが楽しくて撮り忘れました笑)

  • shuri (PO(プロダクトオーナー))
    このプロダクトの発案者。しばしば闇落ちや生活の限界っぷりを露呈し心配の的になっていたが、誰よりも熱い気持ちと行動力で、率先してプロダクトを引っ張ってくれた頼れるリーダーです。常にすごく頑張っているので、身体と精神を壊さないで欲しいです笑

  • mirano (SM(スクラムマスター))
    芸専の人脈が多く、個性派ぞろいのメンバーを正しい方向に引っ張ってくれる、頼れる聖母でした。進捗を管理しつつ的確な発言によってマネジメントを頑張ってくれました。彼女がいなければ永遠にペチャクチャしながら授業が終わっていたかもしれない…

  • slimalized
    このチーム唯一のcoins生(我がチームは珍しくklis生ばかりでした)で、圧倒的デザイン力を武器に、UI周りを中心に開発を進めてくれました。時折見せる鋭いボケでチームを盛り上げつつも、鶴の一声で的確な意見を多く発し、多くのプロダクトデザインやアイデアを生み出してくれました。進級に向け頑張ってほしい笑

  • BonyChops
    通称ぼにちょ。圧倒的技術力・圧倒的声量・圧倒的ボケ数で、圧倒的存在感を放っていました。enPiT生の中でも随一の技術力を生かし、初心者メンバー達に数々のアドバイスを与え、プロダクトの骨格となるような実装をガンガン進め、皆が困った不具合の数々を平気な顔でポンポン解決してくれた頼れるお父さんでした。つくばで起こる騒音問題のほとんどは恐らく彼が原因です。

  • makiart
    BonyChops君と並んで、圧倒的な技術力を持ちガンガン実装を進めてくれたスーパーエンジニアでした。技術力のみならず、実践的な視点から多くのアイデア・改善点などを発してくれて、個人的に凄く勉強させていただきました。あとよくかっこいいカバンで授業に来てました。あと恐らくサイコパスだと思います。

  • ren
    1年の5月頃、顔も名前も知らないのに急にLINEで「一緒にレポートをやりませんか」と家に誘われて以来の友達で、俺のチームおもろいぜ的な話をしたら秋学期から入ってくれました。注意力欠け気味ながらも、行動力と集中力が凄まじく、休みがちながらもしれっと様々な機能の実装を進めてくれました。個人的に、今まで出会った中でトップレベルに変な奴です(尊敬はしてるヨ)

  • 俺(このチームでどう振舞ったかについて)
    夏合宿初期の時点で技術的な貢献はあまりできなそうだと分かっていたため、ロゴの作成・インタビュー文言作成・リンク構造の動線変化等の簡単な開発タスクの実行といった、痒い所に手が届くようなタスクを率先してやろうと意識していました(十分にできていたかと言われると怪しい)。また本当にたまたま、自分の身近に芸専の学生が多かったため、人脈を生かした営業やインタビューでは貢献できたかなと思います。また、後述する「心理的安全性」担保のため、積極的にメンバーとコミュニケーションを取ってチームを盛り上げようと意識しました。11~12月頃謎に体調不良が続いて4連続くらいで参加できない期間があったので、そこは申し訳ない笑



プロダクトや開発過程について

弊チームの開発したプロダクトは、「Tsuku Gei」というものです。


サイトのロゴ。夏合宿時にFigmaで作成しました。


中身はこんな感じ


どういうプロダクトかを簡単に説明した「エレベーターピッチ」は、以下のようなものになります。

ざっくり言うと、「筑波大学の芸術専門学群の学生が作成した作品等を、自由に投稿や、閲覧・コメント・ブックマーク等が出来て、またSNSのリンク共有などでよりその作者のことを知るきっかけを得られるポータルサイト」ですね。

様々な機能がありますが、個人的に一番大きいと思うのは、単純に「芸専の学生の作品を知れる」ことだと思います。エレベーターピッチにもある通り、芸専の学生の作品は知れる機会が少ない(アンケートで確認済み)こともあるので、単純にそれらを自由に投稿・閲覧できるサイトというだけで、一定の価値があるものだと思います。
(↑つっこみどころは多いですが、あくまで僕の解釈です。)

そして開発過程では紆余曲折があり、それらは今回では省略しますが、

  • 他サービスとの差別化として、「筑波大学の芸専」にフォーカスした点

  • 「芸専の学生」視点でのプロダクトの価値と、「非芸専の学生」視点でのプロダクトの価値の、2軸を踏まえたプロダクト設計

の2点は、チーム内の共通認識としてブレかったと思います。


また、このプロダクトやチームの軌跡について、特筆すべきポイントは以下の通りだと思います。
あくまで自分なりの「まとめ記事」なのと、この記事は主にenPiTに関心を持っている学生向けなので、細かい部分は書かず抽象度を上げていますがご了承を。
(開発過程の詳しい詳細が気になる方は、shuri君の記事がすごく丁寧に書かれていたので、是非どうぞ↓
https://note.com/shuri_book/n/na836e9db6c9f

  • プロダクトの「価値」を考える難しさ
    enPiTはとにかく実践的な授業なので、「プロダクトの「価値」を考える」ということは大きなテーマなのですが、我がチームはこの部分で苦戦を強いられました。
    春cのチーム発足当初は、「チームメンバー」「他のenPiT受講生+メンターと教員」「アンケート等を行った芸専の学生」の3者いずれからも、プロダクトのアイデアや価値にポジティブな反応が多かったのですが、実際に開発を進めていきenPiT関係者や芸専の学生にフィードバックを貰うにつれ、果たしてこのプロダクトの「価値」は本当に十分なのかとチームの間で疑問が生まれていきました。

    具体的な例として、「芸専の学生がTsuku Geiに作品投稿をするモチベーションについて」の話が個人的には印象深いです。この議論は確か11月頃に盛んになったと思うのですが、現行のサービスではただ作品を投稿して知ってもらうのみで、インタビュー調査の結果芸専の学生からしたら作品を投稿するモチベーションが高いとは考えられず、どうしたものかと長時間議論になりました。
    この問題の解決策として、「Tsuku Geiのポートフォリオ適用化」「芸専のオフィシャルサービスにする」「GPTの利用」といった案が出ましたが、これらは議論やインタビューを続けていく中で頓挫してしまいました。その結果、Tsuku Geiの新機能としてはこれまでのアイデアにあった「コメント機能」「ユーザ一覧機能」「スワイプ機能」などの追加に終わり、完全に芸専視点・非芸専視点の双方の「価値」を高めきれないまま開発期間が終了してしまいました。

    この話はあくまで一例ですが、このように「プロダクトの価値が果たして十分か」といった観点は開発期間を通じて常に存在し、大きな課題でした。非常に難しいテーマだったものの、実際に世に存在するサービスはそのほとんどが長くは生存できないものであり、「顧客視点」から見てそのプロダクトに十分な「価値」があるかどうかは、非常に重要な観点なのだと、改めて学びました。

    enPiTを経て学んだことはたくさんありますが、このことが個人的には最も大きかったです。

  • サービスを世に出すことの大変さ
    このことも、上記の事柄に近いものですが、大きな学びでした。それに、普段自分が利用している諸サービス、例えば今この文章が表示されている「note」もですが、それらがどれほど凄いものなのかを思い知りました笑

    「大変さ」の種類にも色々あると思いますが、一番シンプルなのは「技術力」だと思います。まあこれは単純に世のエンジニアすげーっていう話なので分かりやすいですね。

    もう一つとしては、前述したプロダクトの「価値」が挙げられると思います。当然っちゃ当然ですが、世のサービスが人々に利用される所以としては、その人々にとってそのサービスには何らかの「価値」があるからであり、プロダクト開発にあたってはそこが一番重要なのかなとenPiTでの開発を通じて感じました。だからこそ、先ほども書きましたが、「価値を考える(そしてそれを実装に反映する)」ことが如何に難しいかということも感じました。

    そしてもう一つとしては、複数人での開発の難しさです。我がチームは圧倒的心理的安全性の下楽しく活動でき、またバックグラウンドが異なるお互いを尊重し合う風潮のあるすごく良いチームでしたが、それでも、メンバー間で技術力に差があることで教えあうことに時間を割いたり(決して悪いことでは無く、寧ろ授業という枠組みではプラスとも考えられますが)、開発の意思決定に時間がかかったり、欠席してしまったメンバーに情報共有が遅れたり、といった複数人での開発ならではの大変さも感じました。

    それでも、そうした問題は意識していけば解決できるものだし、仲間がいることでより楽しく開発出来たり、開発効率を上げられることなど、複数人だからこその利点もたくさんありました。
    特に僕はコンフリクトをよく起こしたり、next.js完全初心者だったり、一時期体調不良で4連続くらい欠席するなど、迷惑をかけがちな人だったので、チームメンバーの皆には本当に感謝です。ありがとお。

  • チーム開発における「心理的安全性」の重要さ
    先ほども言いましたが、我がチームはすごく仲良く楽しく活動出来て、enPiTで重要視されている「心理的安全性」は非常に高かったと思います。実際、高い心理的安全性のおかげで、自分をはじめ技術力に自信が無いメンバーも積極的に開発に絡んで行けたり、誰も躊躇することなく自分の意見を言えたりと、開発を進めるうえでの多くの恩恵がもたらされたと思います。
    こうした経験から、チーム開発における「心理的安全性」の重要性を強く実感することができました。

    少し自分語り&脱線になりますが、自己紹介にもある通り自分は2年生の秋から某団体の代表を務めていて、運営にあたりenPiTを受講する前から「心理的安全性」という概念を重要視していて、口酸っぱく他の幹部陣やメンバーに言っていました。運営において考えた事柄は山ほどありましたが、最も重要視していたのはこの「心理的安全性」でした。
    そんな中、3年生になってenPiTの受講を始めると、僕が飽きるほど言っていた「心理的安全性」というワードをたくさん耳にしてびっくりしました笑
    自分で言うのもなんですが、こうした「心理的安全性」を重視したチーム運営を行っていった結果、身近な同期や先輩後輩のみならず、OBや他チームの方々にも「良いチームだね」としばしば言ってもらえるほど、魅力的なチーム作りに成功しました。

    長々と自分語りをしてしまいましたが、ともかく言いたかったことは、プロダクト開発におけるチーム開発では「心理的安全性」は極めて重要な概念で、またそれは他の分野においても言えることだ、ということです。
    そして、何か講釈垂れているようで申し訳ないですが、心理的安全性を担保するにあたって具体的に重要なことは、「相手視点に立って、相手を思いやること」「積極的にコミュニケーションを取ること」の2つがあるのかなと、個人的には思います。当然っちゃ当然ですが、結局チーム開発や組織で何かの成果を目指すことは、人間同士のコミュニケーションによるものなので、そこを度外視してはいけないのかなと思います。

  • 技術力に差がある中での、チーム開発の難しさ
    これも先ほど軽く述べましたが、enPiT受講生の間ではよく言われる話ですが弊チームでもこの問題は存在しました。まさしく自分のように、授業以外でほとんどプログラミングに触れたことが無いような人や、そのチームで選定された技術の経験が浅い人にとっては、難しい問題であり続けたのかなと思います。

    これについては、一番の解決策としては技術に自信のない人がその技術を勉強するのが手っ取り早いですが、大学3年生は忙しいものなのでそう簡単には行きませんね。ですが、プロダクト開発では様々なタスクが存在するので、自分のようにあまり技術力が必要でないタスクを率先して行うことで、チームに貢献することはできると思います。それに、僕のような立場の人が言うのも恐縮ですが、限られた時間の中でも技術力が高い人に助けてもらいながらなら、技術力に乏しい人でも開発に貢献することは可能です。

    とまあこの問題については多種多様なアプローチがあると思いますが、結局はそのチームの状況に合わせて対処するのが一番かなと思います。自分のチームでは、「一部の技術力に秀でた人+技術に自信が無い人」といった構成だったため、発案やプロダクト設計には全員が関わりながらも、骨組みや難しいロジックは技術に秀でた人達が中心に進め、彼らの助けを得ながら他の人達も積極的に開発タスクに励むといった形を取っていました。そして、芸専へのインタビューなど技術力が関係ないタスクは、技術に自信が無い人達を中心に進めました。このような自分達の進め方はもしかしたら他チームとは違った方式かもしれませんが、自分達にとっては正しい進め方だったのではと思います。




個人的な学び・反省点

前章で長々と書いてしまいましたが、改めて…
僕のような学生がenPiTを通してどのような学びを得られたのかについて、参考にしていただければと思います。

  • 技術力・プログラミング能力を(比較的)向上させられた
    (&エンジニアになろうという意志が固まった)

    当然っちゃ当然ですが、初心者の自分にとってはこれは大きかったです。
    具体的に学んだことと言えば、チーム結成まで全く触れたことのなかったnext.js, typescriptについて、github, cloudrun, firebaseといったインフラ周りの技術について、春ABの自己学習期間(24年度から無くなる?らしいですが)で自己学習したHTML, CSSについて、などが挙げられます。また、他のメンバーと共有しやすいようにどうコーディングすべきか、githubはどのように利用すべきか、といった実践的なチーム開発におけるいろはも学習することができて、非常に大きな学びとなりました。

    ですが、(比較的)と書いたことには理由があって、「初心者にとってenPITの授業時間という短い時間のみである技術を極めることは現実的ではなく、自分は他の活動で忙しく個人的な学習時間を多くとれなかったから」ということが挙げられます。

    そしてこの記事は初心者向けと銘打っているのであえて言いますが、「enPiTに取り組むだけ」でプログラミング能力が劇的に上がることは絶対に無いと思います。というのも、一般によく言われることではありますが、単純に初心者がプログラミング能力を向上させるのには多大な学習時間が必要で、チーム開発中には様々な実行すべきタスクや話し合いの時間が存在し、そのような時間は中々取れないからです。

    自分はこのことを分かっていなかったわけではないですが、中々next.jsなどの自己学習の時間が取れず、「技術力の向上」という観点では不完全燃焼なまま授業を終えてしまいました。それに伴い、開発にあたって技術的なタスクではそこまで貢献できなかったため、メンバーには申し訳ない&大きな反省点だと思っています。

    ですが、この授業で得られた学びはやはり大きく、プログラミングやエンジニアについて全く分かっていなかった自分にとってこの1年は大きな転換点となったと思います。
    そして、何より大きな学びとしては、「技術力が弱くても、ChatGPT等のツールや強い人に頼ったり、学びながら進めていけば、自分にとって難しい開発タスクでも達成ができる」ということを実感できたことがあるのかなと思います。自分は将来のプランについて、何となくエンジニア良さそうだなーと思いながらも技術力は低く勉強時間も中々取れないと、プログラミングにおける自己肯定感は凄く低い2年間を過ごしましたが、3年次のenPiT受講による実践的な経験を通じて、前向きなマインドを持つことができたのは本当に大きな収穫でした。またこうした経験を経て、自分の中で大学院卒業後はエンジニアになりたいという意志が固まり、現在自己学習やインターンに励んでいる最中でございます。

  • プロダクトの価値や、使用するユーザ視点の考察の重要性を痛感した
    前章で散々このことは述べましたが、自分にとってこのことはenPiTを通じて強く学びました。突き詰めると難しい話ではありますが、実際に世に出されるサービスは顧客がいないと終了してしまうというシビアな世界で戦っており、「価値」を担保することや、自分達開発者視点でなく「そのサービスを利用するユーザ視点」でサービスを考えることが如何に重要かを痛感しました。

    一つ自分の中で印象に残ったエピソードとして、10月頃まだTsuku Geiの機能が少なかった頃、芸専の友人に作品を投稿してもらおうとお願いしたところ、「投稿してもメリットが感じられないから、やりたくない」と強めの言葉で言われてしまいました。結果友人パワーで何とか作品投稿をしてもらいましたが、自分にとっては悲しさと悔しさを痛感すると共に、「これがサービス開発のシビアさか」と印象深く思ったのを覚えています。これはあくまで一例で、前章に記載の通り弊チームはこうした点で苦戦を強いられましたが、アイデア出しの部分でこれらの問題を解決できる案を中々出せなかったことが、個人的な反省点でもあります。また単純に、サービスのメインターゲットである芸専の学生にもっとインタビューをし、機能を練るべきだったというのも反省点としてあります。

    「プロダクトの価値」「ユーザ視点で考える」といったことは、enPiTではしばしば耳にする重要テーマであり、これらを実感することができるというだけで、この授業は大きな価値があるとさえ自分は考えています。

  • 可視化の重要性
    これについても、enPiT受講を通じて実感したことの一つです。
    具体的には、enPiTではdiscordとmiroというツールで連絡やタスク管理等を行っていたのですが、複数人でタスクを分業して行うからこそ、それらを共有ツール内に可視化し互いに確認が取れる状態にすることの重要性を実感しました。
    全てのタスクが互いに独立しているケースはあまり多くなく、タスク同士に関連性があるケースが多いからこそ、担当者同士がそれらを簡単に確認し合える状態にすることは、開発を円滑に進めるにあたって重要な心構えだと思います。

    そして、enPiTのように授業間の時間が空いてしまい、また全員が同じ時間に同じ場所にいるとは限らない開発形態であるからこそ、後から開発の進捗を確認しやすくしたり、その時いなかったメンバーが現在の状態を確認しやすくするための、タスクや進捗の現在の状態を可視化しておくことは、特に重要だと感じました。



(春ABの自己学習期間では、元々ウェブサイト作成に興味があったのでHTML, CSSを学習し上のような「enPiT公式サイトリニューアル版」を作りました。ren発案の下、有志メンバー4人で各ページを分担しました。今見ると技術的には全然しょぼいですが、初心者にしては結構がんばったなと思います。)



enPiTに興味がある学生に向けて

ここまで長々と書いてきましたが、一番伝えたいことは、「enPiTは通年で6単位を得ながら実践を経て様々なことを学習できる最高の授業なので、プログラミングやチーム開発に興味がある人は受講するべし」ということです。

特に、プログラミング初心者だけどもっと上達したいよ、といった僕みたいな境遇の人には強くお勧めします。

結局プログラミングが上達するには自分での能動的な学習が必要であり、ただ受講するだけで受動的に上達するわけではありませんが、チーム開発の経験を通じて多くの外発的な刺激を得られ、必ずや上達の糧を得られると思います。
様々なバックグラウンドの人との交流や、今まで触れてこなかった技術要素を学んだりして、純粋にプログラミングにおける視野を絶対に広げられます。僕自身も、受講前は全く知らなかったけどenPiTを通じて得られた知識・技術はたくさんあります。

大変なこともあると思うけど、是非飛び込んでみましょう!



(最後に)enPiT受講で得られるメリットについて

ここまでかなり殴り書きで書いてしまったので、最後にenPiTを受講することで得られるメリットを箇条書きで羅列して終わりたいと思います。

  • 触ったことの無い言語など、新たな技術要素の知見を得られる。

  • 実際に企業が行っているような、チーム開発の経験が得られる。

  • (klis生向け)課題などが無く能動的な内容での、週計4コマ分の授業で通年で6単位を得られる
    (mast, coins生は実験でコマが埋まるので関係ないですね)

  • 夏合宿時は平日6日間連続、秋学期時は週に2回のペースで(24年度は違うかもなので要シラバス参照)チームメンバーと顔を合わせるので、人脈を増やす機会を得られる。

  • 経験豊富な教員・外部講師・メンターの皆様からフィードバックを頂け、また気軽に交流ができる。コネクションが広がるかも?

  • 優秀なチームには2月末に無料で北海道で発表する権利が与えられる。楽しそう。

  • 就活で役に立つ。かも。
    (自分は院進すると決めていたのでマジもんの就活はまだやったことないですが、年明け頃からエンジニアの長期インターンを探すにあたり、enPiTの経験を説明できることがすごく役立ちました。インターンの採用基準は企業によって様々な要素があると思いますが、実務経験が無くポートフォリオがしょぼい自分でも複数社の長期インターン採用を頂けたので、経験の浅い自分にとっては間違いなくenPiTの開発経験は役に立ったと思います。


ここまで読んでくださってありがとうございました!
enPiTの受講を決めた方は是非頑張ってください!

この記事が気に入ったらサポートをしてみませんか?