書いて覚えるSwift入門

第7回 Swiftが愛される理由

この記事を読むのに必要な時間:およそ 2.5 分

WWDC15で得られたものは何か?

前回と今回の間に,WWDC15がありました注1)。素人的には,「見るべきものがなかった」前回以上に「つまらない」WWDCだったかもしれません。前回同様,新ハードウェアの発表はゼロ。Mac OS Xと iOSのバージョンが1つずつ上がるのはいつもどおり。しかもOS X v10.11の名前El Captanは,Mac OS Xの名前の由来であるYosemiteの中の地名。命名的には,Mac OS Xv10.5 LeopardとMac OS X v10.6 Snow Leopardより変化に乏しいと言えなくもありません。

その「素人的にはつまらなかった」前回が,「玄人的にはサイコー」だったのは,新言語Swiftの発表に尽きるでしょう。それからわずか1年で,Stack OverflowのDeveloper Surveyで「最も愛される開発言語図1)」の座を射止めました

図1 Stack OverflowのDeveloper Surveyより

図1 Stack OverflowのDeveloper Surveyより

しかし,現時点において,Swiftで開発できるソフトウェアはMac OS XとiOSという,わずか2種類のプラットフォームのみ。「Watch OSもあるではないか」という意見もありますが,Apple WatchがiPhoneを必須とするのと同様,Watch OSが現時点でiOSを必須とする以上,ひいき目に見ても対象プラットフォームは3ではなく2.5といったところでしょう。しかもすべてApple製ハードウェア上でしか動かない。あくまで現状は「Apple帝国公用語」であって,「ギークの共通言語」ではないのです。

Appleは,それが半年後に変わることを公約しました。

Swiftは2015年末にオープンソースソフトウェアになるのです。

注1)
この連載は,Software Design 2015年8月号に掲載されたものです。

Appleの公約

WWDC15でAppleが公約したのは,次のとおりです

  • SwiftのソースコードがOSI認可のpermissiveなライセンスのもとで公開されること
  • Apple自身がMac OS X,iOSに加えLinuxポートを寄贈する所存であること
  • ソースコードにはSwiftコンパイラおよび標準ライブラリが含まれていること

本連載第0回で,筆者はこう書きました。

口上だけみると,SwiftはiOS/OS Xアプリケーション開発専用に見えますが,専用にしておくにはもったいないほどよくできた言語で,学べば学ぶほど汎用向けの言語であることが明らかになってきます。Swiftをオープンソース化するつもりがあるかをAppleはつまびらかにしていませんが,同社のオープンソース戦略,とくにLLVMへのコミットメントを考えるとその可能性は低くないと筆者は考えています

予言というより願望だったのですが,それが成就したといってもよいでしょう―このSwiftの沿革は,Objective-Cのそれと比べると実に興味深い。

Back to the Future

Swiftの登場まで「Apple帝国公用語」だったObjective-Cは,

  • クロスプラットフォームな
  • C言語上位互換の
  • オブジェクト指向言語

として誕生しましたが,

  • NextSTEPで採用された以外は,(gccに標準サポートされているにもかかわらず)他プラットフォームではあまり採用されず
  • NeXT社のAppleによる買収―という形をとった,Steve Jobsによる「大政奉還」―にともなって,Mac OS Xの事実上の標準開発言語となり
  • それがiPhone OS,後のiOSにも引き継がれ
  • 事実上のAppleプラットフォーム専用言語

となって今にいたっているわけですが,Swiftは

  • Mac OS XおよびiOS専用言語として生まれ
  • 事実上どころか公式のAppleプラットフォーム第1言語(Lingua Prima)となった後
  • オープンソース化とクロスプラットフォーム化がなされる

というわけでObjective-Cの歴史を逆再生しているようです。それも20倍速ぐらいで。

Appleはなぜそうしたのでしょう?

後出しジャンケンは勝ってなんぼ

21世紀において,電脳言語というのは,はじめからクロスプラットフォームかつオープンソースとして公開されるのが常識になってきています。Mozilla Foundationが公開したRustしかり,Googleが公開したGoしかり。PerlやPythonやRubyは前世紀どころか「オープンソース」という言葉が生まれる前からそうでしたし,それらの言語の成功が,「言語はオープンソースが当たり前」という現況の原動力になったのはたしかでしょう。

しかし悲しいかな,言語が普及するにあたって最も重要なのはオープンソースであることではないのです。RustとGoを比較してもそれはわかります。言語としてより先進的なのはどう見てもRustで,SwiftもRustから多くの特長を取り入れています。しかしどちらがより使われているかといえば,Goのほうでしょう。なぜか?

ライフワーク(life work)ならぬ「ライスワーク(rice work)」,つまりその言語を学ぶことで日々の糧を得ることがより容易だからです。普及した言語におよそ例外は見当たりません。COBOLとFORTRANの時代から,数多の言語が群雄割拠する現在に至るまで。思い起こせば,Java,正確にはJavaの生みの親であるSun Microsystems(以降Sun略記)による標準のJDKもオープンソース化されたのは,1995年から11年後の2006年。しかもJDKの「ほとんど」であってすべてではありませんでした。

言語を普及させるのに,オープンソースであることは必須ではないのです。

それではなぜ,Appleはオープンソース化に踏み切ることにしたのでしょうか?

主導権を握り続けるためだ,と筆者は考えています。

Javaの事例は,格好の反面教師となっています。SunがJDK―の全部ではなく大部分―をオープンソース化した2006年,Sunはかつて誇っていた主導権をさまざまな分野で失っていました。サーバはLinuxに押され,もともとJavaが狙っていたシンクライアントの分野は分野そのものがテイクオフしたとは言い切れず……Javaのオープンソース化は同社の起死回生の一手(の一環)でしたが,結局同社はそれから4年後の2010年,Oracleによって買収されたのは読者のみなさんもご存じのとおりです。

そのJavaの本来の目的に最も忠実なのは,Androidでしょう。Javaの深慮遠謀はスマートフォンによって花開いたわけですが,その果実がもたらされる前に生みの親はなくなってしまいました。その「最も成功したJava」であるAndroidのJavaが,「それは本物のJavaじゃない,勝手に使うな」とばかりにSunを買収したOracleに訴えられているにいたってはもう何がなんだかです。

食えなきゃ誰も食ってくれない。

オープンでなければ,誰も食いつづけてくれない。

よって,まずは食える言語としての地位を確立しておき,まだ主導権がある内にオープンにする。

それが,Swiftに対するAppleの基本戦略だったと弾言できます。

歴史の教訓によく学んだ,悪く言えば見事な後出しジャンケンと言えるでしょう。

それだけに,負けるわけにはいかない。

言語の普及競争において,Swiftほど高いオッズを持つ言語が見当たりません。

著者プロフィール

小飼弾(こがいだん)

1969年生まれ,東京都出身。元ライブドア取締役の肩書きよりも,最近はPokemon GOのガチトレーナーのほうが有名になりつつある……かもしれない永遠のエンジニアオヤジ。

活躍の場はIT業界だけでなく,サブカルからアカデミックまで多方面にわたり,ネットからの情報発信は気の向くまま毎日毎秒! https://twitter.com/dankogai,ニコニコチャンネルは,http://ch.nicovideo.jp/dankogai,blogはhttp://blog.livedoor.jp/dankogai/

当社刊行書籍は『小飼弾のアルファギークに逢ってきた』『小飼弾のコードなエッセイ』など。他にも著書多数。

コメント

コメントの記入