ウェブトゥーン・電子書籍アプリ
ウェブトゥーン、出版漫画、小説を一つのアプリで読むコンテンツサービスのアプリを開発しました。このサービスは複数のコンテンツ供給会社から連載作品を受け取って毎日新しい話を公開し、読者はPC・モバイルウェブ・アプリで作品を読みます。画像や文書を長く読み続けるサービスなので、スクロールが途切れたり、ダウンロードした作品の状態が食い違ったりすると、読む流れそのものが止まります。ウェブトゥーンビューア、複数の文書形式を開く表示画面、端末内に残るコンテンツ状態・ダウンロード・閲覧情報の保存構造を担当しました。
スクロールとページ送りが途切れないウェブトゥーンビューア
ウェブトゥーンビューアは、縦に長い絵を下へたどりながら読む画面です。スクロール、ページ切り替え、コンテンツの読み込みが読み心地の大半を決めるため、画面配置と主な操作を実装しながら、この三つの流れを安定させることに重きを置きました。作品を長く読むサービスなので、読者がよく出会う読み込みと画面切り替えは別にもう一度点検しました。

形式の異なる出版漫画・小説まで一つのアプリで開く文書表示
ウェブトゥーンだけでなく出版漫画や小説も同じアプリで読めるように、PDFと電子書籍の形式を開く文書表示部品を複数連携しました。形式ごとに文字や絵の描かれ方が異なるため、その違いを一つずつ確かめました。読者はどの形式かを気にせず、アプリの中で同じようにページをめくって読みます。

ダウンロードした作品の状態を組み直した端末内データベース
ウェブトゥーンアプリは、ダウンロードした作品のコンテンツ状態、ダウンロード情報、閲覧情報を端末内のデータベースに置きます。どの話を受け取り、どこまで読んだかがこの記録に残るため、記録が食い違うと読者は受け取った話をもう一度ダウンロードしたり、読んでいた位置を失ったりします。画面配置と端末内のデータ管理で問題が起きていた既存の構造に対し、三つの情報を安定して扱えるようデータベース構造を設計し直しました。

軽い値と長く残すデータを分けて置く保存の基準
ウェブトゥーンアプリは、データの性質に応じて保存先を分けました。お気に入りのように軽く、消えても大きな問題にならない値は端末の設定保存領域に置き、長く残り互いに整合していなければならないデータはサーバーと端末内のデータベースに置きました。何をどこに置くかの基準が決まったことで、後から手を入れる人もデータを探しやすく、直しやすくなりました。

この仕事のポイント
スクロール・ページ送り・読み込みを整えたウェブトゥーンビューア
ウェブトゥーン・出版漫画・小説を一つのアプリで開く文書表示
コンテンツ状態・ダウンロード・閲覧情報を性質ごとに分けて持つ保存構造
インサイト
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…



