ブログの休憩中に仕事をしたり、プログラミングの個人開発ををすることがあるのですが、小さなスケールのアイデアの場合、サーバサイドが使われなくなっていることに気づきました。
サーバサイドとは、データベースからデータを取ってきて、クライアントに渡す役割を持っているプログラミング言語のことです。
サーバサイド言語には以下のようなものがあります。
聞いたことのある人も多いのではないでしょうか。
- Ruby
- PHP
- Java
- Go
- Python
プログラミングスクールなどで「プログラミングを勉強する」というと、基本はサーバサイド言語を勉強するに等しくなります。
サーバサイドエンジニアは、プログラマーの花形のようなイメージがあり、非常に重要な役割を担っているはずなのですが、個人開発の場では、そのイメージが崩れつつあります。
なぜ個人開発にサーバサイドが不要なのか
結論を言うと、Firebase というサービスがあるからです。
Firebase は Google のサービスで、サーバサイドの役割のほとんどを担ってくれます。
事業規模のサービスを作ろうと思うと複雑なデータに対応できないこともありますが、単純な個人開発レベルなら対応可能です。
個人開発でサーバサイドが不要な理由は以下です。
- Firebase のおかげ
- 静的サイトジェネレータがあるから
- Javascript のライブラリが優秀だから
Firebase のおかげ
Firebase はフロントエンドエンジニアにとってとても便利です。
- データの受け渡し
- ログイン機能の実装
- 静的サイトを作る
これらの機能が搭載されています。
サーバサイドでログインやデータ変換をしなくていいので、フロントエンドさえできればアプリが作れてしまいます。
RubyとPHPはオワコンなのか?現役フリーランスエンジニアが解説!
静的サイトジェネレータがあるから
Firebase も静的サイトジェネレータの 1 つですが、他にもあります。
- S3
- Netlify
- Github pages
静的サイトジェネレータとは、データベースとのやりとりをしないサイトを作るサービスです。
例えば、商品紹介のランディングページは、他にリンクがなく、1 ページだけでできています。
ランディングページを複数枚作って、それらを繋げることで、1 つのサイトとして機能させているイメージです。
静的サイトジェネレータを使えば、サーバサイドが不要なだけでなく、データベースがないのでメンテナンスの手間が減るのと、サイト生成のスピードが早くなる傾向にあります。
Javascript のフレームワークが優秀だから
静的サイトを作ったりするのはフロントエンドの役割です。
一昔前までは、HTML と CSS でサイトを作るのが一般的でした。それから画面に動きをつける Javascript が使われるようになり、Javascript でデータのやり取りも簡単にできる jQuery というライブラリまで出てきました。
最近だと、Javascript のライブラリに React や Vue.js が出てきて、データのやり取りをサーバサイドを変わらないレベルでできるようになりました。
↑jQuery が React や Vue.js に置き換わってしまったことを嘆いている風の記事です。非常にわかりやすい。
今、この街で、一番人気の店って知ってる? ……そうそう。ReactさんとかAngularさんとか、あとVue.jsさんとかね。2012年くらいから次々とオープンしたんだけど、今やウチよりも大人気で、お客さんはほとんどそっちに流れちゃったんだけどね。
https://qiita.com/8amjp/items/b089a3f2e6dbc59cd5c8
React や Vue.js の登場により、Firebase や静的サイトジェネレータがますます使いやすくなり、サーバサイドの出番が少なくなってしまったのです。
データベースすらも不要になってきた
さらに、最近はデータベースすらも不要になってきました。サーバレスとか呼ばれたりします。
Firebase や静的サイトジェネレータなどのフロントエンドだけで完結するものは、サーバレスです。
さらに、API を利用することによって、サーバがなくてもデータを扱うことができるようになりました。
API が流行ってきた理由
API は流行る理由は、
- 欲しいデータはほとんど API で取得できる
- データを自分で保持しなくて済むから
こんな感じだと思います。
例えば、ニュースの情報がほしい場合、ニュース API を使えば最新のニュースが手に入ります。
自分でニュース情報を取ってくるとしたら、クローリングをしたり、独自の記事を書かないといけません。
だったら API を使っちゃった方が楽ですよね。
自分でデータを保存するとなると、データベースを維持するお金がかかりますし、データに間違いがあったときに責任を取らないといけません。
民泊やカーシェアのように、データも所有せずにシェアしてアクセスする時代なんですね。
サーバサイドはもういらないのか
個人開発レベルだと、サーバサイドは不要だと思いますが、まだまだ需要はあります。
- サーバサイドはデータを自由に扱える
- 機械学習はサーバサイドのプロ
サーバサイドはデータを自由に扱える
サーバサイドがないとデータを自由に動かせないので、大きなビジネスになると、ある程度のところで壁ができてしまいます。
Firebase を使えば、ユーザを作って、ログインさせたりはできます。でも、そのユーザを使って他のサービスと連携させたり、複雑なデータを扱うことはできません。
データの自由度はまだ低いので、その点をサーバサイドが埋めているという状況です。
機械学習はサーバサイドのプロ
機械学習などのデータを扱うプロフェッショナルは、まさにサーバサイドのプロですから、サーバサイドの需要がなくなっているわけではないのです。
ただ、機械学習はとてもレベルが高いので、僕みたいな凡人エンジニアは、フロントエンドを使って、誰かが機械学習を使って作ってくれた API を使う程度しかできなくなるでしょう。
最初に学ぶべきはサーバサイド
これからプログラミングを勉強したい人には、まずサーバサイドを勧めています。これは、サーバサイドが不要になっていることと矛盾しているかもしれません。
それでもサーバサイドを最初に学ぶべきです。その理由は以下の通り。
- データの受け渡し方法を学ぶため
- サーバレスを実装するのは難易度が高い
- すぐ実践に移れるから
データの受け渡し方法を学ぶため
いきなり Firebase を使っても、いったい裏で何が行われているのかがわからないと、開発者として安全なコードを書くことができません。
Firebase を使うには、
- サーバサイドでどんなデータの受け渡しをしているのか
- API はどのように使われるのか
- API の作り方
あたりを勉強しておくべきです。
サーバレスを実装するのは難易度が高い
Firebase を使うには、Firebase と自分のコードを連携させないといけません。チュートリアル程度なら簡単なのですが、セキュリティを強固にしながら作り上げるのは難易度が高いです。
Firebase にすべてを任せるのもいいですが、仕組みが理解できていないと、途中で詰まったときに先に進めなくなってしまいます。
初心者がいきなり Firebase を使ってサーバレスアプリを作るのは難易度が高いと思います。
すぐ実践に移れるから
フロントエンドだけで作れるのは、静的なサイトだけです。
サーバサイドができれば、静的なサイトも動的なサイトも作ることができます。
Firebase などの外部サービスを使わずにプログラミングを勉強して、サービスを動かしたいのであれば、サーバサイドから学ぶのが最短の方法です。
個人開発に興味があるならフロントエンドを
僕はサーバサイドエンジニアなので、どちらかというとフロントエンドは苦手なのですが、個人開発をするならフロントエンドの知識は必須だと感じています。
勉強のためではなく、使ってもらいたいサービスを作るなら、今どき風のサービスでなければいけません。
そうなると、フロントエンドは必須です。
2 ちゃんねるのような古くからある掲示板サイト風であればサーバサイドだけでも作れますが、最近そのようなサイトを作る人はあまりいません。
どうしてもフロントエンドがやりたくないという人は、サーバサイドを極めて、面白いコンテンツを作るというのもありかもしれません。
さいごに、個人開発に興味がない人でも、転職用にポートフォリオの作成はしといた方が良いよ、という記事をおすすめしておきます。↓