適当勝手な技術トレンド予測 (2014年末版)

tl;dr

去年も言われたので先に書いておきます。今年は(も)そんなに有用なエントリでもなく、脊髄反射で「1年後こんな感じかなー」という予測を、思いつきなテーマでつらつら書いてるだけです。

きっと1年後には、「あー外してるわー」とかとか自分で振り返れるので楽しそうですよねー、というのが主な目的なので、あんまりまじめに受け取らないでくださいなにとぞよろしくおねがいします。

はじめに (駄文且つ長め)

ということで Merry Christmas! GREE Advent Calendar 25日目は、グリー株式会社でCTOをしておりますふじもとがお送りします。今年も育児休暇からオンラインゲーム開発、OpenStackまで、多種多様な24のエントリーがある中で、最後のエントリーをどんな内容にしたものか、と悩んでいたらはや12月も23日になってしまいまして、こんな素敵な冬晴れの日 (2014/12/23 2:50pm@Tokyo)に、オフィスにこもって慌てて記事を書いているわけですが、みなさまいかがお過ごしでしょうか。

思えば去年(2013年)も、同じ日にAdvent Calendarの25日目のエントリを書いて過ごしてましたし、来年もきっと23日に書くんだろうなぁ、とつらつらとテーマを考えていたのですが、おかげさまでこの1年はCTOネタで対談をさせていただいたりおすしをごちそうになったりWeb+DB Pressで特集記事を書かせていただいたり、それ以外にもあれこれご相談をいただいたり、といった一年でした...。ので、さすがにちょっと違うテーマにしてみようと思う次第です (掘り下げればもっともっと難しくて面白い話はたくさんあるのですが、文字に起こそうとするとどうしても話が抽象的になりがちで、ちょっと難しいのですよね)。

あ、Web+DB Press Vol.84は2014/12/23発売です、みなさまぜひ!

それはさておき、ちょっとCTOネタはお知り合いのかたとお話、ということが多くてどうしても馴れ合い感が出てしまうなー、などと思っていたりします...と思ったけどそれは筆者 (ふじもと) の交友範囲が狭すぎるだけですね、あぁいつの日か日本経済新聞で交遊抄とかを書ける日がくるのでしょうか。ま、来ませんね。

それはどうでもよく、多分10年前くらいの自分が去年の自分の記事とかを見たら「けっ、先輩面してえらそうに語ってんじゃねーよ」とか思っていたと思うわけですすいません。そんなわたくし、ふじもとは2014/12現在35歳なわけですが、さすがに25歳のときよりは成長しているよなー、と思いたい、強く思いたいのです。が、未だに得意ではないことは多々ありまして、その一つが(技術トレンドの)未来予測です。当然未来のことなんて正確に分かるわけはないのですが、それにしてもやっぱりこれは難しいです。が、こういったところこそ、歴史の勉強と知識、経験などなどが活きる分野かなと思うので、25歳の自分よりはうまくやれる、はず、と信じていくつか気分でテーマを取り上げて書いてみます。

なお、テーマには特に網羅性もないですし、言うまでもなく正確性を保証するものも全くもってございません。ので、的外れでも文句は受け付けません、だってそもそもがネタみたいなものですし:) でもきっと来年同じくここでまたAdvent Calendarを担当させていただくことができたらきっと反省会します。

あ、上記の「的外れでも...」みたいな部分は、Slashdot (JP)の国民投票注意書きを参考にしてます。Slashdot (JP)も長いサービスですね、2001年からなので、もう15年近くになりますいつも大変お世話になっております。などと歴史に思いを馳せながら、以下つらつらと書いてみます。

Native Application or Browser Application?

