Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
My works in pixiv Inc. first year.
Search
tamanobi
October 02, 2017
Technology
0
1.6k
My works in pixiv Inc. first year.
pixivのコードに触れて活動した1年間の成果を紹介します。
tamanobi
October 02, 2017
Tweet
Share
More Decks by tamanobi
See All by tamanobi
ピクシブの広告配信システムの概要と今後の展開
tamanobi
1
2.8k
大規模ウェブサイトのURL刷新の方針と実装
tamanobi
2
3.3k
Other Decks in Technology
See All in Technology
FFMとJVMの実装から学ぶJavaのインテグリティ
kazumura
0
150
Javaコミュニティの歩き方 ~参加から貢献まで、すべて教えます~
tabatad
0
140
AI エージェントを評価するための温故知新と Spec Driven Evaluation
icoxfog417
PRO
2
570
JJUG CCC 2025 Fall バッチ性能!!劇的ビフォーアフター
hayashiyuu1
1
390
Post-AIコーディング時代のエンジニア生存戦略
shinoyu
0
300
【M3】攻めのセキュリティの実践!プロアクティブなセキュリティ対策の実践事例
axelmizu
0
170
クレジットカードの不正を防止する技術
yutadayo
17
7.9k
AI時代の戦略的アーキテクチャ 〜Adaptable AI をアーキテクチャで実現する〜 / Enabling Adaptable AI Through Strategic Architecture
bitkey
PRO
14
7.3k
メッセージ駆動が可能にする結合の最適化
j5ik2o
6
910
新しい風。SolidFlutterで実現するシンプルな状態管理
zozotech
PRO
0
130
ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる
yuki_ink
3
380
ABEMAのCM配信を支えるスケーラブルな分散カウンタの実装
hono0130
4
1k
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
57k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Practical Orchestrator
shlominoach
190
11k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
A designer walks into a library…
pauljervisheath
210
24k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.3k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
330
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
680
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
192
56k
Speed Design
sergeychernyshev
33
1.2k
Transcript
pixiv.gitと過ごした1年 開発部 技術基盤チーム yasu
内容 • 2年目エンジニアがこの1年での成果を紹介 • 働き方をイメージしてほしい
自己紹介 • yasu(やす) • 2016年度入社(2年目) • 技術基盤チーム(pixiv.git/広告/メール) • 趣味は、たくさんのイラストを眺めること •
pixiv.gitを中心に仕事をしている
大学時代 • コミュニケーションロボットの研究 • 哲学書(メルロ=ポンティ/JJ.ギブソン)を読んでいた
大学時代 • 雑談や多人数会話を対象に研究 • 画像のようなクリーチャー(ロボット)を制作・研究 • ロボットは「キモかわいい」と評判
大学時代 • ロボットはUbuntu/C++で開発 • ドキュメントのない15万行の歴史あるコードと戦っていた
ピクシブへ入ったときの やす • pixiv.gitはPHP => PHP歴は、ほぼ0 • DB設計の経験も0 • ウェブサービス開発経験は、ほぼ0
• 大学ではロボット研究(Ubuntu/C++) • 技術を知るのは好き 不安
研修
研修 • 基本的な仕事のやり方を2ヶ月近くかけて学ぶ • 内容 ◦ 2016年度: http://inside.pixiv.net/entry/2016/07/08/151917 ◦ メンテナンス研修
◦ 実務開発研修 ▪ 勤怠システム改修 ▪ メール配信システム ◦ プログラミング研修 ◦ 読書会
メール配信システム • 従来: エンジニアがバッチ作成してメール配信 • ビジネス職でも適切にセグメント分けしてメール配信したい
メンテナンスチーム
メンテナンスチームに配属 • 6人で各種技術改善を取り組んだ • 新卒研修のメール配信システム引き継ぎ
• 6人でエラー数を減少(2000件/日 => 500件/日)
エラー数削減 • ログビューワーは内製(harukasan) ◦ Mongo DB + PHP • エラーの種類
◦ ユーザーが困っている場合 ◦ 行儀の悪いボットアクセスの場合
エラー数削減 • エラーの種類 ◦ ユーザーが困っている場合 ◦ 行儀の悪いボットアクセスの場合 気づきたい
エラー数削減 • 行儀の悪いボットアクセスは infoログに流すようにした ◦ 重要なエラーが埋もれない • コントローラーの古いコードは、新しい仕組みに修正
投稿改善
投稿改善 ユーザーからの声 「pixivにイラスト投稿しようとしたらファイルフォーマットを統一 してくださいって言われたけどどうすればいいのかわからない」
投稿改善 「JPEGとPNG混在の投稿をできるようにしたい」 ※画像中の作品の掲載許可は取っています
投稿改善 「JPEGとPNG混在の投稿をできるようにしたい」 つらい ※画像中の作品の掲載許可は取っています
投稿改善 ※画像中の作品の掲載許可は取っています
投稿改善 • 「JPEGとPNG混在の投稿をできるようにしたい」 • 途中デザイナーを巻き込んでデザインしてもらった ※画像中の作品の掲載許可は取っています
pixiv ID変更
pixiv IDとは • https://pixiv.me/pixiv ※画像中の作品の掲載許可は取っています
pixiv ID変更 • 誕生日や電話番号を入れてしまうユーザーも少なくなかった (2007年当時、IDが露出するとは思われていなかった節がある) • 画像サーバーの設計がpixiv IDに依存していたので変更が困難 • データベース設計からフロントまで、ほぼ1人
pixivの画像ストレージ設計変遷 • 過去はユーザーごとのディレクトリに画像格納(pixiv IDに依存) • 現在は日時ごとのディレクトリに画像を格納 • 詳しくは、「pixivのインフラを支える技術」を参照してください https://speakerdeck.com/harukasan/the-technology-behind-pixiv-infrastructur e?slide=19
pixiv ID変更の実作業 • 自動置換できない数百箇所を慎重に変更 • 一部障害を起こしたが粛々と修正
pixiv ID変更テーブル設計 • pixiv ID変更を記録するテーブルを設計 • いたずらされない設計 ◦ 変更は一度限り ◦
一度取得されたpixiv IDは取得不能 ◦ 転生はできない
• pixiv SketchではIDが露出する • 変更できないなら退会する人もいた • 実際の問い合わせ 「IDを変えたいのですがどうしたらいいですか?」 「pixivのIDが丸見えで身バレするのでpixiv Sketchを退会したいです。]
pixiv ID変更はなぜ必要? ※画像中の作品の掲載許可は取っています
自動テスト導入
投稿でバグ • 投稿機能はpixivの重要な機能の一つ • ユーザー「なぜか投稿できません。どうしてですか?」
投稿でバグ • 2017年5月 • リファクタリング中にFirefoxで投稿機能が動かなくなった • JavaScriptのコードでエンバグしたことが判明
自動テストの導入 • Seleniumを使った投稿機能の自動テストを提案/実装 • 外部サービスの選定を行って実装
自動テストの導入 • Capybara + Minitestで実装 • 1時間に1度投稿周りを自動的にテスト • テストに失敗したら、Slackに通知
機械学習
機械学習 「pixivには大量の画像があるなら、機械学習で何かできるはず」
pixivの画像クロッピング • スマートフォン版pixivの画像は 正方形にクロップしている 横長画像 縦画像
pixivの画像クロッピング • 好ましくない位置でクロッピングされることがある • 機械学習で改善を図った 顔が半分に切り取られる場合 意図しないクロッピングで主題が写りこまない場合
pixivの画像クロッピング • 一部の画像で改善したが、処理時間などの問題がありpixivには未実装 • 思わぬところで趣味が活きた 機械学習によって 物体らしい領域を 検出している画像 機械学習によって 物体らしい領域を
検出している画像 クロッピング改善によって 顔が切れずに領域に収まっている例 主題がクロッピングの中に収まるように 改善した例
まとめ
• 内製メール配信システム • 複数枚投稿複数ファイルフォーマット対応 • pixiv ID変更 • 自動テスト導入 •
機械学習(クロッピング) • 広告周り.... これまでやってきたこと 機械学習によって 物体らしい領域を 検出している画像 ※左下画像中の作品の掲載許可は取っています
一人ではできなかった • どの成果も一人では達成できなかった • 周りからの手厚いサポートやお膳立て • 「やりたい」と思って周囲に相談すること大事
まとめ • ピクシブはユーザーに近いところで仕事ができる • 「やってみたい」と言うとやらせてもらえる ◦ プロトタイプ持っていくとスムーズ • 大学時代や趣味では畑違いのことをやっていたが、意外と活きる •
あとISUCONおすすめ(http://isucon.net)
おしまい