2014年6月22日日曜日

Swift で Hello World まで

先日 Apple から発表された新言語 Swift。
発表を見たときは、正直げんなり(新しい言語覚えるの大変だなって)したけど、
使ってみないと分からないと言う事もあり、せめて Hello World ぐらい表示させてみようと思った次第です。

Swift は、まだ Beta 版で Xcode 6 Beta x 版で無いとコンパルできません。
Beta 版を使うには、Apple の Developer Program に加入する必要があります。
年間 7,800 円と少々お高い。アプリ作って App Store に出すなら必須なので、
通常アプリ作っている方であれば試してみる事ができます。

実際には、Developer Program のページからサインインして、iOS のサポートページの
上部に表示される Updated Program Licence Agreement(ライセンス更新)の表記にある Review Agreement のリンクで
更新処理を行う事でリンクがアンロックされる iOS8 のページにある Xcode のダウンロードで初めて入手が
できるようになるという非常に手間な段取りとなります。

また、Xcode 6 Beta 2(2014/06/22時点)は、Mac OS 10.9(Mavericks) からでないと使えないため、
OS を更新していない人は、注意が必要です(自分は 10.8 だったので、この機会に 10.9 へ更新しました)。

さて、ここまで来ると後は、コードを書くだけ。
Xcode を起動して新しいプロジェクトを作成し、途中言語の選択を行える部分があるので、そこで Swift を選択すれば、
利用できます。

プロジェクト作成時点で、Hello World が表示されていれば早くも終了かと思いましたが、結果単なる画面の起動まで
しか用意されていない状態でした。

早速、コードを記述するわけですが、言語仕様がよくわからない状態だったので、以下のページを参考にさせていただき、
予備知識を得た上で作成する事にしました。

新プログラミング言語「Swift」の型と制御構文
http://codezine.jp/article/detail/7842

Objective-C から、現代の流行の言語風に記述できるようになっているようです。
個人的には、行の終わりは「;」を使用したり、括弧の省略とかはない方が好きなのですが、古くさい人間なんでしょうか?
では、事前知識を得た上で作成を行います。

起動すると、ストーリーボードが用意されているので、今回そちらに Hello World を表示させるためのラベルを配置します。
次に、アシスタントエディタにして、ラベルをクリック後、Ctrl キーでエディタ部へドラッグして Outlet 接続を行います。

あとは、viewDidLoad() で、接続したラベルに対して Hello World を代入するだけ。
コードは以下の通り

import UIKit

class ViewController : UIViewController {
    @IBOutlet var label : UILabel
                                                                                 
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        label.text = "Hello World"
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }    
}

以上でビルドすれば Hello World が表示される。
書いたコードは 1 行だけ。。。これじゃ試した内にはいらない。。。
もう少しちゃんとしたコードは後々に

あとは、気になる部分としてテストの部分ですが、いまのところ「Quick」というやつが人気有るらしい。

Quick
https://github.com/modocache/Quick/blob/master/README.md#how-to-install-quick

これも追々やっていきます。

その他、気になる部分としては本当に Objective-C よりも早いのか?
この部分は、後発ということや、Apple 謹製なので外す事はないとは思いますが気になる部分です。
調べてみると、この部分を検証されている記事があり、そこには今のところ Objective-C よりも
遅くなる事があると書かれていました。

SwiftはAppleが主張するほど高速ではない - 最初のベンチマークより
http://www.infoq.com/jp/news/2014/06/apple-swift-performance-hit

コンパイラの最適化部分がまだ調整出来ていないようです。
上記にも書きましたが、Beta 版なので現段階でどうこう言ってもしょうがないという事でしょう。
(Apple 自体も知っている内容だとは思いますが)

また、おもしろい記事として遅い部分は C で記述出来るという内容がありました。

Swiftは遅いので、クリティカルな部分はCで書く
http://qiita.com/moriturus/items/6845c2686ae43ab5e12f

これで、スピード不足は補えますね。。。

最後に、Swift の最新情報を毎週メールで送ってくれるサービスの記事がありましたので、
それを記述して終わります。

Swiftの最新情報を毎週メールで送ってくれるサイト「Swift weekly」
http://www.lifehacker.jp/2014/06/140621swiftswift_weekly.html
Swift weekly
http://swiftweekly.com/

0 件のコメント:

コメントを投稿