1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【個人開発】推しの連載順位を可視化したい!週刊少年ジャンプの掲載順を分析するアプリを開発しました

1
Last updated at Posted at 2026-03-28

はじめまして!
take と言います。

今回、新しく個人開発としてWEBアプリを作りましたので、その内容をまとめていきます。

何を作ったか

作ったのは「週刊少年ジャンプ」掲載漫画の順位情報を一覧・分析・可視化するアプリです。

現在はスマホのみ対応です。PCだと表記崩れになります。

なぜ作ったか

Gemini_Generated_Image_jyioyhjyioyhjyio (1).png

私は小さい頃から、ジャンプを読んで育ちました。
毎週月曜日が楽しみだったんです。

ある時、「この作品はどれくらいの順位で、どれくらい盛り上がっているんだろう?」と疑問に思いました。

それを調べるには前号やその前の号を調べる必要があり、少し手間。

気になる作品がどれくらいの順位を推移しているか分かれば、結構嬉しいなと思い開発に着手しました。

私以外のジャンプっ子たちが、直感的に人気推移を把握できることで、ジャンプ界隈が盛り上げたいという隠れた意図もあります!

ゆくゆくは、

  • アンケートの過熱化
  • 作品への応援熱を高める

といった、ジャンプ業界を盛り上げる盛大な野望もございます。

一旦は自分含めて、身近な人が楽しめるアプリを目指しました。

主なニーズとターゲット

  • 「気になるジャンプ作品は、どんな順位で移動してきているかな?」
  • 「人気出てきたかな?」
  • 「前回、前々回からどれくらい順位が上がっているかな?」
  • 「前回よりも順位が下がっちゃったら、もっと応援しないと」
  • 「推し作品の盛り上がり」を一目で把握したい

ターゲットとしては、漫画ファン・ジャンプ読者や、データ分析好き・ジャンプ考察勢を想定しています。

機能紹介

hoge.png

全体画面

ロードマップ.png

ダッシュボード(ホーム画面)

今週号に掲載されている作品の順位表と、現在から過去のトレンド推移グラフを載せています。

スクリーンショット 2026-03-27 21.07.53.png

トレンド推移グラフは、

  • 表示期間(1ヶ月、3ヶ月)
  • 表示作品数(TOP3, TOP5, TOP10)
    が変更可能です。

またグラフの作品タイトルをクリックすることで、その作品をグラフから除外することができます。

好きな作品だけ、または比べたい作品だけをグラフ表示することができて、単純な比較に役立ちますね。
ロードマップ (1).png

個人作品の詳細ページ

スクリーンショット 2026-03-27 21.13.26.png

ダッシュボード画面の順位表で作品名をクリックすると、その作品の詳細情報を表示するページへ遷移します。

  • あらすじ
  • 最新順位、平均順位、最高順位、最低順位
  • 順位推移グラフ
  • 単行本情報

などが載っています。

最新順位の部分で、前号から高くなったか、低くなったかを直感的に分かるようにしました。

号別の順位表

ここは、ジャンプ号ごとに掲載順位をまとめました。
スクリーンショット 2026-03-28 13.23.51.png

ここでも、
前号の順位と比較して、どれくらい順位が推移したのかも視覚情報として載せています。

詳細リンクを押すと、前述した個人作品の詳細ページへ遷移します。

技術スタック

フロントエンド

  • TypeScript, React, Tailwind CSS, Vite
    パッケージマネージャー:npm
    フレームワーク:Vite / Create React App

Reactを選択した理由は、普段使い慣れていることと、
ジャンプの順位データは、巻数、作品名、順位、カラーの有無などの状態(state)が多いです。Reactではそういったデータが更新されたら、UIを自動で書き換えるのに適していると考えたからです。

また今回は「推移グラフ」を作りたかったので、React にある Recharts や Victory といったグラフライブラリを使いたったんです。

Recharts はいいですね。アニメーション付きの滑らかな折れ線グラフを実装できたり、掲載順の「急落」や「急上昇」を視覚的にリッチに表現できます。

バックエンド

  • Go 言語

バックエンドとしてGoを選んだ理由として、
半分は勉強のためで、もう半分はスクレイピングに適していると考えたからです。

また、Goは並列処理に強いため、過去の掲載順データをDBから取得したり、外部から一括取得してDBへ保存する際、並列処理することで実行時間が短縮できるかと思いまして。

将来的な大量データのバッチ処理を見据えて、静的型付けでパフォーマンスの高いGoを選択しました。

DB

  • PostgreSQL
    データベースの運用負荷と可用性のトレードオフを重視し、Amazon RDS を採用しました。

エンジンに PostgreSQL を選んだ理由は、堅牢な機能セット、高い信頼性、優れたスケーラビリティ、費用対効果があると感じたからです。

インフラ/その他

  • Docker
  • AWS
    • Route53, ALB, CloudFront, ECS/ECR, S3, Amazon RDS, EventBridge, Lambda

インフラ構成図

AWSの構成-ページ-3.drawio-2.png

◯ドメイン

  • お名前.com で取得した「toma39blog.com」のサブドメインとして「jump-rank.toma39blog.com」を利用

◯フロントエンド

  • S3

◯バックエンド

  • ALB, ECS(Fargate)
    Dockerで開発していたのでコンテナを流用できる ECS/ECR 構成を採用しました。手間削減のためサーバレスのFargateを利用しています。

◯DB

  • Amazon RDS(PostgreSQL)

◯バッチ

  • EventBridge + Lambda
  • バッチ処理でデータ反映後、Discordへ完了チャットを送信
    ジャンプ掲載作品や掲載順位といったデータを外部から取得してDBに反映します。

工夫ポイント

データ整合性の自動維持: 毎週のインポートデータと既存DBを照合し、リストから消えた作品に自動で「連載終了フラグ」を立てるバッチロジックを実装。手動管理を排し、データ整合性を担保する仕組みを構築しました。

ユーザー体験(UX)の追求: 前号との順位差分を動的に計算・表示するロジックをフロントエンドに実装。単なるデータの表示にとどまらず、情報の「読み取りやすさ」にこだわりました。

苦労した点と解決方法

具体的に課題となったのは『作品の連載終了』の判定です。
毎週全作品をチェックするのは非効率なため、『最新の取得リストに含まれない作品を自動で完結扱いにする』という差分更新ロジックをSQLのALL演算子を活用して実装しました。

他にも、リレーショナルDBの最適化にも苦労がありましたね。
作品と各号の順位を分離し、過去の掲載順位推移を効率的に取得できるスキーマ設計を行いました。

まとめと展望

ここまでお読みいただき、ありがとうございました!

ジャンプ好きによる、ジャンプ好きのためのアプリが、無事に完成できました。

今後は、より多くの人に触ってもらう施策を考えつつ、収益化も狙えたらいいなと思っています。

機能としては、随時追加していきたいなと考えています

  • 各作品に打ち切り危険度スコアAPI
  • ユーザーお気に入り & 通知

より面白く考察できる要素を盛り込んで、多くのジャンプ好き界隈に使ってもらえたら嬉しいです!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?