キャリアVol.238

「これは間違いなく普及する」小飼弾、Swift愛を語る【2014年前半のインプットlog】

業界で名の知れたプログラマーは、今年の上半期に何を学んでいたのか? 「同業者が役に立ったものは、自分にも役に立つはず」という仮説を基に、彼らの学びlogから、2014年上半期の流れを振り返り、今後の動向を予想してみよう!

アルファブロガー 小飼 弾氏(@dankogai1969年生まれ。カリフォルニア大学バークレー校を経てオン・ザ・エッヂ(のちのライブドア)へ入社し、その後、取締役就任。96年にディーエイエヌを設立し、現職に。読書家としても知られ、ブログ「404 Blog Not Found」での書評は毎回、大きな話題を集めることでも有名。共著書、著書、多数

日本時間の2014年6月3日、WWDCの席上でAppleが新言語『Swift』を発表した。そしてその翌日の6月4日、さっそくSwiftの技術解説をブログに載せ、話題になったエンジニアがいる。あの小飼弾氏である。

why(matters(Swift) > matters(Yosemite + iOS[8])) -404 Blog Not Found

自らを“言語オタク”と呼び、これまでありとあらゆる言語を試して、触ってきた彼は、なぜ即座にSwiftをHackしたくなったのだろう。

「2014年前半のインパクトはもう圧倒的にSwiftの登場。これは間違いなく普及する」と小飼氏が断言する理由は、次の5つに集約されるそうだ。

【1】既存環境の言語との高い互換性
【2】他の言語の“負の遺産”を捨てている
【3】優れたリファレンス
【4】iOSエンジニアをアセンブラ領域まで進出させる可能性
【5】クローズドから始めてオープンへというAppleの戦略意図を感じる

さっそく、小飼氏によるSwift解説に耳を傾けてみよう。

【1】他の言語との高い互換性

―― いろんな情報発信を見ると、小飼さんはSwiftを絶賛されていますね。

小飼 こんなに楽しんでコードを書いているのは久しぶりですよ。Perl6以来かな。これは確実に普及すると思いますよ。

―― なぜですか?

小飼 まず、iOSのアプリを書く人はSwiftにつき合わざるを得ないわけですが、つき合い始めてみると他の言語でプログラミングするのがとてもうっとうしくなる。SwiftはObjective-Cのライブラリが全部使えるのはもちろん、Cとの連携も非常に良くできています。

―― PerlやRubyとの連携はどうでしょう?

Swiftのライブラリが並ぶ、小飼氏のGitHubアカウント

小飼 PerlでもRubyでも関数の名前はlibc(リブシー)のままですけど、アクセスの方法はそれぞれの言語の流儀になっていますよね。

でも、Swiftだと、Cの構造体は「これはCの構造体ですよ」というふうな書き方になっているんです。

Cの構造体は必ずUnsafePointerという型になっていますが、何をポイントするのかが情報として含まれている。UnsafePointerからSwiftのオブジェクトにするという手間はかかりますが、そんなやり方を広めるためにもGitHubで公開しています。

―― 小飼さんはGitHub上に「swift-perl」や「swift-json」など、すでに12個のSwiftのライブラリをアップしていますね。

小飼 はい。iOSのアプリケーションを作ってもいいのですが、僕はUIづくりが不得手なので。どちらかといえばライブラリを作っていく方が楽しいですね。

自分で必要とするもの、誰かが必要としているだろうもの、また、Appleが作らないだろうなぁというライブラリを作ってアップしています。例えば、Appleは複素数演算のライブラリはきっとリリースしないだろうと思って。

―― 「だから俺がやる」と?

小飼 ええ。それに自分で演算子を実装するにはどうしたらいいのか、というすごくいい勉強になりました。すごくすんなり書けた。「Swiftいいね」と思うようになったのも、それを書いてからかな。こんなにすんなり書けるとは思わなかったので。

どんな言語を手掛けた人でも、Swiftを試すと、どこかで「今まで書いたことあるような気がする」と感じると思います。C++の果たせなかった夢をSwiftが果たすかもしれない。Swiftは、まさに「明日の当たり前」を作った感じです。

【2】他の言語の“負の遺産”を捨てている

―― そもそも新しい言語が普及するにあたり、障害になるのは何だとお考えですか?

小飼 過去の遺産をどう活用していくかというのが、新言語のぶち当たる課題なのですが、今までは言語の方で、「昔の書き方もできるようにしましょう」となっていました。C++やObjective-Cがまさにそう。

―― Swiftの場合はそうした課題をクリアしている?

小飼 Swiftはまったく思想が違います。ブリッジを書けば他言語の機能にアクセスできるのが大きな特長の1つです。つまり、古い言語で培われた遺産を活用するにあたって、古い言語で失敗だったとされる書き方を、新しい言語に持ち込まなくていいわけです。
―― 既存のプログラム言語の“負の遺産”がない?

小飼 ええ。もちろん今後、Swift自体が普及したら、また負の遺産を抱えることもあり得ます。が、その場合でもブリッジ形式ですから古いものを捨てられるんです。

しかも“型の宣言”などの名前も似ているんです。これも普及を狙う言語としては重要なことで、他の言語を書いている人がピンとくるような作りになっているんです。例えばHaskellの型の宣言は矢印(=->)で返り値まで含めて左から右。対してJavaではCと同じく右から左。つまり、Cの負の遺産をそのまま受け継いでいます。

【3】優れたリファレンス

小飼氏が参考にしたというSwiftの公式ガイド

―― Swiftがリリースされてすぐに試されたとのことですが、参考にしたのは?

小飼 iBooksにあるSwiftの公式ガイドだけです。リリースされたばかりの言語でこんなにちゃんとした目録があるっていうのはうれしいですよね。

ただライブラリのリファレンスはないので、自作しています。実際にコードを書いて、調べてアップするといった感じで。

【4】iOSエンジニアをアセンブラ領域まで進出させる可能性

―― Cとの互換性があるということは、Swiftではより低レイヤーの処理もできるようになりますね

小飼 そう、そこも魅力。おそらくOSも書けるのではないかと思っています。ただインラインアセンブラへの直アクセスだけは今まだないので、そこだけはちょっとネックです。でも、いつでも載せられるようになっているのは(@asmnameの存在などからも)明らかなので、今後はそこにも期待しています。

―― なるほど。今まではiOSエンジニアはフロントエンドにできることに偏りがちでしたが、これでアセンブラに近い分野まで進出できるようになったわけですね。

小飼 ええ。

―― 普及する言語はOSSである印象が強いですが、Swiftはまだクローズドですよね?

【5】クローズドから始めてオープンへというAppleの戦略意図を感じる

小飼 最近はGoogleが出したGoも注目を集めていますが、あれにしても3年くらいはかかっています。それに、普及した言語はたいていOSSですよね。今ではJavaもそう。しかしSwiftは今のところ違います。OSSではないにも関わらずこれだけ注目されて、使われている。

一般のプログラマーたちはこれから知るわけですよ、このインパクトの大きさを。普通、生まれたばかりのプログラム言語がここまで話題になることはないんです。Macを持っている必要はありますが、つい最近、ディベロッパー登録をしていない人でも試せるようになりました。

Xcode 4のベータ版はディベロッパー登録していない人でも試せるじゃないですか。この時点で人気言語ランキングに名前が出てくるくらいですから、ある意味異常な言語なんです。

―― いずれはOSS化しないのでしょうか?

小飼 OSS化は考えていると思いますよ。ただ、OSSではなくってクローズドな形でリリースしたことが、普及を助けているということもあるんですよ。

今、Swiftはヨチヨチ歩き。足腰が立つようになって自分で歩けるようになったら外に出すというアプローチですよね。まだ未熟なまま外に出しちゃって、それでつぶれちゃったということが多いこの業界なのに、言語がオープンソースであることをもてはやしすぎたのかな、という反省はあります。

だから僕とかは、すごく耳が痛いんですよ。身につまされる思いですよ。「お前のやってきたことは正しくなかった」と言われているようで。このあたりは詳しくYAPC::Asia Tokyo 2014で続きを話したいと思います。

―― クローズドだから改善できる?

小飼 負の遺産をためにくいようにしているのも、β版だからできるんでしょうね。普及した途端に負の遺産がたまり始めるのは分かっていて、正式リリースの前に負の遺産を出し切っておこうという姿勢にはかなり心を打たれるものがあります。

―― 完璧主義のAppleらしくもあり、逆にらしくもない点でもある?

小飼 かつて超独善的企業だったAppleが、最近はちょっと変わってきていると思います。なんだ、このきれいなジャイアンは、みたいな(笑)。

小飼氏独自の言語習得法とは?

―― ちなみに、新しい言語を習得する時の小飼さん流の試し方ってあるんですか?

小飼 僕は、とにかく叩いて、言語リファレンスを見ながら調べる、という感じですね。Xcodeもよくできていて、実は今どんな機能があるかというのもXcode自体が語ってくれるというのがあるんですよね。補完画面で、今どんな機能があるかを教えてくれる。

―― なるほど。まずはどういったものから作り始めるんですか?

小飼 今はその言語にないけれども、他ではもうある、というものに、すごく悔しさを感じるんですよ。その悔しさをバネにして、「この言語でもできる」というのを試したくなる。

例えば、まつもとゆきひろさんが「無限リスト」が欲しい欲しい、と言ってたんですよ。で、どうやればPerlやJavaScriptで作れるかを僕は示しました。Haskellの組込み実装よりもメモリにやさしいものを作りました。

―― ご自身の知っている言語との共通点から入っていくイメージですか?

「作り手の意図」を感じ取ることでプログラミングがスムーズに行く、と小飼氏

小飼 この言語で「どう書くか?」ではなく、「どう書かせたいのか?」を知りたいですよね。

―― 作り手側の意図ですか?

小飼 実際、作り手の思想に沿ったものはスムーズです。なるほど、こういうふうに書かせたいのかと実感できる。

例えば、薪を割る際に木目に沿ってナタを入れればすごくきれいに割れますよね? 木目に逆らっちゃうときれいに割れない。それと同じことが、ありとあらゆる言語にも言えます。

―― 今後、ライブラリの拡充以外にSwiftでどんな取り組みを考えていますか?

小飼 今のところ、SwiftはAppleのプラットフォーム上で動くアプリ開発を想定してリリースされた言語だと思いますが、いずれはSwiftでサーバ向けのプログラムを書こうと思っています。まだ、リリースするかどうかは分からないですが。

SwiftはAppleのものなので、リンクするライブラリはObjective-Cのものですよね。なぜ僕がObjective-Cに入れなかったかというと、やたらメソッド名が長いんですよ。Swiftはこの流儀を変えられるので、単語を省略しないで表記するという。どっちにも受け入れられるものを作りたいなと思っています。

小飼氏も参加する『YAPC::Asia Tokyo 2014』は8/28~30開催
小飼氏も参加する「Perl」にまつわるプログラミングカンファレンス『YAPC::Asia Tokyo 2014』が8月28日~30日、慶應義塾日吉キャンパスで開催される。プログラミング言語のカンファレンスでは世界最大規模のイベントだ。Perlに限らず、Webテクノロジーなどを扱ったハッカーたちによるトークが盛りだくさんで、誰もが楽しめる内容になっている。

取材・文/浦野孝嗣

この記事が気に入ったらいいね!しよう

エンジニアtypeの最新情報をお届けします

RELATED POSTS関連記事

JOB BOARD編集部おすすめ求人

この記事に関連する求人・キャリア特集


記事検索

サイトマップ



株式会社富士通エフサス【ポジションマッチ登録】 オープンポジション

日本マイクロソフト株式会社 【マイクロソフトサポートエンジニア】トップ…

日本マイクロソフト株式会社【ポジションマッチ登録】 オープンポジション

アクセンチュア株式会社【ポジションマッチ登録】 オープンポジション

株式会社コロプラ【ポジションマッチ登録】 オープンポジション

サッポロビール株式会社 【生産技術担当】サッポロブランドを生産技術から…

山下ゴム株式会社 生産技術【未経験/第二新卒歓迎】万全の研修&サポー…

株式会社スタッフサービス エンジニアリング事業本部(リクルートグループ…

イーター国際核融合エネルギー機構 技術職/世界35ヶ国が参加する国際プロジ…

サーモス株式会社 オーディオ機器開発/世界120カ国以上に展開/年間休…

SIerって本当にヤバいの? ひろゆきが語る、業界ごと沈まな...

英文メールでよく見る「略語」の意味は? 海外エンジニアに聞い...

「マークアップエンジニア不要論」は本当か? えふしんさんに聞...

フリーランスエンジニアに聞く、最速で「時給5000円以上」人...

及川卓也×澤円が語る、エンジニアの成長に必要な条件「ぼんやり...