$30 off During Our Annual Pro Sale. View Details »

OSSのアプリケーションを開発「し続ける」ための哲学 / Philosophy to continue developing OSS application

1024jp
September 12, 2022

OSSのアプリケーションを開発「し続ける」ための哲学 / Philosophy to continue developing OSS application

iOSDC 2022登壇資料

自分達のアイデアを形にして新しいサービスをラウンチするのは興奮するものですし、さらにそれを軌道にのせてマネタイズするまでのノウハウは開発者の成功の証として世に溢れています。一方、アプリケーションの開発を「続ける」ことは、そのような華々しさとは縁遠く、かつフリーウェアとなれば生計を立てる外でそれを実行する必要があります。
発表者は2014年にOSSのmacOSアプリケーションCotEditorの開発を引き継ぎ、以来おおよそ月に1回のリリースを8年以上続けています。OSS開発を続けるということはどういうことなのか、どうモチベーション維持をするのか、このトークではそんなCotEditorプロジェクトを続けている哲学を紹介します。以下のような話を含みます:
・開発の基本方針
・開発を続けるモチベーション
・ユーザからのフィードバックとの付き合い方

1024jp

September 12, 2022
Tweet

More Decks by 1024jp

Other Decks in Technology

Transcript

  1. 題:
    場所:
    日付:
    044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    J04%$ϨΪϡϥʔτʔΫ
    ೥݄೔
    KQ
    発表者:

    View Slide

  2. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    ࣗݾ঺հ
    CotEditor Gapplin Qli
    applications
    plain-text editor SVG viewer movie player
    macOS
    events
    @
    hobby macOS developer/designer podcast
    1024jp

    View Slide

  3. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    ࠓ೔ͷ࿩
    ͷ։ൃ࢟੎ͷ࿩
    O
    CotEditor

    View Slide

  4. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    $PU&EJUPS
    CotEditor
    plain-text editor for macOS

    View Slide

  5. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    $PU&EJUPS
    coteditor / CotEditor Public
    2 branches 287 tags About
    Lightweight Plain-Text Editor for macOS
    coteditor.com
    editor macos swift cocoa
    texteditor mac-app coteditor
    macos-app
    Readme
    View license
    Code of conduct
    4.9k stars
    111 watching
    369 forks
    Releases 184
    4.3.3 Latest
    9 days ago
    + 183 releases
    Contributors 28
    Pull requests Issues Explore
    Search or jump to… Marketplace
    Edit Pins Unwatch 111 Fork 369 Star 4.9k
    Code Issues 89 Pull requests Discussions Actions Wiki Security Insights Settings
    develop Go to file Add file Code
    1024jp Add any 3b83777 19 hours ago 11,701 commits
    .github Update project to Xcode 14 last month
    CotEditor.xcodeproj Gather scripting support files in project 7 days ago
    CotEditor.xcworkspace/xcshareddata Update Turkish translations 23 days ago
    CotEditor Add any 19 hours ago
    SyntaxMapBuilder Refactor SyntaxMapBuilder 5 months ago
    Tests Add workaround for a bug in macOS 13 Ventura (beta) 11 days ago
    UI Tests Add launch performance measurement to UI test 7 months ago
    cot @ 2848a9b Update cot command 6 months ago
    .gitignore GitIgnore // Omit build folder. 4 months ago
    .gitmodules Migrate Sparkle from submodule to SwiftPM 12 months ago
    .swiftlint.yml Update .swiftlint for 0.47.0 5 months ago
    CHANGELOG.md Deprecate length property 8 days ago
    CODE_OF_CONDUCT.md Update CoC to 2.1 6 months ago
    CONTRIBUTING.md Update CONTRIBUTING.md 23 days ago
    LICENSE Add license about image resources (#846) 4 years ago
    README.md Update project to Xcode 14 last month
    [email protected] Update screenshot for README 2 years ago
    https://github.com/coteditor/CotEditor/

    View Slide

  6. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    $PU&EJUPSͷ։ൃମ੍วྺ
    nakamuxu͞Μ usami-k͞Μ 1024jp
    2004–2009 2011 2014
    ver. 0.6.0–1.0.1 ver. 1.4.0–
    ver. 1.1.0–1.3.1
    2022
    10,362 commits 1,030,553 ++ 1,073,119 --
    େମ݄1ϦϦʔεҎ্
    ver. 1.0
    まだ飽きてないよ
    r ݸਓ ̍ਓ
    ͰແঈͰ։ൃ͍ͯ͠Δ
    લఏɿ
    8೥ؒ

    View Slide

  7. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    ։ൃʮ͠ଓ͚Δʯ
    ✔︎
    ࣗ෼͕ศརʹ࢖͍͍ͨ
    ✔︎
    ଞਓ΋࢖͍ͬͯΔ
    ✔︎
    ։ൃ͕ͨͷ͍͠
    ✔︎
    ʜ
    ✔︎
    ͍͕͍ͦ͠
    ✔︎
    ڵຯ͕ബΕΔ
    ✔︎
    ݏͳମݧΛ͢Δ
    ✔︎
    ʜ
    r ఆظతʹίʔυมߋ͕͋Δ
    r ఆظతʹϦϦʔε͕͋Δ
    ։ൃऀ͕
    ఆظతʹ࣌ؒΛׂ͘
    ։ൃ͢Δಈػ
    ։ൃ͠ͳ͍ಈػ
    これを保ち続ける
    これを減らして
    􀭭
    􀭮

    View Slide

  8. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    ։ൃʮ͠ଓ͚ΔʯͨΊʹ
    ᶃ ܧଓతͳ։ൃ؀ڥΛߏங͢Δ ᶄ ։ൃ͍ͨ͠ؾ࣋ͪΛอͭ
    r ௕ظܭըΛཱͯΔ
    r কདྷੑͷ͋Δٕज़Λબఆ͢Δ
    r ϑΟʔυόοΫ؀ڥΛ੔උ͢Δ
    r ࡶ຿ΛࣗಈԽ͢Δ
    r ʜ
    r ࣗ෼͕ݏͳ͜ͱΛݮΒ͢
    r ٧Ί͗͢ͳ͍
    r ָ͘͢͠Δ੔උΛ͢Δ
    r ʜ
    􀊴

    View Slide

  9. ©2022 1024jp
    iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ᶄ։ൃ͍ͨ͠ؾ࣋ͪΛอͭ

    View Slide

  10. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    ։ൃʮ͠ଓ͚Δʯ͜ͱ͸ඒಙͳͷ͔
    􀉪
    􀐚
    􀝊
    􀉪
    開発は続いてるな
    Ҿ͖ܧ͗ / ϑΥʔΫ
    終わった…
    r ϓϩμΫτ͕ଘଓ͍ͯ͠Ε͹ɺ୭͕։ൃ͍ͯ͠Δ͔͸ར༻ऀʹ͸͋·ΓॏཁͰ͸ͳ͍
    ただ、プロダクトの質は変わる
    本人にとっては大ごと
    r ΍Γͨ͘ͳ͘ͳͬͨΒ΍Βͳͯ͘ྑ͍ でもさ、やりたくて始めたんでしょ?

    View Slide

  11. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    )PXUP"WPJE#VSOPVU.BOBHJOHBO0QFO4PVSDF1SPKFDU
    https://thenewstack.io/darker-side-open-source/
    ։ൃ͸ݽಠͰϢʔβ͸ၗຫͰਓ͸೩͑ਚ͖Δ
    8IZ0QFO4PVSDF%FWFMPQFST"SF#VSOJOH0VU
    https://betterprogramming.pub/why-open-source-developers-are-burning-out-1a860854884c
    )PX*TUBZIBQQZNBLJOHPQFOTPVSDFTPGUXBSF
    https://snarky.ca/how-i-stay-happy-making-open-source-software/
    044Λҡ࣋͢Δ͜ͱͷΉ͔ͣ͠͞
    https://cocopon.me/blog/2020/10/oss/
    %FBMJOHXJUICVSOPVUJOPQFOTPVSDF
    https://opensource.com/article/21/7/burnout-open-source
    044։ൃऀʹ޲͚ΒΕΔʮࡡऔͷਫ਼ਆʯ
    https://logmi.jp/tech/articles/326575
    4BZJOH/PUPCVSOPVUBTBOPQFOTPVSDFNBJOUBJOFS
    https://www.jeffgeerling.com/blog/2020/saying-no-burnout-open-source-maintainer

    View Slide

  12. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    ։ൃΛࣙΊΔ
    ԿͷͨΊʹ΍͍ͬͯΔͷ͔ݟࣦ͏͜ͱ͕͋Δ
    r ੜ׆ʹ༨༟͕ͳ͘ͳΔ
    r ඇ೉Λ໨ʹ͢Δ
    r Ϣʔβ͔Β΋Β͏ଟ༷ͳϑΟʔυόοΫ
    r ։ൃͷʮ໘ന͘ͳ͍ʯ෦෼Ͱͷർฐ
    ݈શͳ։ൃऴྃ
    r ച٫
    r ্Ґޓ׵͕ग़ͨͷͰນҾ͖
    r ։ൃऀͷݸਓχʔζ͕ͳ͘ͳͬͨͷͰऴྃ
    r ϥΠϑεςʔδ͕มΘͬͨͷͰऴྃ
    ユーザにとって不幸かもしれないが

    開発者にとっては健全
    ↔︎

    View Slide

  13. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    ڧ͍։ൃࢦ਑Λ࣋ͭ
    ᶃ ࣗ෼Λָ͠·ͤΔ
    ᶄ ࠷ߴͷNBD04OBUJWFΞϓϦέʔγϣϯΛ

    ࡞Δ
    ᶅ ࣗ෼ͱಉ͡6*ΛٻΊ͍ͯΔϢʔβʹ

    تΜͰ΋Β͏
    $PU&EJUPSͷ৔߹ɿ
    Ϣʔβʹ࠷ߴNBD04ςΩετฤूΤΫεϖϦΤϯεΛఏڙ͢Δ
    ͡ Ϳ Μ
    これさえ満たせれば他のことはノイズ
    ᶆ औΓ͜΅͞ΕΔϢʔβΛऔΓ͜΅͞ͳ͍
    ඇӳޠ࿩ऀ ॎॻ͖ ૒ํ޲ݴޠ 7PJDF0WFS ॳ৺ऀ
    ᶇ 044ͷੈքʹߩݙΛ͢Δ
    ᶈ ΦϦδφϧ։ൃऀͷҙࢥΛܧ͙
    OBLBNVYV͞Μ

    View Slide

  14. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    Ϣʔβ͔ΒͷϑΟʔυόοΫ
    􀝊
    􀝊
    理想のエディタです
    愛用しています
    バグ修正が早い!
    ͏Ε͍͠ ൵͍͠
    ○○の機能が

    ないから使えない
    開発者がやる気ない
    更新多すぎ
    ʢͨͱ͑όάΛग़ͯ͠΋ʣ
    मਖ਼͕ૣ͍ͱت͹ΕΔ
    ωΠςΟϒઃܭʹ
    χʔζ͕͋Δ ○○ػೳʹ
    χʔζ͕͋Δ
    r Ϣʔβ͸ਓؒͳͷͰײ৘͕౤͛ΒΕΔ
    ౰ͨΓલͷײ৘
    r ײ৘Λ༳͞ͿΒΕΔͷͰ͸ͳ͘ɺΞϓϦέʔγϣϯʹؐݩͰ͖ΔཁૉΛर͏
    市場荒らし
    ○○の機能が

    便利
    Ξοϓσʔτ͕
    ൥Θ͍͠ਓ΋͍Δ
    r ·͊ɺʮ͏Ε͍͠ʯ͸ૉ๿ʹར༻ͯ͠΋ྑ͍ʢެڞ৺ͱঝೝཉٻ͕ຬͨ͞ΕΔɾ͝ར༻͸ܭըతʹʣ

    View Slide

  15. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    ϢʔβΛ؁΍͔͠ಥ͖์͢
    ϑΟʔυόοΫ͸ϓϩμΫτΛྑ͘͢ΔͨΊͷ

    ݕ౼ࡐྉͰ͋Γɺ௚઀࠾༻͢Δ΋ͷͰ͸ͳ͍ɻ
    ຊ݅ɺଞʹ΋͍ۙ͠ঢ়گΛπΠʔτͯ͠Δํ͕͍
    Βͬ͠ΌΔͷͰ͕͢ɺβςετؚΊಛʹϢʔβ͔Β
    Ϩϙʔτ্͕͕ͬͯ͜ͳ͍ͨΊɺ։ൃଆ͸ࣄ৅Λ
    ೺ѲͰ͖ͳ͍Ͱ͍·͢ɻ͓࣌ؒ͋Γ·ͨ͠Βৄ͠
    ͍ঢ়گڭ͍͚͑ͯͨͩΔͱ޾͍Ͱ͢ɻ
    CotEditor @CotEditorɾ2022/05/09
    OSS界隈は放任主義なのでこのムーブはしないことが多い
    r ෆຬΛೳಈతʹर͍ʹߦ͘
    r ϓϧϦΫΤετΛٻΊͳ͍
    r ཁ๬ʹԠ͑Α͏ͱ͠ͳ͍
    ಥ͖์͢
    ؁΍͔͢
    r ײ৘Λ༳͞ͿΒΕΔͷͰ͸ͳ͘ɺΞϓϦέʔγϣϯʹؐݩͰ͖ΔཁૉΛर͏
    􀝊
    最高のプロダクトにしたい
    なんか便利そうなのが

    あるから使うか
    􀉪
    ↔︎
    ։ൃऀͷ໨తͱϢʔβͷ໨త͸ಠཱ͍ͯ͠Δ

    View Slide

  16. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    r νϠϗϠ͞Εʹߦ͘
    r ϢʔβϨϏϡʔΛಡΈʹ͍͘
    r ొஃ͢Δ
    r ίϛϡχςΟͱަྲྀ͢ΔػձΛ࡞Δ
    r ϚωλΠζ͢Δ
    r ΍ͬͯϞνϕʔγϣϯ্͕͕ΔͳΒ

    ΍Δͱྑ͍
    r ଍ᐫʹ΋ͳΓ͏ΔͷͰɺಋೖ͢Δ͔͸

    ؾΛ͚ͭΔ
    r ฦࣄΛฦ͞ͳ͍
    r ϓϩδΣΫτ͝ͱڞ౗Ε͢ΔΑΓɺ

    ฦࣄ͕དྷͳ͍ํ͕ͣͬͱϚγͰ͋Δ
    r ϑΟʔυόοΫ͸ϓϩμΫτΛྑ͘͢ΔͨΊ
    ͷ৘ใऩूͰ͋ΓϢʔβαϙʔτͰ͸ͳ͍
    r ϓϥΠΦϦςΟΛकΒͳ͍
    r ΈΜͳ͕଴ͬͯΔ͋ͷػೳͰͳ͘

    ࣗ෼͕৮Γͨ͘ͳͬͨͱ͜ΖΛ΍Δ
    r ͨ·ʹ์ஔ͢Δ
    ྗਚ͖ͳ͍ͨΊʹෆஅͷ౒ྗΛ͢Δ
    􁓶
    􁋸
    ͝๙ඒΛ࡞Δ
    αϘΔ
    􀮀
    「やらなきゃいけないこと」なんて何もない
    􀑪
    CotEditorはやっていないけど

    View Slide

  17. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    ଛΛड͚ೖΕΔ
    r ࢲత࣌ؒͱࢿۚΛ౤ೖ͍ͯ͠Δ
    r ۤ࿑͸ྲྀग़͢Δ
    r ඇ೉Λड͚Δ
    r ͍͍Α͏ʹ࢖ΘΕΔ
    ϑϦʔϥΠυ͞ΕͯΔ

    ମײ
    ೩͑ਚ͖
    ࣄ࣮
    􀦅
    ϊϒϨεɾΦϒϦʔδϡ
    noblesse oblige

    View Slide

  18. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    ϓϩδΣΫτʹ৺͔ΒѪ৘Λ࣋ͬͯऔΓ૊Ή
    r ޷͖Ͱ΋ͳ͍΋ͷʹ࣌ؒΛ͔͚ଓ͚Δͷ͸ਓੜͷଛࣦͰ͋Δ
    ։ൃָ͕͍͠ঢ়ଶΛอͭ
    r χʔζͱঝೝཉٻͱରՁ͚ͩͰଓ͚Δ։ൃ͸κϯϏʹͳΔ
    r ։ൃͦͷ΋ͷ͕͝๙ඒ
    ʢ୭͔ʹͱͬͯʣੈքҰͷ඼࣭ͷ΋ͷΛ࡞Δ
    r ൪໨ͷ΋ͷ͸࢖ΘΕͳ͍
    r ඼࣭Λ௥ٻ͢Δ͜ͱͰৗʹվྑΛ͢Δঢ়ଶ͕Ͱ͖Δ

    View Slide

  19. ©2022 1024jp
    iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ᶃܧଓతͳ։ൃ؀ڥΛߏங͢Δ

    View Slide

  20. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    ֎෦؀ڥ΁ͷґଘੑ
    􀈿
    ϓϨʔϯςΩετ͸ෆ໓ʢʁʣ
    􀉅
    /
    ѻ͏ର৅ͦͷ΋ͷ͕ഇΕͨΒͦ͏͸͍͔ͳ͍
    ᶃ ഇΕͳ͍Α͏ʹۀք͝ͱ੝Γ্͛Δ
    ᶄ ഇΕͨΒखΛҾ͘
    r ͲΜͳʹଓ͚Δؾ͕͋ͬͯ΋ର৅͕ଓ͔ͳ͍ͱ੒Γཱͨͳ͍
    αऴ

    View Slide

  21. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    কདྷੑͷ͋Δٕज़Λબఆ͢Δ
    r 4XJGU6* 4XJGU$PODVSSFODZ 4XJGU1. FUDʢ$PNCJOF͸ ʣ
    r SEύʔςΟٕज़͸ආ͚Δ
    r ࠾୒͠΍͍͢΋ͷɿ
    r Ҡߦ͕Մೳͦ͏ͳ΋ͷ FH:BNT

    r σϑΝΫτελϯμʔυฒΈʹ࢖ΘΕ͍ͯΔʢFH4QBSLMFʣ
    r ࠷ѱࣗ෼ͰϝϯςͰ͖ͦ͏
    r ઙ͔͘͠࢖Θͳ͍
    r ಠࣗͷʢྲྀߦͷʣΞʔΩςΫνϟΛ࢖Θͳ͍
    みんな困るから誰かが引き継ぐやろ

    View Slide

  22. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    ௕ظతͳ໨ઢͰਐΊΔ
    r ՚΍͔͞ἤΓʹགྷΒ͞Εͳ͍
    r ஍ಓʹվળΛ͢Δ
    ೿खͳ৽ػೳ͸ت͹ΕΔ
    􀝊
    設定項目を整理しました!!
    ? 変わんなくない?
    えー、

    あれ使ってたのに…
    􀉪
    􀝊
    人気のあの機能追加です!!
    うおーー!!
    􀉪
    メモリリークの可能性を

    除去しました
    􀉪
    􀝊
    􀝊
    色変えられます
    かわいい!
    􀉪
    ஍ಓͳ΍ͭ
    これはこれで必要
    r ϓϩμΫτͷ҆ఆੑͱ

    ίʔυͷՄಡੑΛେࣄʹ
    ೥ޙɺ೥ޙʹ
    Ͳ͏ͳ͍ͬͯΔ΂͖͔
    ৽͍͠มߋ͕͠΍͍͢؀ڥΛ
    อͪଓ͚Δ

    View Slide

  23. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ©2022 1024jp
    ·ͱΊ
    r ԿͷͨΊʹ։ൃΛ͍ͯ͠Δͷ͔ΛંΛݟͯ֬ೝ͢Δ
    r ଞਓʹج४Λஔ͔ͳ͍
    Ϣʔβʹ࠷ߴNBD04ςΩετฤूΤΫεϖϦΤϯεΛఏڙ͢Δ
    ͡ Ϳ Μ
    ఩ֶ
    $PU&EJUPSͷ৔߹ɿ
    O
    }
    r ։ൃʮ͠ଓ͚Δʯ͜ͱࣗମ͸໨తͰ͸ͳ͍
    ͷΊΓࠐΈ͗ͯ͢ਓੜΛյ͞ͳ͍Α͏ʹͶʢࣗռʣ
    r Ϣʔβ͸։ൃऀʹؾΛ࢖ΘͣʹϑΟʔυόοΫΛͲΜͲΜ౤͛Δͱྑ͍
    むしろ、気を使うなら

    View Slide

  24. ©2022 1024jp
    iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ
    ྑ͍։ൃΛ

    View Slide