Treasure2022に参加
はじめに
こんにちは、最近エニタイムに入会したエセマッチョのakiraです。
8月9日〜8月26日の3週間、株式会社CARTA HOLDINGSが開催するインターンのTreasureに参加してきました。
めちゃくちゃ濃くてあっという間の3週間でしたので、色々と振り返っていきます。
詳しい情報はCARTAや他のインターン生が記事にしてるので読み回ってください!
参加した経緯
とりあえず成長したい
僕は文系大学生なので仲間がおらず、がむしゃらに1人でフルスタックに勉強したり長期インターンに参加しましたが、全ての知識が浅く、とても人に教えられるものではありませんでした(バックエンドはまだマシだと思いますが、、)。なのであらゆる面で知見がつき、成長が望めるインターンを探していました。
そこで、圧倒的成長がフレーズのTreasureに魅力を感じました。
意味のあるチーム開発をしたい
Treasure前まではチーム開発の経験はありましたが、知識や実力不足で満足のいかない結果に終わりました。特に、アイデア設計の経験がなく、下手な意見しか出せなかったと思います。そこで、講義とチーム開発が存在するTreasureで、知識を得た後に積極的に発言していきたいと思いました。
他にも、いろんな人と交流したいなどあります。
Treasure開始
今年のTreasureはフルリモートで開催されました。zoomやdiscordを繋ぎっぱなしでしたが、ちょうどメモリ16GBのimacを新調したので特に死なずに済みました。dockerとweb会話ツールのダブルパンチは怖いです。
講義
講義については、バックエンド講義、フロントエンド講義、アイデア講義、DBモデリング講義の4つに分かれていました。
どの講義も途中で頻繁に課題が与えられて実践したので、インプットとアウトプットが両立できて理解しやすかったです。
バックエンド講義
Goを使ったアーキテクチャやAPIの生やし方を教わりました。僕はRuby(Rails)を主に触っていて決まったフレームワークに囚われていたので、レイヤー的なアーキテクチャがとても新鮮で参考になりました。また、まだ型定義に慣れていなくて難しかったです。Treasure前のインターンでもGoを教わったので、良い再確認ができました。
goroutineやcontextは未だ完璧に理解できず、、
フロントエンド講義
ReactとTypeScriptの講義でした。この2つを使って簡単なアプリを作ったことはありますが、純粋な関数とかReactの利点とか知らないことがたくさんわかって良かったです。
アイデア講義
とても興味のある分野でした。どのようにアイデアを考えるか疑問に思っていたので、この講義で知れてよかったです。よくみなさん新しい事業を考えられるなと尊敬しつつ疑問に思ってましたが、時流に沿ってニーズを考えると結果的に新しいアイデアが浮かび上がるのだなと勝手に1人で感心してました。
DBモデリング講義
みんな大好きt-wadaさんがご教授してくださいました。
既にTreasureの事前課題書を読んでいましたが、それ以外でも勉強になることがたくさんありました。
特に印象深いのは、エンティティ(テーブル)にEventエンティティとResourceエンティティが存在することです。今まで何も考えずにResourceテーブルだけ作ってました、、
確かに分けた方がわかりやすくて扱いやすいですね。
チーム開発
チーム開発は1チーム3、4人(サポーター2、3人)で、期間は1週間でした。また、18時以降は開発禁止というもどかしいホワイト開発でした。
僕らのチームは、まずそれぞれの得意分野でMVPを開発し、その後余裕があったら挑戦したい分野で開発するといった考えで始めました。
また、1人強強のインターン生がいて、その人を中心に意見を出し合って進めていきました。
アイデア設計は、講義で得た知識を活かして時流やユーザ、社会の揺らぎなどから考え、1日半で終わりました。
この時にリーンキャンバスというビジネスモデルを分けて考えるフレームワークを教わり、アイデアがより鮮明になりました。
ER図、API設計、シーケンス図では、HackMDというマークダウンのエディタを使いました。ER図やシーケンス図まで書けて便利でした。
デザインはFigma、開発面ではGitHub Projectを使ったissueベースで行いました。この辺りは慣れていましたが、今のアルバイト先ではタスクチケットごとにPRを出していく流れなので新鮮で楽しかったです。
開発に入るとバックエンドとフロントエンドに分かれ、僕はバックエンド(Go)にジョインしました(経験的にはGoよりReactやTypeScriptの方が長いですが、僕がバックエンドの方が長けていたことと、個人的にGoが触りたかったので良かったです、、)。
この時に苦労したのは、やはりGoの型定義です。
PostGISという地理情報を扱うためのPostgreSQLの拡張モジュールを使ったのですが、このモジュールを使ったデータの型宣言をするために、わざわざ他のパッケージを使うといったことに慣れてなくて苦戦しました。
もう1人の強強インターン生に教わりながら実装はできましたが、もっと調べる力(ドキュメントを読む力)が必要であることが課題だと感じました。
APIを作り終えた後は、バックエンドより作業量が多かったフロントエンドの方をみんなで実装しました。
マージしたはずの修正が打ち消されている、コードフリーズ2分前にPR出してマージするといったはちゃめちゃ具合がありましたが、なんとか動くサービスができて良かったです。
審査の結果発表ですが、我がチームは賞を取ることができませんでした。
わかりやすい原因は、
UI/UXが崩れていたこと
他チームのレベルが高すぎたこと(僕が実力不足で教わってばっかりだった)
データ的に渋谷内でしか使えなくて、サービスをまともに触れない審査員が大勢、、
だと思います。
また、FBでわかったその他の重要な原因は、「アイデアは魅力的だったが、パターンが多すぎて絞り込めていない」ことでした。
もっと設計頑張りマッスル
チーム開発での僕の目標は「積極的に発言する」ことでしたが、ある程度達成できたかなと思います。
というのも、メンバーやサポーターの方々なみんな優しくて、僕が間違った発言をしても丁寧に優しく訂正してくれました。このおかげで、僕は発言を恐れずに発言量が増えていったからです。
とはいえ、客観的に見ればまだまだ十分に意見を出せていません。その根本的な理由が、発言するための思考力や知識量が足りていないことだと思うので、どんどんインプットしていきます。
打ち上げ!
3週間にも及ぶインターンもあっという間に終わり、最終打ち上げが始まりました。お互いをフィードバックし合ったり、サポーターの方も含むチームメンバーで今後の予定を考えてしました。その後、社員の方に雑談も交えて色々聞いていたら日を跨いでました。
わかったこと:アドテクは奥が深い!!
おわりに
最高でした。これで12万円も支給されるなんて、逆に払いたいぐらいです。
Treasureは一言で言うと、圧倒的成長につきます。
web開発に対して体系的に学べて、かつチーム開発を経験できるのでweb系のエンジニアを目指す人には最適です。
それ以外にも、CARTA社員の方と交流できて、事業内容や会社の雰囲気など知ることができました。僕のCARTAの印象は、やる時はやる、やらない時はやらないといったオンオフのある明るい雰囲気です。それでいて、全員がすごい知見を持っておられてめっちゃ良いなと思いました。
気になったことを強いて言うなら、今回はインフラの講義がなかったので学びたかったな〜って感じです(DB講義で多少教わりましたが、、)。
最後に、Treasureで関わった全ての皆様、本当にありがとうございました!Treasureがなければ今の成長した自分はいません(誇張なし)。
Treasureだけで終わりたくない人は絡んでください、自分も絡みます〜!