PIXIV DEV MEETUP 2024
https://conference.pixiv.co.jp/2024/dev-meetup/ogp.png
PIXIV DEV MEETUP 2024
ピクシブにおける「ビジョン」の取り扱われ方
ピクシブにおける「ビジョン」の取り扱われ方 #pixivdevmeetup / 20240920 - Speaker Deck
minamitary
プロダクト開発イネーブルメント部マネージャー
2020年のころの話
2018年正社員約160名→2020年正社員約200名
会社規模拡大
プロダクト増加・多角化
プロダクト規模拡大
コロナ禍によるリモート環境への強制化
プロジェクトシェルパ
部署横断タスクフォース
PdMを中心としたシニアメンバーで組織
プロダクト開発は険しい山に登るような行為にサポートをする
「ピクシブらしい開発を誰もができるように」
インセプションデッキ
共通認識をつくるドキュメント
何のために取り組むかの明文化を重視
ドキュメントテンプレート
Draft
はじめに
Why
なぜやるか?
What
なにをするか?
How
ハードルはあるか?
ガイドブックを作る
Why
なぜ山に登るのか
山に登ることで何を得たいのか
シェルパガイドブック | Notion
インセプションデッキ+ビジョナリーシート
それぞれが日々何のために取り組むかを考える
明文化されたものをビジョンと呼ぶ
2023
MVV刷新
刷新検討プロジェクト
経営陣もメンバーに含む部署横断タスクフォース
ビジョンの刷新検討=「何のために取り組むか」の探求
会社を主語にする
Someting next→「何か」
抽象度が高いビジョン
あえて社員に解釈を委ねるチャレンジ
「何のために〇〇に取り組むのか」
Charcoal 2.0: デザインシステムの基盤を再構築
小神
CTO室 デザインシステム部 マネージャー
基盤がうまく作れていない問題
このコンポーネントはこの色でいいのか?という悩み
色が足りない
5色しかないシンプルさ
黄色
塗りつぶしはいいけど文字に使うと読みづらい
ダークモードは読みやすい
鮮やかになって刺激が強くなる
読みやすい色を作るために4つ作った
拡張しづらい
ブランドカラーと通常カラーが被る問題
2カラーテーマ
13ブランド
2コントラストテーマ
3色域
アクセシビリティが足りない
色覚特性があるユーザーには難しい
アクセシビリティはいるのか?
絶対にいる、社会水準よりも
印象派の画家
ベートーヴェン
アクセシビリティへの配慮がないのであれば、次にpixiviの入り口で閉め出されるのは未来の巨匠かもしれない
新たなカラーシステムの要件
HSL/HSBの色空間を捨てる
人間には扱いづらい
違いがわからない
oklchを採用する
OK Lightness Chroma Hue
一貫性がもてるようになった
APCAを採用する
https://www.figma.com/@pixiv
pixivのフロントエンド開発のこれまでとこれから
www.pixiv.netの誕生
PHPで作られてた
スマートフォン版(touch.pixiv.net)
jQuery + Smarty
デスクトップ・スマホ版をwww.pixiv.netに統一
SPAの世界へ移行
デスクトップ版React
スマホ版Vue.js
バンドルサイズを考慮のためVue
共通のロジックや定数をパッケージ化
主要ページでのレスポンシブ化(2020〜)
Next.jsの世界(2022+)
pixiv-webというフロントエンドリポジトリ誕生
pixivのフロントエンドの現在
課題
1から設定されたビルドシステム
関係者が多い大きなモノレポ
yarn workspaces
デスクトップ・スマホの2重実装
学習コスト
新規のNext.jsでリプレイスしていく
フロントエンド開発によってオーナーシップを持てるようになる
既存のReact.js実装を移行しやすい
TypeScript化がまだできてない
ページごとに移植
新規はNextで既存は移行
Nextの恩恵
コードベースに改善しやすくなった
デプロイフローの改善
ビルド時間の改善
ライブラリへの置き換えも移行しやすく
開発効率も向上
デプロイ回数も増えた
移行の課題点
3つの世界が4つの世界へ
Smaty / React / Vue / Next.jsを並行開発
150ページが存在
他ページへの遷移
スクロール位置の復元
BfCacheを活用
表示速度の低下
TTTBの悪化
これからのフロントエンド
スマホ版トップページがNext.jsへ
7/1から順次リリース
pixivというシステムはどんな形をしているのか、それはなぜか。
namazu
pixivはwebサービス
どのような構成になっているか
toCのPHPサービスが起点
インフラ
DNS
www.pixiv.net
CloudFlare
韓国
i.pximg.net
IDC Frontier
福島県白河市データセンター
トラフィック構成
おおよそは画像配信
Traffic 100Gbps over (peak)
幅は3倍
コスト
ネットワーク転送料
収益
広告
イラストは閲覧が短いのでPVあたりの広告単価が低い
サブスクリプション
トラフィックに対する収益性は低い
オンプレミスでやることが経済的に安定する
画像配信クラスタ
pximg.net
ngnix
Apache
SSID RAID
thumberd
画像変換モジュール
バックエンド
WAF
CloudFlare
ngnix
httpd
mod_php
DB
MySQL
Redis
Elasticsearch
fluentd
LAMPスタック
創業メンバーが慣れてるスタック
PHPは人員採用や生産性、実行効率においては問題ない
ReadManyなためMySQL対処可能
Apaccheはmod-phpからphp-fpmにするかも
pixiv.git
モノレポ
小規模高頻度のリリース
30秒でデプロイできる
ロールバックも同じくらいでできる
CI主要時間
バックエンド 1min
フロントエンド 3min
オンプレミス資本なので高性能ノードを毎日毎時間起動しても安価
スケールアップ解決
キャッシュは常に保持
開発体験の向上
リポジトリ開発者が多いので開発体験を改善を続けている
苦手なこと
MySQLやPHPに向かないようと
モジュールとして切り離して適した環境に分離する
セルフホストできないソリューション
一貫したオーナーシップの獲得が難しい
pixiv開発方針
状況を踏まえてよい方向へ考える
これからについて
西日本拠点の構築(可用性の向上)
VM, ネットワーク冗長ディスク
小回りが効く挑戦しやすい環境づくり
pixivに新しく「ホーム」タブを追加している話
rokuroku
UGCプラットフォームの難しさをモデル化する / Modeling the Difficulties of UGC Platforms - Speaker Deck
プロジェクトを立ち上げるにあたっての意思決定の話
どのようなホームタブをつくってるのか
https://www.pixiv.net/info.php?id=11060
pixivのサービスとしての展開
イラストのみ
漫画、小説も追加
プラットフォーム
パソコンのみ
ケータイ(ガラケー)、スマホ、ネイティブアプリ
リニューアルもそれぞれで行う
トップページの多重化
課題
プラットフォームごとでトップページの設計が異なる
@ymrl: イラストとマンガと小説のトップページが4プラットフォームにあるので12個のトップページがある…… #pixivdevmeetup
ストリートプロジェクト
「ホーム」タブを追加するプロジェクトネーム
pixivに大通りをつくる
目的
サービスの入り口を揃える
インセプションデッキでアイデアの言語化をする
抽象と具体の間を埋めていく
プロジェクトとインセプションデッキを当てはめてギャップを埋める
ビジョナリーシート
課題感・理想像の言語化ツール
前提情報となる部分
#pixiv #2024