いきなりめんどそうなトピックですが、個人的結論から言えば来年の今頃も確実にネイティブアプリケーション全盛なのだと思うのです。それは全然良いですし、正直ユーザのみなさまからしたら (最近はPeopleっていうのが流行らしいですね!)、アプリケーションがネイティブだろうがブラウザだろうが知ったことではないので、「どっちを選ぶか」ということにあんまり拘りすぎても仕方がないのだとは思っています。ので、それぞれのプラットフォームでしか提供できない体験、というのを前提に、必要な、適切なほうを選べば良いというだけの話だと言えます。例えばエンターテインメントコンテンツ、というかゲームを作ろうと思ったら、やはり今はネイティブアプリケーションとして提供することが多いでしょうし、何らかの事情でUDPで独自プロトコルの通信をしようと思ったらネイティブアプリケーション以外に選択肢はありません (ので、ぼくもみんなに負けないようひっそりと習作を作っていたりするわけです)。

ですが、なのですが、もうこれはもうすぐ(02/17、繰り返しますが02/17に)36歳になろうというまぁまぁいい年の老害な話なのかもしれませんが、やっぱりHTTPが定義され、URLがあって、HTML,特にHyperlinkがあって、そこからさらに数多くの仕様、実装が生まれ、World Wide Webが世界を変えていくんだー、という時代とともに成長してきた身としては、それらのインターフェースとなるウェブブラウザはやっぱり大好きなんですよね。というか、最近「はいぱーりんく」って久しく言ってないな、と思いました、どうでもいいですが。

ので、どちらかというとこれは、特にスマートフォン/タブレットにおけるブラウザがどういう存在になっていくのか、というテーマと考えたほうがいいのかも、と思っています。

これについては、さすがにブラウザがなくなるよね、という意見はあまり聞きませんが、細部に入ると多くのかたが多くの意見をお持ちなんだろうなー、絶対議論収束しなそうだよなー、とか思っています。というかそんなことつらつら考えてる暇があったらコードの1行でも書いたほうがいいよなー、と考えつつ来年の自分に向けて手短かに書くと、なんとなく今多くのかたが思っているネイティブアプリケーションと、ウェブアプリケーションの境目は、この1年くらいで徐々に曖昧になっていくんじゃないかとは思っています。

こう思う背景には、一応の理由があります。一番大きいのがブラウザとOSのインテグレーションの進行で、直近ではFirefox OSやChrome OSの進歩がそれにあたります。これに加えて発生してくるだろう事象として、例えばウェブアプリケーションは今容易にChrome Web Storeに登録することができますが、これをAndroidのアプリと同じようにスマートフォンの画面に並ぶ、とかがありそうです。今現在のFirefox OSやChrome OSの振る舞いを考えると、これはそれほどおかしなことではありません (これはAndroid / Chromeに限定されてしまう話ですが)。

また、そうなると例えば今はできないウェブアプリケーション単位でのpush通知もできるようになるかもしれませんし、バックグラウンドでの動作やオフラインでの振る舞いをサポートする機能も充実していくと思われます。こうなると、アプリケーションのユーザにとってはそれがネイティブアプリケーションなのか、ブラウザアプリケーションなのかは、いままで以上に関係のない話になってくると想定されます。

さらには、ブラウザでの振る舞いの幅を広げるWebSocketやWebRTC、そしてWebGLをサポートするブラウザの増加と、端末のパフォーマンス向上により、いわゆるウェブアプリケーションで出来ることは広がっていくことにより、例えば今現在はネイティブアプリケーションでしか出来ないような体験を、ウェブアプリケーションで提供することができるようになってくるでしょう (NaClはちょっと反則かもですが)。

ただ、大事なのは「実現できる」ことと、それが最適な選択であることは明確に異なるということで、前述の通り、その辺りの変化をふまえて、どういったプラットフォームがそのアプリケーションのユーザにとって最適か、ということを考えて選択することが重要であることは、きっと忘れてはいけないことなのだと思います。が、選択肢が増えるのは嬉しいことですね。

