コネクテッドカー遠隔制御サービス
スマートフォンが車のキーを代わりに務めるデジタルキーを作りました。スマホと車は Bluetooth Low Energy で直接信号をやり取りしますが、iPhone はバックグラウンドでこの接続を維持し続けないため、GPS の位置情報を使った回避設計でこの制約を解決しました。ドアが開かなければ人は路上に取り残されるため、接続が切れたり失敗したりするケースを実際の車両とセンサーで現場で再現し、手直ししました。iPhone・Androidアプリは、発行したキーと共有状況を管理するWebダッシュボードにつながります。
近づくと開き、離れると閉まるキー
スマホと車は Bluetooth Low Energy で直接つながります。アプリを開かなくてもスマホがバックグラウンドで車の信号を探し、信号の強さで距離を見積もって、近づくとドアを開け、離れると施錠します。iPhone はアプリがバックグラウンドにあるとき Bluetooth 接続を維持し続けないため、そのままでは接続が切れます。この制約は、Apple のポリシーを守りながら GPS の位置情報を使って接続をつなぎ続ける回避設計で解決しました。反応距離は近く・中間・遠くから選べ、距離や周囲の環境によって変わる動作は、実際の車両とセンサーで現場で確かめて直しました。Bluetooth 通信の部分はアプリ本体から切り離したモジュールにまとめ、通信側を直してもアプリ全体が揺らがないようにしました。ホーム画面のウィジェットからは、アプリを開かずに始動・施錠・ハザードをすぐ操作でき、車種の仕様に合うボタンだけが表示されます。

スマホと車が互いを確かめてから、初めてキーになります
初回登録では、スマホが Bluetooth で車のキー端末に接続し、出庫状況を確認したうえで、車固有の証明書、所有者証明書、ワンタイム証明書を順に検証して、初めてキーとして登録されます。登録後もキーの認証情報は数分ごとに更新し、古いキーでは車が開かないようにしました。車を売った後は所有者を変更する流れが別にあります。各段階で記録を残し、現場で登録が止まっても、どの段階でなぜ失敗したかをWebダッシュボードですぐ確認できるようにしました。

キーを分けるときは、人ごとに権限を別々に
名前と携帯番号でキーを送ると、受け取った人が承認して初めてキーが作られます。車両ごとに最大2名まで共有でき、人ごとにカードキー、Bluetooth、安心モード、自動施錠の許可を個別に決め、いつでも取り消せます。発行済みのキーと共有状況、登録の失敗はWebダッシュボードの1画面で確認します。

1か月の運転と車の状態を、レポート1枚に
毎月の運行記録と車の状態をレポート1枚にまとめました。走行距離、走行時間、燃費、アイドリング時間を前月と比べて示し、日付を押すとその日の午前・午後の運行が1回ずつ広がります。故障診断はパワートレイン・シャシー・車両通信システムに分けて正常か点検必要かを表示し、消耗品は交換時期が近いものから知らせます。整備工場で交換した内容は、日付と走行距離で自分で記録できます。

この仕事のポイント
Bluetooth Low Energy のデジタルキー、近づくと開き、離れると施錠
証明書を段階ごとに検証して登録、車両ごとに2名まで人別の権限で共有
iPhone・Androidアプリ、デジタルキー管理Webダッシュボード、ホーム画面の操作ウィジェット
インサイト
GA4 client_storage: 'none'은 정말 쿠키를 막을까?
두 달 전 이 블로그에 「GA4 쿠키 없이 쓰기」라는 글을 썼습니다. clientstorage: 'none' 으로 쿠키 저장을 끄고, 자체 분석이 쓰던 익명 ID 를 clientid 로 넘기면 쿠키 0개로 GA4 를 쓸 수 있다는 내…
GA4 Measurement Protocol: gtag.js 없이 서버에서 이벤트 보내기
랜딩 페이지의 전송량을 파일 단위로 쪼개 보다가, 가장 큰 파일이 우리 코드가 아니라는 것을 알았습니다. Google Analytics 의 gtag.js 였고, 방문 한 번에 176KB 를 받고 있었습니다. 페이지 전체가 1,094K…
중소 제조업 AI 도입 순서: DX를 먼저 끝내야 할까?
공장을 가진 중소·중견 제조기업 16만여 곳 가운데 스마트공장을 도입한 곳은 19.5%입니다. 회사가 작을수록 이 비율은 더 떨어집니다. 중소벤처기업부가 2025년 4월에 낸 제1차 스마트제조혁신 실태조사 결과입니다. 그림: 기업 규…
Next.js loading.tsx와 404: 버튼이 화면보다 먼저 살아나게 하기
관리 화면 왼쪽 위에 사이드바를 접고 펴는 ☰ 버튼이 있습니다. 폭 하나 바꾸는 버튼인데, 대시보드에서 누르면 2초 넘게 아무 반응이 없었습니다. 레이아웃만 바꾸는 일이 왜 이렇게 오래 걸리는지부터 들여다봤습니다. Next.js 16…



