ホームお問い合わせプロフィール未経験→就職転職合格率年収の相場ブラック企業判別定時帰りする方法

流行るソフトウェア技術を見極める方法!難しいを簡単にする力

2015年2月6日に投稿 → に更新 技術 アフィリエイトリンクを含みます

a0002_010676

「これから流行る技術はなんだろう?」
「今自分がやっている技術は今後廃れないだろうか?」

ソフトウェア技術の進歩は速く、次から次へと新しい技術が生み出されています。そのような状況の中で自分が使う技術をどう選択したらいいのでしょうか?

私の場合、なんとなく直観というか、「これ来そう!」って感じる時があります。

2000年の段階で「サーバーサイドJava来そう!」と感じて使い始めましたし、2014年から「Unity来そう!」と思って使い始めて今はUnityを使ったゲーム開発の仕事してます。

そんな経験を踏まえて、流行るソフトウェア技術を見極める方法を紹介します。

Javaが流行った理由

私がJavaのコードを初めて見たのは2000年でした。見た瞬間、

「めっちゃシンプルで分かりやすいオブジェクト指向言語やん!」

と感じました!

当時の私は社会人一年生でした。専門学校で C++を勉強してオブジェクト指向の基本は知っていましたが、いまいちピンと来ていませんでした。

というのも専門学校で習ったVasual C++のクラス定義はヘッダーファイルにclass構文でクラスを定義して、cppファイルにメンバ関数を定義するので、class定義とメンバ関数が別ファイルに分かれてしまい直観的に分かりにくかったんです。

言葉で説明してもわかりにくいので、Visual C++でCalcクラスを作る例を示します。まず、Calc.hにclass定義をします。メソッドの実装(中身)は書きません。

class Calc {
public:
        int add(int a, int b);
}

次にcppファイルにCalc.hをインクルードしてメソッドの実装(中身)を書きます。

#include "Calc.h"
int Calc::add(int a, int b) {
        return a + b;
}

なんかわかりにくいですよね?C++の元になったC言語はオブジェクト指向言語ではなく手続き型言語なので、それをもとにC++作られたので、その影響かと思われます。

それに対してJavaのクラス定義はclass構文の中に、インデントを下げてメンバーのメソッド定義をするので、構文が体をなしていると感じました。

public class Calc {
        // addメソッドがCalcのメンバーであるということが一目瞭然
        public int add(int a, int b) {
                return a + b;
        }
}

「クラスのメンバーとしてメソッドがあることが直感的に分かりやすい!これは流行るに違いない!」そう思いました。実際、この後Javaはエンタープライズの分野で大流行しました。

ちなみにC++でもJavaみたくclass構文の中にメンバ関数の実装(中身)を書くこともできることを後で知りました。なんでVisual C++が生成するコードはわざわざヘッダーとcppファイルを分けていたかが未だに謎です。

Unityのおかげでゲームプログラマーになれた!

ゲームが作りたくてプログラミングを始めたはずだったのに…

私がプログラミングを始めたのは高校を卒業して専門学校に入ってからでした。高校生の頃にプレイステーションのファイナルファンタジー7をやっていて、「ゲーム作れるようになったら楽しいな、将来プログラマーになるのもいいな」と思ったんです。

ゲーム開発の求人を調べた所、仕事がきついとか、就職が難しいとか書かれていました。当時はスマートフォンもソーシャルゲームもなかったのでゲームといったらコンシューマー向けしかなかったので、今よりゲームプログラマーの就職がずっと難しかったんです。

それを知って、就職しやすい企業向けシステムのプログラマーになろうと思い、情報処理の専門学校に入学しました。プログラミングを学んでおけば、趣味でゲームを作ったりは出来るだろうと考えていたんです。

ところが…、

Direct X難しすぎる、コード長過ぎ!?

専門学校を卒業後、企業向けシステムの受託開発をしている会社に就職しました。

趣味でも何度かゲーム開発を試みましたが、

「Direct X難しすぎる!わけわからん、コード長過ぎ…。」

となり、これは無理だとゲーム開発を諦めました。DirectXというのはMicrosoftのゲーム用ライブラリで2Dや3Dグラフィックを描画するAPIを持っています。これがめちゃ難しくて、コード読んでも何がなんだかわからなかったんです。

ところが…、

Unityなら俺もゲームが作れる!

Direct Xのコードを見て、ゲーム開発をあきらめていた私ですが、Unityの本をぱらぱらと眺めた瞬間、

「Unityなら、俺でもゲーム作れるかも!」

と思ったんです。

Unityはゲーム開発をめちゃかんたんにした!

UnityはIDE上でゲームのグラフィックを配置して、C#やJavaScriptで書いたスクリプトをそのグラフィックにドラッグアンドドロップするとグラフィックに動きをつけることが出来ます。

とても直観的だし、コード量も少ないので分かりやすく、効率的です。

また、ゲームに登場するグラフィックやスクリプトの関係がIDE上で可視化されています。しかもそれらはIDE上で関係を組み替えることがかんたんに出来ます。コードでやっていたことの多くをIDEがわかりやすく可視化してサポートしてくれるんです。

実際私は、Unityを独学で数か月学んだ後、ゲーム開発の仕事に就くことが出来ました。DirectXだったらこうは行かなかったと思います。Unityは間違いなく流行るでしょう!というか既に流行ってますね!

Unityが流行った理由は何でしょう?

難しいことを簡単にする技術が流行る

私は、1/25に行われた「Global Game Jam 2015 ZENRIN ODAIBA プログラミング生放送」という生放送の番組に出演させて頂いたのですが、そこでマイクロソフトで長年エヴァンジェリストをやっている大西彰さんと対談させて頂きました。大西さんに「流行る技術のポイント」について質問してみた所、

「難しいことを簡単にする技術こそが素晴らしい」

と回答されました。

「ややこしくて小難しい技術はよくあるけれど、そういうものよりも、難しいことを如何に簡単にシンプルに出来るかが大事で、ソフトウェア技術の歴史を見ていくと、この技術はこの課題を解決したのだなというのが見えてくる」

とのことでした。

私がJavaやUnityに感じた素晴らしさ、この技術来そう!と感じたのも同じです。JavaもUnityも過去難しかったことを簡単にしました。

  • 「Javaはオブジェクト指向を簡単にした!」
  • 「Unityはゲーム開発を簡単にした!」

今のJavaはかなり複雑化しています。そこで複雑化したJavaをシンプルに洗練したC#だったり、Ruby, PHPなどが流行っていると考えると納得できますよね。

Visual Basicが流行ったのも、C++で何千行も書かないと作れなかったGUIアプリをIDEでコンポーネントをドラッグアンドドロップするだけで開発できるようにしたからと考えられます。

ですから、流行るソフトウェア技術を見極めるには、

「過去難しかったことをかんたんにしているか?」

この観点で見てみてください!