アルファブロガー
小飼 弾氏(@dankogai)
1969年生まれ。カリフォルニア大学バークレー校を経てオン・ザ・エッヂ(のちのライブドア)へ入社し、その後、取締役就任。96年にディーエイエヌを設立し、現職に。読書家としても知られ、ブログ「404 Blog Not Found」での書評は毎回、大きな話題を集めることでも有名。ニコニコ生放送にて、「プログラマー脳で今時のニュースを一刀両断する」放送を行っている。共著書、著書、多数
業界で名の知れたプログラマーは、今年の上半期に何を学んでいたのか? 「同業者が役に立ったものは、自分にも役に立つはず」という仮説を基に、彼らの学びlogから、2014年上半期の流れを振り返り、今後の動向を予想してみよう!
アルファブロガー
小飼 弾氏(@dankogai)
1969年生まれ。カリフォルニア大学バークレー校を経てオン・ザ・エッヂ(のちのライブドア)へ入社し、その後、取締役就任。96年にディーエイエヌを設立し、現職に。読書家としても知られ、ブログ「404 Blog Not Found」での書評は毎回、大きな話題を集めることでも有名。ニコニコ生放送にて、「プログラマー脳で今時のニュースを一刀両断する」放送を行っている。共著書、著書、多数
日本時間の2014年6月3日、WWDCの席上でAppleが新言語『Swift』を発表した。そしてその翌日の6月4日、さっそくSwiftの技術解説をブログに載せ、話題になったエンジニアがいる。あの小飼弾氏である。
自らを“言語オタク”と呼び、これまでありとあらゆる言語を試して、触ってきた彼は、なぜ即座にSwiftをHackしたくなったのだろう。
「2014年前半のインパクトはもう圧倒的にSwiftの登場。これは間違いなく普及する」と小飼氏が断言する理由は、次の5つに集約されるそうだ。
【1】既存環境の言語との高い互換性
【2】他の言語の“負の遺産”を捨てている
【3】優れたリファレンス
【4】iOSエンジニアをアセンブラ領域まで進出させる可能性
【5】クローズドから始めてオープンへというAppleの戦略意図を感じる
さっそく、小飼氏によるSwift解説に耳を傾けてみよう。
―― いろんな情報発信を見ると、小飼さんはSwiftを絶賛されていますね。
小飼 こんなに楽しんでコードを書いているのは久しぶりですよ。Perl6以来かな。これは確実に普及すると思いますよ。
―― なぜですか?
小飼 まず、iOSのアプリを書く人はSwiftにつき合わざるを得ないわけですが、つき合い始めてみると他の言語でプログラミングするのがとてもうっとうしくなる。SwiftはObjective-Cのライブラリが全部使えるのはもちろん、Cとの連携も非常に良くできています。
―― PerlやRubyとの連携はどうでしょう?
小飼 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は、まさに「明日の当たり前」を作った感じです。
―― そもそも新しい言語が普及するにあたり、障害になるのは何だとお考えですか?
小飼 過去の遺産をどう活用していくかというのが、新言語のぶち当たる課題なのですが、今までは言語の方で、「昔の書き方もできるようにしましょう」となっていました。C++やObjective-Cがまさにそう。
―― Swiftの場合はそうした課題をクリアしている?
小飼 Swiftはまったく思想が違います。ブリッジを書けば他言語の機能にアクセスできるのが大きな特長の1つです。つまり、古い言語で培われた遺産を活用するにあたって、古い言語で失敗だったとされる書き方を、新しい言語に持ち込まなくていいわけです。
―― 既存のプログラム言語の“負の遺産”がない?
小飼 ええ。もちろん今後、Swift自体が普及したら、また負の遺産を抱えることもあり得ます。が、その場合でもブリッジ形式ですから古いものを捨てられるんです。
しかも“型の宣言”などの名前も似ているんです。これも普及を狙う言語としては重要なことで、他の言語を書いている人がピンとくるような作りになっているんです。例えばHaskellの型の宣言は矢印(=->)で返り値まで含めて左から右。対してJavaではCと同じく右から左。つまり、Cの負の遺産をそのまま受け継いでいます。
―― Swiftがリリースされてすぐに試されたとのことですが、参考にしたのは?
小飼 iBooksにあるSwiftの公式ガイドだけです。リリースされたばかりの言語でこんなにちゃんとした目録があるっていうのはうれしいですよね。
ただライブラリのリファレンスはないので、自作しています。実際にコードを書いて、調べてアップするといった感じで。
―― Cとの互換性があるということは、Swiftではより低レイヤーの処理もできるようになりますね
小飼 そう、そこも魅力。おそらくOSも書けるのではないかと思っています。ただインラインアセンブラへの直アクセスだけは今まだないので、そこだけはちょっとネックです。でも、いつでも載せられるようになっているのは(@asmnameの存在などからも)明らかなので、今後はそこにも期待しています。
―― なるほど。今まではiOSエンジニアはフロントエンドにできることに偏りがちでしたが、これでアセンブラに近い分野まで進出できるようになったわけですね。
小飼 ええ。
―― 普及する言語はOSSである印象が強いですが、Swiftはまだクローズドですよね?
小飼 最近は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テクノロジーなどを扱ったハッカーたちによるトークが盛りだくさんで、誰もが楽しめる内容になっている。
取材・文/浦野孝嗣
NEW!
タグ