Web 技術をキャリアの中心にしない

いちご大福

Web 業界のキャリアモデルを考えるシリーズの記事。普通の Web エンジニアが生き残るための、普遍性のあるキャリアモデルを考える。この背景に興味がある方は以下の記事も読んでみてください。

Web のコモディティ化

Webはインターネットになったねぇ

うろ覚えの記憶だが、2013 年に Twitter でこの話題が拡散されていたと思う。Web 業界では誰もが知っていながら誰もが認識しているわけではなかった簡潔な表現に、当時の私は衝撃ではなく、うまいこと言うなと感心していた。

しかし、当時はまだまだ Web 技術は発展途上でありながら先進的なイメージがあったように思う。ソフトウェア開発の未来が Web 技術であることは多くの人は認識していたが、Web はさして大きくないリソース上の制約を設けつつ、さして多様性のないプロトコル上の制約を受けつつ、特定技術に絞れば2年ぐらいやればその分野の詳しい人になれるという、Web 業界以外のソフトウェアエンジニアからみたとき、スキルとしてどこかチャラいイメージがあった。

知人の Linux Kernel 開発者とゲームの話をしていたとき、経験や知識の積み重ねで勝てないゲームは嫌いだという話になって、その知人のキャリアと一致していて納得した。Linux Kernel の世界では2年の経験というのはようやくコードを読んでその背景がわかるようになってきたというレベルではないだろうか。

AWS10年の歩み によると、AWS のサービスは2006年から始まったらしい。クラウドベンダーの台頭によって、本来さして大きくなかった Web のリソース上の制約をみえにくくなった。そして、その結果 Web 技術はスキルとしてチャラいどころか、素人が数週間も勉強したら Web アプリケーションを開発してデプロイできるレベルまでコモディティ化した。

プログラミングが AI に置き換えられるといった話題をたまに見かけるが、その有力な候補の1つはクラウドの Web アプリケーション開発ではないか、と私は思う。もともと Web というシステム開発にそれなりの制約が課されていたところに、クラウドという制約がさらに課された。これにより、要素技術が限定され、システムができることの幅も狭くなってシステム開発を自動化しやすくなっている。

インフラの隠蔽

クラウドにおける PaaS や CaaS による CI/CD の普及により、インフラの存在を気にする必要はなくなった。もちろんアプリケーション開発者の視点からは、本質的ではないインフラの制約や煩わしさに囚われることなく、アプリケーション開発に専念できるのでこれらは開発の生産性に大きく寄与した。

しかし、一方でアプリケーション開発者がインフラを学ぶ機会を失ってしまった。OS の仕組みや振る舞い、サーバーリソースの配分や理論限界値、物理デバイスの扱いなど、クラウドでアプリケーション開発する上で気にすることはなく、気にしたとしてもパラメーターを設定するぐらいしかできない。

このことは意図せず非効率なアプリケーションのロジックや非効率なシステム構成を作ってしまうことを助長している。多少の非効率はインフラが吸収してくれるし、インフラの制約でエラーにならないからそのことに気づけなくなった。クラウドベンダーはユーザーがリソースを浪費することは収益につながるので、そのビジネスの特性上、アプリケーション開発者がインフラのことを知らないのは理にかなっている。

サーバーサイドエンジニアは絶滅危惧種?

シングルページアプリケーション (以下SPA) の台頭により、私の観測範囲ではモダンな Web サイトは SPA で作られるようになった。サーバーサイドは JSON を返す API サーバーとなり、DB やバックエンドシステムのプロキシのような存在になりつつある。

私はサーバーサイドエンジニアとしてキャリアを積んできた。SPA が流行りだした頃、いずれサーバーサイドエンジニアは不要になって自分のキャリアを考え直さなくてはいけない時期がくるのではないかと戦々恐々としていた。

AWS のサーバーレスコンピューティングの概要を読むと、まさにサーバーはクラウドベンダーが管理し、アプリケーション開発者は SPA のような、フロントエンド開発に専念してくださいと言わんばかりである。まるでサーバー管理がアプリケーション開発の足枷になっていたかのような、サーバー管理の煩雑さのところのみを訴求している。

とはいえ、データを受け取って返すだけの API サーバーであれば、このようなサーバーレスコンピューティングで置き換え可能であることは、私も同感である。私の関心ごととして世の中の Web アプリケーションの大勢がそうなっていくのかどうかだった。現時点でまだ私には判断できないが、そういう方向にゆっくりと進んでいる向きはある。

2014年に AWS Lambda がリリースされ、サーバーレスはゲームチェンジャーだともてはやしている人たちもいた。しかし、現在の状況をみる限り、ゲームチェンジャーというほど汎用的に使われているようにはみえず、用途にあえば便利なサービスの1つといったところではないだろうか。

