技術ブログメニューコンテンツへスキップホーム作って学ぶSwift/iOSアプリ入門24件の返信AppleがWWDC2014にてSwiftを発表してから2ヶ月近くが経ちました。X/iOSのアプリ開発に存在するObjective-Cの壁は取り払われ、より多くの人に馴染みやすい言語として現れたSwiftはコミュニティへの新たな開発者の流入を促し既存の開発者にもより安全でモダンなスタイルでの開発を可能にした点でとても歓迎されています。3で変更になった部分やこの2ヶ月で溜まってきたナレッジをもとにあらためて言語からアプリ開発まで一貫した解説記事を残したいと思いました。本記事の構成はまず速習Swiftで文法の基礎的なところを話し、その後Todoアプリの作成を通じてクラスや構造体、UIKitを用いたアプリ制作の具体的な話をしていきます。読者は他言語を多少触ったことがある人を想定しているので行間が空いている箇所も多いとは思いますが最後までお付き合いいただければ幸いです。Tourという完成されたチュートリアルがありますが、英語で書かれているのであらためて日本語でSwiftの基本的な文法を解説してみたいと思います。文章より実際のコードを多めに書いているのでPlaygroundを片手に実際に動かしながら読んでいただけると理解も早いと思います。Worldから始めましょう。変数と定数があります。それぞれvarとletで宣言しvarで宣言されたものは変数、letで宣言されたものは定数になります。定数は一度値を代入すると二度と変更することは出来ません。これはコンパイルエラーこれだけ見るとIntやString等の型がないように見えますが実際はコンパイラが自動的に解釈してくれていて変数と定数にもちゃんと型があります。変数に型が違う値を代入しようとするとコンパイルエラーになります。"Swift"このように名前の後に型を書きます。基本的な型を以下に列挙します。IntFloatDoubleBoolStringArrayDictionaryArrayとDictionaryには便利なリテラルが用意してあります。"みかん"]辞書のリテラルに使われる括弧が{}ではなく[]であることに注意して下さい。[:]このようになります。0タプルを作るときは()の中にカンマ区切りで値を入れます。3つ以上の型を組み合わせたり、タプルを入れ子にすることも出来ます。値を取り出す時は.0の様に先頭から.0,.1,.2とアクセスします。値に名前をつけることも可能です。長い同様にwhile文も括弧を省略することができます。文にはいくつかの書き方があります。{println(i)}以上3つは全て同じ結果になります。0...9はRangeという構造体で詳しくは説明しませんがとりあえずは連続した値をもった配列という認識でいいと思います。inループで回すことが出来ます。Rangeやenumerate関数の返り値も同様にSequenceに適合しています。SequenceOptionalSwiftには何もないことを示す値としてnilが存在します。通常のIntやStringといった型に直接代入することは出来ません。nilを扱うためにはOptionalという特殊な型で今ある型を包んでやる必要があります。これはコンパイルエラーInt?はOptionalの糖衣構文になっていて、既存の型の最後に?をつけることで簡単になんでもOptional型に変えることが出来ます。このままではOptional型なので普通のInt型のように扱うことが出来ません。コンパイルエラーOptional型から元の型に戻す一番簡単な方法は!をつけることです。2!は文字数も少なく便利なのですがこれでは万が一nにnilが入っていた時にランタイムエラーになってしまってせっかくのOptional型の恩恵を受けられません。安全に計算を行うためにはif文をうまく使うことが出来ます。2}もしmaybeがnilならifのブロック自体が実行されません。実際にOptional型を使う場面として検索関数はとてもいい例になります。nil}ここでindexOf関数は文字列の配列から与えられた文字列を検索し、存在すればそのインデックスを、無ければnilを返すような関数です。{println("存在しません")}こんな風に安全な検索処理を書くことが出来ます。関数で\()を使って文字列の中にindexの値を入れています。\()を使うとPrintableプロトコル適合した型の変数の値を直接文字列に埋め込むことができます。Printable関数まずは基本的な関数の書き方です。8doubleValueはInt型の値を受け取ってInt型の値を返す関数です。矢印の表記は左を定義域、右を値域と考えると数学の表記と対応していて見やすいですね。返り値がない場合は関数を定義する時に->を省略することが出来ます。Voidとなっています。使えば可変長引数を扱えます。Stringの配列になります。関数は値のように扱うことも出来ます。最後の引数にクロージャを渡す場合はこのように括弧を省略することができます。最後の引数にクロージャを渡す場合はこのように括弧を省略することができます。15ここまで駆け足で基本的な文法を説明してきました。Tourがオススメです。英語にはなりますがとても丁寧ですし公式なので一番正確な内容が書かれています。これ以降は実践で学んで行きましょう。Todoアプリを作るここからは実際にアプリを作りながら解説していきます。