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

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

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. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ ©2022 1024jp ࣗݾ঺հ CotEditor Gapplin Qli applications

    plain-text editor SVG viewer movie player macOS events @ hobby macOS developer/designer podcast 1024jp
  2. 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/
  3. 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೥ؒ
  4. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ ©2022 1024jp ։ൃʮ͠ଓ͚Δʯ ✔︎ ࣗ෼͕ศརʹ࢖͍͍ͨ ✔︎ ଞਓ΋࢖͍ͬͯΔ

    ✔︎ ։ൃ͕ͨͷ͍͠ ✔︎ ʜ ✔︎ ͍͕͍ͦ͠ ✔︎ ڵຯ͕ബΕΔ ✔︎ ݏͳମݧΛ͢Δ ✔︎ ʜ r ఆظతʹίʔυมߋ͕͋Δ r ఆظతʹϦϦʔε͕͋Δ ։ൃऀ͕ ఆظతʹ࣌ؒΛׂ͘ ։ൃ͢Δಈػ ։ൃ͠ͳ͍ಈػ これを保ち続ける これを減らして 􀭭 􀭮
  5. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ ©2022 1024jp ։ൃʮ͠ଓ͚ΔʯͨΊʹ ᶃ ܧଓతͳ։ൃ؀ڥΛߏங͢Δ ᶄ ։ൃ͍ͨ͠ؾ࣋ͪΛอͭ

    r ௕ظܭըΛཱͯΔ r কདྷੑͷ͋Δٕज़Λબఆ͢Δ r ϑΟʔυόοΫ؀ڥΛ੔උ͢Δ r ࡶ຿ΛࣗಈԽ͢Δ r ʜ r ࣗ෼͕ݏͳ͜ͱΛݮΒ͢ r ٧Ί͗͢ͳ͍ r ָ͘͢͠Δ੔උΛ͢Δ r ʜ 􀊴
  6. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ ©2022 1024jp ։ൃʮ͠ଓ͚Δʯ͜ͱ͸ඒಙͳͷ͔ 􀉪 􀐚 􀝊 􀉪

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

    ඇ೉Λ໨ʹ͢Δ r Ϣʔβ͔Β΋Β͏ଟ༷ͳϑΟʔυόοΫ r ։ൃͷʮ໘ന͘ͳ͍ʯ෦෼Ͱͷർฐ ݈શͳ։ൃऴྃ r ച٫ r ্Ґޓ׵͕ग़ͨͷͰນҾ͖ r ։ൃऀͷݸਓχʔζ͕ͳ͘ͳͬͨͷͰऴྃ r ϥΠϑεςʔδ͕มΘͬͨͷͰऴྃ ユーザにとって不幸かもしれないが 
 開発者にとっては健全 ↔︎
  9. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ ©2022 1024jp ڧ͍։ൃࢦ਑Λ࣋ͭ ᶃ ࣗ෼Λָ͠·ͤΔ ᶄ ࠷ߴͷNBD04OBUJWFΞϓϦέʔγϣϯΛ

    
 ࡞Δ ᶅ ࣗ෼ͱಉ͡6*ΛٻΊ͍ͯΔϢʔβʹ 
 تΜͰ΋Β͏ $PU&EJUPSͷ৔߹ɿ Ϣʔβʹ࠷ߴNBD04ςΩετฤूΤΫεϖϦΤϯεΛఏڙ͢Δ ͡ Ϳ Μ これさえ満たせれば他のことはノイズ ᶆ औΓ͜΅͞ΕΔϢʔβΛऔΓ͜΅͞ͳ͍ ඇӳޠ࿩ऀ ॎॻ͖ ૒ํ޲ݴޠ 7PJDF0WFS ॳ৺ऀ ᶇ 044ͷੈքʹߩݙΛ͢Δ ᶈ ΦϦδφϧ։ൃऀͷҙࢥΛܧ͙ OBLBNVYV͞Μ
  10. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ ©2022 1024jp Ϣʔβ͔ΒͷϑΟʔυόοΫ 􀝊 􀝊 理想のエディタです 愛用しています

    バグ修正が早い! ͏Ε͍͠ ൵͍͠ ◦◦の機能が 
 ないから使えない 開発者がやる気ない 更新多すぎ ʢͨͱ͑όάΛग़ͯ͠΋ʣ मਖ਼͕ૣ͍ͱت͹ΕΔ ωΠςΟϒઃܭʹ χʔζ͕͋Δ ◦◦ػೳʹ χʔζ͕͋Δ r Ϣʔβ͸ਓؒͳͷͰײ৘͕౤͛ΒΕΔ ౰ͨΓલͷײ৘ r ײ৘Λ༳͞ͿΒΕΔͷͰ͸ͳ͘ɺΞϓϦέʔγϣϯʹؐݩͰ͖ΔཁૉΛर͏ 市場荒らし ◦◦の機能が 
 便利 Ξοϓσʔτ͕ ൥Θ͍͠ਓ΋͍Δ r ·͊ɺʮ͏Ε͍͠ʯ͸ૉ๿ʹར༻ͯ͠΋ྑ͍ʢެڞ৺ͱঝೝཉٻ͕ຬͨ͞ΕΔɾ͝ར༻͸ܭըతʹʣ
  11. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ ©2022 1024jp ϢʔβΛ؁΍͔͠ಥ͖์͢ ϑΟʔυόοΫ͸ϓϩμΫτΛྑ͘͢ΔͨΊͷ 
 ݕ౼ࡐྉͰ͋Γɺ௚઀࠾༻͢Δ΋ͷͰ͸ͳ͍ɻ ຊ݅ɺଞʹ΋͍ۙ͠ঢ়گΛπΠʔτͯ͠Δํ͕͍

    Βͬ͠ΌΔͷͰ͕͢ɺβςετؚΊಛʹϢʔβ͔Β Ϩϙʔτ্͕͕ͬͯ͜ͳ͍ͨΊɺ։ൃଆ͸ࣄ৅Λ ೺ѲͰ͖ͳ͍Ͱ͍·͢ɻ͓࣌ؒ͋Γ·ͨ͠Βৄ͠ ͍ঢ়گڭ͍͚͑ͯͨͩΔͱ޾͍Ͱ͢ɻ CotEditor @CotEditorɾ2022/05/09 OSS界隈は放任主義なのでこのムーブはしないことが多い r ෆຬΛೳಈతʹर͍ʹߦ͘ r ϓϧϦΫΤετΛٻΊͳ͍ r ཁ๬ʹԠ͑Α͏ͱ͠ͳ͍ ಥ͖์͢ ؁΍͔͢ r ײ৘Λ༳͞ͿΒΕΔͷͰ͸ͳ͘ɺΞϓϦέʔγϣϯʹؐݩͰ͖ΔཁૉΛर͏ 􀝊 最高のプロダクトにしたい なんか便利そうなのが 
 あるから使うか 􀉪 ↔︎ ։ൃऀͷ໨తͱϢʔβͷ໨త͸ಠཱ͍ͯ͠Δ
  12. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ ©2022 1024jp r νϠϗϠ͞Εʹߦ͘ r ϢʔβϨϏϡʔΛಡΈʹ͍͘ r

    ొஃ͢Δ r ίϛϡχςΟͱަྲྀ͢ΔػձΛ࡞Δ r ϚωλΠζ͢Δ r ΍ͬͯϞνϕʔγϣϯ্͕͕ΔͳΒ 
 ΍Δͱྑ͍ r ଍ᐫʹ΋ͳΓ͏ΔͷͰɺಋೖ͢Δ͔͸ 
 ؾΛ͚ͭΔ r ฦࣄΛฦ͞ͳ͍ r ϓϩδΣΫτ͝ͱڞ౗Ε͢ΔΑΓɺ 
 ฦࣄ͕དྷͳ͍ํ͕ͣͬͱϚγͰ͋Δ r ϑΟʔυόοΫ͸ϓϩμΫτΛྑ͘͢ΔͨΊ ͷ৘ใऩूͰ͋ΓϢʔβαϙʔτͰ͸ͳ͍ r ϓϥΠΦϦςΟΛकΒͳ͍ r ΈΜͳ͕଴ͬͯΔ͋ͷػೳͰͳ͘ 
 ࣗ෼͕৮Γͨ͘ͳͬͨͱ͜ΖΛ΍Δ r ͨ·ʹ์ஔ͢Δ ྗਚ͖ͳ͍ͨΊʹෆஅͷ౒ྗΛ͢Δ 􁓶 􁋸 ͝๙ඒΛ࡞Δ αϘΔ 􀮀 「やらなきゃいけないこと」なんて何もない 􀑪 CotEditorはやっていないけど
  13. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ ©2022 1024jp ଛΛड͚ೖΕΔ r ࢲత࣌ؒͱࢿۚΛ౤ೖ͍ͯ͠Δ r ۤ࿑͸ྲྀग़͢Δ

    r ඇ೉Λड͚Δ r ͍͍Α͏ʹ࢖ΘΕΔ ϑϦʔϥΠυ͞ΕͯΔ 
 ମײ ೩͑ਚ͖ ࣄ࣮ 􀦅 ϊϒϨεɾΦϒϦʔδϡ noblesse oblige
  14. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ ©2022 1024jp ϓϩδΣΫτʹ৺͔ΒѪ৘Λ࣋ͬͯऔΓ૊Ή r ޷͖Ͱ΋ͳ͍΋ͷʹ࣌ؒΛ͔͚ଓ͚Δͷ͸ਓੜͷଛࣦͰ͋Δ ։ൃָ͕͍͠ঢ়ଶΛอͭ r

    χʔζͱঝೝཉٻͱରՁ͚ͩͰଓ͚Δ։ൃ͸κϯϏʹͳΔ r ։ൃͦͷ΋ͷ͕͝๙ඒ ʢ୭͔ʹͱͬͯʣੈքҰͷ඼࣭ͷ΋ͷΛ࡞Δ r ൪໨ͷ΋ͷ͸࢖ΘΕͳ͍ r ඼࣭Λ௥ٻ͢Δ͜ͱͰৗʹվྑΛ͢Δঢ়ଶ͕Ͱ͖Δ
  15. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ ©2022 1024jp ֎෦؀ڥ΁ͷґଘੑ 􀈿 ϓϨʔϯςΩετ͸ෆ໓ʢʁʣ 􀉅 /

    ѻ͏ର৅ͦͷ΋ͷ͕ഇΕͨΒͦ͏͸͍͔ͳ͍ ᶃ ഇΕͳ͍Α͏ʹۀք͝ͱ੝Γ্͛Δ ᶄ ഇΕͨΒखΛҾ͘ r ͲΜͳʹଓ͚Δؾ͕͋ͬͯ΋ର৅͕ଓ͔ͳ͍ͱ੒Γཱͨͳ͍ αऴ
  16. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ ©2022 1024jp কདྷੑͷ͋Δٕज़Λબఆ͢Δ r 4XJGU6* 4XJGU$PODVSSFODZ 4XJGU1.

    FUDʢ$PNCJOF͸ ʣ r SEύʔςΟٕज़͸ආ͚Δ r ࠾୒͠΍͍͢΋ͷɿ r Ҡߦ͕Մೳͦ͏ͳ΋ͷ FH:BNT  r σϑΝΫτελϯμʔυฒΈʹ࢖ΘΕ͍ͯΔʢFH4QBSLMFʣ r ࠷ѱࣗ෼ͰϝϯςͰ͖ͦ͏ r ઙ͔͘͠࢖Θͳ͍ r ಠࣗͷʢྲྀߦͷʣΞʔΩςΫνϟΛ࢖Θͳ͍ みんな困るから誰かが引き継ぐやろ
  17. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ ©2022 1024jp ௕ظతͳ໨ઢͰਐΊΔ r ՚΍͔͞ἤΓʹགྷΒ͞Εͳ͍ r ஍ಓʹվળΛ͢Δ

    ೿खͳ৽ػೳ͸ت͹ΕΔ 􀝊 設定項目を整理しました!! ? 変わんなくない? えー、 
 あれ使ってたのに… 􀉪 􀝊 人気のあの機能追加です!! うおーー!! 􀉪 メモリリークの可能性を 
 除去しました 􀉪 􀝊 􀝊 色変えられます かわいい! 􀉪 ஍ಓͳ΍ͭ これはこれで必要 r ϓϩμΫτͷ҆ఆੑͱ 
 ίʔυͷՄಡੑΛେࣄʹ ೥ޙɺ೥ޙʹ Ͳ͏ͳ͍ͬͯΔ΂͖͔ ৽͍͠มߋ͕͠΍͍͢؀ڥΛ อͪଓ͚Δ
  18. iOSDC 2022 044ͷΞϓϦέʔγϣϯΛ։ൃʮ͠ଓ͚ΔʯͨΊͷ఩ֶ ©2022 1024jp ·ͱΊ r ԿͷͨΊʹ։ൃΛ͍ͯ͠Δͷ͔ΛંΛݟͯ֬ೝ͢Δ r ଞਓʹج४Λஔ͔ͳ͍

    Ϣʔβʹ࠷ߴNBD04ςΩετฤूΤΫεϖϦΤϯεΛఏڙ͢Δ ͡ Ϳ Μ ఩ֶ $PU&EJUPSͷ৔߹ɿ O } r ։ൃʮ͠ଓ͚Δʯ͜ͱࣗମ͸໨తͰ͸ͳ͍ ͷΊΓࠐΈ͗ͯ͢ਓੜΛյ͞ͳ͍Α͏ʹͶʢࣗռʣ r Ϣʔβ͸։ൃऀʹؾΛ࢖ΘͣʹϑΟʔυόοΫΛͲΜͲΜ౤͛Δͱྑ͍ むしろ、気を使うなら