ソリューション(ソフトウェア)スタックを潜る

Wikipedia によると、昔はソフトウェアスタックと呼ばれた言葉をソリューションスタックと呼ぶようになったらしい。

前節ではサーバーサイドエンジニアは近い将来、必要とされなくなるのではないかという不安を書いた。しかし、自社でインフラをまかなう企業で働いてみてその不安は杞憂であると思うようにもなった。

サーバーサイドエンジニアだけでは不安はあるが、インフラをまかなうことも加えるとまだまだ十分にやっていけるといまは考えている。

同じことが Cobol エンジニア+メインフレームの関係からも伺える。Web 業界で Cobol エンジニアを求める職場はないと思われるが、メインフレームのアプリケーションと Web システムを連携する要件があれば、Cobol エンジニアの需要はあるかもしれない。

余談だが、以下はビズリーチさんが運営する求人検索エンジン「スタンバイ」の言語別平均年収である。Cobol は11位とトップ10には入れなかったものの未だに生き残っていることが伺える。

Web 技術をキャリアの中心にしない

前置きが長くなった。ようやく本題である。いま Web 技術といったとき、どのような要素技術を思い浮かべるだろうか。

  • フロントエンド開発
  • ブラウザの技術
  • モバイルアプリケーション開発

私がパッと思いつく言葉を並べてみたが、この先も Web 技術はどんどん発展を遂げて新たな要素技術が台頭するだろう。常にその先端を追いかけていくのもキャリアのあり方の1つだとは思う。

しかし、Web 技術がいくら進化しても、本当のところ、インフラはなくならないし、サーバーはなくならないし、Linux も当面はなくならない (と思う) 。Web 技術の先端でそれらが隠蔽されていても意識しなくなっていてもそのソリューションスタックの裏側には存在している。

AWS のユーザー企業はインフラエンジニアもサーバーサイドエンジニアも必要としないかもしれないが、Amazon 社ではインフラエンジニアもサーバーサイドエンジニアも必要として実際に働いているはずだ。Cobol エンジニアがまだ働いていることからもそう簡単に旧態としたシステムはなくならないと思われる。

Web 技術は良くも悪くもコモディティ化する。最先端技術についていくのは難しくてもコモディティ化した後で使えばよい。インフラをまかなえる企業で働く限り、インフラとサーバーサイドエンジニアをやりながら、コモディティ化した Web 技術を組み合わせることで他者との差別化につながる。少なくとも AWS 上でしか開発をしたことがないアプリケーション開発者と比較した場合、インフラを自社でまかなえる企業という条件付きではあるものの、圧倒的に優位性をもてる。

人によっては残酷に聞こえるかもしれないが、この先 Web 技術だけでは他者と差別化するための敷居が高くなるように思われる。本稿は普通の Web エンジニアを対象として書いている。Web のフレームワークやライブラリなどを開発できるプログラマーであれば十分にやっていけるだろう。しかし、世の中で必要とされるフレームワークやライブラリを普通のプログラマーが普通に作っていることは需要と供給のバランスからありえない。

Web 技術の定義に固執しない

本稿では意図的に Web 技術が何であるかについて言及していない。

Web 技術を語るには筆者は力量不足であるが、新しいものが生まれては消える変化の早い Web 業界においてそれを体系化することは難しく、歴史の変遷を辿るときには有効であっても、自身のキャリアを考える上で Web 技術の体系化はあまり重要ではないと私は考えている。

それよりもいま流行っているもの、求められているものを自分でやってみて、そこから得られる自身の感性を信じてさらに掘りすすめるのもよいし、別の要素技術を試してみるのもよい。あくまで Web 技術はサブであり、他者と競争優位となるスキルは別にもつというのが私の主張である。

まとめ

個人のキャリアとして Web 技術のみに頼らないことを書いたが、このことは働く企業選びにも大きく影響する。自身のキャリアを積む上で Web 技術しか扱えない企業で働くことは未来のキャリアのリスクとなり得る可能性がある。

私の例では差別化要因としてインフラ+サーバーサイドエンジニアを一例としてあげた。これはあくまで一例であって、人によってそれぞれである。SIer なら業務知識かもしれないし、組み込みではデバイスやハードウェアの知識かもしれない。

現在 Web 技術があまり使われていない分野や業界があるとすれば、大きなチャンスがあるだろう。コモディティと化した Web 技術を導入することで逆の意味で競争優位となれるかもしれない。しかし、仮にそんな分野があったとしても、おそらくそれは技術で解決できない問題の方が大きな要因を占めているかもしれない。