モバイルのアプリが流行ったとする。 自分もモバイルのアプリの開発を学ぶべきだろうか? いやいや、すぐモバイルもwebにとって変わられるので、webのモバイル対応くらいで凌いでおけば良いだろうか?

機械学習が流行ったとする。 自分も機械学習を学ぶべきだろうか? いやいや、こんなの一時的な流行りで、すぐ廃れるから、じっと嵐が過ぎるのを待てば良いのだろうか?

Web 2.0はどうだろう?microserviceは?IoTは?SPAは?いろいろとそうした判断をする機会はあるだろう。

こうした事を考える時に、自分が自身の判断の正誤を判断する基準は、「5年経って予想通りになってなかったら、間違いと認める」という5年ルールだ。 5年という数字に大して意味は無いが、まぁ5年くらい続けばそれなりに稼げるし経験を積んでキャリアにもなるので、やる価値がある、と思う。

さて、5年前というと2012年くらいである。 2012年の頃何か流行ってて、まぁ一時的な事だからやらなくていいか、と思った物とかはあるだろうか?

タイミング的にはモバイルのアプリは2010年くらい?機械学習は2009年あたりにPRMLとかが出ていた気もする。 モバイルは現時点では別段webに取って代わられて無いので、2010年ころにそう判断して見送ったなら、その判断は間違っていた、と現時点で結論づけられるだろう。 もちろん「今後」とってかわられる時は来るかもしれないが。 機械学習のブームもまだ続いているので、データ分析のブームはすぐ終わると思っていたとするなら、これも間違っていた、と結論づけられるだろう。

もう少し細かい話だと、ディープラーニングとかはどうだろう?例えばディープラーニングなど中2っぽい言葉で流行ってるだけで、実体なんて大してない、と思ったとする。この判断の正誤が分かるのはいつごろだろう?
ディープラーニングがAlex Netから始まったとすると2012年だが、GANなどの画像生成やseq2seqとかで言語とか音声とかにまで広がりを見せたのは2015年くらいというのが妥当な所に見える。 すると2020年の時点で流行ってたら単なる一時的な流行、という判断は取り下げるべき、となる。 2020年の頃はどうなってるだろうね?まぁまだ良く分からないな。

IoTとかはどうだろう?あれは2009年くらいか?爆発的に広まる、という判断なら間違ってたと現時点では結論づけて良い気はする。一方で消えてる感じでも無いので、細く長く続いていくと思っていたなら割と正しい判断だったと言って良いんじゃないか。

クラウドはどうだろう?まぁ広まったと言って良い気もする。SOAは?そんな人は居なかった。セマンティックwebもまぁ知らなくて困らない。Software Factoryも知らんで良かろう。OR Mapperとかは普及したと言えそう。 railsは広まった。Hadoopは広まった。Sparkはまぁ要らないかもしれない。Rも要らないかしれない(ここは微妙か)。Matlabは要る気がする。 SCSSとかES2015とかは意外と死なないし、C++も11までは少なくとも必要そうだ。全部そう単純な物では無いが、自身の判断を自身で見直す事はできるだろう。

5年経った流行りが終わってなかった時に、次の5年はどうなのか?というのはまた難しい判断を迫られる事になる。 もともとすぐおわると思ってた物なので、やっぱりすぐ終わりそうな気はするものだ。
ただ前回の5年の判断が間違ったら、ちょっと新しい目で見直してみても良い気がする。 爆発的に広まる、という予想が広まってない時も同様だ。もうちょっとで広まるように思えても、ちょっと見直してみる必要はある気がする。