フロントエンドエンジニア - 正社員。
IT リテラシーがなくとも、オリジナルの EC ネットショップが作成できる Web サービスの開発・運用を担当している。
主な業務としては、リテールネットショップ本体とそれをカスタマイズするダッシュボードのフロント開発となる。
現在は社内のマイクロサービスとの連携を担当し、ネットショップでポイント割引し商品を購入できる施策を担当している。
- 事業オーナー向けのネットショップの運用工数の軽減やカスタマイズ機能の実装
- アイテムの在庫管理機能
- アイテムのバリエーション価格設定機能
- note との連携機能
- ストア非公開文言の設定機能
- ストア FAQ 作成編集機能
- freee 会計連携機能
- アイテム一括登録・一括削除機能
- POS レジアプリ使用するオーナーや個人事業主をサポートする機能をダッシュボードに実装を担当
- POS レジアプリを使用するときにオンボーディング機能
- 店舗管理機能
- 実店舗オーダー閲覧機能
- 売上分析機能
- 会社統合対応
- ネットショップやダッシュボードのアクセシビリティの向上
- freeee 株式会社が一般公表しているアクセシビリティガイドラインに沿って、レベル A とレベル AA の項目たちをクリアすべくように改修。
- JavaScript から TypeScript に書き換えるリファクタリング
- Vue コンポーネントの SFC ファイルの script 箇所や Vuex、ユニットテスト、モジュールなどの JavaScript ファイルを 1 ヶ月合計 220 ファイル程書き換え。
- E2E テストの基盤導入
- Playwright を使用し、GitHub Actions の Scheduled Dispatch と Repository Dispatch を使用。
- 夜間バッチスケジュールやプロダクトのデプロイにフックして、E2E テストが実行するような基盤作りを行った。
- CircleCI から GitHub Actions への移行
- 2023 年 1 月初旬に行ったセキュリティインシデントがきっかけにより移行を担当。
- Nuxt 2 から Nuxt 3 へのマイグレーションを担当
- 4 人体制で行い、規模は 220 ページコンポーネントあり、コンポーネントだけだと 1200 コンポーネントあるプロダクト規模となる。
- Nuxt Bridge を経由しての Nuxt 3 マイグレートを計画し、段階的なアップデートを図っておりプロダクト開発への影響を最小限に少なくした
- 上述のデザインシステムの UI ライブラリを Vue 3 へマイグレーションを担当。
- テスティングフレームワークを Jest から Vitest へ移行
- ts-morph を使い、すべての vue コンポーネントを option api から script setup へ書き換えの自動化を行った。
- テスティングライブラリの vue-test-utils のメジャーアップデート
Nuxt 3 への移行に向けて頑張ってます - STORES Product Blog
副業で業務委託として、週平均 20 時間、月平均合計 90 時間の稼働。
法人クライアント企業の公式アプリを最小の工数でリリースするアプリプラットフォーム (iSIN Module) の開発と運用を担当している。
2024 年 8 月現在、そのプラットフォームを使い、12 つの iOS と Android アプリの開発・運用を担当している。
- 新機能開発
- 元々 Ionic で実装されていたアプリを Flutter でフルリニューアルすることを担当。
- Firebase Dynamic Link SDK を使ってアプリのダウンロード数を促進させる仕組みを構築。
- 企業公式サイトに Dynamic Link を埋め込み、1 か月平均 5000 のアプリダウンロードに貢献。
- 発行されたリンクを読み取りダウンロードしたあとで、ポイント付与する機能の実装を担当。
- シェアするポイントやアプリ招待コードを含んだ Dynamic Link をアプリ内で発行する機能を実装。
Firebase Dynamic Link が非推奨になったのでふりかえる
- Firebase Cloud Messaging を使いプッシュ通知を受け取れる仕組みを担当。
- Firebase Authentication SDK を使い匿名認証を導入。
- Firebase Remote Config を使っての強制アップデート促進施策を担当
- Firebase Crashlytics でクラッシュやエラーを取得できるように改修
- Stripe を使っての課金施策担当
- Google Maps を使っての店舗検索機能の施策を担当
- HealthKit を使っての健康管理機能の施策を担当
- アプリ内のコンテンツ拡充
- アンケート回答機能
- メンテナンスモードへの切り替え
- サロンやセミナーの予約管理機能
- パッケージアップデート業務
- すべてのアプリを Flutter のバージョンを 2.5 から 2.10、3.7、最終的に 3.19.5 へのマイグレーションを担当。
- その他パッケージについては、Renovate を使い、PR マージでバージョンを最新にできる仕組みを構築。
- Flavor 対応
- dart-definer-from-json オプションを用いて、Flutter build に渡す環境変数を変えるだけで、内部的にテストビルドと審査提出ビルドを分けられる仕組みを構築。
- 審査提出ビルドを App Store Connect と Google Play にアップロードする GitHub Action の workflow を構築
- CI 構築 (GitHub Actions)
- テストビルドを Firebase App Distibution へアップロードする workflow を構築
- 徐々に実行時間を短くし、最初 1 時間ほどかかっていたものを 25 分まで減らすことに成功。
- ユニットテスト導入
- API やライブラリをモックできる Mockito を使い、Riverpod の StateNotifier 内のロジックのユニットテストを 0 から導入
- いいね問題の解決
- アプリ内の 1 つのアクションの結果が他のアクションに反映しない問題を StreamController を使って解決。
- Apple・Google Play 審査リジェクト対応
- 匿名認証を導入し、会員登録をスキップできるように
- アプリ毎に必要な共通 Git Submodule を変更できるように
- 1 つのアプリが複数の Git Submodule を使用しているため、必要な機能だけを動的にインポートするのを可能にし、必要がない機能を含んでいることについてリジェクトされることを回避した
作りたいが見つかるレシピ動画メディアサービス「DELISH KITCHEN」の Web サービスの開発・運用・監視を 2018 年 11 月から現 2020 年 11 月まで担当。
施策ベースで仕事を任されているため、開発では Web フロント、API サーバー、インフラも含め必要な改修を適宜判断し、業務を担当。
バックエンドチームにも所属しているため、DELISH KITCHEN の iOS と Android アプリが使う API サーバーの開発も適宜行なっている。
- SPA ライブラリの Riotjs でファーストリリースされた Web サービスを SEO 対策として SSR の開発ができる Nuxtjs に置き換えるシステムリプレースを担当。
- そのリプレースした Nuxtjs でのプロジェクトで、リアルアフィリエイト施策のため、下記の新規機能の開発と改善・運用業務を担当。
- そのリプレースした Nuxtjs でのプロジェクトで、AWS Cognito を用いたメールアドレス認証や、SNS 連携を取り入れてのログイン機能。
- レシピをお気に入り登録できる機能。
- GMOPG のサービスと連携し、web サービス上からキャリア決済できる機能。
- SEO 対策ための施策の新規開発を担当し、web サービスの MAU を半年で約 200 万弱から 850 万まで、1 年間で 1200 万増加。
- マーケティングチームと連携し、検索ボリュームが高いキーワードを含まれるページを多く index させるようにデータを正規化を担当。
- アプリからのレビューコメントと写真投稿できる API の開発も担当。
- UI・UX 向上やサイト内回遊を促進させ、今よりユーザーが作りたいレシピをより見つけやすくできるように、デザインリニューアルプロジェクトを担当。
- web サービスのパフォーマンス関連
- AWS の API Gateway、Lambda、Cloudfront を利用し、表示する場所によって適したサイズの画像を取得できるような画像リサイズのサーバーレスアプリケーションの開発を担当。
- 拡張子が jpg の画像を webp で配信できるようにし、25%から 50%までファイルサイズを減少させることに成功。
- API サーバーのレスポンス内の不要なデータを削除。サーバーからの応答時間を 50%削減。
- Dynamic import や Code splitting などで JS の量を少なくしたり、ファーストビューに入っていないコンポーネントの JS を実行させないように改修。
- アプリコンテンツを入稿するツールを Riotjs から Nuxtjs にシステムリプレースするプロジェクトを担当(3 人 / 2 ヶ月)
作りたいが見つかるレシピ動画メディアサービス「DELISH KITCHEN」のライフやサミットといった業務スーパーや小売店に向けてシステムを提供するリテールサポート開発チームに所属していた。
- 小売店に配置するサイネージアプリの API サーバーのマイクロサービスを AWS ECS を利用して 0 から 1 人で構築。そのあとの新規機能の開発や運用だけではなく、Datadog や Sentry を導入し監視、fluentd でログ転送するシステムを構築。
- 新規機能や既存機能拡張のためのデータベースのテーブル設計やデータ正規化。
- DELISH KITCHEN 本体のアプリとの連携。
- ユーザーが現在地や郵便番号から小売店を検索し、フォローできる機能を実装。
- AWS ECS のタスクスケジューリングを駆使してのバッチ処理なども新規機能と同じく開発、運用、監視。
- ユーザーがフォローしている近くのスーパーの特売情報を DELISH KITCHEN 本体で知れるように、小売店の特売情報を提供している会社(ナビット)の外部 API とデータ連携するバッチ処理の実装。
- AWS Transcoder を利用して、レシピ動画をサイネージで流す用の高画質なものにトランスコードするバッチ処理の実装。
- Riotjs を使用し、お店や特売情報、サイネージで流すレシピなどのコンテンツ入稿・編集ツール(SPA)の開発。
- Redash や Treasure Data などの BI ツールで PrestoSQL を使い KPI になる数値出し
MUSER 開発チーム(副業 / 業務委託)。
副業で業務委託として、週平均 15 時間、月平均合計 60 時間の稼働。
2020 年 11 月から 2021 年 10 月まで、ライブを見ながらアーティストを応援するための配信プラットフォーム MUSER の開発を担当している。
施策ベースで仕事を任されているため、開発ではフロントエンド、バックエンド、インフラも含め、必要な改修を適宜判断し、業務を行なっている。
- MUSER 本体の開発を担当
- 主に課金周りの施策を担当しており、Stripe を使った課金基盤のリニューアルを担当。
- 他にもアーティストチャンネル機能やユーザーのプロフィール管理機能も合わせてサービスのリニューアルを担当。
- メンバーのみんなが認識を合わせて働きやすい環境を整えるための開発環境を整えるを担当。
- ユニットテストや E2E テストの導入、及びそれらのガイドラインの作成し、チーム内で展開した。
- lint や自動パッケージアップデート環境も整備した。
- ミュージックフェスのイベントページの開発を担当
- ブラウザのロケールに合わせて言語切り替え対応した
- 課金周りやサービス内通貨購入の施策を担当し、フェス用のチケット販売やクーポンによる値段割引機能、チケットの招待機能などを実装。
- MUSER へ反映されるコンテンツの入稿ツールの開発・運用
- アーティストチャンネルやクーポンなどの CRUD ができるように
- 使用しているパッケージのバージョンアップ
社会人 OBOG と学生をつなげるマッチングプラットフォームの開発・運用、また各分野で高いスキルを持つ社会人がグループを作り、プロジェクトのディスカッションができるプラットフォームの開発。
- 新規事業となるネイティブアプリが使う API サーバーの開発・ 運用
- 海外出身の社員が多くいた開発チームの中、英語でコミュニケーションを取り、開発を担当した。
- リリースまでは到達できなかったものの Ruby on Rails で API サーバーの開発を 0 から担当し、適宜アプリチームと連携を行なっていた。