アイキャッチ

開発トレンドは「スマホの外」へ。それでもプログラマーのやることは1つ【連載:中島聡】

働き方

    プロフィール画像

    UIEvolution Founder
    中島 聡

    Windows95/98、Internet Explorer 3.0/4.0のチーフアーキテクトを務めたエンジニア。NTTに就職した後、マイクロソフト日本法人(現・日本マイクロソフト)に移り、1989年、米マイクロソフトへ。2000年に退社後、UIEを設立。経営者兼開発者として『CloudReaders』や『neu.Notes+』、教育アプリ『neu.Tutor』といったiOSアプリを開発する。シアトル在住。個人ブログはコチラ

    今回は、エンジニアtypeが展開している特集「New Order~融合の先を拓く者たち」に関連して、編集部から「ソフトとハード、ネットとリアルが融合する時代の歩き方」をテーマにしてほしいというリクエストがあったので、私見をまとめてみました。

    この連載でも何度か取り上げたように、一昨年末くらいから、わたしはウエアラブル・コンピュータの動向を注意深く追っています。

    普通に考えれば、世の中はまだスマートフォンの普及期に入ったばかり。ビジネス的にも、当面はスマホやタブレット向けの開発が主流でしょう。

    でも、エンジニア目線で言うと、これ以上スマートフォンにいろんな機能を詰め込むのは無理があると感じ始めています。そんな中、「スマホの外」でネットとつながるウエアラブル・コンピュータが台頭してきた。これは、未来を考える上でとても面白い流れだと思います。

    リリースの噂だけが先行しているAppleのiWatch(仮名)を例に挙げるまでもなく、ウエアラブル端末が本格的に社会へ普及するのはまだまだ先の話。最近バズワード化しているIoT(モノのインターネット)も、今はIntelなどの売り手側が新たな製品を売るために騒ぎ立てているだけ、という印象です。

    本当にモノとインターネットが融合する時代がやって来るのは、早くても5年くらい後だと思っています。

    ただし、CPUやメモリ、無線通信など、ウエアラブルやIoTを支える要素技術が進化し続けていることを考えれば、いずれ普及フェーズがやって来るのは間違いありません。

    Googleが家庭用ハードウエアメーカーのNestを買収したり、FacebookがOculusを買収したのも、このトレンドを裏付ける動きです。Facebookがなぜ今Oculusを買ったのか、いまいち狙いが分かりませんが、彼らはもう「スマホの先にある世界」を見始めたのかもしれません。

    ソフトとハードの融合で大切なのは「変数」を知ること

    Googleが買収したことで話題となったNest

    Googleが買収したことで話題となったNest

    2007年にiPhoneという新デバイスが誕生し、スマートフォンアプリという新市場が立ち上がったのが、ちょうど5年くらい前のこと。今後の5年間では、それと同じことが、ウエアラブルやIoTのマーケットでも起こるでしょう。

    では、2014年の現時点で、ソフトウエアエンジニアは今後来る「融合の時代」に向けて何をやるべきか。その答えの一つは、ハードウエアエンジニアやメーカーとのコラボレーションノウハウを学んでおくことだと思います。

    今はアプリやソフトウエア開発だけで大きな成功を収めるのが難しくなっています。アプリ・ソフトマーケットは世界的な競合過多になっており、FacebookやLINEのようなメガカンパニーは生まれにくくなったと考えるのが妥当です。

    であれば、ハードウエアメーカーと組む、もしくはハードウエアエンジニアを雇って自らデバイス開発に乗り出す方が、ブルーオーシャンだと考えるソフトウエア企業が出てくるのは自明の理。日本の家電メーカーはソフトウエアを作るのが苦手なので、アプリベンダーがハードの開発にも乗り出すことで、日本から新たな世界的企業が生まれることもあり得るでしょう。

    しかし、そういったチャレンジをする人や企業がまだまだ少数なのは、ハードウエアの開発がソフトの開発とは勝手が違うからです。

    ソフトウエア開発では、デバッグさえすればすぐにバグを見つけられます。つまり「悪いのは自分自身」というシンプルな世界です。一方のハードウエア開発は、原因不明のおかしな挙動に悩まされることが少なくありません。

    わたしの会社UIEvolutionでも、以前『ひかりTV』用のセットトップボックスをLinuxベースで開発した時、ハードの仕様書どおりにソフトウエアを作ってもうまく起動しないという問題に突き当たりました。

    で、いろいろテストしてみた結果、すぐにイニシャライズすると動かないけれど、少し時間が経ってから起動すると動くという変数を発見したのです。組込みソフトを開発する際は、このような変数と常に戦い続けなければなりません。

    また、ハードの開発ではiOSやAndroidのような汎用OSが使えない場合もあるので、開発基盤から作らなければならないケースが出てきます。それゆえ、参入障壁がおのずと高くなるのです。

    こういった大変さを経験値として知っているかどうかは、これからハードとソフトがもっと融合していく時代になっていった時、大きなアドバンテージになると思います。

    「何かが得意な人」と、「何かを学ぶのが得意な人」の違い

    ハード向けの組込み開発を突き詰めていくと、アセンブラをゼロから学ぶ必要も出てくるでしょう。そして、ウエアラブル用アプリの開発やIoTサービスの開発が一般的になると、ある時はArduinoに触り、別の開発ではRaspberry Piに触るというようなことが頻繁に起こるでしょう。

    こうした変化の渦中で、ソフトウエアエンジニアに求められるのは、常に「学ぶ」ことです。

    そもそも、プログラマーには2種類の人間がいます。1つは「何かが得意な人」、もう1つが「何かを学ぶのが得意な人」です。

    この業界では、「Javaエンジニア」や「iOSエンジニア」などと、言語や対応OSで自分を定義するプログラマーが数多くいます。が、これは悪しき慣習以外の何物でもない。

    「何かが得意な人」は、その得意分野に対する需要が減った時、変化に適応できなくなるからです。

    歴史を見ても、「何かが得意な人」というのは、PC向けアプリからスマホアプリへとトレンドが変化していく過程で、一定数が淘汰されてきました。今後、スマートフォンからウエアラブル端末へ開発の主戦場が変わっていったら、真っ先に淘汰されるのもこのタイプだと言えます。

    他方、「何かを学ぶのが得意な人」というのは、変わりゆくIT産業の中で、常にスキルや知識をバージョンアップし続けながら仕事をしています。この素養を持っているプログラマーこそが、「良いプログラマー」なのだと思います。

    新しいデバイスの可能性を引き出すのが、ソフトエンジニアの役割

    わたしの考えるソフトウエアエンジニアの役割とは、常に新しいデバイスの可能性を引き出し、応用の仕方を考えること。これは、いつの時代も不変です。

    大学時代、CADソフトの『CANDY』を開発しましたが、この時はマウスの能力を拡張することを念頭に置いていました。その後MicrosoftでWindows 95/98を作った時も、PCという新しいデバイスの可能性を引き出すのを目的に開発していました。

    そして今、個人的なプロジェクトとして動画フィルターアプリ『VideoShader』づくりに注力しているのは、OpenGLを学びながら、スマホのビデオ録画機能を拡張してみたいと思ったからです。

    何かをゼロから学ぶ時、最初の1~2カ月は「プログラミング初心者」に戻ることになるので、居心地は決して良くありません(笑)。でも、初心者のままでいるのが嫌だから、必死で勉強するのです。

    このサイクルを何歳になっても繰り返し行える人は、いつの時代も「良いプログラマー」で居続けることができる。

    UIEvolutionは、そんな「良いプログラマー」を常時歓迎しているので、興味を持った人はぜひ覗いてみてください(クルマのスマート化を実現するエンジニアなど、複数ポジションで採用を展開中です)。

    Xをフォローしよう

    この記事をシェア

    RELATED関連記事

    RANKING人気記事ランキング

    JOB BOARD編集部オススメ求人特集





    サイトマップ