iOS Uygulama Geliştirme 1: Nereden Başlamalı, Ne ile Yazmalı?

By -

Mobil uygulama geliştirmeye nereden başlamak gerektiği yazılımcı olan/olmayan herkese zaman zaman sıkıntı yaratabiliyor. Bu yazı serisi nasıl iOS uygulaması geliştireceğinizi değil, uygulama geliştirmek için nereden başlamanız, nereleri takip etmeniz ve neleri kullanmanız gerektiğinden bahsediyor. Ayrıca belirtmiş olayım konuyla ilgili Türkçe doyurucu kaynak neredeyse hiç olmadığı için yazı içerisinde yönlendireceğim kaynakların hepsi İngilizce.

İlk adımlar

iOS uygulama geliştirmeye başlamak isteyen ama Apple’a uzak olan kişiler genellikle ilk olarak “Windows üzerinde nasıl yapılır?” sorusunun cevabını merak eder. Konuyla ilgili epey doyurucu bir Stackoverflow sorusu hali hazırda mevcut. Eğer birden çok platforma destek vermek gibi bir derdiniz yoksa bence başlangıç için sanal makineye Mac OS kurmak en mantıklı seçenek.

Sık sorulan diğer bir soru da testler için iOS yüklü bir cihaza sahip olmanın gerekip gerekmediği. Hayır, iPod, iPhone veya iPad’iniz olasına gerek yok, Apple geliştirme ortamı olan Xcode ile birlikte gayet başarılı bir iOS simülatörü geliyor. Burada Android tecrübesi olanların tek kaşlarının havaya kalktığını görür gibiyim; evet simülatör gerçekten hızlı ve kullanılabilir durumda. Android emülatörleri cihazların CPU’sunu taklit etmeye çalışıyor, bu da çalışan her satır kodun bir kaç dönüşümden geçmesini gerektiriyor. iOS simülatörü ise daha yüzeysel davranarak doğrudan bilgisayarın CPU’sunu kullanıyor ve böylece daha akıcı bir kullanıcı deneyimi sağlıyor. iOS simülatörü ile yapamayacağınız çeşitli şeyler olsa da başlangıç için çok büyük bir sıkıntı yaratmayacaklardır.

Xcode uygulama geliştirirken en büyük yardımcınız olacak.

Kafa karıştıran bir konu da Apple’ın geliştirici hesapları için 100$ gibi bir ücret istemesi. Mac ile uygulama geliştirilirken Apple’ın geliştirdiği IDE olan Xcode kullanılıyor ve Xcode AppStore’dan ücretsiz olarak indirilebiliyor. Geliştirici hesabınız olmaması Xcode’u indirmenize veya iOS simülatörünü kullanmanıza engel değil. Ama uygulamanızı cihaz üzerinde denemek ve AppStore’a yollamak için bu hesaba ihtiyacınız var. Eğer geliştirici hesabınız yoksa cihazınız üzerinde uygulamayı çalıştırmak için de çeşitli yollar var ancak bu yöntemler Jailbreak yapmayı gerektirdiği için pek tavsiye etmiyorum.

Programlama Dilleri

Mac OS X yüklü bir cihaz elde ettiniz ve Xcode’u kurdunuz. Şimdi ise muhtemelen kafanızdaki soru  uygulamayı geliştirirken hangi programlama dilini kullanacağınız.

iOS uygulamalarının çok büyük bir kısmı Objective-C ile yazılıyor ama zaman zaman C++ ile C yardımcı olarak kullanılıyor. Bunun yanında OpenGL ile yazılan oyunların C++ kullandığını ve Unity’nin C# kodları çağırmaya izin verdiğini de eklemek lazım.

Objective-C ve C++ aslen iki kardeş dil olsa da yazım kuralları birbirlerinden epey farklı. C++ dünya genelinde her alanda yaygın bir kullanıma sahipken Objective-C bugüne kadar Apple’ın desteği ve biraz da zorlamasıyla hayatta kaldı. Bunun nedenlerinden biri C’den epey farklı bir söz dizimine sahip olmasıyken diğeri de dile gücünü veren kütüphanelerin çoğunlukla Apple cihazlarına bağımlı olması. Elbette başka sebepler de sayılabilir ancak hem diğer dilleri kullanan programcılar hem de programlamaya yeni başlayanlar Objective-C’yi öğrenmekte güçlük çekmekteydi. Programcıların şikayetlerini duyan Apple, 2 Haziran tarihindeki etkinliğinde modern söz dizimine ve pek çok özelliğe sahip yepisyeni bir programlama dilini, Swift’i tanıttı.

Peki hangi dil?

Kısaca elimizde 4 farklı dil var, C, C++, Objective-C ve Swift. Peki hangilerini bilmelisiniz?

