サービス技術者向け現場アプリ(グローバル)
世界中のサービス技術者が出張修理の現場で修理案件を確認し、訪問日程を管理し、作業結果を報告する現場アプリの刷新に参加しました。通信が不安定な海外の地域でも使うアプリなので、接続が切れている間に入力した作業結果が失われると、現場でした仕事が記録から抜け落ちます。切れている間は端末に保存し、接続が戻るとサーバーへ自動送信する同期を作り、アプリが画面の裏に回っても送信が途中で止まらないようにしました。
通信が切れても端末に残る現場の作業記録
サービス技術者は現場アプリで修理案件を確認し、顧客の訪問日程を管理し、作業結果を報告します。通信が切れた状態で入力した作業データは端末内のデータベースとファイルに保存し、再び接続するとサーバーへ自動送信します。海外の現場は通信状態がまちまちで、データを失わないことがこのアプリの核心となる要件でした。

アプリが画面の裏に回った後も続く同期
当時のスマートフォンのOSは、アプリが画面の裏に回ると実行できる時間を厳しく制限していました。現場アプリが画面の裏に回ると、OSから実行時間を180秒延長してもらい、その間に同期を終えるよう設計しました。技術者がほかのアプリに移っても、進行中の送信が可能な範囲で最後まで進むようにするためです。

送信前後の状態を照合する作業結果の抜け落ち防止
通信が切れて再びつながる間に、端末とサーバーのデータが食い違うことがあります。現場アプリは作業結果をファイルに保存し、検証する処理を通します。サーバーへ送る前と送った後の状態を確かめ、現場の作業結果が途中で抜け落ちないようにしました。

Web画面の上に端末の機能を載せた多言語の現場アプリ
サービス技術者向けの現場アプリは、Webで作った画面をアプリの枠に収めた構造です。その中で、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…



