不格好エンジニア

wordpress.comから引っ越しました。

【怠惰な】Swiftを学ぶにあたって最適なオープンソース【Objective-C経験者向け】

筆者のスペック

業務やプライベートプロジェクトでObjective-C を1年半ほど、経験しました。最近、サンプルコードやライブラリもSwiftを用いたものが増えて来て、少し焦っています。Swift勉強しなくちゃ。

困っていること

チュートリアルをチマチマ進めていくのが性に合わない

Railsチュートリアルは非常によく出来ていて、一連のストーリーが有ったので、進めていくのは苦痛ではありませんでした。ただ、Swiftに関しては、既にObjective-Cを経験したエンジニアであれば、いきなり小規模なアプリのソースコードをリファレンス引きながら読み進めて行く方が理解が早そうですね。

共有されているサンプルアプリが色々動かなくなっている

Swiftが発表され話題を集めた頃、ギークな方達が、たくさんのサンプルアプリをGitHubに晒して下さいました。ところが、これらのGitHubで共有されているコードがXcode6.1で動作しない事がよくあります。

学習に適したアプリ

とりあえず、いくつか試してみて、筆者の環境(Xcode6.1)で動作確認できたソースはこちら。


amitburst/HackerNews · GitHub

HackerNewsは、Objective-Cの教材としてもお世話になったプロダクトです。

Newsアプリは、内部動作も把握しやすいと思います。業務に応用できる部分も多いかと思いますので、こちらを読み進めていきます。

ちょっと読んでみた


AppDelegate.swiftに目を通してみます。

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    
    // MARK: Properties
    
    var window: UIWindow?

    // MARK: UIApplicationDelegate
    
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
        return true
    }

}

@UIApplicationMainの@は意味がわかりませんが、いったん後回しにしても良さそうです。

    var window: UIWindow?

この部分はプロパティ宣言ですね。後ろについている?は、nilを許容するかどうかを明示的に示しているそうです。このあたり、後で調べておきます。

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
        return true
    }

この部分は、下のObjective-Cソースコードと比較すれば、何となく理解できますね。問題なさそう。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    return YES;
}

AppDelegateは、何となくわかりました。
この調子で、読み進めていけそうです。