「2014年プログラミング大予測」に参加しました

あけましておめでとうございます。

昨年の暮れに『日経ソフトウエア』誌の新春恒例である技術予想企画に参加しました。きっかけは特集担当記者の大森さんからアンケートへの回答依頼を頂いたことです。その大森さんに掲載許可も頂いたので、このエントリでは私が行った回答に関して書いてみたいと思います。

日経ソフトウエア 2014年 02月号 [雑誌]

日経ソフトウエア 2014年 02月号 [雑誌]

アンケートには大きく二つの設問がありました。

問1

プログラミング分野における2013年の大きなトピックは何だったとお考えかを、「なぜその技術が重要か」という理由付きで教えてください。

問1は 2013 年に関する質問であり、この一年であったプログラミング上のトピックを一つ回答しようと考えました。となるといくつか挙げられるのですが、私が 2013 年に一番ビッグウェーブを感じたのはインフラ系技術の流れでした。ということで、下記のように回答しました(メールで行った回答から少し編集してあり、雑誌本文ではさらに要約されています)。

インフラがプログラミングの対象になったこと

概念の発明自体は今年ではありませんが、Capistrano や Fabric を使ったデプロイ、Chef や Ansible を使った環境構築/設定、 serverspec を使ったインフラ設定のテスト、 Vagrant や docker に代表される仮想化技術等、システムにおけるインフラ面の自動化、およびプログラミング対象化が大きく進んだのが今年だったと思います。

(いま読み返してみると「なぜその技術が重要か」に答えていないですね……)

インフラ構築/設定がただ単に自動化されただけでなくプログラミングの対象になったこと、そしてもちろんバージョン管理や自動テストの対象になったことが、大きな流れをつくった原動力になったのではないかと考えています。Immutable Infrastructure の有用性 等のまとめは、かなりワクワクします。

問2

プログラミング分野において2014年にトレンドになりそうな技術を、「なぜその技術が重要か」という理由付きで教えてください。

難しいのが問2です。 2014 年に何が流行るかを予測するのは、私個人の能力を超えています。ただ、 Github や Twitter を比較的長期間見ていると、ひとりひとりのエンジニアが技術を発見し、興味を持ち、実際に手を動かし、 Twitter や blog に書くフィードバックサイクルが何周も回ることで良い慣性の力が働き、技術が耳目を集めるまでに至る局面を目にすることがあります。「この技術は流行るのではないか」と思える瞬間です。そのような観点から私が挙げたのは、 プログラミング言語 Go でした。ということで、下記のように回答しました(雑誌本文にも、ほぼ全文掲載されました)。

プログラミング言語 Go のキャズム超え

日本においても、 github 上においても、爆発的にユーザが増えている印象です。既存のソフトウェアが Go で再実装される例もよく目にするようになりました。言語仕様の取捨選択が面白く、低レベルレイヤーのプログラミングニーズにも応えられるので、「シンプルでよりよい C」としても需要が高まっているのではないでしょうか。ということで、 2014 年はプログラミング言語 Go が普通に選択される言語の一つに仲間入りすると考えます。

Go 言語雑感

上にも書いたのですが、 Go 言語から私が受けた第一印象は「引算の上手い設計」でした。言語設計者が Ken Thompson や Rob Pike なので考えてみれば当たり前なのですが、「あれもできる、これもできる」というように言語仕様や機能を詰め込むのではなく、不要だと思えるもの、シンプルな代替手段があるものは言語から外しているところに筋の良さを感じました。結果として言語仕様が小さくシンプルになり、学ぶことも書くことも容易になっています。まさに C と Unix を広め育ててきた人たちの手による現代的なシステムプログラミング言語になっているという印象を受けました。

「キャズム超え」という表現は悩んだ末のものでした。なぜなら私の観測範囲では Go 言語はもう十分流行していたからです。Go 言語のハッカソンは既に頻繁に行われており、去年の Advent Calendar も真っ先に埋まったのは Go Advent Calendar 2013 だったと記憶しています。このため表現として「2014 に Go が流行る」ではちょっと弱いかなと感じました。ちょうどその頃に読んだ ukai さんのエントリも、 Go 強しの印象を深めました。 そこで、どうせ未来(2014 年)に起こることの予想なのだから、ここは大きく出て「キャズムを超える」と言ってしまえば良いのでは、という考えに至り、上記の表現になりました。キャズムを超えるとは「普通に選択される言語の一つに仲間入りすること」である、と考えました。回答したときには、まさか本紙記事 2014 年大予測編の一番最初に登場することになるとは知らずに……

などと、ちょっと「キャズム超え」という予測が強気すぎたかな、と不安になったりもしてしているのですが、そもそも将来の予測が無茶な話なので、ここはアラン・ケイの「未来を予測する最善の方法は、自らそれを創りだすことである」に倣って、 Go 言語にキャズムを超えさせれば良いのではないか、と自暴自棄にも発想を逆転させるに至りました。とまあ冗談半分ではありますが、私が今年学ぶ言語は Go 言語にして、年末に惨めな思いをしないように一年学びつつ何かアウトプットできればいいなと思います。Go 言語の筋の良さ、注目の集め方は間違いないところだと思っています。

感想

そもそもの発端は突然の依頼だったのですが、 2013, 14 年を通して、プログラミング面での流れに関して考える良い機会になりました。また今年の末も回答できるといいなと思います。特集自体もうまく視点をまとめて綺麗に書かれていて、やはりプロの記者は文章が上手いなと感じました。

このエントリを読んで他の回答者の方の予測が気になったり、大森さんによる記事全文を読んでみたいという方は、是非『日経ソフトウエア』をお手にとって頂ければと思います。 @kmizu さんの熱い特別寄稿も読めます。

日経ソフトウエア 2014年 02月号 [雑誌]

日経ソフトウエア 2014年 02月号 [雑誌]

では、本年もよろしくお願いいたします。