新しいプログラミング言語Swiftを触ってみた

みなさん、こんにちは。
iOSアプリの開発を担当しているSEのKingです。

先週のWWDC2014はチェックしました?!いろいろ発表されましたね!

個人的に、噂されていたハードウェアが発表されなかったのがちょっと残念です。

その代わりに iOS8とSwiftの発表がありました。いろんな新機能が追加されて嬉しいんですが、量が多いので早めにチェックしておかないとちょっと大変かも知れませんね。
そもそもiOS7ですらまだ知らないことや、使った事がない機能が多い状況なのに、今回のiOS8では新しいAPIが4000以上追加!!!数の多さにビビります。
またせっかくObjective-Cに慣れたというのに、Swiftという聞いたこともない言語に替わるなんて。。。いや〜大変っすね。

とは言え、文句を言っても何も解決しません!前向きに頑張って勉強するしかないです!新しい機能が追加されたことによって、新しいアディアがどんどん生まれるし、いままでなかったビジネスチャンスも増えるに違いない!そう考えながら、今回は少しSwiftを触ってみました。

まずはiBookAppleが提供しているSwiftに関する書籍をダウンロードしました。なんと1383ページもあるようです。平均1ページ1分間のスピートと計算しても、全部読むのに23時間もかかりますね。まだ100ページぐらいしか読んでないんですが、これから空いた時間を使って少しずつ勉強しようと思います。

ということで、今回は基本のiOSバーツをSwiftで書く時の書き方について紹介したいと思います。

例えば、普通のボタンですがObjective-Cだとこんな感じです。

Objective-C

UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
button.frame = CGRectMake(110.0, 120.0, 100.0, 50.0);
button.backgroundColor[UIColor grayColor];
[button setTitle:@"Touch me" forState:UIControlStateNormal];
[button addTarget:self action:@selector(hoge:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];

Swiftでは、こういう風に書きます。

var button = UIButton.buttonWithType(UIButtonType.System) as? UIButton
button!.frame = CGRectMake(110.0, 120.0, 100.0, 50.0)
button!.backgroundColor = UIColor.grayColor()
button?.setTitle("Touch me", forState: UIControlState.Normal)
button?.addTarget(self, action: "hoge:", forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(button)

結構似てますね。

また、アクションは

func buttonAction(sender: UIButton)
{
var mathSum = MathSum()
var sum = mathSum.sum(11, number2: 22)
var alert = UIAlertController(title: "Title", message: String(format: "Result = %i", sum), preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)

こんな感じです。
よく使われるLabelの場合は

var label = UILabel(frame: self.view.bounds)
label.backgroundColor = UIColor.clearColor()
label.textAlignment = NSTextAlignment.Center
label.font = UIFont.systemFontOfSize(36)
label.text = "Hello, Swift"
self.view.addSubview(label) 

ImageViewは

var image     = UIImage(named: "swift-hero.png")
var imageView = UIImageView(frame: CGRectMake((CGRectGetWidth(self.view.bounds) - image.size.width) / 2.0, 120.0, image.size.width, image.size.height))
imageView.image = image
self.view.addSubview(imageView)


まぁ、言語が替わると言っても書き方はほぼ一緒って感じですね。少しほっとしました〜
とは言え、個人的に大好きなライブラリがしばらく使えないかもしれません。Swiftで動く素晴らしいライブラリを期待しています!

King さんが作った便利ライブラリーも待ってます!
編集長より

ということで、まだ数時間しか触っていませんが、今後もSwiftを勉強しながらみなさんと共有したいと思います。

では、また!