2023/12/12

新卒Webエンジニアとして3年間やったこと

こんにちは、SUZURIエンジニアのyukunです。 新卒で入社し、SUZURI事業部で3年を過ごしてきたので今までにやってきたことを振り返るブログです。また、他にブログ記事があるものは随時紹介しています。 SUZURIのエンジニアがどんなことをしているのか参考になればと思います。

このブログはSUZURI Advent Calendar 2023の12日目の記事です!

SUZURI Advent Calendar 2023 - Adventar

1年目

研修とOJT

新卒で入社したのでまずは研修を受けました。 グループ会社合同の研修と会社のエンジニア研修などがあり、社会人マナーからエンジニアリングまでたくさんのことを学ぶことができました。

社内のエンジニア研修では、KubernetesのインフラからRails, React, Flutter, 機械学習まで幅広く扱っていただきました。これにより自分の全然知らない領域が少し知っているという状態になり、配属3年目の今でもやってよかったという実感があります。

新卒エンジニア研修2021に参加しました (前編) - Pepabo Tech Portal

配属後は3ヶ月ほどのOJTで小さなタスクを実装したりレビューをもらったりしていました。

UIのABテスト

Railsのビューで書かれたUIを一部ABテストしたいという要件があり、それをsplitというGemを使って実装しました。 Gemのドキュメントを読みながら実装するという一連の業務の流れを掴むことができました。

ただ、当初の実装ではパーシャルの中でABテストのコードを呼び出しており、Splitが内部的に使っていたRedisへの負荷が大きくなり表示が重くなるという問題も起こしてしいました。これは先輩がすぐに原因に気がついてくださりすぐに修正できました。

ボアフリースジャケット追加

SUZURIではTシャツからスマホケース、ステッカーまで多くのグッズを扱っています。

このグッズの種類を不定期に増やしており、自分が配属された時には冬物のファッションアイテムということでボアフリースジャケットの追加を担当しました。

Railsでの実装からImageMagickを用いた画像合成までを一貫して実装しました。コアな機能の追加なので、この時に多くのコードリーディングをしました。また、先輩エンジニアと一緒にコードリーディングをするこで、大規模コードベースでの歩き方のようなものを学びました。

suzuri boafleece list

また、この時に画像処理に関心を持軽く勉強をし直していました。 そして後にcanvasで画像の特殊なValidation処理のアルゴリズムをフルスクラッチで実装するということにもつながりました。

最近、画像処理を勉強しているはなしというyukun ( hyuta )のジャーナル | オリジナルグッズ・アイテム通販 ∞ SUZURI(スズリ)

FlutterでAndroidアプリ開発

当時はモバイル領域にも興味があり、ちょうど事業部でできたばかりのFlutterでのAndroidアプリ開発にも参加させてもらいました。

中でも、Webからモバイルアプリを開けるようにする施策をFlutterからサーバーサイドまでの実装を行いました。また、iOSエンジニアとも連携しながら仕様を決めるという経験が学びになりました。

2年目

タンブラーやクッションなどをWebブラウザでAR表示

会社のテックビジョンとして、Webにとらわれずに3Dやオフラインなどの領域にも進出していくというものがありました。

そこで僕が関心のあったモバイルブラウザを通してARを体験できる機能のプロトタイプを実装し、皆に見てもらい実際にリリースすることとができました。フロントエンドの環境が想定と異なったり、既存の複雑な実装に合うように開発するのは多くの苦労がありましたが、実際にリリースされてユーザーさんの反応が好感触だった時はとても嬉しかったです。

国内オンデマンドプリントサービス初!SUZURIの「AR機能」を新卒2年目のエンジニアが実装した話

OSSに初コントリビュート

先述のAR機能を実装していた際に、使っているライブラリの一部にバグがありました。three.jsでiOSで表示するためのに3Dモデルの形式を変換する時にテクスチャが意図しないものになっていた時は、ひたすら仕様書とiOSの挙動を睨めっこしながら修正を行いました。

この時に初めてOSSのライブラリにコントリビュートし、自分のコードがマージされたことにより大きな自信につながりました。そして今でも使っているライブラリの不具合を見つけ、自分で治せるものはPullRequestを送るようにしています。

ジュニアエンジニアが初めてOSSにコントリビュートした話とコツ

新規プロジェクトであるデジタルコンテンツの登録

SUZURIの第二の事業としてデジタルコンテンツの取り扱いをすることになりました。その規開発を3人のエンジニアで行いました。自分は登録の際のAPIやサムネイル画像の取り回しを担当しました。この開発でGraphQLとReactをがっつり触ることになり学びが多かったです。