などと好き勝手に書いていますが、個人的にはこういった状況の変化が起こるには数年、3年から5年の時間は(利用端末のシフトまで含めるともっと)かかるのではないかとは思っているので、来年の今頃はまだまだそういった方向にいくかなー、というくらいの状況かもしれません (全然違うかもしれませんが)。

ただ、なんだか悩むというか難しいな、と思うのはこのあたりは多分まだ全然標準の技術というより、特定のブラウザやOSの実装に依存して進むので、そのあたりが一般的なものになるといいな、と思うところです。いま現状だと、Firefox OSはFirefox OSで、Google ChromeはChrome Appとして様々な機能を、あるいはChrome OS提供していますし、Windowsは、実は遥か昔からある”Active Desktop”を引き継いで (個人的にはこれ結構好きだったんですけどね)、Windows Sidebarとかになってたりしますが、いずれにしてもブラウザとOSの境目、ひいてはブラウザアプリケーションとネイティブアプリケーションの境界は曖昧になっていくというのは高い確率で起こり得ることかと考えています (iOSはちょっと読み切れませんが...)。でもって、これらの仕様が標準になっていくにはもっと時間がかかるんだろうなーとは思いますが、やはり同じく3-5年くらいでまた違った世界が見られるといいなと思います。

最後に念のため追記させていただくと、ネイティブアプリケーションとブラウザアプリケーション、どちらかがさいこう!こっちでいくべき!というよりも、それぞれに適したサービス、というのはあると思うので、最適な選択ができるようにしておきたいです、というようなことだとご理解ください。

MySQL or PostgreSQL?

100%主観に基づいた感想ですが、この1年は周りで少しずつですがPostgreSQLを利用するひとが増えてきたような気がします。気がするだけかもしれませんし、HerokuのデフォルトがPostgreSQLっていうだけなのかもしれません。

こういうケースはGoogle Trendsが結構参考になります、ということで:

blog-20141225-fig-2
Data Source: Google Trends (www.google.com/trends)

を見てみると、まだまだMySQLが強そうではあります、が、多少ダウントレンドなのは否めないです。PostgreSQL (と、MariaDB) だけを抜き出してみると:

blog-20141225-fig-1
Data Source: Google Trends (www.google.com/trends)

なんだかとりあえず底はうっていてます。

と、わざわざ取り上げておいてなんですが、RDBMSのように重要度が高く、且つリプレースにコストがかかるものは、急激には変化が起きないことはほぼ確実で、来年の今頃でもPostgreSQL、MariaDBは徐々にそのシェアをのばすと思いますが、まぁ相変わらずMySQLが多いね、という状況にはなろうかと思います。個人的には、MySQLはコードを読んだりパッチを書いていたりしていた関係で、振る舞いに関しても親しみがあるので (いやでももう大分前ですが)、どの実装も順当に進化するといいなと願う次第です、あ、だったらお前がコミットしろって話ですよねすみません。

とりあえず、この領域に関しては、いきなりライセンスが変わる、などの大事件が起きないければ現状が線形に伸びるに違いないです。

脆弱性がたくさん発見された1年でした

今年は、Heartbleedに始まり、直近でもgitの脆弱性ntpdの脆弱性、そしてLinuxのlocal exploitと、身近、且つ、影響の大きい脆弱性が多く発見された年でした。そして、CVEの番号が4桁では足りなくなりそうなので、来年から6桁になるとかならないとか、ということで、年ごとのCVEの件数を見てみても(http://www.cvedetails.com/browse-by-date.php)、この1年での件数は突出していることが分かります。

そもそもソフトウェアに脆弱性が「絶対ない」、あるいは「今年これだけ見つかったからもうないよねー」と考えるのは楽観的に過ぎるので、まだまだ発見されていない脆弱性は、深刻度の多寡はともかく、身近なソフトウェアにおいてもまだ多数あると考えるほうが自然です。となると、あとはこれらがどれくらいの頻度で発見されていくか、という考え方になるのだと思います。

そして、ネットワークにつながるデバイスは増え続け、そのソフトウェアスタックも複雑になり続けていますし、セキュリティに関する意識も高まっている昨今、脆弱性の発見数が来年少なくなる、とはあまり思えなかったりするので、これはもう「来年もいろいろあるなー」ということできちんと情報を得ること、インシデントへの対応の準備をしていく、ということをより意識していくしかないかなーと思う次第です。

相変わらず100%主観ですが、CVEの件数としては同じくらいいくのではないか、と思っていつつ、深刻なものがないことと、この予測が外れることを祈りながら来年を迎えたいと思います:) (いやすくなくとも、年末にすごい深刻なものが発見されるとかはないといいですね!)

