0
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?

【第22回】タイムラインを見逃すな!カテゴリ別新着スレッド高密度ヘッドライン表示と2ch伝統の「ギチギチ美学」

0
Posted at

「余白だらけのモダンUIに疲れた現代人に贈る、1画面に100件の話題が詰まった圧倒的情報量」
令和に自作した2ちゃんねる風掲示板「つゔぁいちゃんねる(2ch.biz)」開発秘話の第22弾。今回は、昨今のスカスカなWebデザインに対するアンチテーゼとして、2000年代初頭のポータルサイトが持っていた「ギチギチ高密度なヘッドライン表示」を最新CSSで蘇らせたUI設計録を公開します。


💡 はじめに:なぜ現代のWebサイトは「情報量が少なすぎる」のか?

最近のニュースサイトやSNSを開いて、こう感じたことはないでしょうか。

「大きなサムネイルと広大な余白のせいで、スクロールしても画面内に3件しかニュースが見えない」

確かにスマホでのタップしやすさや視覚的な美しさは向上しました。しかし、情報を効率的に大量インプットしたいヘビーユーザーにとって、過剰な余白はスクロールの手間を増やすだけのノイズになりがちです。

全盛期の2ちゃんねるやYahoo! JAPANのトップページは違いました。
極小のフォント(11px〜12px)、最小限の行間、詰め込めるだけ詰め込まれたテキストリンクの海――。
画面を開いたその一瞬で、世の中で起きている何十個もの出来事が目に飛び込んでくる、あの圧倒的な情報密度こそがネットサーフィンの醍醐味でした。

第21回で作成した「勢いランキングTOP 10」の下に、全カテゴリの新着スレッドを一網打尽にチェックできる 「カテゴリ別 高密度ヘッドライン(最新50件)」 を開発初期(2026年8月21日夜)に実装しました。


🏗️ バックエンド設計:カテゴリごとの最新スレッド集計

単に全スレッドを最新順に50件並べるだけでは、「ニュー速VIP」や「なんでも実況」のような投稿頻度の高い板だけで枠が埋め尽くされてしまいます。
ユーザーが様々なジャンルの話題を満遍なく見渡せるよう、 「カテゴリごとにグループ化して、各カテゴリ内の最新スレッドを抽出するAPI」 を設計しました。

サーバーサイド実装