また、画像処理サーバーにリサイズをする処理を追加するためにRustを少し書きました。それまで全く書いたことがなかったので本を読んで勉強しました。所有権という概念がポインタより扱いやすそうという印象を受けました。

Datadogと仲良く

DatadogのSyntheticモニタリングを活用して、E2Eテストの実行環境を整えました。開発環境やCIではE2Eテストはやっていませんが、クリティカルな部分に関してはリリース前にステージング環境で行うようにしています。

また、この頃からDatadogのAPMやLogにも関心が出てきて、何ができるのかを調べて試していました。

機能フラグの活用

全社的に機能フラグを活用していこうという流れがあり、UnleashというOSSの機能フラグが社内でホストされています。これを活用して、安全なリリースや障害対応にいち早く対応できるようになりました。特に段階的リリースがとても便利で、よく活用しています。

便利な機能フラグUnleashを活用したリリースと運用 - Pepabo Tech Portal

Google Cloudの認定資格を取得

会社でGoogle Cloudの認定試験の受験と勉強をする機会があり、Professional Cloud Developerに合格しました。開発エンジニアがどのようにGoogle Cloudを活用できるかを一通り知ることができます。久しぶりの試験勉強やテストということで緊張もしましたが楽しく勉強することができました。

Google Cloud認定Professional Cloud Developerを取得しました - Pepabo Tech Portal

3年目

デジタルコンテンツの販売や閲覧性を高める

デジタルコンテンツの販売ではメールやプッシュ通知とその関連画面の実装をしました。ここで初めてプッシュ通知に触れて仕組みについての解像度が上がりました。

また、新規画面については引き続きGraphQL, Reactを用いての開発だったので、この頃にはかなり程度慣れてきました。

スリスリAIチャット

年初めのLLMブームの時に、これを用いた2日間の社内ハッカソンがありました。同僚と3人チームを組み、LangchainやNext.jsを使ってChatUIでSUZURI内の商品を探したり、事実に基づいた応答ができるアプリケーションを開発しました。LLMを活用すると今までのDBや検索エンジンでできなかったような機能を簡単に実装することができて衝撃を受けました。 また、この分野は進歩の流れが早くLangChainのライブラリが毎日のようにアップデートされており驚きました。

AIチャットで商品検索 | GPT-3とLangChain活用 - Pepabo Tech Portal

GA4対応とかサイトマップ

Google Analytics4への移行に向けてイベント送信や、社内のデータ基盤へのイベント送信、サイトマップの生成といったWebマーケティングに関わるような実装を行いました。実装自体は簡単ですが、外部の仕様を確認しながら実装していき、トラブルシューティングもどちらに原因があるのかを切り分けながらやることが良い経験になりました。

searchkickを使う

Railsの検索を実現するSearchkick gemを使い始めました。最初にドキュメントに一通り目を通した時、類似しているものを探せるという機能が目に留まり実際に使ってみました。

Elasticsearchはあまり触れてこなかったので、調べてみると面白い機能がたくさんあり、Webエンジニアとして知っておくと打てる手数が増えるという実感を得ました。

Searchkick gemの類似検索を活用した類似商品提案 - Pepabo Tech Portal

パフォーマンス

3年目になるとインフラの構成やアプリケーションの土地勘のようなものが結構できてきて、障害やアラートが出たときに当たりをつけやすくなりました。 あるAPIがスパイクしていたり、アクセス数増加による障害などがあったときに原因特定から修正を何件か行いました。

そして同期とISUCONにも出場しましたが、初めてということもあり自分が思ったよりも改善できず悔しい結果になりました。

また、先日ChatGPTを活用して最適化しようというブログも書いたので是非ご覧ください。

0xとChatGPTを活用したNode.jsアプリケーションの最適化 - Pepabo Tech Portal

そして、パフォーマンスについての取り組みを来週のイベントでLTする予定です!

BonenKaigi〜2023年 開発忘年会!〜

振り返り

振り返るとひよっこエンジニアから少しづつ成長できた実感がありました。多種多様な経験やチャレンジができる環境には本当に感謝しています。

10年くらい歴史のあるアプリケーションを触るならではのコードリーディングや最近では使われないライブラリと向き合うという経験が個人ではできないのでよかったなぁと思います。特にフロントエンドはBackboneのようなものも残っており、今更ながらドキュメントを読んで勉強しましたが、フロントでMVCをやるのも面白いパラダイムだと感じました。

3年目はまだ終わっていないので、引き続き頑張ります!!