ブロックチェーンウォレットアプリ
すでに稼働中のブロックチェーンウォレットアプリを、別プラットフォーム向けのアプリとして一人で作り直しました。ウォレットはアドレス一つ、署名一つがずれるとユーザーが自分の資産を見つけられなくなるサービスなので、既存アプリと同じウォレットを同じアドレスで扱うことが最優先でした。既存アプリのソースだけを見て機能と画面の流れを分析し、画面構造の設計からウォレットの作成・復元、送金・署名、取引履歴の照会まで実装しました。既存の動きをなぞるだけでなく、画面構造と操作を新しいプラットフォームの使い方に合わせて整理し直しました。
ソースだけを見て移しつつ、新プラットフォームの流儀で組み直した画面
ブロックチェーンウォレットアプリの移植は、既存アプリのソースを基準に機能と画面の流れを分析するところから始まりました。他の担当者なしに一人で担い、既存の動きを移す作業と、新しいプラットフォームの使い方に合わせて画面構造と操作を整理し直す作業を併せて行いました。画面、画面の状態、画面遷移の責任を分ける構造を自ら設計し、ウォレット・送金・取引履歴画面の複雑さを抑えました。

既存アプリで作ったウォレットを同じアドレスでよみがえらせる復元
ブロックチェーンウォレットは、一つのウォレットから標準のパス規則に従って複数のアドレスを派生する階層型(HD)構造を使います。この派生規則を新しいプラットフォームに移すにあたり、ウォレットの作成・復元・アドレス派生の結果が既存アプリと一致するか、パス、鍵の管理、アドレス生成の過程を一つずつ検証しました。同じウォレットが二つのアプリで別のアドレスを出せば、ユーザーは自分の資産を見つけられません。

秘密鍵と署名を画面から切り離した送金
暗号資産の送金は、受取アドレスと金額を入れ、取引に署名してブロックチェーンネットワークへ送り、処理状況を確認する順で進みます。秘密鍵と署名を扱う部分は画面ロジックから切り離し、画面を直しても鍵と署名の流れには触れないようにしました。ネットワークの応答が遅れたり失敗したりするとき、取引が処理中から完了に変わるときなど、ユーザーが敏感になる瞬間の画面も併せて処理しました。

残高・アドレス・取引一覧を画面サイズに合わせて組み直した配置
ウォレット画面には、残高、アドレス、送金入力、取引一覧など、一度に読むべき情報が集まっています。主要画面の配置を新しく組み、機種ごとに異なる画面サイズとセーフエリア(画面上下の端のように隠れうる部分)に合わせて整えました。取引一覧で一件を押すと、その取引の詳細を照会します。

この仕事のポイント
既存アプリのソースだけで他プラットフォームへ単独移植
既存アプリと同じアドレスを生む階層型(HD)ウォレットの作成・復元
秘密鍵・署名を画面ロジックから切り離した送金構造
インサイト
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…



