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

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

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

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

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

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

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

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

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

Firebaseのおかげ

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

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

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

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

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

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

  • S3
  • Netlify
  • Github pages

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

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

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

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を使っちゃった方が楽ですよね。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

すぐ実践に移れるから

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

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

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

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

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

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

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