Unknown

「空前絶後の」スピードで成長を見せるSwiftとは?


Swiftというプログラム言語をご存知だろうか?技術者であれば最近の話題で聞いたことがある人も多いだろうし、実際に書いてみた、書いてみる記事を見てみたという人も多いだろう。端的に言うとiPhone/iPadアプリを書くための新しく便利なプログラム言語の名前である。アメリカのサイトによると、今年「空前絶後の(Unprecedented)」成長を遂げたという。これは何故で、そして今後アプリの開発はどうなっていくとかんがえるのが良いのだろうか。

Swiftは以前使われていた「Objective-C」よりも書きやすく、問題が起こりづらい

今までiPhoneアプリケーションを作るためにはAppleが提供する「Objective-C」を書く必要があった。正確にはそれ以外の色々なやり方がその後生まれたのだが、Appleが公式で提供しており、最もパフォーマンスにすぐれ、挙動を全てコントロールできるやり方は「Objective-C」を使って書くやり方しかなかったのだ。しかし、Objective-Cは非常にハードルが高く技術者は常々悩まされてきた。

特に技術者を悩ませる要因になったのが「メモリ」の処理だった。ここでは詳しくは説明しきれないが、作り方が少しまずいとすぐにアプリが落ちたりパフォーマンスが下がったりするのだ。全てをコントロールできるがゆえに細かいところまで指定しなければいけない。プログラム言語がどんどん柔軟になっていき書くのが簡単になっていく流れに反して、「Objective-C」は非常に難しいままでハードルを高く維持していたのだ。

そこで出てきたのがSwiftである。「メモリ」の処理はシステムに任せてしまうことが出来、かつ問題が発生しないためのいくつかの仕組みが組み込まれた。その結果書き方が簡単になったのにも関わらず高速になるというメリット尽くしの言語だった。そのことが知れ渡るにつれSwiftを使って色々なことを簡単にする流れが世界中で広がり、ここまでの成長を遂げたのだ。

Swiftは途中からでも使える、一部分でも使える。しかし基本iOS8以降、iOS7では挙動が不安定

さらに多くの人が忘れがちなポイントとしてSwiftは今まで作ってあったiOSのアプリケーションに組み込むこともできる。新規開発部分のみSwiftで書きなおして、今まで作ったものはそのまま維持しておくこともできるし、全く新しいプログラムをSwiftを中心で書いて今まであったObjective-Cのライブラリを使うこともできるのだ。

もちろん、言語の統一性の問題や管理の問題はあるものの、Swiftを採用できないというのは嘘である。ただし既存で多くの部分がObjective-Cで書かれてある場合Swiftを採用するメリットがない可能性があるということだ。

また、基本的にはiOS8以降でしか使うことができないと考えたほうが良い。iOS7でも使えないことは無いのだが、多くのトラブルに巻き込まれる可能性があり、特に細かい部分をしっかりと作りこむにあたって未知の障害が増えることになる。

私も実際にSwiftのプログラムをiOS7.1の実機で動かしています。動作報告もネット上にたくさんあります。

しかし!事態はそんなに甘くありません。開発中のオイシックスのアプリケーションは前々動きませんでした。ハングするかと思ったら、強制終了して次に立ち上げるとクラッシュします。ビルドとインストールまではできました。どうやらiOS8の機能を使っている部分がいけないのではないかということで、BaseSDKを7.1にしてみます。

SwiftとiOS7

 Swiftをこれから採用しようとしている担当者/起業家が考えるべきこと

今までを踏まえ、私から言えることは以下の通りだ。

  • Swiftは素晴らしい言語であり、今まで多かったトラブルを減らす事ができる仕組みを持っている
  • 一方生まれたばかりの言語でありiOS7では大きく不安が残る
  • それでもこれから新しく0から立ち上げをするのなら、Swiftでの開発を強く薦めたい。今後数年の間iOSアプリを保守していくに当たって運用の大変さが段違いに変わるのだ。

一部分でも使えるこの素晴らしいイノベーションを理解しつつ、次に採用するかの検討をしてもらいたいと思う。

Comments

comments

shota

1984年秋田生まれ。株式会社グルーヴィーメディア代表取締役。エンジニアと経営者の2つの顔を持ち、日々奮闘しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>