Çoklu Ekiplerin iOS Projelerinde SPM Paketi Kullanarak Ürün Geliştirme Sürecini Nasıl Kolaylaştırabiliriz?

Aybars Yalcin
4 min readDec 26, 2022

--

Merhabalar, ben Aybars ve bu yazıda size çoklu ekiplerin olduğu iOS projelerinde ürün geliştirme süreçleri hakkında bilgi vermek istiyorum.

Günümüzde büyük markaların mobil uygulamalarına baktığımızda bir çok ürüne/dikeye sahip olduğunu görürüz. Bu ürünleri geliştirmek içinde çoklu ekiplere ihtiyaç vardır. Fakat çoklu ekiplerin bulunduğu projelerde iş yönetimi ve geliştirme süreçleri çok zordur. Bu süreçleri kolaylaştırmanın bir yolu da SPM paketleri ile mümkündür.

Swift Package Manager (SPM) Apple tarafından geliştirilen bir açık kaynak kodlu araçtır. SPM, Swift dilinde yazılmış kod parçacıklarını (modüller, kütüphaneler, frameworkler gibi) bir araya getirip, bir paket haline getirmeyi ve bu paketleri diğer projelere eklemeyi amaçlar. Bu sayede, projelerinizde kullandığınız kod parçacıklarını tek bir yerden yönetebilir, güncelleyebilir ve paylaşabilirsiniz. SPM, Xcode ile birlikte gelir ve macOS, Linux ve Windows işletim sistemlerinde çalışır.

Genelde haftada bir veya iki haftada bir yapılan geliştirmelerin store gönderilmesi tercih edilir. Böylelikle sürekli yenilik çıkılarak son kullanıcıyı çok bekletmeden ve çok büyük geliştirmeler yapmadan süreci yönetmek daha kolaylaşır.

Her ekip kendi içinde backend, mobile ve QA’ler barındırdığını düşünürsek eğer; bu ekiplerin kendilerine ait bir süreçleri olmak zorundadır. Kendi içlerinde özgür aynı zamanda ana uygulamaya da bağlı olmalıdır. Kendine ait sadece modülün olduğu bir XCode projesine ve aynı zamanda bir SPM paketine ihtiyaç duyar.

Bir örnek proje ile anlatacak olursak projeyi oluşturma adımları şöyledir;

Xcode projesi oluşturma adımları:

  1. Xcode uygulamasını açın ve “Create a new Xcode project” seçeneğini seçin.
  2. Proje türünü seçin. Örneğin, iOS uygulaması oluşturmak için “iOS” sekmesine gidin ve “App” seçeneğini seçin.
  3. Proje adını(XModule-Example) ve konumunu belirtin ve “Next” düğmesine tıklayın.
  4. Proje ayarlarını yapın. Örneğin, dil seçin (Swift veya Objective-C), proje için bir organizasyon adı belirleyin ve proje için bir “Team” seçin.
  5. “Create” düğmesine tıklayarak projenizi oluşturun.

SPM proje oluşturma adımları:

  1. Xcode uygulamasını açın ve File > New > Package seçin
  2. SPM paketinizin adını belirleyin ve oluşturun.
  3. Xcode’da açılan SPM paketini kapatın.
Package.swift (Örnek bir SPM paketi)

Xcode projenize SPM paketinizi ekleme adımları:

  1. XModule-Example projesini açın.
  2. Project sekmesindeki “XModule-Example” seçin
  3. Package Dependencies sekmesini açın ve + butonuna basın.
  4. Popup ekranda “Add Local” butonuna basın
  5. Oluşturmuş olduğunuz SPM paketini seçin ve ekleyin.

Example projenize SPM modülünüzü eklediniz fakat henüz kullanamazsınız. Aşağıdaki hatayı almanız muhtemeldir.

Bu hatayı nasıl gideririz?

  1. Project Navigator sekmesinde Targets ların olduğu bölümden Projenizin ana targetını seçin
  2. Build Phases sekmesine tıklayın.
  3. Link Binary With Libraries bölümünden + butonuna basın
  4. Çıkan popup ekranında kendi oluşturduğunuz spm paketini seçin Add butonuna basın.

Bu son adımla birlikte artık example projenize SPM paketini kullanabilir hale geldiniz. Bu sayede aslınd Example projesi Ana uygulamanız gibi davranışlarda bulunmasını sağlayabilirsiniz. Böylelikle ana uygulamanıza ihtiyaç kalmadan hızlı bir şekilde projelerinizi geliştirebilirsiniz.

Ayrıcı Example projesi sayesinde kendi CI/CD süreçlerinizide entegre edebilir. Yaptığınız geliştirmeleri test ekibinizde dağıtabilirsiniz.

Peki, tüm geliştirmeleri yaptınız ve bir sonraki release paketine sizin paketinizinde gitmesini istiyorsunuz. Nasıl bir yol izlemeliyiz?

  1. Geliştirmelerinizi bir release branch’ı üzerinde geliştirmelisiniz.
  2. Bu release paketi tüm testleriniz tamamlandıktan sonra artık code freeze(kodu dondurma) etmelisiniz. Bu konu çok önemli çünkü code freeze etmeniz durumunda pakete artık regresyon sonrasında ortaya çıkabilecek kritik buglar dışında paketinize birşey eklememelisiniz. Bu sekilde süreci daha kolay yönetmeniz mümkündür.
  3. Regresyon testlerini tamamlandıktan sonra QA ekiplerinin onayı ile artık paketinize isim vererek tag’leyebilirsiniz. (Örn: 1.1.0)
  4. Bu tag ile ana uygulamanız bu paketi kendi projesine ekleyerek artık paketi kullanmaya başlayabilir.

Avantajları;

  1. Her bir modülü SPM paketine çevirebilir ve tekrar kullanılabilir komponentler veya modüller yapmanızı sağlar.
  2. Her ekip kendi içinde süreçlerini yönetebilmesini sağlar.
  3. Modüller küçük olduğundan build süreleri ve deploy etme sürelerinde zaman kaybını önler

Dezavantajları:

  1. Belli bir süre sonra 100'lerce SPM paketiniz olabilir ve Ana app’ınızın build alma ve deployment alma süresini negatif yönde etkiler.
  2. Xcode projesini her açtığınızda SPM paketlerinin yüklenmesi bir developer için çok uzun sürer ve paketleri indirirken alına hataların çözümü için fazla zaman harcanır.
  3. SPM paketini kullanmanız için public yapmanız gerekmektedir. Github veya Gitlab projelerinizde projeleriniz public olmak zorundadır.

Son olarak, bu yazımızda çoklu ekiplerin iOS projelerinde SPM paketi kullanarak ürün geliştirme süreçlerini nasıl kolaylaştırabileceğinden bahsetmiş oldum.

Umarım keyifli bir yazı olmuştur.

Diğer makalelerde görüşmek üzere… 👋

--

--