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

実践 iOS オープンソースプロジェクトの始め方

Yoshimasa Niwa
September 17, 2021

実践 iOS オープンソースプロジェクトの始め方

iOS で使えるライブラリを作ったからみんなに使って欲しい、仕事の成果をオープンソースで公開したいということはよくあると思います。
Swift Package Manager の登場や Xcode への GitHub の統合などでオープンソースのライブラリの利用はとても簡単になりました。
しかし、そういったオープンソースのライブラリを提供するのはまだ簡単ではありません。

実際に使いやすいライブラリを提供するには、ライブラリそのものの API のデザインだけでなく、
ライブラリを運用するためのバージョンの管理、CI の設定、ドキュメントの作成や、内部のレポジトリと外部のオープンソースのレポジトリの差異、
Issue の管理のなど多岐にわたる問題への対応が必要になります。

このセッションでは、実際に業務の成果をオープンソースとして公開した「Twitter Text Editor」の経験を踏まえて、API のデザインから運用のためのツールの作成などをまとめていきたいと思います。

対象とする方:
- オープンソースのライブラリを使った iOS アプリの開発の経験がある方
- ライブラリの開発に興味がある方

前提とする知識:
- Git
- GitHub
- Swift Package Manager
- Xcode

詳細:
https://fortee.jp/iosdc-japan-2021/proposal/5a93e99d-159a-4fde-aab8-5ca14ed4ae76

Yoshimasa Niwa

September 17, 2021
Tweet

More Decks by Yoshimasa Niwa

Other Decks in Programming

Transcript

  1. ϥΠηϯε SPDX(Software Package Data Exchange) ͸ϥΠηϯε৘ใͳ ͲΛهड़͢ΔϑΥʔϚοτ 1. spdx.org/licenses Ͱ࢖༻͢ΔϥΠηϯεͷ

    Identifier Λ୳͢ 2. Identifier Λ SPDX short-form identifiers ͷܗࣜͰ֘౰͢Δ ιʔείʔυʹίϝϯτͰ௥Ճ SPDX Λ࢖͏
  2. Pull Request ͷऔΓѻ͍ Pull Request Λड͚෇͚Δ ͦ΋ͦ΋ Pull Request Λड͚෇͚Δ͔Ͳ͏͔ΛܾΊ͓ͯ͘

    Pull Request Λड͚෇͚Δ৔߹ɺCLA (Contributor License Agreements) ΁ͷಉҙͷ֬ೝͳͲ͕ඞཁ CONTRIBUTING ϑΝΠϧͷ௥Ճ
  3. Pull Request ͷऔΓѻ͍ Mono Repo ͷ৔߹ ಛʹ Mono Repo (Monolitic

    Repository) Ͱ։ൃ͍ͯ͠Δ৔߹͸ ΦʔϓϯιʔεϨϙδτϦΛϓϥΠϚϦʹ͢Δͷ͕೉͍͠ Pull Request ͱɺ಺෦ͷ Mono Repo ͷมߋͷಉظ͕ඞཁʹͳ Δ
  4. Pull Request ͷऔΓѻ͍ Pull Request ͷऔΓࠐΈ GitHub API Λ࢖ͬͯ Pull

    Request ͔Βίϛοτϝοηʔδͱ ύονΛ࡞Δ git apply --directory ͰύονΛద༻ͯ͠ίϛοτ ͢Δ
  5. Pull Request ͷऔΓѻ͍ Commit Author ֤ Commit ͷ Author Λҡ࣋͢Δ

    Pull Request ʹ͸ Author ͕ෳ਺ਓ͍Δ৔߹͕͋Δ ίϛοτϝοηʔδͰ Co-authored-by: name <[email protected]> Λ࢖͏
  6. Pull Request ͷऔΓѻ͍ git format-patch, git am git format-patch Ͱ

    Mono Repo ͷಛఆͷσΟϨΫτϦ ಺ͷมߋͷύονΛ࡞੒ git am ͰύονΛΦʔϓϯιʔεͷϨϙδτϦʹద༻
  7. ίϛοτνΣοΫ GNU make ͷ׆༻ ίϛοτνΣοΫͷλεΫ͸ make ͷλʔήοτͱͯ͠هड़ ͓͖ͯ͠ɺ೚ҙͷ؀ڥͱλΠϛϯάͰ࣮ߦͰ͖ΔΑ͏ʹͯ͠ ͓͘ Python

    ΍ Ruby ʹґଘ͢ΔπʔϧΛ࢖͏৔߹͸ɺεΫϦϓτ ͷ࣮ߦ؀ڥΛִ཭͢ΔΑ͏ͳ࢓૊ΈΛಋೖ͢Δ VirtualEnv, Bundler ͳͲ
  8. ϓϩδΣΫτͷެ։ GitHub Actions macOS ͕࢖͑ΔͷͰɺίϛοτνΣοΫͷ Xcode Λ࢖ͬͨ λεΫ͕࣮ߦՄೳ Pull Request

    ΍ίϛοτͷ Push ͷࡍʹίϛοτνΣοΫΛ ࣮ߦ͢Δ GitHub Pages Λ࢖ͬͯੜ੒ͨ͠υΩϡϝϯτΛϗεςΟϯά