【Swift】HTML5味見部 – Swift – に行ってSwiftを味見してきました。

2014.06.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

water こんにちは、せーのです。 先日Appleから発表されたiOS開発用の新言語「Swift」、どうですか?みなさん。触ってますか? 新しもの好きの私としては飛びつかずにはいられません。 そこで、私と同じ新しもの好きだけど忙しくてSwiftに触れていないみなさん向けに2014/06/11にサイバーエージェントさんにて行われた「Web先端技術味見部#26 「2014初夏 味見祭」(後夜は「Swift」!)」に参加してきたので、サクッとできる「味見」の仕方を教えます。

事前準備はApple DevelopersとXcode6.0-Beta

ここらへんは大体ご承知の通りです。ちなみに私は会社のノートを持っていったためXcode6.0-Betaが入ってなかったため会場で落とすことに。勉強会のWi-Fiで大きなものを落とすと罪悪感が半端ないです

新機能「Playground」が超便利

さて、Xcode6.0-Betaを最初に開くと見慣れないメニューがあります。 これこそがXcode6.0-Betaから追加された新機能「Playground」です。早速開いてみるとシンプルなノート風エディタが。初期設定ではこうなりますが、viewメニューからNavigatorやDebug Area、Utilitiesをshowしていくと、Xcodeを使ってきた方にはお馴染みのあの画面になります。 Playgroundの強みはリアルタイムなデバッグ機能にあります。画面左側にコードを書くとインタラクティブに右側に評価結果が出ます。このリアルタイム性がPlaygroundの持ち味であり、またXcode6.0-Betaが5分に1回は落ちる原因なのかな。

ちなみに「Playground」機能は一般のSingleViewApplicationからも組み込めます。普通にSingleViewApplicationで開いたXcodeからFile→New→Fileと辿って行くと選択画面に「Playground」が現れます。 実案件の時にはおそらくクラスやライブラリの動作確認に使われるのですかね。確実に.gitignore的な

言語仕様でwktkしたところ

環境の準備が整ったらコードを触ってみましょう。なんせ今回は「新言語」であって、IDEの使い方は特に変わらないので、アプリを作る手順も基本的には昔のXcodeと特に変わりません。なので「味見」するのは主にコーディング部分となります。

ドキュメントはSwiftのガイドブックがあるのですが「iBooksか。めんどくせ」という方にはHTML版があります。 appleのdeveloper centerにWelcome Swiftというページがあります。このページをぐーっと下にスクロールしていくと swift_language_guide このようなLanguage Guideというリンクがありますので、ここからHTML版が見られます。 「どっちにしても英語でしょ。読むの時間かかるじゃん」というあなたに現在一番オススメなのは、Wikipediaです。 まだ全仕様ではないのですが有志によって綺麗にまとめられ始めています。まずここを読んで、なんとなく把握した段階でガイドブックを読むと理解が深まります。

そんな感じで言語仕様をplaygroundで試しながらざーっと読んでいきます。特に仕様で私がwktkしたのはenum(列挙型)の仕様です。 enumといえば主に定数を列挙する(曜日とか、都市とか)という印象です。

enum city{
	case Tokyo,Osaka,Nagoya,Sapporo,Fukuoka,Aomori,Sendai,Shizuoka,Fukushima,Okayama,Okinawa
}

var place = city.Tokyo

ですがswiftではenum型の中に複数の引数やメソッドまで書けちゃいます!

enum city{
    case Tokyo, Osaka, Nagoya, Sapporo, Fukuoka,Aomori,Sendai,Shizuoka,Fukushima,Okayama,Okinawa
    func isMajorCity() ->Bool {
        switch self {
        case .Tokyo, .Osaka, .Nagoya, .Sapporo, .Fukuoka :
            return true
        default :
            return false
        }
    }
    
}

var mycity = city.Sapporo

if mycity.isMajorCity() {
    println("五大都市ツアー決定!!")
}

もうほぼクラス扱いですね。すごい!

言語仕様でどうなの?というところ

Swiftは色々な言語のいいとこ取りのような言語でとても使いやすいのですが、それでも「ん?」という仕様はあります。 その最たるものが「Arrayの扱い」です。 開発者にとってmutable,immutableは大事です。Swiftの基本は「varはmutable, letはimmutable」です。 ただ、Array型をletで宣言してもその後でArrayの値が変えられるのです

let individualScores = [75, 43, 103, 87, 12]

individualScores[1] = 85 //これがエラーにならない!

guide bookでは

“Immutability has a slightly different meaning for arrays, however. You are still not allowed to perform any action that has the potential to change the size of an immutable array, but you are allowed to set a new value for an existing index in the array. This enables Swift’s Array type to provide optimal performance for array operations when the size of an array is fixed.”

抜粋:: Apple Inc. “The Swift Programming Language”。 iBooks. https://itun.es/jp/jEUH0.l

うーん、サイズは変えられないけどキーや値は変えられる、サイズを固定すると配列処理で最適なパフォーマンスを提供できる、とのことです。 ちなみに

For dictionaries, immutability also means that you cannot replace the value for an existing key in the dictionary. An immutable dictionary’s contents cannot be changed once they are set.

ということでDictionaryはサイズもキーも値も変えられないimmutableな書き方ができるのです。じゃあなぜArrayだけ。。。? ココらへんの仕様は結構不満に思っている方が多いようで、論争になっています。

How do you create an immutable array in Swift? Apple Swiftのmutabilityの謎

まとめ:やった方がいい!

ということで先日味見してきた感想をつらつらと書いてみました。 雑感としては「これはやった方がいい」につきます。 書き方はObjective-Cのようなハードルより一気に下がり、さらにスピードはObjective-Cより速い。 ニーズとしてiOSアプリはこれからしばらく続きそうですし、サクッとした社内ツールや家族用の簡単なアプリを作れるスキルがあると、とても重宝されます。 さらにこれからはHomeKitやiBeaconなどでパソコン以外のものをコンピューティングで動かす機会が増えます。その際のコントローラとしてiOSアプリは欠かせないものとなるでしょう。 かつてiOSアプリの学習に時間を取れなくて挫折した方も、ぜひここからまた初めてみるのはいかがでしょうか。