Swift Paketleri ile Modüler Uygulama Mimarisi

Ali Hasanoğlu
MobvenLab TR
Published in
3 min readDec 10, 2021

Merhaba arkadaşlar, bu içerikte swift paketleri ile modüler app mimarisi kuracağız. Buna başlamadan önce local ve remote paketlere biraz değineceğiz.

Mobven iOS Takımı olarak ilk duyurulduğundan beri Swift paketleri kullanmayı alışkanlık haline getirdik. Swift paketlerinin faydasını gördükten sonra ilk fırsatta mevcut uygulamalarımızı da swift paketlerine geçirdik. Bunu başlıca sebebi SPM’in (Swift Package Manager) Apple destekli olması ve bize daha performanslı derleme sunması diyebiliriz. Geçmemizin local paketler tarafındaki sebebi ise oluşturulması ve kullanılmasının çok kolay olması ve bir workspace’e ihtiyacı olmaması diyebiliriz.

Öncelikle local swift paketlerinden başlayalım. Modüler yapı kurmak için bu paketlere ihtiyaç duyduğumuzu söylemiştik. Peki modüler yapıya neden ihtiyaç duyarız. Bunun birçok sebebi olabilir ancak basitçe şöyle desek yanlış olmaz: Birbiriyle benzer işleri yapan sınıfları, fonksiyonları vb. ana modülümüzden bağımsız hale getirerek, ana modülümüz üzerindeki yükü hafifletmek ve bağımsız olan bu paketleri yeniden kullanabilmek diyebiliriz.

Peki local paketleri nasıl oluşturabiliriz ve projeye nasıl ekleyebiliriz? Oluşturmak için File > New > Package dememiz yeterli. Package tıklandıktan sonra açılan ekranda ekleyeceğimiz projeyi seçebildiğimiz bir alan çıkıyor. Buradan da local paketi eklemek istediğimiz projeyi seçebiliriz. Eğer bir App’e ekliyor isek "AppName" > General > Framework,Libraries,and Embedded Content altında eklediğiniz paketin olduğunu kontrol etmeyi unutmayalım.

Local paket oluşturup, projeye ekleme kısmını tamamladık diyebiliriz. Peki neleri local paket yapabiliriz? Bu aşamada halihazırda çalıştığım projeden örnek vermek istiyorum. Biz projemeizde UIComponents, Extensions, API, DataStorage vb. paketler oluşturduk. Örneğin eklemek istediğimiz bütün extensionları Extensions modülü içine yazıyoruz ve ana modülde ihtiyaç duyduğumuz bir extension fonksiyonu için Extensions modülünü import edip gerekli fonksiyonu kullanıyoruz.

Bunun gibi farklı modüllere ayırarak daha anlaşılır bir codebase oluşturabiliriz, ayrıca projenin derleme zamanını olumlu yönde çok iyi etkilediğini söylemek çok doğru olur.

Sırada remote paketler var. Remote paketler için en başta da konuştuğumuz gibi SPM imdadımıza yetişiyor. SPM sayesinde çok kolay bir şekilde remote paket ekleyebiliyoruz.

Remote paketler için ihtiyacımız olan tek şey paketin GitHub linki. Eklemek istediğimiz paketin linkini kopyaladıktan sonra "AppName" > Project > Package Dependencies seçip + butonuna basıp arama alanına linki yapıştırıyoruz. Aşağıdaki görselde yapmamız gereken işlemleri sırasıyla gösterdim.

2 numaralı işlemden sonra ve 3 numaralı işlemden önce + butonuna basmamız gerekmektedir, bastıktan sonra 3,4 ve 5 numaralı işlemleri yapabileceğimiz ekran açılacaktır.

Remote paket eklemek bu kadar kolay aslında. Tam da bu aşamada konuşmamız gereken bir şey çıktı karşımıza. İlk bölümde local paketlerden konuştuk ve Extension örneğini vermiştik. Peki local Extension paketini remote yapıp farklı projelerimize SPM ile ekleyip kullanabilir miyiz? Kesinlikle yapabiliriz.

Bunun için yapmamız gereken ilk iş, bir git repository oluşturmak. Repository oluşturduktan sonra yeni paketi bu repository’e pushlamamız gerekiyor. Sonra istediğimiz projeye remote Extension paketimizi ekleyebiliriz. 🚀 🚀 🚀

Local paketler ve SPM’in işlerimizi çok kolaylaştırdığını söylemek yanlış olmaz diye düşünüyorum. Arkasında Apple desteğinin de olması biz geliştiricileri SPM’e yönlendiriyor. Siz de projelerinizde kullanmayı ihmal etmeyin. Umarım faydalı olmuştur, sağlıcakla ✌️

And in case I don’t see you, good afternoon, good evening, and goodnight.”

--

--