Apple の新しいプログラミング言語 Swift がリリースされてからまだ数か月しか経っていないが、この新しい言語への関心が急速に高まっているため、American Airlines、Getty Images、LinkedIn、Duolingo などの iOS および OS X 開発者からは、生産性の向上から出荷アプリのバグの減少まで、さまざまな好印象が報告されている。
Swiftは、昨年6月にAppleのワールドワイド開発者会議(WWDC)で初めて発表され、9月にiOS 8およびOS X Yosemiteとともにリリースされました。Chris Lattner氏のLLVMコンパイラと緊密に統合されています。Swiftは、コード記述の高速化、最新のプログラミング概念の導入、そしてアプリのクラッシュにつながる一般的なエラーの防止を目指しています。
AppleはSwiftに戦略的投資を行った
「新しいプログラミング言語Swiftへの反響に驚いています」と、AppleのCEOティム・クック氏は先週述べた。「新しいプログラミング言語を開発できる企業はごくわずかであり、私たちのエコシステムに大きな影響を与えると信じています」。「新しいプログラミング言語を開発できる企業はごくわずかであり、私たちのエコシステムに大きな影響を与えると信じています」 - ティム・クック
新しいプログラミング言語の開発は野心的な取り組みですが、開発者の間で急速に普及させるのもまた容易ではありません。iOSとOS Xプラットフォームの所有者であるAppleは、Swiftの普及を促進・奨励する独自の力を持っています。それに加え、Swiftは既存のObjective-Cコードと並行して、既存の開発プロジェクトに容易に組み込めるように設計されている点も大きな魅力です。
Swiftが開発者の関心を集める主な要因は、Objective-Cと比較して、初心者プログラマーにとって導入しやすく、すぐに生産性を向上できることです。これは、Rust、Haskell、Ruby、Python、C#、CLUといった既存言語から要素を借用していることにも起因しています。
Apple の Swift に関する無料 iBook では、この新しい言語を「スクリプト言語と同じくらい表現力豊かで楽しい、初の産業品質のシステムプログラミング言語」と呼んでいます。
同社はまた、新しい言語のパフォーマンスにも力を入れており、共通の検索アルゴリズムを実装した Swift コードは Objective-C よりも 2.6 倍、Python で書かれた同等のコードよりも最大 8.4 倍高速に実行できると指摘している。
開発者がSwiftに集まる
クック氏はまた、「Swiftは9月にXcodeツールの一部として利用可能になり、最初の1か月でこれらのツールは1100万回以上ダウンロードされました。RedMonkの最近のレポートによると、Swiftは前例のない成長を遂げ、最も人気のあるプログラミング言語のリストを急速に上回っています」と述べた。
多くの開発者が重要な新規プロジェクトの構築にSwiftを選んでおり、教育の分野でもSwiftを活用した素晴らしい取り組みが展開されています。つい最近、スタンフォード大学が「Swiftを使ったiOS 8アプリ開発」コースをiTunes Universityで公開し、世界中の誰もがこの素晴らしいリソースを利用できるようになりました。
RedMonkが1月中旬に報じたように、AppleのSwiftの採用は「実質的に前例のない」もので、わずか5ヶ月で人気プログラミング言語のトップ25にランクインしました。これは、GoogleのGo言語が達成するのに5年近くかかった偉業です。すでに多くの国際的な大学や専門学校でSwiftが授業に取り入れられています。
ドイツのミュンヘン工科大学、メキシコのモンテレー工科大学、フランスのインジェサップ大学、イギリスのアベリストウィス大学やプリマス大学、オーストラリアの RMIT 大学など、さまざまな国際的な大学や専門学校がすでに Swift を授業に取り入れているという事実が、Swift の人気を今後さらに高める要因となっています。
Appleの本社があるスタンフォード大学に加え、カリフォルニア工科大学、サンルイスオビスポのクエスタ大学、カリフォルニア大学サンタクルーズ校、フィラデルフィアのドレクセル大学、オーランド近郊のフルセイル大学、ノースウェストカンザス工科大学、ミズーリ大学、ダラスのサザンメソジスト大学など、アメリカの他のキャンパスでもSwiftを教えている。
ゲッティイメージズのStreamへの迅速な導入
ゲッティイメージズのアプリケーション開発マネージャー、ラファエル・ミラー氏はAppleInsiderに対し、 Swiftを初めて使い始めたのはWWDCで2日間のハッカソンに参加した時だったと語った。そのハッカソンの結果、iOSとOS X向けの新しいアプリ「Stream」が誕生した。このアプリを使えば、ゲッティイメージズのポートフォリオからプロの写真を検索、閲覧、共有できる。
ミラー氏は、Objective-Cの経験を持つ上級開発者はSwiftをすぐに使い始めることができる一方で、この新しい言語は特にC#で1~2年の経験がある、あるいは大学でJavaを教えたばかりの初心者開発者にとって扱いやすいと指摘した。Rubyに慣れたWeb開発者も、Objective-Cのあまり一般的ではない構文とは対照的に、Swiftをすぐに習得できるようだ。
ミラー氏は、こうした新しい開発者にとって、Swift は Apple プラットフォームのデフォルトのプログラミング言語の学習を容易にし、Mac Cocoa や iOS Cocoa Touch API の習得と理解に集中できるようにすると述べた。
彼はSwiftを言語として「かなり高性能」だと評しましたが、彼が指摘した主な利点は開発者の生産性に関するものでした。Objective-Cの冗長性とは対照的に、Swiftの簡潔さは「より少ないコードでより多くのことを実現」し、「日常的な作業をより迅速に完了」することを可能にします。これがRuby開発者にとって特に魅力的であり、「より少ないコード量でより多くの開発」が可能になると彼は指摘しました。Rubyは、新しいコンセプトの迅速なプロトタイプ作成によく使用されます。
ミラー氏は、開発者の生産性におけるSwiftの優位性は、特にコンシューマー分野において重要だと指摘しました。開発者は新機能やその他の具体的な機能強化によってアプリを常に最新の状態に保ちたいと考えているからです。Swiftを使用すると、開発者は「迅速に開発」を行うことができ、革新的なイテレーションを実現しながら、新機能に対するユーザーからの要望に迅速に対応することができます。
Swiftでは、よくあるエラーのあるコードをコンパイルできないため、「何か間違っていることを早い段階で知ることができる」とミラー氏は述べた。開発者は「コードを入力中に、なぜうまくいかないのかを通知される」ため、欠陥のあるコードをコンパイルする時間を無駄にすることがなくなる。
ミラー氏は、Swiftの最初のベータ版は「かなり未熟だった」ものの、それ以降「リリースを重ねるごとに改善されてきた」と指摘した。コンパイラの問題やObjective-CとSwiftの混在に伴う問題により「Xcodeではまだクラッシュがいくつか発生している」ものの、Swiftで完全に記述されたStreamの成功により、チームは「すべてのアプリをSwiftに移行する準備が整った」とミラー氏は述べ、ゲッティイメージズアプリ全体では、近い将来、Swiftコードの50~60%を達成することを目標としている。
ゲッティイメージズはAndroidアプリの開発を行っておらず、ミラー氏によると近い将来にクロスプラットフォーム化の計画はないため、Swiftへの投資は移植性の問題に制約されないという。しかし、ミラー氏は、モバイルチームが運営するSwiftワークショップが、MicrosoftのC#を使用するバックエンドAPIコーダーやRubyに精通したWeb開発者など、社内の他の開発者の注目を集めていると指摘した。
ミラー氏は、特にモバイル開発全般への関心の高さから、Swift は「人々が私たちのドアを叩いている」と述べた。Objective-C の構文があまり馴染みのないのに対し、Swift は馴染みやすいため、モバイルアプリ開発へのスキル拡張に関心を持つ既存の開発者にとって「構文的に怖くない」のだ。
今後Swiftに関してAppleに何を望むかと尋ねられたミラー氏は、「よくある問題があり、SwiftとObjective-Cでどのように対処するか」を示す「サンプルコードがもっと見れると良い」と述べ、さまざまなタスクにSwiftを使用することの費用対効果分析の概要を示した。
「Objective-Cは長年存在してきたため、ベストプラクティスはすでに存在します」とミラー氏は述べた。Swiftに関しては、利用可能なベストプラクティスのアーキテクチャは少なく、理想的にはSwiftを最も効果的に使用する方法に関する最良の洞察は「Swiftを設計した人々」から得られるはずだ。
スウィフトがアメリカン航空で離陸
AppleInsiderは、アメリカン航空のモバイルアプリを管理するフィリップ・イースター氏と、同社のiOS開発者マット・クロスターマン氏にもインタビューを行いました。イースター氏は、アメリカン航空は「モバイル分野で進歩的な姿勢を維持し、開発サイクルの改善とプラットフォームの改善を模索している」と述べ、「AppleがSwiftで行っていることは素晴らしい追加機能だ」と付け加えました。
同氏は、Swift の具体的なメリットとして、保守が容易な高品質のコードとそれに伴うパフォーマンスの向上を挙げ、「アメリカン航空は今後間違いなく Swift を採用していく」と語った。
しかし、既存の大規模なコードベースを持つネイティブ開発者にとって、Objective-CからSwiftへのコードの移植よりも、Swiftで新機能や機能強化を開発できることの方が魅力的です。Appleは、既存のプロジェクトにSwiftを導入するためのこのような段階的なアプローチを比較的容易にしました。
クロスターマン氏は、WWDC直後からSwiftの調査を開始し、同社の既存アプリに「新機能を迅速に導入するためのアプローチ」を開発したと述べた。しかし、新機能を迅速に追加するための手段としてSwiftを採用することは、iOS 8の展開においてアメリカン航空の開発者が考慮する必要があったプラットフォーム関連の変更点の1つに過ぎない。
iOS 8 では、アダプティブ ユーザー インターフェースのサポートも導入されました。これにより、開発者はアプリを柔軟に適応させて新しいデバイス フォーム ファクターで動作するようにできます。Apple はこれを、iPhone 6 と iPhone 6 Plus の大画面と高解像度化にちょうど間に合うように提供しました。
この機能により、アメリカン航空はiPhoneとiPadの別々のアプリを共通のコードベースに統合することができ、両アプリの機能の整合性を維持しながら、新機能の開発と追加能力を大幅に向上させることができました。Swiftを採用してこれらの新機能を開発することは、Adaptive UIのサポートと連携し、開発を加速させるだけでなく、既存のObjective-Cコードを新しいSwiftコードと統合する方法について新たな考え方を生み出すことにもつながりました。
ゲッティイメージズと同様に、アメリカン航空もSwiftの導入において「段階的なアプローチ」を採用しています。クロスターマン氏も同様に、WWDCでのデビュー以来、Swiftは継続的に改善されており、「リリースごとに進化している」と述べました。
今後何が起きてほしいかと尋ねられると、彼はObjective-CとSwiftは「どちらもしばらくは存在し続けるので、Swiftとの相互運用性が向上したら有益だろう」と述べ、両者の相互運用性が進化する「興味深い方法」があると述べた。
一方で、Swiftは新しく登場したばかりの言語のように見えるものの、イースター氏は4年間の開発期間を経ており、「歴史と実績」があると述べた。「Appleは、その取り組みにおいて非常に思慮深いことを証明してきた」と彼は述べた。
Apple が昨年夏に Swift を発表したのと時を同じくして、LinkedIn は新しい SlideShare アプリの概念的なプロトタイプを作成した。このアプリは、ビジネス プロフェッショナル間でプレゼンテーションを共有する Instagram に似た機能を持ち、共有ビジネス プレゼンテーション、インフォグラフィック、ビデオをホストする。
SlideShare のエンジニアリング マネージャーである Francisco Meza 氏は、「SlideShare iOS アプリとなる最初の初期プロトタイプをちょうど完成させていたため、相互運用性に必要な Objective-C の部分を除いて、完全に Swift で新しいアプリケーションを開発するにはタイミングが完璧でした」と述べています。
プロダクトマネージャーのアンドリ・クリスティンソン氏は、SlideShareチームについて、「WWDCで発表された直後から、全く新しい言語を使い、アプリの開発を進めながらコツを掴むことに非常に興奮していました。チーム活動中は、開発者コミュニティ全体と密接に連携しているように感じました。開発者たちはフォーラムやStack Overflowで積極的に活動し、学習したり、他の開発者の学習を支援したりしていました」と述べ、「Appleに報告したいくつかの小さな改善点は、すぐに追加されました」と付け加えました。
Swift のパフォーマンスについて尋ねられると、Meza 氏は次のように答えました。「SlideShare のアプリ (Swift) と LinkedIn の主力アプリ (Objective-C) の同様のページのパフォーマンス追跡メトリックの比較に基づくと、Swift の実行時パフォーマンスには非常に満足していると言わざるを得ません。」
結果として得られたコードの品質と安定性に関して、クリスティンソン氏は「SlideShare アプリのクラッシュ率は優れており、私たちのチームがこれまでに開発した他のアプリよりもはるかに優れています」と述べています。
メサ氏はSwiftの学習曲線についても触れ、「それほど急峻ではありませんでした。Swiftは確かに新しい言語ですが、RubyやPythonなど、長年使われている他のプログラミング言語からインスピレーションを受け、要素を借用しています。このプロジェクトに携わる開発者のRubyに関する高度な専門知識が、Swift導入の学習曲線を平坦化するのに役立ちました」と述べました。
同氏はさらに、「これまでSwiftで得た素晴らしい経験を踏まえ、SlideShareはiOS開発の言語としてSwiftを今後も使い続けるつもりだ」と付け加えた。
Meza 氏は、最初の数回のパッチリリースでプライベート アクセス修飾子が欠如していたことや、Xcode 構文の強調表示に関する初期の問題など、初期段階で経験したいくつかの問題を指摘しましたが、これらは両方ともその後解決されたと述べています。
「言語自体に関しては」と彼は付け加えた。「我々が経験した主な問題は、Swiftを使い始めた時点ではまだ言語の慣用句が確立されていなかったという事実だったと思う。そのため、Swiftの使い方を学ぶプロセスの一部として、言語の使用におけるベストプラクティスに関する独自の慣例を考え出す必要があったのだ。」
Meza 氏は、「欠けている主な機能は例外のサポートです。私たちの経験では、この機能を使用すると、エラー処理コードの記述にメリットがある可能性があります」と付け加えました。
しかし、彼が述べたように、「Swift を使用することで得られるメリット、つまり、より表現力豊かなコード、読みやすく理解しやすいコード、保守しやすいコードなどを比較検討すると、Objective-C ではなく Swift を選択した決定は私たちにとって正しいものだったと自信を持って言えます。」
Duolingoは新しい言語を学ぶ
Swift を使用した新たな開発プロジェクトのもう一つの例は、Duolingo の Test Center です。これは、同社の人気外国語学習アプリ Duolingo のコンパニオンアプリです。Test Center は、監視付きで制限時間内に実施される試験を通じて、ユーザーの語学力を証明することを目的としています。
同社が投稿した「Real World Swift」というブログ記事では、Test Center の当初の目標について説明しており、このアプリは「パフォーマンスにそれほど敏感なアプリではない」が、クラッシュするとこのような試験アプリにとって「かなり悪いユーザー エクスペリエンス」をもたらすだけでなく、時間制限のあるスキル テストとしての設計に支障をきたすため、安定していることが重要であると述べている。
DuolingoはSwiftの特定の機能に関する詳細な体験談を概説したが、同社のTest Centerアプリは「たった1人のプログラマーによって3ヶ月強」で開発され、人気ダウンロードとしてユーザーの手に渡り「クラッシュ数が少ない」という目標を達成できたと結論付けた。さらに、同社が追跡したクラッシュのうち、上位5件のクラッシュ報告の要因のうち4件は、最新のSwiftコードではなく、外部のObjective-Cライブラリのコードに関連していた。
同社は、アプリの安定性は主に「堅牢なソフトウェアアーキテクチャと健全なエンジニアリング原則の遵守」によるものだと説明しつつ、「Swiftは、設計段階で様々なバグを完全に排除することで、このアーキテクチャの構築とベストプラクティスの遵守のプロセスを容易にしました。例えば、Swiftの型システムを正しく使用することで、開発中のコンパイル時に多数の型エラーを検出し、本番環境で表面化することなく回避できました」と指摘した。
DuolingoはSwiftの初期導入者が抱える問題点も指摘し、「この新しく生まれた言語には、現代的な型システムを持つ他の言語に見られる表現力が欠けている」と指摘しました。また同社は、「Swiftに対する最大の不満、そしてフラストレーションの原因は、おそらく言語そのものではなく、Swiftを取り巻くツールにある」と指摘しました。
そこには、「Xcode(AppleのObjective-CおよびSwift IDE)は、Swiftコードではまだ安定していないと感じています。アプリ開発中、IDEの動作が著しく遅くなったり、クラッシュしたりすることがよくありました。ほとんどの場合、コード補完機能は全く(または非常に遅く)なく、デバッガーも基本的になく、構文のハイライト表示は不安定で信頼性が低く、テキストエディタも遅く(プロジェクトが一定規模に達すると)、リファクタリングツールもありませんでした。さらに、コンパイラエラーは理解しにくいことが多く、コンパイラのバグや機能不足(例えば、型推論がうまくいかないなど)も依然として少なくありません。」と書かれていました。
同社はさらに、「Xcodeは当初から大幅に改善されましたが、これらの点の多くは現在でも当てはまり、ユーザー体験を多少損なっています。Appleが開発ツールの改善に注力してくれることを期待しています」と付け加えた。
開発者たちは、Test Center の初期体験に基づいて、「Swift は安定性と堅牢性を備えた、大量生産可能なアプリの開発に使用できます。当社の主力アプリである Duolingo ではすでに Swift コードが一部使用されており、今後さらに活用していく予定です」と結論付けました。
同社はまた、「すでに Objective-C でアプリを開発している場合は、Swift を使用するためだけに最初から書き直す必要はないでしょうが、Swift で新しいコンポーネントを追加することを検討できます」と推奨している。
同社は例として、PDFアセットをレンダリングするSwiftで記述されたアプリコンポーネントについて説明しました。このSwiftコンポーネントは、ラッパーメソッドを使用して既存のObjective-Cコードで使用可能です。また、同社は「メインアプリの既存のObjective-Cコンポーネントの一部をSwiftから簡単に利用できました」と述べています。
SwiftはApple Watch、IBM iPadアプリで戦略的な役割を果たしている
AppleはSwiftとObjective-Cの相互運用性を実現するという実用的なアプローチをとっており、iOS開発者とMac開発者が新しい言語を段階的に導入し、ゼロから始めることなく使いこなせるようにしているようです。Apple自身もSwiftを積極的に活用しており、次期Apple Watch向けのSwiftを使った新規開発もサポートしています。
Swift氏は、AppleとIBMの最近の提携において、モバイルビジネスユーザー向けの新しい「モバイル対応」iPadアプリの開発においても重要な役割を果たしたとされています。昨年の夏、Cook氏は「世界中の企業顧客に新しいモバイルビジネスソリューションを提供するために、IBMと提携関係を築きました。私たちは協力して、企業が従業員一人ひとりのiPhoneやiPadでビッグデータ分析のパワーにアクセスできるようにしていきます」と述べました。
「Swiftを活用し、私たちは協力して100以上のMobileFirstアプリをエンタープライズクライアントに提供します。それぞれのアプリは、業界特有のニーズやビジネスチャンスに対応しています。これはエンタープライズにとって画期的な一歩であり、Appleにとって大きな市場機会を生み出すことになります。」