に公開
2023/08/28 - 2023/09/08の間、ゆめみのインターンシップに参加しています。
今日でインターンの日程が半分終わったので、一旦取り組んだことや感想をまとめようと思います。
(インターンの感想は初日・1週目最終日・最終日の3本立てで書く予定です。この記事を読む前に初日の記事を読んでいただけると、内容の理解が進みやすいと思います。)
2〜5日目で取り組んだこと
大きな取り組みとして以下の4つの作業に取り組んだ。
- 新しく生えたAPIエンドポイントの型定義をした
- APIを呼び出した後に返ってきたレスポンスをValidationして、型安全を保証してくれるAPI Helperを実装した
- TanStack Query(React Query)を使ってAPI呼び出しの最適化を行った
- Figmaで新機能のUIデザインをした
新しく生えたAPIエンドポイントの型定義をした
今回自分たちのチームに割り当てられたタスクを実装するにあたって、現状の実装に必要なデータを取得できるAPIがなかったので追加することになった。
今回のインターンで扱ったプロダクトはフロントエンドにTypeScriptを使っていて、APIレスポンスの型チェックを行っていた。
なので今回追加されたエンドポイントの型定義を行う必要があったので、(any芸人としての汚名を晴らすために)勝手に一人で型定義の改修を進めてしまったのだが、今になって考えると改修箇所的に型定義を終わらせるまでは本題のタスクに入れない状態だったので、おそらくフロントエンド担当のチームメンバーの作業を止めてしまっていた。反省している。どっちがやります?とか聞くか、一緒に作業をするべきだった・・。
このような個人開発では起こらないケースについて、他にも色々な箇所で失敗してしまった所があったので、来週は気をつけていこうと思った。
APIを呼び出した後に返ってきたレスポンスをValidationして、型安全を保証してくれるAPI Helperを実装した
既存の実装では、APIのレスポンスが必要な箇所で生のデータを取って各々でValidationしていたのだが、今後APIを呼び出す部分が増えていくにつれてValidationの処理に差異があると保守しづらいのではないかと思い、エンドポイントと想定されるレスポンスの型定義を渡すことで型安全を保証してくれるAPIを実装した。
既存の呼び出し部分とインターフェースを合わせるのに少し手こずってしまったけれど、無事に実装を終わらせることができた。
また、今後API呼び出し周りを最適化する時はそのヘルパーを変更するだけで全ての呼び出し元で恩恵を受けられるので、良い実装ができて良かった(語彙力)
TanStack Query(React Query)を使ってAPI呼び出しの最適化を行った
今回インターンのタスクで呼び出す必要があったAPIについて、以下のように実装した。
- データの鮮度が高く無いといけないもの(レスポンスの内容が頻繁に変わるもの)
- 1回目は普通にFetchして結果をキャッシュ
- 2回目以降はFetchしながら、結果が返ってくるまでは暫定的にキャッシュを返す
- データの鮮度が低くても良いもの
- 1回目は普通にFetchして結果をキャッシュ
- 2回目以降はキャッシュを返す
これによって、データの取得を最小限に削減することができた。通信量的な観点ではせいぜい数KB程度の削減にしかならないが、通信待ちによるLoading表示を減らすことができたのでユーザー体験の向上に寄与することができたと思う。
Figmaで新機能のUIデザインをした
今回のインターンで触れるタスクの中には、なんとまだデザインが存在しないものもあったので、Figmaを使ってUIをデザインした。
・・・と言っても、Figmaを触った経験がなかったので経験者のチームメンバーにめっちゃリードしてもらった。チームメンバーは本当にみんな知識が幅広くてすごい・・・。
今までSNSを作った時は全部自分で実装したし、PHPとかExpress.jsでバックエンドも書けるし、自宅にサーバーも立てちゃったし、「あれ?自分ってフルスタックエンジニアなのでは?(笑)」って思ってたんだけど、本物のフルスタックな人たちを目の当たりにして全然まだまだって事を思い知った。これからはいろんな技術に触れていこう🥹
会社の雰囲気とか
意見を言いやすい雰囲気がある
2日目に開発環境の構築を行ったのだが、その時チームメンバーが詰まっていたのでSlackに参考記事を貼った。そうしたら社員の方に納得しかねる理由を基に「その記事は参考にならない」と言われてしまった。
その場では一旦飲み込んだが、後になって少しモヤっと来たので「いやそれは同意できない・・」といった主張をOJTに吐き出したら、少しスッキリした。
技術的な会話をしていると、今回のように意見がぶつかってバチッとなる瞬間はあると思う。しかし同時に、より良いプロダクトを作っていくためには議論(特に反論)は絶対に必要なことなので、そういった意見は臆せずに言える環境でないといけない。
そう言った意味では、ゆめみでは「ちょっとバチったけどその場で反論しきれずに飲み込んでしまった話」はOJTに吐き出せばいい(悪口を書くのは🙅♀️だけど愚痴は🙆)ので、攻めた主張をしても / されても人間関係に支障が出にくい。結果として、意見を活発に言いやすい土壌が形成されているのだと思った。
開発者体験が良さそう
社員の人たちの話を聞いているところによると、業務の遂行に必要なもの(PC周りなど)は潤沢なスペックを用意してくれるみたいだった。
調子に乗って「Studio Displayとかもイケるんですかね?」って聞いたけど、流石にそれでなければいけない理由がないと承認されないんじゃないか?とこのことだった。自分には別にNano-Textureガラスである必要もないし、見た目がいいくらいしか思いつかないな〜・・
インターン期間の開発用に支給された自分のMacもi9, RAM64GBのバケモンだったので、結構快適だった☺️(ただ、ランダムにi7~Apple Silliconの機種まで様々なスペックが割り当てられたようで、インターン生によってスペックガチャはあったらしい。あたりを引いちゃったみたい😋みんなごめん😋)
インターンでの1週間を終えての良かったことや感想
一番良かったのは、毎日終業前にバディー(メンター)の方と1日の振り返りを行って、良かったこと・改善したいこと等をまとめていたこと。おかげで、次の日は何に挑戦するべきかしっかりと目標立てて毎日を過ごすことができたのでとても良かった!
また、普段の3倍くらい人と話したので、コミュ力が乾燥もやしから乾パンくらいまで上がった(インターンが終わるまでにはわらび餅くらいコミュ力を潤わせたい)。社風的にコミュニケーションに重きを置いている感じがするし、社員の方々もみんなコミュ力が凄くて話しやすかった。
あと...、最初に気合いを入れすぎたせいで3日目・4日目あたりで力尽きたので、ペース配分は大事だな〜と感じた。
来週も頑張ろうと思う。