【ゴールデンウィーク営業のお知らせ】
2025年4月29日(火)~2025年5月6日(火)の期間を休業とさせていただきます。
※4月30日(水)、5月1日(木)、2日(金)は通常営業いたします。
※休業期間中にいただいた審査申請については、結果をお返しするために数営業日いただくことをご了承ください。
フロントエンドのスペシャリスト・テックリードとしてチームを牽引していたい
私は現在の会社で、バックエンドとフロントエンドの両方の設計・実装を担当しているのですが、フロントエンドの実装をしている時に楽しさややりがいを感じてること、技術的な要素でフロントエンドの方に高い興味があるからです。
業務外でプログラミングをする際にもReact(Next.js)やVue(Nuxt.js)を中心に学習・個人開発を行っていることや、フロントエンドのOSSライブラリ等に興味を持ちコードリーディングやコントリビューターを行っていることもスペシャリストを目指す志向に影響を与えていると感じています。
フロントエンドのスペシャリスト・テックリードとして、以下の考えに基づきプロジェクトマネジメント、技術選定、パフォーマンス改善、メンバーの育成をできるようになりたいと考えています。
プロジェクトマネジメントは技術的なスペシャリストではないのかもしれませんが、チームをけん引していくうえでプロジェクトの管理というのは欠かせないものであり、サービスの意思決定や安全性を高めていく上で必須な役割と感じています。
サービス開発における技術選定は初期段階だけで行われるものではなく、継続的に行われていくべきだと考えています。実際に、現職で携わっているサービス開発では古くなったライブラリやマイナーなライブラリを使い続けていることで予期せぬ不具合が起きたことがありました。
適切な技術を選定し、継続的な見直しを行っていく上で技術的な知見というのは深くないと十分にはできないと考えているため、テックリードとしてやらなくてはならないと考えています。
ReactやVueのような優れたライブラリ(フレームワーク)を使うことで比較的簡単に機能の実現自体はできるようになっていますが、適切な使い方をしていないがためにパフォーマンスを劣化させているケースが多く存在すると思います。
例えば、状態の監視をすべてUseEffectで行っていたり、ハイドレーションエラーを引き起こすコードを書いてしまうケースを多く見てきました。
3~5年経てば主要なフレームワークは変わっているかもしれませんが、その変化についていきながら、パフォーマンスに優れたコードを書け足り指導できるようになっていたいです。
組織に属してサービスを開発するうえでチームメンバーというのは欠かせない存在です。チームメンバーの技術的なサポートや指導などはテックリードとしてやるべきことだと考えています。
ECサイトをHTML,CSSやJavaScriptなどのプログラミング知識がなくても簡単にECサイトを構築し運営できるサービスの新機能提案・開発・運用保守
メンバー 6~13名(新卒社員含む)
サービス開発のエンジニア兼サブリーダーとして以下の業務を担当した。
新機能の提案~リリースに至った機能の一つとして、お店のデザインをAIとのチャットだけで完結できる機能がある。
外部のアドバイザーとの打ち合わせなどもミーティングを重ね仕様を調整しながら、要件定義・デザイン・設計及び実装のすべてを一人で行った。
上記機能の開発に当たり、ユーザーの予期せぬチャット入力によるプロンプトインジェクションやAIから予期せぬ答えが返ってきた際のハンドリング処理などが課題としてあった。
完全に自由なチャットサービスとするのではなく、サービス側から質問を投げかけユーザーはそれに軽く答えるだけのチャットボットに近い実装にすることでユーザーからの入力に制限を持たせた。
また、AIからの返却値をそのまま返すのではなく、既定の文字形式に変換してから返却する(変換できない形式だった場合はエラーハンドリングを行う)ことでプロンプトインジェクションが起きにくいようにした。
当該サービスに携わってから約1年半はNuxt2系&JavaScriptでフロントエンドの開発を行っていたが、Nuxt2の公式サポートが切れることに合わせてNuxt3にリプレイスするとともにTypeScriptに変更した。
この業務における私が担当した内容は以下の通りである。
<slot>
要素を利用することで類似UIコンポーネントの共通化に成功した。(特にモーダルコンポーネントで顕著でした)毎年プログラミング未経験の新卒社員を採用している中で、教育が十分になされていないと感じていたため勉強会を実施する旨を上長に提案し自ら定期的に勉強会を実施した。
結果的に勉強会の習慣は、チーム内だけでなく部内全体に広がっている。
Netflixのマイリストよりも細かく分類できる独自のお気に入りリストを作成できるChrome拡張の個人開発を行った。
全て一人で開発
当時日常的にNetflixを利用している中で、いつか見たいと思った映画やアニメをマイリストに保存していた。そうしている内にいつの間にかマイリストの数が多くなりすぎてしまい、見たい映画をすぐに見つけ出すことができずストレスに感じた。
このストレスを感じている人は他にもきっといると思ったため、以下の機能を有する独自のお気に入りリストを作って公開すれば需要があると思い開発した。
「作成したカテゴリにNetflix内の作品を自由に登録」が簡単にできるようにするためには、作品情報のモーダル内に独自のボタンを配置する必要があった。
この動作を実現するためには、モーダルがレンダリングされるごとにボタンを埋め込む必要があったため、「MutationObserver インターフェイス」を使いDOMの変更を監視するアプローチで実装した。
Netflix内で利用できる拡張機能であることから、UIが浮いていては使い勝手及び心象に悪いと考えたため、Netflix固有のCSSを使うことや同様なコンポーネントを実装することで、Netflixに馴染ませることに成功した。
以下の技術を深く掘り下げ、実務で有効に扱えるようになることで、エンジニアリングチームの一員としてだけでなく、リーダーシップを発揮し、プロジェクト全体の成功に貢献できるエンジニアを目指します。
テスト駆動開発 (TDD)
クリーンアーキテクチャ
ドメイン駆動開発 (DDD)
おおむねどのような環境で合っても一定のパフォーマンスを出せると自負していますが、一番発揮できると感じるのは「一人で静かに、独り言をいえる」環境だと思います。
私はよく、何か深く考えたり、考えを整理するときに独り言を言っている節があります。
誰かに教えている様な口調だったり、ディスカッションしているしているていで独り言をすることで考えがまとまり仕事が捗ります。