Upgrade to Pro — share decks privately, control downloads, hide ads and more …

一人で大規模OSSに立ち向かうには

Avatar for sosukesuzuki sosukesuzuki
November 14, 2025
4.9k

 一人で大規模OSSに立ち向かうには

Sosuke Suzuki YAPC::Fukuoka 2025

Avatar for sosukesuzuki

sosukesuzuki

November 14, 2025
Tweet

More Decks by sosukesuzuki

Transcript

  1. ⾃分とOSSとの関わり • Boostnote ( https://github.com/BoostIO/Boostnote-legacy ) ◦ 2016 ~ 2018

    ◦ 福岡発のOSSだったはず ◦ ⾼校⼀年⽣の時の最初のバイト先 • Prettier ( https://github.com/prettier/prettier ) ◦ 2019 ~ 現在 ◦ ⼤学⽣になった頃貢献を開始、⼈⼿不⾜でメンテナーに • WebKit/JavaScriptCore ( https://github.com/webkit/webkit ) ◦ 2024年 ~ 現在 ◦ 今⽇は主にここから得た話をする 5
  2. WebKit開発者の三つのランク • Contributor ◦ 基本的にまずは皆んなここから始まる ◦ 特に明⽰的な権限はない(と思う) ◦ 登録しとくとCIのrebuildとかができるようになる •

    Committer ◦ 30件くらいのPRがマージされると、推薦を受けることができる ◦ mainブランチへのマージができるようになる • Reviewer ◦ 90件くらいのPRがマージされると、推薦を受けることができる ◦ 他者のPRに対してreject/approveできるようになる 8
  3. ⾃分の場合 • 2024年の2⽉に貢献開始 • 2024年の6⽉にcommitterの推薦を受ける ◦ 実はここに法的な⼿続きがある ◦ これに⼆ヶ⽉かかって2024年8⽉にcommitterになった •

    2025年の2⽉にreviewerの推薦を受け、reviewerになる ◦ おそらく、この時点ではほぼ唯⼀の無給のWebKit reviewerだった、多分 • 現時点で約300個くらいのパッチがマージされている 9
  4. JavaScriptCoreの難しさ • そもそもJavaScriptは難しい ◦ ⼤きく歴史があり⼀貫性がなく進化する仕様 • そして最適化された⾔語処理系の実装も難しい ◦ 構⽂解析 ◦

    バイトコードインタプリタ ◦ JITコンパイラ ◦ 正規表現エンジン ◦ WebAssembly ◦ ガベージコレクタ ◦ メモリアロケータ ◦ など... • どうにかこうにかやってみて、フルタイムの仕事を得るに⾄った 10
  5. 最も重要なこと • 「時間を可能な限り捻出して、可能な限り集中して使うこと」 ◦ ⾝も蓋もないのだが • 特に、慣れる前は絶対にやった⽅が良い ◦ 練度が上がると、短い時間でも成果がだせるようになってくる ◦

    ⼀⽅で、やりはじめたばかりのことは、⼀週間やらないと全部忘れてしまう ◦ (⾃分のように)不器⽤な⼈は特に... • かつて、あなたがやったように ◦ ⼤体、この話を聞いてくれる⼈はある程度プログラミングができると思う ◦ どこかのタイミングでプログラミングに時間を使って集中していませんでしたか? ◦ それと同じことを、意図的にやる 14
  6. 情熱をエミュレートする • 何かに熱中している⼈は⼤量の時間を突っ込んでいる • 実際に好きかどうかはどうでも良いので、熱中している⼈のフリをして、時 間を突っ込んでみる ◦ 「好きこそものの上⼿なれ」の真似 • 時間を作るのは難しい、だけど

    ◦ 「今のライフスタイルをみて、もしめっちゃ情熱のある奴だったら、どういう⾵に動くだろ うか」 • それでも全く時間を捻出できないなら、それはOSSに⽴ち向かっている場合 ではない、と⾔うことかもしれない 15
  7. ⾃分の場合 • ⾃堕落にも、全てのやることを可能な限り放棄して、WebKitに全ての時間を 突っ込んでしまっていた ◦ 朝起きて⼤学に⾏き、JavaScriptCoreのバグを直して、卒論やらなきゃなーと考えなが らJavaScriptCoreのコードを読んで問題を⾒つけて修正し、仕事やらなきゃなーと考え ながらJavaScriptCoreのコードレビューをして、夜には家に帰る ◦ 仕事も学業もなんの進捗もない...みたいな⽇々

    • 会社員として学⽣としてダメダメではあるが、WebKitはできた ◦ 情熱がどんどん⾼まっていった ◦ JSCのことを考えるあまり眠れなくなったり、JSCをやるために起きたり、⼼⾝ともに疲弊し たことも... ◦ (やめた⽅が良い) • 過去のOSSへの関わり⽅(Prettier、Babel、など)も同じだった ◦ ⼤学の課題などを全て放棄したり、OSSへの貢献を仕事にこじつけて業務時間にやったり... 16
  8. 教科書を読むこと • ときには、コードを読んだり書いたりせずに、そのソフトウェアに関連する ⼀般的な教科書などを読む。 • 難しいソフトウェアのコード中には、⼀般的なWeb開発者では知らないよう な⽤語が出てくることがある。 ◦ たとえばJSCなら「NaN Boxing」「Write

    Barrier」「Graph Coloring Register Allocation」 「Strength Reduction」などなど。 • ⼤体普通に勉強すればわかるので、コーディングを⽌めて教科書や論⽂を読 みましょう。 ◦ たとえば、上記の⽤語は「Crafting Interpreter」「The Garbage collection handbook」「コ ンパイラの構成と最適化」などで知ることができます。 23