React Nativeという生き方

4/19でとうとうエンジニア二年目が終わってしまうので、
区切りとして、今後どうやって生きていくのかを考えたのでまとめておく。

前提として、僕はプログラミングスキルを持っているし、
今後もスキルを使い伸ばし続けるにも関わらず、「エンジニアをやめた」。

細かいことはまた別途書くけれど、
簡潔に言うと、僕は特別頭がいいわけでも、
プログラミングが大好きなわけでも、
小学生のときからコードを書いているわけでもない。

このように特別何も持たない僕にとっては、
「ソフトウェアエンジニア」として勝負することは、
他人の土俵で勝負することにほかならず、
レッドオーシャンでの戦いと疲弊と敗北を意味する。

したがって、「僕」という人間に固有の価値の出し方ができる市場で生きていこうと決めた。

それがReact Nativeという生き方だ。

React Nativeとは

非エンジニアの方のために説明しておくと、
React Nativeというのは、簡単に言えば、
一つのコードでiOSとAndroidの両方のネイティブアプリが作れるフレームワークだ。

2020年現在、Webアプリを作るためのフロントエンドの主要なフレームワークは
React, Vue(Nuxt), Angularの3つで、React Nativeの基本的な書き方はそのReactと同じだ。

React Nativeに初めて出会ったのは2018年の1月ぐらいで、そのときに得も言われぬ親近感を覚えた。

当時、なぜかこれを勉強しようと思ったのだ。

今振り返ってみると、これは僕にとって至極当然の選択だった。

僕はどう生きたいか

ちょうど今から1年ぐらい前、自分の生き方に確信を持った。

「自分のビジネスで生きていける人を増やす」

が今の僕の人生のミッションだ。

それは今も変わらない。

ただ、そのためには自分がビジネスをいくつか成功させて、自分がノウハウを得る必要があり、そこに到達するまでに僕にとって一つの懸念がある。

そう、足元のキャッシュ、すなわち保険の選択肢だ。

プログラムが書けるなら、受託開発一択だが、
いわゆる「エンジニア」として生きようと思うと、
これでもかというぐらい膨大な量の知識が必要になる。

僕の目的は一流のエンジニアになることではなく、
自分のビジネスで生きていける人を増やすことだ。

つまり、僕は、

  • いい感じに自分に都合のいいスキルだけを使って、
  • キャッシュを稼ぎやすい保険(=高単価な受託案件がいつでもとれる状態)を掛けつつ、
  • 自分のプロダクトを作り続ける

環境が必要なのだ。なんというワガママだろう。

更にワガママを言えば、受託案件は

  • 面白そうなやつしかやりたくない

のだ。もはやワガママの極みである。

多分、これだけを聞いたら、僕の一社目の上司とかはブチ切れてたんじゃないだろうか。

そして、そんなことはできない、と全員に言われていただろう。

僕の生き方を映した技術、React Native

普通に考えたら、こんなワガママは通らないし、何かしらトレードオフになりそうだ。

たとえば、面白さと賃金とか。

おそらくサラリーマンだとそうなる可能性が高いだろうが、
独立した事業家は仕事がなくなるリスクと引き換えに、
ポジションを自由に取ることができる。

ここまで来たら、もう答えが分かったも同然だが、
React Nativeはこの僕のバカげた贅沢を全部叶えてくれたのだ。

そもそも前提として、ソフトウェアエンジニアは依然として売り手市場なので、歩いていれば仕事に巡り会える。

そして、React Nativeは、その技術の性質上、以下の特性がある。

  • プロダクト、特にプロトタイプを量産するのに向いている
  • 案件の単価が高い
  • 案件がゼロイチで面白いものが多い
  • Reactに知見がほぼそのまま活かせるので、Reactの案件もとれる

どうだろう、見事に僕のやりたいことをすべてカバーしてくれている。

僕はエンジニアとしてはせいぜい2年のキャリアしかなく、
ポケモンで言うとニビシティでちょうどタケシを倒したぐらいのところなのだが、
それでもサラリーマン一年目のときの時給の10倍の案件にありつけている。
(どちらかといえば、サラリーマン一年目の時給がひどすぎるだけなのだが)

もちろん、いいことばかりではない。
React Nativeにはデメリットがたくさんある。

  • 本格的な作り込みには向かない
  • 案件が他のフレームワークに比べると少ない
  • 日本語の文献が少ない
  • 消滅するかもしれない

しかし、これらは一般的に見たときのデメリットであって、
僕にとってはどうでもいいことなので、実のところ全くデメリットではない。

一つ気になるとすれば、最後の消滅するかもしれない、ぐらいだ。

React Nativeはリリースされてから時間は経っているにも関わらず、
未だにバージョン1.0の正式リリースがされていない不安定な技術だ。

もしかしたら明日、開発が止まるかもしれない。

だが、React Nativeの技術がReactでできている以上、
最悪消滅してもReactの案件(高単価かつ面白い案件が多い)でしばらくは食いつなげるという、
二段構えの保険になっているのだ。

以前、iOSエンジニアの堤さんが言っていたのだが、

「自分にとってデメリットがデメリットにならないことをやろう」

というのはまさにその通りで、
僕みたいに自分の生き方と技術の性質が合致すると、
そのデメリットがほぼ無いことになって
メリットだけを享受できるということが起きるので、とてもオススメである。

最後に

「エンジニアは幅広く技術を勉強し続けなければならない」
というぼんやりとした空気(僕の妄想かもしれないが)に僕は前から違和感を持っていて、
それは人によるんじゃないかとずっと思っていた。

もちろん、最低限の理解は必要だけれど、
フレームワークをいくつも本当に習熟しないといけないかというと、
僕はそうは思わない。

一生受託のプロとして生きるなら、
多様な技術選定ができる必要があるので、
いろんな技術を比較できるぐらい使いこなせなければならないが、
別にそれだけがコードの書ける人間の生き方ではない。

僕のこの戦略は失敗するかもしれないが、
やりたいことに向けて自分で考えた生き方なので、
失敗したらそれはそれで後悔はない。

追記

結構まともにアプリ開発が出来るようになったので、
もしこんなの作って欲しいとかあれば、いつでもご相談ください。
ビジネスアイディアの段階から相談乗ります。
(足元は工数が一杯なので、手を動かすのは少し先にはなりますが)

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る