田村 勇貴

フリーランス / フロントエンド東京

田村 勇貴

フリーランス / フロントエンド

Entertainment is a Lifestyle

Webのフロントエンドエンジニアとして活動してます。最近は、React/Next, Vue/Nuxt を書いています。 基本的にはTypeScriptを使ってコードを書く機会が多いです。 たまにFlutterを使ってアプリ側の開発をしたりします。

この先やってみたいこと

未来

Webの業界で、創ってて楽しいと思えるプロダクトや時代によって進化し続けるサービスにエンジニアとして活躍したいなと思っています

フリーランス1年間

フロントエンド現在

- 現在

現在4案件ほどでフロントの開発をしてます。 基本TypeScriptを書きます。(フレームワーク、ライブラリにはNext, React, Vue, Nuxt周りをよく使います) - 株式会社WARC

株式会社MIXIの会社情報

株式会社MIXI1年間

フロントエンドエンジニア

-

minimoのWebフロントエンド周りを担当

  • SEO施策, UI/UX改善, フロントエンド移行

    検索改善 今までの検索だと、どの業態を跨いでも同じ検索結果になってユーザーにとっては不必要な条件も提示される問題点があった(例: 美容室を探してるけど、ネイルが引っかかるなど) ここは今まではMojoliciuouで作られていたけど、stateのやり取りなどを行いやすくするというのもあってReactを導入。 Reactの環境を作ってstateカスタムフックを使ってstateやフックの共通化するようにして扱いやすいようにして作成。 この改善施策ではエリア指定の検索をよりUXをよくするために、インクリメンタルサーチを導入して入力のストレスを減らすなど対応。 写真詳細内のカタログリンクを改善 元々このページでは写真の前後移動のリンクがわかりにくい位置にあったりなどUX的にも良くない状態だった。 画像とのリンク移動がわかりやすいUI設計に変更して、改善後はページ・セッションの方は0.5~1ページほど増えて、PVは15000ほど増加するようになった。 予約フロー改善 予約に関連するページは今までだと、ステップインジケーターと画面フローがあってない状態になっておりユーザーが今どの位置にいるかわかりにくくすぐ予約まで確定するんじゃないか?みたいな不安をユーザに提供してしまう可能性があった。 主にこのページはfigmaと実装とのスタイルの乖離などが激しく、今回の施策改善によってスタイルを合わせるようにしたりユーザにわかりやすいUIを設計してUXがいい状態を作るようにした。 フロントエンド移行 minimodeljpはPerlのMojoliciousを使って動いているので、レガシーな技術ということもありフロントエンドのリプレイスを担当。 SEOが重要なサービスということもあり、SSRをしたほうがよいのでフロントはNext.jsを使うようにした。 minimodel上で使われているコンポーネントをReactでコンポーネント化していきスタイル周りをCSS in JSでemotionを使うようにしてStorybook上で確認できる状態を作っていった。 一部のページのFigmaが更新されていなかったり、各マージン・フォントサイズ・UI部分など、コンポーネントの共通化が行えそうな箇所はデザイナーの方と移行に合わせてルールの統一化や相互に改善するような対応を取るようにした。 フロントエンド移行するにあたってすぐにNextに置き換えできるというわけでもないので、既存でReactを使われていた部分をsubmodule化してviteでビルドした結果をSPAで配信するようにしたりするなど。

    -
ノイン株式会社の会社情報

ノイン株式会社1年間

フロントエンド・クライアントサイド

-

noin.shopのフロントエンドのリファクタリング、NOINアプリのリプレース、noin.shopのパフォーマンス改善を行いました。

  • noin.shop/NOINアプリの開発・リファクタリング

    TypeScript導入 noin.shop側は当時Nuxt2系で動いており、自分が入った段階ではJavaScriptで書かれており、TypeScriptが1割もない状況でした。今後、新規機能を開発を行っていくとして基盤としてはなかなか厳しい状態だったのでTypeScriptを使ったリファクタリングを行いました。 基本的にはVue2系のOptions APIの書き方でVue.extendの呼び方の場合でも型周りの担保を行うように変えていきました、Vuexなどに関してはまだTypeScriptとの相性も良くないのでnuxt-typed-vuexによるTypeScriptとの親和性を図るようにしました。 コンポーネントのテスト周り コンポーネントのテストはほぼ存在してなく、Storybookなども当時のバージョンからアップデートなどもされていなくほぼメンテナンスもされていない状態でした。 そこでStorybookのアップデート6系に変更後, 今後のStorybookが腐らないためにもStoryshotsの導入によるUI, UnitTestの担保するようにしました。 コンポーネント表示時の見え方や、propsなど値による各パターンの網羅、コンポーネントに変更が入ったときに気づくことができなかったという点をなくすためにもShotryshotsによるスナップショットテストを行うようにしました。 Core Web Vitalsの改善周り、 Core Web Vitalsのスコアも当時はあまり良いものではありませんでした。 lazy-hydrationによるTTI/TBTを短くする、画像周りの対応(次世代画像形式のWebpを使うように変更), CLS改善, カルーセル周りのLCP改善 アプリのリプレイス ネイティブのアプリに関しては当時、Kotlin, Swiftで書かれており、今後の開発をより行いやすくするためにFlutterを導入しての開発を行いました。 アプリ側での開発では、スクラムの体制をとっており、1週間スプリントで回していました。 Flutter周りのアップデートが早いので常にアップデート対応をしながらでの開発をしており、Flutterのバージョンとして2系を使うようにしていました。 状態管理はGetXを使う感じで進めていました。当時は時間がないなどの経緯もあり簡単でシンプルであり学習コストも低くできるといった点で採用などしました。

    -

いちから株式会社(現: ANYCOLOR株式会社)1年間

サーバーサイド/フロントエンド

-

社内ポータル、いつから.link、リアルタイムサーバー管理画面、LP、自動化、社内アプリの開発をしたりしてました

株式会社パラダイムシフト ParadigmShift.io4ヶ月

フロントエンドエンジニア(アルバイト)

-

クラウドシステム「RepChecker」のSPA開発、LP開発をしました。 Vueを使って開発しました。

  • RepChecker

    ホテル、旅館向けクラウドシステム

株式会社VAZ5ヶ月

サーバサイドエンジニア(アルバイト)

-

キュレーションサイト「Mel」でGolangを使ったAPI開発

  • Mel

    10代の女の子を対象とした美容系分散型メディア

norarikurari4ヶ月

企画、運営(副業)

-

古着屋ECサイトの運用

株式会社hmソリューション2ヶ月

フロントエンドエンジニア(インターン)

-

CSS, JavaScriptなどを使ってアニメーションを使った採用サイトを実装



言語

  • 日本語 - ネイティブレベル
  • 日本語 - 日常会話レベル
  • 日本語 - ビジネス会話レベル

アプリをインストールして、知り合いの最新の活躍をフォローしよう