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
カスタマイズしたMastodonを本家に追従するときのコツ
Search
abcang
August 19, 2017
Programming
1.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
カスタマイズしたMastodonを本家に追従するときのコツ
2017/08/19 Mastodon Developers Kaigi #0 LT
abcang
August 19, 2017
More Decks by abcang
See All by abcang
Pawoo(Mastodon)が動く仕組み
abcang
0
1.8k
Other Decks in Programming
See All in Programming
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
200
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
300
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
120
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
500
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
150
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
140
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
840
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.6k
技術記事、 専門家としてのプログラマ、 言語化
mizchi
14
7.4k
初めてのKubernetes 本番運用でハマった話
oku053
0
120
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
100
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
180
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.6k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Product Roadmaps are Hard
iamctodd
55
12k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
340
Practical Orchestrator
shlominoach
191
11k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
290
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
410
Transcript
カスタマイズしたMastodonを本 家に追従するときのコツ Mastodon Developers Kaigi #0
自己紹介 • abcang(@abcang1015) ◦ 「あべ」とか「あべちゃん」と呼ばれている • Mastodonのcollaborator • ピクシブ株式会社 17新卒
エンジニア ◦ Pawooの開発を担当
19万ユーザーを突破しました!
Pawooには独自機能がたくさん • pixivアカウント連携 • 自動消滅トゥート • 固定トゥート • メディアタイムライン •
pixivの画像展開 • 音楽アップロード(Pawoo Music) • 共有プレイリスト機能(Pawoo Music) • などなど
GitHubで本家と比較してみると なかなかの変更量…
Mastodon本家の追従は楽じゃない $ git merge v1.5.1 … $ git status |
grep "both modified" | wc -l 65 $ git status | grep "both modified" | grep "app/javascript" | wc -l 28 コンフリクト多い!! 半分近くがJavaScript!! 1.3系から1.4系のアップデート のときは100くらいあった
本家の追従の流れ 1. 本家のコードをマージする 2. GemfileやGemfile.lockのコンフリクトを解決 3. Rails周りのコンフリクトを解決 4. package.jsonやyarn.lockのコンフリクトを解決 5.
JavaScriptのコンフリクトを解決 6. 残りを気合で修正して動くようにする
GemfileやGemfile.lockのコンフリクトを解決 • Gemfileは通常通り手動で直す • Gemfile.lockは一旦本家のを適用 ◦ git checkout --theirs Gemfile.lock
• bundle installを実行 ◦ 本家のGemfile.lockをベースにして、独自で追加したgemをインストール
Rails周りのコンフリクトを解決 • modelやcontrollerはコンフリクト箇所が少ない ◦ メソッドが増減すると起こりやすい • viewはコンフリクト箇所が多いのでよく見て直す ◦ pixiv連携周りで起こりやすい •
一通り直したらテストが通るかチェック • Rails周りはコンフリクト箇所がまだ少ないので楽
package.jsonやyarn.lockのコンフリクトを解決 • Gemfileのときと同じ感じで • package.jsonを手動で直す • yarn.lockは一旦本家のを適用 ◦ git checkout
--theirs yarn.lock • yarn installを実行
JavaScriptのコンフリクトを解決 • componentやcontainerにコンフリクトが多い ◦ ReactのDOM構造が変わるとdiffがうまくとれなくなる ▪ その結果大きいdiffを眺めてコンフリクトを解決することに ◦ 固定トゥートやpixivの画像展開機能は コンポーネントに変更を加えているのでコンフリクトしやすい
• actionやreducerではコンフリクトが少ない ◦ リファクタリングとかあるときぐらい
残りを気合で修正して動くようにする • コンフリクトを解決してもwebpackのコンパイルに失敗すること はよくある ◦ ライブラリのバージョンが上がって使い方が変わった(react-router) ◦ 大きく仕様が変わった(メディアタイムラインのマルチカラム対応) • JavaScriptのlintに通るように修正
◦ ルールが追加されててtestに通らなくなってることが多い • などなど
カスタマイズしつつ本家に追従しやすくする • カスタマイズ部分を可能な限り別ファイルに分ける ◦ 本家に存在するファイルを直接変更するとコンフリクトしやすい ◦ Rubyならモジュールとして切り出してincludeして使うなど ◦ Reactならコンポーネントに切り出してimportして使うなど •
いっその事カスタマイズした部分を本家に送る ◦ コンフリクトしなくなる!! ◦ 他のインスタンスでも使われるので多くの人が恩恵を受けれる ◦ Pawooでは管理画面の改善を本家に送った
楽しいMastodon開発ライフを!