その他徒然に

他にもウェブアプリケーションのフロントエンドの技術も面白いところで、全てを試す時間はとれないのですが、あれこれウォッチしています。デファクトスタンダードが決まりきらないなか、Web Componentsの概念に始まる様々な拡張が進んでいる通り、ブラウザ自体の仕様も変わっていくので、もうこれは1年後も同じくいろいろなチャレンジが行われていて、いろいろなライブラリが出来ている一方で、まだまだbest practiceはこんな感じ、というところまでは行っていないんだろうなと推測しています。といいながら、Web Componentsは、Safariがネイティブで各種機能をサポートしたら本格的に使ってみたい機能ではありますね。

そして全然話は変わりますが、2015年こそもう少しIPv6が普及したりするのでしょうか?実際のところ、ネットワークインフラ (あるいはOS)といったレイヤでの実装は大分前から提供されていますし、意識している/いない関わらず実は自宅のルータにIPv6のアドレスが振られている、というケースも増えていると思います (これにはいろいろな問題が内包されていたりするそうですが、それはまたそれとして)。ということで、あとはコンテンツプロバイダの対応状況次第、というところがものすごい大枠での状況です (そして、弊社もそのうちの1社です、当然のことながら)。

それをふまえると、徐々にはIPv6 readyなコンテンツは増えていくとは思います。が、誤解を恐れずに書いてしまうと、現状コンテンツプロバイダとしては、時間とお金を使ってIPv6の対応をするインセンティブ、あるいはしなければならない理由というのはまだ薄いというのが、おそらく全般的な状況だと考えられます。

なので、このまま考える1年後に(普及率や、対応率は確実に上がっていくとは思いますが)、この状況が大きく変わる可能性は低いと考えています。が、何らかのきっかけ、それが何かは難しいのですが、例えば3G/4G接続時に振り出されるIPアドレスはプライベートなものが増えてますが、IPv6のアドレスも同時に振り出されるようになり、且つ、NAT経由では難しいサービスが提供できます、というようなキラーアプリケーションが普及していけば状況は変わっていくかもしれません (たとえばWebRTCとかでしょうか、でもコストはかかりますがTURNサーバ立てちゃえばいいんですよね...)。

いずれにせよ、IPv4のアドレスが枯渇していくのは自明なので、確実に少しずつでも準備を進めていく段階に入っているとは言えます。

それ以外にも、AndroidとiOSの比率がどうなってるだろうとか、利用言語の比率とか、来年流行っているだろうサービスの予測とかとか、あー今年はDockerだったなぁ、だけど、Solaris Containerって大分前からあったんだよな...しみじみ、などと考えてみると面白いなーと思ったのですが、書いてたら思いの外疲れたので、今年はこのあたりにしています。みなさまも勝手予測して書き溜めておくと、きっと来年の今頃、blogのネタに困らなくてよいですし、もうこれで素敵な1年になること間違いなしです。

さいごに

またしても昨年に引き続き文字ばっかりで長くなってしまいましたが、且つ、結構適当なことを書いちゃってますが、まぁこういうこと言ってるやつもいるな、くらいに思っていただければ幸いです、そして最後まで読んでくださったみなさまありがとうございます。

さらにさいごに

それではみなさまよいおとしをー!