こんにちは、STRACTでエンジニアリングマネージャーをしている加藤です。
2025年1月から3月までの3ヶ月で開発チームでどんなことがあって、どんなふうに乗り越えてきたのかを、ちょっとラフな雰囲気でふりかえってみようと思います。
モバイルアプリをゼロから作り直すことにした
これからPLUGのモバイルアプリを大きく育てていくにあたって、これまで使っていたCapacitorベースの実装にはいくつか気になる課題が出てきたのがきっかけです。
たとえば、WebViewまわりの挙動が不安定だったり、画面遷移で若干のもたつきがあったり、プラグインの制約が原因で実現したい体験に届かないことが増えてきたんです。アプリの規模としてはまだ小さいながらも、開発コストがじわじわ重くなってきていまいた。
モバイルアプリの開発をこれから踏み込んで行くために このタイミングでフレームワークごと見直してみよう と、腹をくくって技術再選定&移行を決断しました。
フレームワークを選ぶうえで重視したのは以下の2点です:
・TypeScriptで開発できること
PLUGはインフラからフロントまでTypeScriptで統一していて、モノレポ環境での開発体制と相性が良いことが大前提でした。
・既存モジュールを活かせること
これまでに社内で作ってきたライブラリやユーティリティ群をそのまま再利用できるか、も重要な観点でした。
上記を満たす選択肢としては、ざっと以下のようなものが挙がりました:
- Capacitor をそのまま使い続ける
- React Native(+ Expo)へ移行する
- NativeScript へ移行する
- Cordova に戻る
最終的には、React Native + Expo を採用しました。
その理由は主に以下の2点です:
- 開発エコシステムの強さ:公式ドキュメントが整っていて、サードパーティのライブラリも豊富。わからないことも検索ですぐに解決できるし、オンボーディングも楽で、開発スピードが出しやすいのが魅力です。
- パフォーマンスの安定感:ネイティブに近い動作・パフォーマンスが得られる構成が用意されている
導入後は、ExpoのEASを使ったmanaged workflowを軸に、開発環境をまるっと再整備。TailwindやESLintまわりも見直し、Firebaseを使った認証の引き継ぎ、Push通知対応、そして各画面の再構築などを地道に進めています。
開発も大詰めで、近くリリースを予定しています。見た目はそんなに変わらないですが、中身はだいぶ骨太になってきます!
ディレクトやライブラリの構成を RFC で合意形成をしている様子
Safari拡張機能の機能追加やUX改善
大きめのリリースだとPLUGキープ機能の全体公開を行いました。またSafari拡張機能の使い勝手も見直しました。特に 画面上にでてくる PLUG の丸い UI(Bubble UI)がユーザーのブラウジングの邪魔をしないようにする改善を入れています。
- キープ機能の全体公開
- バブルの位置を画面サイドに吸着できるようにした
- ドラッグ&ドロップで非表示にできるようにした
- 特定ページでは自動でバブルが隠れるようにした
PLUG祭
3月に PLUG で初となる大規模キャンペーンを実施しました。PLUG祭用に新しいキャンペーン施策の実装を行いました。キャッシュバック案件ごとに柔軟な還元率を設定できる仕組みで、ASPや管理画面、レポート基盤まで幅広く改修を行いました。またモバイルアプリのUIも祭り感があるキャンペーン仕様になりました 🎉
実際のキャンペーンでは通常の数倍のアクセスがありましたが、事前にRDSのスケールアップをなども行い無事に乗り切りました。
GMVの様子 (PLUG祭が始まった2/28から数倍に)
地上波テレビ放映対応
3月に地上波で PLUG を取り上げてもらいました。話をもらってから放送日まで期間が短かったので、負荷対策の抜本的対応はせずに、各インフラリソースの確認やスケールアップ・スケールアウトの調整を行い、当日はオフィスでみんなで放送を見守りました。
放送前後の様子。負荷対策と、DL数などのデータ推移をチェック。
放送直後は 通常の10倍のアクセス がありレスポンスが多少遅くなってしまいましたが、サーバーやDBがクラッシュすることなく乗り切ることが出来ました。結果として放送直後10分で普段の1日のダウンロード数の10倍以上ダウンロードされ、翌日以降App Storeの無料アプリランキングで1位となり、その影響で放送後1週間も普段より多くの方にアプリをダウンロードしていただけました。
アクセス数の様子 (TVで放送された23:15頃にスパイク)
僕はこのタイミングから北乃きいさんの大ファンになりました!ありがとうきいちゃん!
Devin の導入
開発効率の観点で弊社もAIコーディングアシスタント「Devin」を導入しました。ボイラープレートの作成から小さめのAPIの実装と徐々に導入をしています。
実際にコードもマージされており、社員だけではなく、業務委託の方も含めて一緒に使って倒しています!
技術顧問の参画
2月には 技術顧問としてhiroppyさん(廣戸裕大さん)にジョインいただきました 🎉
hiroppyさんには、機能単位 から システム全体の設計の相談 をさせてもらっており、直近では PLUG 内の LLM を使った機能についてと本当に幅広く助けていただいています!
次の四半期にむけて
次の四半期は、いよいよPLUGで新しいショッピング体験を提供するためのリリース第一弾を予定しており、今が山場です(いつもですが。)
同時に、既存機能や体験をさらに磨いたり、分析まわりの基盤を強化したりと、やることはまだまだたくさん。またこのブログで、チームのあれこれをゆるっと共有していきます。
一緒に新しいショッピング体験の開発に取り組んでくれるエンジニアの方を募集しています!
STRACTでは現在多くのポジションで採用活動を行なっています。
ご興味のある方は、ぜひカジュアルにお話ししましょう!
-------------------------------------------------------------------------------
▼代表伊藤のnote
https://note.com/hkrit0/n/nc1175b2a6039
-------------------------------------------------------------------------------