Drobnik氏のアプローチは新たな人間関係を開始することに似ている、と筆者は感じた。既存のプロジェクトについてはObjective-Cでのコーディングを継続し、「appledoc」がSwiftをサポートしたら、Swiftでプロジェクトに取り組むことを検討するかもしれない、と同氏は述べた。しかし、「数年かけて大好きになった言語を捨てて、急いで新しい言語と付き合い始める」理由はなかった。「まずは時間をかけてお互いを知る努力をすることだ」(同氏)
「iOS 7 Programming Pushing the Limits」の共著者であるRob Napier氏がCocoaphonyブログへの投稿で述べたところによると、Swiftは関数型プログラミング言語だと報じられているが、同言語に「関数型」の要素はほとんどないという。「Swiftは極めて従来型のオブジェクト指向言語だ」と同氏は述べた。しかし、それでも問題はないようだ。
個人的には「Cocoa」開発で全面的に関数型の技法を取り入れられればよかったと思っているが、それは自分が楽しいからというだけだ。関数型になることによって、素晴らしいiOSやMacのアプリの目標が次の段階へ進んでいたかどうかは、少なくとも短期的には分からない。関数型リアクティブプログラミング(FRP)が愚かな考えだと言っているわけではない。私には、それについての確固たる見解はない。ただ、Swiftと比べると、Objective-Cプログラマーにとっての学習曲線が高い、というだけのことだ。そして、われわれは長い間にわたって、Swiftを(非関数型)Objective-Cと統合する必要があるだろう。
Napier氏はSwiftにより多くの関数型の機能が組み込まれることを期待している。そうなれば、「Swiftは驚くほど重要な言語になり、プログラミングの世界を向上させるかもしれない」と同氏は述べた。「なぜなら、プログラマーは非常に人気の高いプラットフォームで開発を行うために、関数型プログラミングを学習しなければならなくなるからだ。あるいは、そうしたことが全く実現しない可能性もある。Swiftは単に素晴らしいiOSやMacのアプリを記述するための言語になるかもしれない。それも悪いことでではない」(同氏)
Practical Swiftは74種類の内蔵関数のリストを掲載した(そのうちドキュメントに掲載されているのは、たったの7つだ)。「この記事で使われている『内蔵関数』の定義は、モジュール(例えば『Foundation』)をインポートしたり、クラスを参照したりしなくてもSwiftで利用可能な関数だ」
「The Complete Friday Q&A: Advanced topics in Mac OS X and iOS programming」の著者であるMichael Ash氏は、同氏がSwiftの「興味深い機能」と呼ぶものを分析した結果を投稿した。そのリストには、以下のものが含まれている。
明示的なOptional。SwiftはOptional Valueを第一級の言語構成要素にしており、あらゆるOptional型を明示的に示すことを求めている。
複数の戻り値。Swiftは関数が複数の値を返すことを認めている。
ジェネリクス。これは非常に重要だ。Swiftはジェネリッククラスとジェネリック関数をサポートする。
型推論。静的型付けは便利だが、煩わしいコードの冗長化を招くこともある。
クラスのような構造体。Objective-Cと同様、Swiftでもクラスと構造体の両方を利用できる。Objective-Cと違って、Swiftの構造体はメソッドを持たせることが可能だ。
トレイリングクロージャ(Trailing Closure)。これは無意味であると同時に魅力的でもあるクールな機能だ。
演算子の多重定義。この機能は論争を呼ぶと思う。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。