個人開発をする際にサーバサイドが不要になっています

Share on:

ブログの休憩中に仕事をしたり、プログラミングの個人開発ををすることがあるのですが、小さなスケールのアイデアの場合、サーバサイドが使われなくなっていることに気づきました。

サーバサイドとは、データベースからデータを取ってきて、クライアントに渡す役割を持っているプログラミング言語のことです。
Ruby や PHP、Java、Go、Python などがあり、「プログラミングを勉強する」というと、基本はサーバサイド言語を勉強するに等しくなります。

サーバサイドエンジニアは、プログラマーの花形のようなイメージがあり、非常に重要な役割を担っているはずなのですが、個人開発の場では、そのイメージが崩れつつあります。

なぜサーバサイドが不要なのか

結論を言うと、Firebase というサービスがあるからです。Firebase は Google のサービスで、サーバサイドの役割のほとんどを担ってくれます。

事業になるほどのサービスを作ろうと思うと、複雑なデータに対応できないこともありますが、個人開発レベルなら対応可能です。

サーバサイドが不要な理由は以下です。

  • Firebase のおかげ
  • 静的サイトジェネレータがあるから
  • Javascript のライブラリが優秀だから

Firebase のおかげ {#firebase のおかげ}

Firebase はフロントエンドエンジニアにとってとても便利です。

  • データの受け渡し
  • ログイン機能の実装
  • 静的サイトを作る

これらの機能が搭載されています。

サーバサイドでログインやデータ変換をしなくていいので、フロントエンドさえできればアプリが作れてしまいます。

静的サイトジェネレータがあるから

Firebase も静的サイトジェネレータの 1 つですが、他にもあります。

  • S3
  • Netlify
  • Github pages

静的サイトジェネレータとは、データベースとのやりとりをしないサイトを作るサービスです。

例えば、商品紹介のランディングページは、他にリンクがなく、1 ページだけでできています。
ランディングページを複数枚作って、それらを繋げることで、1 つのサイトとして機能させているイメージです。

静的サイトジェネレータを使えば、サーバサイドが不要なだけでなく、データベースがないのでメンテナンスの手間が減るのと、サイト生成のスピードが早くなる傾向にあります。

Javascript のフレームワークが優秀だから {#javascript のフレームワークが優秀だから}

静的サイトを作ったりするのはフロントエンドの役割です。

一昔前までは、HTML と CSS でサイトを作るのが一般的でした。それから画面に動きをつける Javascript が使われるようになり、Javascript でデータのやり取りも簡単にできる jQuery というライブラリまで出てきました。

最近だと、Javascript のライブラリに React や Vue.js が出てきて、データのやり取りをサーバサイドを変わらないレベルでできるようになりました。

スナック「jQuery」
↑jQuery が React や Vue.js に置き換わってしまったことを嘆いている風の記事です。非常にわかりやすい。

React や Vue.js の登場により、Firebase や静的サイトジェネレータがますます使いやすくなり、サーバサイドの出番が少なくなってしまったのです。

データベースすらも不要になってきた

さらに、最近、データベースすらも不要になってきました。サーバレスとか呼ばれたりします。

Firebase や静的サイトジェネレータなどのフロントエンドだけで完結するものは、サーバレスです。
さらに、API を利用することによって、サーバがなくてもデータを扱うことができるようになりました。

API が流行ってきた理由 {#api が流行ってきた理由}

API は流行る理由は、

  • 欲しいデータはほとんど API で取得できる
  • データを自分で保持しなくて済むから

こんな感じだと思います。

例えば、ニュースの情報がほしい場合、ニュース API を使えば最新のニュースが手に入ります。
自分でニュース情報を取ってくるとしたら、クローリングをしたり、独自の記事を書かないといけません。

だったら API を使っちゃった方が楽ですよね。

自分でデータを保存するとなると、データベースを維持するお金がかかりますし、データに間違いがあったときに責任を取らないといけません。

民泊やカーシェアのように、データも所有せずにアクセスする時代なんですね。

サーバサイドはもういらないのか

個人開発レベルだと、サーバサイドは不要だと思いますが、まだまだ需要はあります。

  • サーバサイドはデータを自由に扱える
  • 機械学習はサーバサイドのプロ

サーバサイドはデータを自由に扱える

サーバサイドがないとデータを自由に動かせないので、大きなビジネスになると、ある程度のところで壁ができてしまうからです。

Firebase を使えば、ユーザを作って、ログインさせたりはできます。でも、そのユーザを使って他のサービスと連携させたり、複雑なデータを扱うことはできません。

データの自由度はまだ低いので、その点をサーバサイドが埋めているという状況です。

機械学習はサーバサイドのプロ

機械学習などのデータを扱うプロフェッショナルは、まさにサーバサイドのプロですから、サーバサイドの需要がなくなっているわけではないのです。

ただ、機械学習はとてもレベルが高いので、僕みたいな凡人エンジニアは、フロントエンドを使って、誰かが機械学習を使って作ってくれた API を使う程度しかできなくなるでしょう。

最初に学ぶべきはサーバサイド

これからプログラミングを勉強したい人は、サーバサイドを勧めています。これは、サーバサイドが不要になっていることと矛盾しているかもしれません。

それでもサーバサイドを最初に学ぶべきです。その理由は以下の通り。

  • データの受け渡し方法を学ぶため
  • サーバレスを実装するのは難易度が高い
  • すぐ実践に移れるから

データの受け渡し方法を学ぶため

いきなり Firebase を使っても、いったい何が行われているのかがわからないと、開発者として安全なコードを書くことができません。

Firebase を使うには、サーバサイドでどんなデータの受け渡しをしているのか、API はどのように使われるのか、API の作り方あたりを勉強しておくべきです。

サーバレスを実装するのは難易度が高い

Firebase を使うには、Firebase と自分のコードを連携させないといけません。チュートリアル程度なら簡単なのですが、セキュリティを強固にしながら作り上げるのは難易度が高いです。

Firebase にすべてを任せるのもいいですが、仕組みが理解できていないと、途中で詰まったときに先に進めなくなってしまいます。

初心者が Firebase を使ってサーバレスアプリを作るのは難易度が高いと思います。

すぐ実践に移れるから

フロントエンドだけで作れるのは、静的なサイトだけです。

サーバサイドができれば、静的なサイトも動的なサイトも作ることができます。Firebase などの外部サービスを使わずにプログラミングを勉強して、サービスを動かしたいのであれば、サーバサイドから学ぶのが最短の方法です。

個人開発に興味があるならフロントエンドを

僕はサーバサイドエンジニアなので、フロントエンドは苦手なのですが、個人開発をするなら、フロントエンドの知識は必須だと感じています。

勉強のためではなく、使ってもらいたいサービスを作るなら、今どき風のサービスでなければいけません。
そうなると、フロントエンドは必須です。

2 ちゃんねるのような古くからある掲示板サイト風であればサーバサイドだけでも作れますが、最近そのようなサイトを作る人はあまりいません。

どうしてもフロントエンドがやりたくないという人は、サーバサイドを極めて、面白いコンテンツを作るというのもありかもしれません。