public function getLatestThreadsByCategory($perCategoryLimit = 15) {
    // 1. 全カテゴリを表示順(sort_order)で取得
    $stmt = $this->db->query("SELECT id, name FROM categories ORDER BY sort_order ASC, id ASC");
    $categories = $stmt->fetchAll(PDO::FETCH_ASSOC);

    $result = [];

    // 2. 各カテゴリに所属する最新スレッドを抽出
    foreach ($categories as $cat) {
        $stmt = $this->db->prepare("
            SELECT 
                t.id, t.board_id, t.title, t.created_at, t.updated_at,
                b.name AS board_name,
                (SELECT COUNT(*) FROM posts WHERE thread_id = t.id) AS post_count
            FROM threads t
            JOIN boards b ON t.board_id = b.id
            WHERE b.category = :cat_name 
              AND t.is_archived = 0
            ORDER BY t.updated_at DESC
            LIMIT :limit
        ");
        $stmt->bindValue(':cat_name', $cat['name'], PDO::PARAM_STR);
        $stmt->bindValue(':limit', $perCategoryLimit, PDO::PARAM_INT);
        $stmt->execute();
        $threads = $stmt->fetchAll(PDO::FETCH_ASSOC);

        if (!empty($threads)) {
            $result[] = [
                'category_name' => $cat['name'],
                'threads' => $threads
            ];
        }
    }

    return $result;
}

🎨 2ch伝統の「ギチギチ高密度」CSSスタイリング

このヘッドラインの主役は、余白ではなく 「テキストそのもの」 です。
文字サイズ、行間、パディングを極限まで削ぎ落としつつ、決して読みづらくならない絶妙なタイポグラフィをCSSで追求しました。

/* style.css */

/* カテゴリごとのヘッドライン外枠 */
.headline-category-box {
    background-color: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    margin-bottom: 12px;
    padding: 6px 10px;
}

/* カテゴリ見出しバー */
.headline-category-title {
    font-size: 0.85rem;
    font-weight: bold;
    color: var(--accent-color);
    border-bottom: 1px solid var(--border-color);
    padding-bottom: 4px;
    margin-bottom: 4px;
}

/* スレッドリンク一覧コンテナ */
.headline-thread-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

/* ギチギチ高密度の極意:11.5pxフォント + 1.35行間 */
.headline-thread-item {
    font-size: 11.5px;
    line-height: 1.35;
    padding: 2.5px 0;
    white-space: nowrap;       /* 1行で収める */
    overflow: hidden;
    text-overflow: ellipsis;   /* はみ出しは三点リーダー(...) */
    border-bottom: 1px dotted var(--border-light);
}

/* 板名バッジ */
.headline-board-tag {
    color: #006699;
    font-weight: bold;
    margin-right: 4px;
    text-decoration: none;
}

.headline-board-tag:hover {
    text-decoration: underline;
}

/* スレッドタイトルリンク */
.headline-thread-link {
    color: var(--text-color);
    text-decoration: none;
}

.headline-thread-link:hover {
    color: #ff4500;
    text-decoration: underline;
}

/* レス数・更新時間 */
.headline-meta {
    color: #888;
    font-size: 10.5px;
    margin-left: 4px;
}

💡 1行に詰め込まれた「4つの情報」と賢いリンク構造

この高密度ヘッドラインの各行には、無駄なく4つの要素が凝縮されています。

[ニュース速報] 今日の主要ニュースについて語るスレ (142) 🕒 5分前 🔥
  1. [ニュース速報](板名) : クリックすると、その板のトップ画面(スレッド一覧)へ直接ジャンプ。
  2. スレッドタイトル : クリックすると、そのスレッドの全レス閲覧画面へ直接ジャンプ。
  3. (142)(レス数) : 今どれくらい議論が進んでいるかの目安。
  4. 🕒 5分前(相対時間) : つい先ほど書き込まれたばかりの熱いスレッドかどうかの指標。勢いのあるスレッドには「🔥」マークが自動点灯。

板名をクリックすれば「そのジャンルを深く掘る」ことができ、タイトルをクリックすれば「その話題に即座に参加する」ことができる。
マウスのわずかな動きだけで、掲示板のあらゆる深部へ自在にアクセスできる 「究極の回遊ハブ」 が完成しました。


📊 導入後のユーザー回遊率(滞在時間)の変化

この高密度ヘッドラインをトップページに導入した直後、アクセスログに明確な変化が現れました。

  • 1セッションあたりの平均PV数 : 約1.8倍に増加(トップページで気になるスレを複数見つけてハシゴする行動が定着)。
  • マイナー板への流入 : 普段トップに表示されにくい専門板のスレッドが新着として目に留まり、新規の書き込みが発生。
  • ユーザーの声 : 「この文字の詰まり具合、まさに昔の2chだ!」「スマホでも一覧性が高くて見やすい」と古参ネット民から大絶賛。

モダンなカードUI(第21回の勢いランキング)と、レトロな高密度テキストリンク(第22回のヘッドライン)。
この2つを上下に並べたことで、 「現代的な見やすさ」と「2ch伝統の情報量」が奇跡の黄金比で共存するトップページ が完成しました。


🎯 まとめと次回予告

第22回となる今回は、情報の海を泳ぐネット民のための 「カテゴリ別新着スレッド高密度ヘッドライン」 について解説しました。

今回の学び・ポイント

  • 「高密度」という価値 :デザインの正解は余白を増やすことだけではない。テキスト主体のサービスでは情報密度こそが最大の武器。
  • カテゴリごとの均等集計 :特定板の過密化を防ぎ、サイト全体の多様な話題を可視化する。
  • 1行4要素のスマートリンク :板とスレッドの両方にワンクリックで飛べる高効率なナビゲーション。

スレッドの熱気(勢い)と最新の動き(ヘッドライン)が整いました。
次に必要なのは、 「今、みんながレスの中でどんな単語を口にしているのか?」 という話題の深層分析です。

次回、 【第23回】今何が話題なのか?レス本文の形態素解析から浮かび上がるトレンドタグクラウド へと続きます!


🔗 関連リンク

0
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
0
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?