我々はフルスタックWebエンジニアになるべきか
究極的に、エンジニアは次の2タイプに分かれるだろうと筆者は見ています。
- 道具立て(クラウドやプログラミング言語・ツール・フレームワーク、ブラウザなどプラットフォームなど)をエンジニアやエンドユーザに提供するエンジニア
- そういった道具立てを使ってサービスを提供するエンジニア
筆者は前者のタイプを「プラットフォーム提供型エンジニア」、後者のタイプを「サービス提供型エンジニア」と呼んでいます。
プラットフォーム提供型エンジニアには、各技術領域における強烈な専門的なスキルが要求されます。一方、サービス提供型エンジニアには、サービスの構築・最適化に必要な技術を取捨選択し、使いこなすスキルが要求されるでしょう。
フルスタックWebエンジニアとは、サービス提供型エンジニアの理想像なのだと思います。なぜなら、WhatsAppの例を見るまでもなく、Webサービスを提供する企業は、高速な開発スピードを求めて開発チームを少数精鋭にする方向だからです。
そうなれば、チームの構成要員がカバーしなければならない領域は広くなります。サービス提供型エンジニアであり続けたいと考えている方は、フルスタックWebエンジニアになることを考えておいたほうがよいでしょう。
各レイヤーでどこまでスキルを持つべきか
フルスタックWebエンジニアの話をすると、図1、図2における各層(インフラ、サーバサイド、クライアント)でどこまでスキルを持つべきかという話になりがちですが、実は「どこまで」というのはあまり意味のない議論だと思っています。
勉強会でいろいろなエンジニアと話してみても、どこまでどのスキルが必要になるかは、各Webサービスの形態・状況によってまちまちです。例えば、ユーザ数が1000人に満たないWebサービスがスケールアウトの議論をしてもあまり意味がありませんが、ユーザ数が10万人を超えるWebサービスでは、スケールアウトに関するスキルは必須となるでしょう。
ですから、各レイヤでどこまでスキルを持つべきか、という問いの理想的な答えとは、「自社のWebサービスの開発現場でスキルを身に付けながら、自分が対応できる領域を徐々に増やしていった。その結果、世の中全般のWebサービスを構築・保守するのに必要十分なスキルが身に付いていた」だと思います。
Webサービス開発者ではない人はどうすればよいのか
一方で、現在SIerなどに勤めていて限られた役割でしか作業ができず、Webサービス開発の機会に恵まれない人はどうすればよいでしょうか。そういった方は自分の空き時間で小さなサービスを作って運用してみることをお勧めします。私の周囲の「できる」と言われているエンジニアはSIer、Webサービス事業者を問わず、そのような形で個人的に実験して自分の仕事に活かしていることが多いのです。
私の周囲ではありませんが、一番有名な例はさくらインターネットの田中邦裕社長の「とある櫻花の画像生成」というWebサービスでしょう。さくらインターネットは当初VPS(注11)サービスはやらないと、田中社長自ら公言していました。しかし、田中社長が趣味で始めたこのサービスは爆発的にヒットして、サーバ処理が逼迫。困った田中社長はAWS(Amazon Web Service)の仕組みでスケールアウトして事なきを得ました。この体験から、田中社長はVPS事業を始める決断をしたそうです。
このように、1人でサービスを一から立ち上げて運用してみると、多くの学びを得ることができます。
結局、フルスタックWebエンジニアのほとんどは、個人の活動と企業の活動を問わず、1人あるいは少人数で、Webサービスを含むシステムの開発から運用までを手がけた経験のある人ではないでしょうか。そして、コミュニティの勉強会、書籍、Webなどを通じて常に新しい技術を取り込み、最適と思われる技術を担当するサービスに適用するなど、試行錯誤しながら自分を進化させていける人が、結果としてフルスタックWebエンジニアになっているのです。
注11:Virtual Private Serverの略。仮想化の仕組みを利用した専用サーバ。