Oyun yapmak istiyorsunuz veya uygulamanızın en önemli ve zorlu kısmı algoritması diyelim. Farklı işletim sistemleri için aylarca uyarlama yapıp programı baştan yazmak istemiyorsanız yönelmeniz gereken dil C++. C++ sayesinde performanstan ödün vermezken uygulamayı her işletim sistemi için sil baştan yazma derdinden de kurtulmuş olacaksınız. Ama yine de çoğu durumda iOS için bir miktar Objective-C (veya Swift) bilmeniz gerekeceğini unutmayın.

Swift 2 Haziran tarihinde duyuruldu

Swift 2 Haziran tarihinde duyuruldu

Güncelleme (30/12/14): Geçen zamanla birlikte bu yazının Swift mi Objective-C mi kısmı biraz geçersiz hale geldi. Ayrıntılı bilgi için Swift vs Objective-C konulu yazıma göz atabilirsiniz.

Başlangıç için Swift mi Objective-C mi sorusunun cevabı şu an için Objective-C. Öncelikle Swift halen “beta” bir programlama dili olduğu için pek çok hatası mevcut ve tüm özellikleri bile açıklanmış veya kullanılabilir durumda değil. Ayrıca Swift ile program yazabilmek için geliştirici hesabına sahip olmanız gerekiyor. Henüz yaklaşık 1 aydır ortalıkta olduğu için bir noktada takıldığınızda araştırabileceğiniz kaynak sayısı çok çok sınırlı. Ek olarak; Swift’in betası sona erene kadar yazacağınız uygulamaları AppStore’a yüklemeniz de mümkün değil.

Objective-C’ye dönersek; AppStore’daki 1.2 milyon uygulamanın çok büyük bir kısmı Objective-C ile yazılmış durumda olduğu için Objective-C kolay kolay yok olmayacak. 1 milyon uygulamada kullanılmış olması pek çok kaynağa sahip olduğu ve her türlü sorununuza doğru kelimelerle ararsanız çok büyük bir sıkıntı çekmeden çözüm bulabileceğiniz anlamına geliyor. Eğer iOS uygulama geliştirmeye devam edecekseniz eninde sonunda Objective-C’yle karşılaşacaksınız ve kodu anlamanız gerekecek. Diğer yandan Objective-C’de kullandığınız Apple kütüphanelerinin hepsi zaten Swift’de de mevcut olacağı için ilerde Swift’e geçmeniz gerekince sıkıntı da yaşamayacaksınız.

Objective-C ile birlikte zaman zaman C’de kullanılıyor. C’yi bilmeniz şart değil ancak C 101’i geçecek kadar bilmek pek çok durumda kodu daha iyi anlamanıza ve tasarlamanıza yardımcı olacaktır. Ben eğer Objective-C’ye başlamadan önce hiç bilmiyorsanız C’ye giriş derslerine de göz atmanızı öneririm.

Sonuç

Çok özetle tekrarlarsam Mac OS X yüklü bir bilgisayarınız varsa uygulama geliştirmeye hemen bugün Xcode yükleyerek başlayabilirsiniz. Eğer özel bir durum mevcut değilse, hızlıca çıkarmayı planladığınız ciddi bir uygulama fikriniz varsa veya mevcut projelerde de çalışmayı düşünüyorsanız (ki düşünmüyorsanız da beklemediğiniz bir anda gerçekleşebilir) halen Objective-C öğrenmek en mantıklı hareket olacaktır.

Yazının bir sonraki bölümünde görüşmek üzere.

Yüksek lisanstan vakit bulabildiğinde iOS uygulama geliştirmekle ilgili bildiklerini yazmaya çalışıyor.

  • http://softversion.net/ İlkin Elimov

    ben de objective c ile başlıyordum ama müdürümün bana apple su an objective-c'ye yaptigi destegi zamanla azaltmakta ve swift destegini arttirarak ileri cekmetkte demesiyle apple’in kendi yarattigi swift dilini ogrenmeye karar verdim.

    • rennis ditchie

      sdk’yı çözüp best practice’leri kaptıktan sonra dil ha swift olmuş ha objective-c pek önemli değil gibi sanki?

      • http://softversion.net/ İlkin Elimov

        evet sonucta adam kararı yine bana bıraktı ve bu sadece tavsiye istediğini öğrenirsin dedi.

  • DrAvengers

    sanal makinaya nasıl mac os kurucaz ben mac os indirdim raw dosyası şeklinde nasıl sanal makinaya kurucam bunu

  • cumhur_kose

    Merhaba,
    “Farklı işletim sistemleri için aylarca uyarlama yapıp programı baştan yazmak istemiyorsanız yönelmeniz gereken dil C++. C++ sayesinde performanstan ödün vermezken uygulamayı her işletim sistemi için sil baştan yazma derdinden de kurtulmuş olacaksınız.” kısmını biraz daha detaylandırabilir misiniz? Yani, C++ ile tek bir kaynak kod üretip nasıl işletim sistemi bağımsız olunabiliyor?