kk-web

マイナーな技術を使うことによるデメリット

2019-09-26

例によって、フロントの開発視点からの話が主となります。

開発の現場でちょくちょく目にする光景なのですが、若いエンジニアが、ちょっとマイナーな技術を使いたいと言い出すことがあります。

そこで、上司が若いエンジニアに対し、マイナーな技術を使いたい理由を聞いてみると、「趣味で導入してみたけど、メジャーな技術より使いやすかった」とか「メジャーな技術では実現できないことが、マイナーな技術では対応されていた」とか言うんですよね。

その理由だけを聞くと、確かにメジャーな技術よりも良さそうに聞こえるし、それなら、と、大した選定も行わずに、上司が GO を出してしまうケースも。

ただ、自分の経験上、マイナーな技術には、マイナーである理由が絶対にあり、メジャーな技術には、メジャーである理由が必ずあると思っています。

賛否両論あるとは思いつつ、完全に自分の主観で、過去に自分が目にしたり使用してきたフロントの技術をざっくりわけてみると、以下のような感じなのかなと。

【メジャーな技術】

  • React, Vue
  • Redux, redux-thunk, redux-saga, Vuex
  • create-react-app, Nuxtjs, vue-cli
  • CSS-Modules, styled-componments
  • TypeScript
  • jest, Storybook
  • (Atomic Design)

【メジャーとマイナーの中間な技術】

  • Angular
  • redux-observable, Mobx
  • Gatsby, Nextjs
  • emotion
  • Pug

【マイナーな技術】

  • riotjs, Hyperapp
  • redux-promise
  • react-static, react-boilerplate
  • CoffeeScript

話はそれますが、以前の現場で、バックエンドのリードエンジニアから、触ったこともない CoffeeScript を強要されそうになったときはゾッとしました。

もちろん、CoffeeScript が悪いという話ではなく、バックエンドのリードエンジニアが少し触ったことがあるだけで、フロントに強要してくる人間性が…。

話を戻して、フロントの開発に限った話で言えば、マイナーな技術は、基本的に使うべきではないと思っています。

確かに、マイナーな技術を使うことによって、メジャーな技術を使う以上に恩恵を得られることもあるとは思います。

ただ、過去の経験上、メリットを上回るデメリットを被るケースのほうが圧倒的に多かったです。

で、具体的にどういったデメリットが起きうるのか、デメリットが起きうるはずなのに、マイナーな技術を導入しがちなのか、書いていこうと思います。


エンジニアの採用の幅が狭まる

マイナーな技術を使う上で、エンジニアの採用の幅が狭まることが、一番のデメリットだと考えています。

メジャーでない技術である以上、使用したことがあるエンジニアは限られてきます。

そのため、採用する側は、導入を行った技術の経験者を雇うことに苦労します。

また、逆にエンジニア側も、現場でマイナーな技術が使用されていると、どうしても敬遠しがちです。

仮にそこの現場でしか使われていない技術を身に着けたとしても、次の現場でその技術が活かすことができなければ、経歴としてマイナスにすらなってしまう可能性があります。

ドキュメントが見つからない

マイナーな技術に関する技術記事は、メジャーな技術に関する記事と比べて、どうしても少なくなります。

また、日本人エンジニアは英語の記事の読解力が著しく弱いため、どうしても日本語の記事に傾倒しがちです。

そのため、さらにドキュメント数が少なくなり、問題が起きた際、それの解決法に至るまでにとても時間がかかります。

また、マイナーな技術がゆえに、issue も少なく、そもそもドキュメントが存在しないケースも…。

バグが起きやすい

マイナーな技術は、メジャーな技術の弱い部分を補完した技術であることが多いです。

それ自体はとても良いことなのですが、逆を返せば、もともとメジャーな技術で実現できていたことが、マイナーな技術ではカバーされていないケースもあります。

また、メジャーな技術でない以上、きちんと開発が継続されないケースも少なくなく、技術がきちんと開発されていないこともしばしば。


と、個人的には、マイナーな技術を導入したいと思う理由が理解できないのですが。

それでもマイナーな技術を導入したがるエンジニアって少なくありません、特にフロントエンドエンジニアには多い気がします。

なぜマイナーな技術を導入したがるのか、個人的には、以下のような理由なのかなーと。

  • メジャーな技術がなぜメジャーなのか、理解していない
  • マイナーな技術を使えるオレカッケーと思っている
  • 時代を先どっているオレカッケーと思っている

まぁ、大概しょーもない理由なのかなと…。

フロントに限った話で言えば、アメリカや中国で新しい技術が生まれ、そこで流行ったものが日本に少しずつ流入してくる流れができています。

そのため、日本で「この技術スゲー!」となっているものは、海外ではもうスタンダードになっているものが多いケースがほとんどで、日本から海外に流行りが広がるケースなんてありません。

GitHub のスター数や、npm のダウンロード数は嘘をつきません。

まずはおとなしくメジャーな技術を使用するようにして、慣れてきたら本当に小規模な範囲や趣味の範囲で、マイナーな技術で遊んでみるのが良いのではないでしょうか。

© 2018 kk-web