Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ベイビーステップで実現! 地図検索機能のVue2→3移行話/Achieving Baby St...
Search
コドモン開発チーム
October 30, 2024
3
210
ベイビーステップで実現! 地図検索機能のVue2→3移行話/Achieving Baby Steps: Transitioning Map Search Functionality from Vue 2 to Vue 3
コドモン開発チーム
October 30, 2024
Tweet
Share
More Decks by コドモン開発チーム
See All by コドモン開発チーム
「石の上にも三年」 の石の上での三ヶ月(話題のペアプログラミングを4社が徹底的に語る!) / Three months on a rock.
codmoninc
2
92
みんなで自動テストに取り組む ために必要だったこと / Essentials for Team-Based Automated Testing
codmoninc
0
130
コドモンのQAの今までとこれから / Codmon's QA Journey
codmoninc
1
340
スケールするプロダクトと膨らむ組織 SREの挑戦と解決策 / SRE Challenges and Solutions at Codmon
codmoninc
0
28
XPってどんな感じ?コドモンでの導入経緯と現在地 / What is XP like? Background of introduction and current status in Codomon
codmoninc
2
690
GAS・関数地獄を脱出! TROCCO・dbt・BigQueryで ストレスフリーなデータ管理 / Stress-Free Data Management with TROCCO, dbt, and BigQuery
codmoninc
0
710
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築 / From EC2 to ECS: Migrating to Containers and Rebuilding a Massive Legacy PHP Application
codmoninc
0
700
コドモンの決済基盤のテストの紹介 / Introduction to the Payment Infrastructure Testing of Codmon
codmoninc
0
360
組織の変化とSREの役割進化 | 責務拡大にどう応えるか / Organizational Change and the Evolution of the SRE Role
codmoninc
0
78
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
7
620
Designing Experiences People Love
moore
141
23k
Bash Introduction
62gerente
611
210k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
320
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.6k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Side Projects
sachag
452
42k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
12
1.4k
Scaling GitHub
holman
459
140k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Transcript
2024年10月30日 株式会社コドモン 関根啓子(せきねこ) ベイビーステップで実現! 地図検索機能のVue2→3移行話 Vue Fes Japan 2024 After Night
経歴 2023年8月コドモン入社。 保育施設の園児/職員募集プラットフォーム開発エンジニア。 EM兼務はじめました💪 自己紹介 関根 啓子(せきねこ) 家族構成 夫・長女(5)・長男(3)・猫 休日の楽しみ
クラリネット・クラフトビール 最近のブーム 乾燥納豆
パパママと、子どもとの時間に 1秒でも多くの笑顔と愛情を すべての先生に 子どもと向き合う時間と心のゆとりを 「保育・子育て」と 社会をつなげる 保護者の子育てへの伴走 保育・教育者の環境改善 子育ての社会インフラ作り 子どもを取り巻く環境を
テクノロジーの力で よりよいものに ミッション 私たちの使命
すべての先生に 子どもと向き合う 時間と心のゆとりを こんなプロダクトを開発しています メインプロダクトは、保育・教育施設向けWebアプリケーション。 保護者と施設のやり取りを支えるモバイルアプリケーションや、施設職員向けモバイル版 アプリケーション、外部サービスと連携するAPIなども開発しています。
🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉 Vue Fes Japan 2024 お疲れ様でした!!! 🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉
None
本日のテーマ
よりよい園探しのための園紹介 &見学申し込みサービス こんなプロダクトを開発しています
よりよい園探しのための園紹介 &見学申し込みサービス こんなプロダクトを開発しています
地図です🗾
地図です🗾 • 現在地や自宅など周辺の保育施設が検索できる! • 気になる施設の情報を表示→園見学申込できる!
Vue2→Vue3移行みちのり
• 地図機能リリース当時はVue2専用モジュールで実装 • そのわずか半年後にフロントのNuxt2→3移行対応 はじめに
• 地図表示・操作には GoogleMap を使用 • 使用モジュール ◦ vue3-google-map ◦ @googlemaps/js-api-loader
◦ @types/google.maps はじめに
絞り込み検索との連動 自宅情報の取得 はじめに 「移行」といっても、地図機能やることたくさんあるんだよなぁ… モジュール差し替え GoogleMapsAPIとの疎通 イベント処理 フリーワード検索との連動 ハーフモーダルの取り込み 現在地取得
エラーハンドリング マーカー切替 Options→Composition移行 JS→TS移行
段階的に開発することにした 動かない地図を表示する マーカーをカスタマイズする 地図を動かす ジオコーディングできるようにする
① Nuxt3バージョンアップ対応用に新規リポジトリを作成 ② 1ストーリー(タスク)ごとに新規リポジトリに既存コードを置く ③ コードのエラー・レガシーな部分を直していく 段階的開発を支えたNuxt2→3移行プロセス
④ 受け入れテストを通過したら検証環境にデプロイ ⑤ チーム内デモでフィードバックをもらう ※フィードバックを受けての追加作業は、②以降を繰り返し 段階的開発を支えたNuxt2→3移行プロセス
動かない地図を表示する マーカーをカスタマイズする 地図を動かす ジオコーディングできるようにする
動かない地図を表示する • 地図が出るか? • マーカー出るか? • オプション設定効いているか? • イベントに反応するか? など、最低限&最重要部分を確認
動かない地図を表示する マーカーをカスタマイズする 地図を動かす ジオコーディングできるようにする
• 地図操作イベントを実装 ◦ click, centerChange, zoomChange, etc. • OptionsAPI→CompositionAPIへ
置き換え 地図を動かす
動かない地図を表示する マーカーをカスタマイズする 地図を動かす ジオコーディングできるようにする
マーカーをカスタマイズする • クリックされた施設はアクティブマーカー • それ以外の施設は非アクティブマーカー • 各施設マーカーの選択状態をstoreで管理 アクティブな施設 非アクティブな施設
小噺:マーカーをsvgにしたい
小噺:マーカーをsvgにしたい GoogleMapsドキュメントには「できる」と書いてある
色々試してみた 小噺:マーカーをsvgにしたい
小噺:マーカーをsvgにしたい 色々試してみた
小噺:マーカーをsvgにしたい 色々試してみた
小噺:マーカーをsvgにしたい 色々試してみた
小噺:マーカーをsvgにしたい 色々試してみた
小噺:マーカーをsvgにしたい 色々試してみた
小噺:マーカーをsvgにしたい 色々試してみた
小噺:マーカーをsvgにしたい つまり、これは…
結果、見送り 😭 小噺:マーカーをsvgにしたい • 影や白抜きなどpathのみで表現できない マーカーは色を変えられない • 色を変えられたとて「この色=この施設種別」
という情報はユーザーにとって認知負荷
動かない地図を表示する マーカーをカスタマイズする 地図を動かす ジオコーディングできるようにする
ジオコーディングできるようにする • 地図表示・操作に直接関わらない処理 には別モジュールを使用 ◦@googlemaps/js-api-loader • TS 用の型ライブラリも使用 ◦@types/google.maps
🚀 地図機能のVue3移行DONE!🚀
• ストーリー(タスク)を小さく分割 ◦ 優先度(重要度)高い仕様から実現 ◦ 時間は有限!提供価値は増やす・手戻り範囲は減らす • ペア・モブプロ作業を本格導入 ◦ 各メンバーの知識・経験を総動員
◦ 常に壁打ち・レビューできる相手がいる安心感 移行を後押した取り組み バーチャルオフィスツールで会話→
価値 • コミュニケーション • シンプルさ • フィードバック • 勇気 •
リスペクト 原則 • 人間性:みんなが自分らしくいられるチームで • ふりかえり:起きたことから学んで、再現性を ハンドリング • ベイビーステップ:小さく始める、小さく進める など プラクティス • 受け入れテスト • 持続可能なペース • TDD • ペアプログラミング など 価値・原則を意識しながらプラクティスを実行することで、「価値を体現できている状態」へ 開発手法 XP(エクストリーム・プログラミング)に則り、 アジャイルなチームを目指す
余談 Dynamic MapsとStatic Mapsは利用料金が異なる ◦ Dynamic Maps… $700 (100,000req) ◦
Static Maps…… $200 (100,000req) Dynamic Maps Static Maps
さいごに
コドモンでのアジャイル開発 なぜXPを導入し、どう実践しているのか お話しします!
コドモン採用ページ コドモンでは一緒に働きたい仲間を募集しています! せきねこの カジュアル面談
Thank you!
None