質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

5回答

1399閲覧

クライアントサイドではなくサーバーサイドで動的処理をさせる理由とは何なのでしょうか…?

NaoSasaki

総合スコア12

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

2グッド

2クリップ

投稿2020/07/02 17:07

編集2020/07/02 17:38

お世話になっております。

当方、スクール等には通わず、一切を独学でプログラミングを学習し始めて数ヶ月の学生です。

最近Node.jsを使用してサーバーサイドについて学習を始めました。
画面遷移など基礎中の基礎は実現できましたが、クライアントサイドでもFirebase RealtimeDBやContentfulからデータを取得できることから、Node.jsでわざわざサーバーサイドの処理を記述する理由やメリットがわからなくなってしまいました。

様々な記事を拝見しましたが**「クライアントサイドよりサーバーサイドで動的処理を記述する意味」**に中々しっくり来ず、このような質問を書き認めております。

ここまでクライアントサイドの学習(サイト制作基礎, アニメーション, three.js)の学習を行い、インタラクティブな静的サイトを制作できるようになったのでサーバーサイドについて学習を始めた所、このような疑問にたどり着いてしまいました。

クライアントサイドではなくサーバーサイドでDBからデータを取得するなど、サーバーサイド及びNode.jsで動的処理を記述する理由とは何なのでしょうか…?
無知かつ稚拙で、とても愚かな質問であると承知しております。
恥を承知で質問させていただいておりますが、お答えいただければ幸いです。
何卒、よろしくお願いいたします。

K_3578, shinji709👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

面白いですね。
現代に生きる有望な新人エンジニアらしい疑問だと思います。

これは因果関係が逆なので順を追って説明します。

元々Firebaseなどというサービスはありませんでしたので、
Webサーバや情報を保存するデータベースを駆使して運用していました。

しかし、小規模のサービスを立ち上げる度にWebサーバやデータベースサーバを要求され
メンテも面倒くさいし金もかかる。
サービスを開発する障壁になっていました。


サービスを運用する上で必要な一部機能だけを切り取り、
クラウド上で使った分だけ課金するというモデルが生まれました。
AWSやGoogle Cloud Platform等のサービスです。

そこから更に進化して、
関数単位で動作させるLambdaや
情報の読み書きを実現するFirebase Realtime Databaseなどのサービスが生まれました。

Lambdaはエンドポイントが吐き出されてHTTPリクエストを投げれば実行可能、つまりWebサーバじゃね?
LambdaからAWSが公開しているクラウドのデータベースサービスに繋げば情報読み書き出来るよね。

Firebase Realtime Databaseに至っては「情報を格納する」という部分に特化しており、
優秀なJavaScriptのモジュールまで準備してスタンバっています。
「もうよほどニッチな事をしない限りバックエンド要らなくね?」と言われるようになりました。

サーバレスアーキテクチャの登場です。
まぁ、実際やっていることはバックエンドの処理をクラウドのサービスを使って解決しましょう。
うまく組み合わせればWebサーバ用意する必要ないよねってことです。


ですが、サーバレスアーキテクチャは出たばかりの概念なので、
実際に運用すると「応答速度が要求水準に達しない」だとか「メモリ不足で落ちる」みたいな事もあるとか……

参考記事: サーバレスアーキテクチャを採用しなかった理由

他にもそのクラウドサービスで実現出来るのか否かという問題も立ちはだかります。
例えばC言語で作った画像処理ソフトを埋め込みたい、既存のWebサーバならすぐ実装できるよ?
サーバレスアーキテクチャはサービス毎に出来ることが異なるので都度検証が必要になる。
もうWebサーバでやろっか?

こうなる事も多々ですし、サーバレスアーキテクチャが覇権を取ったとしても、
バックエンドで鍛えてきた技術はいくらでも活かせます。
そもそもクラウドのサービスでバックエンドを再現しているだけなので、バックエンドからは逃げられません。

今Node.jsを使ってWebサーバを作る経験は後々生きてくるでしょう。
でもまぁ、興味が沸かなければNode.jsなんてやらなくても良いです。

人間は必要に迫られてやる生き物なので、
Node.jsのWebサーバ構築が必要だと思った段階ではじめても遅くはありません。
どのジャンルもやってれば技術が身につきますし、技術に貴賤はありませんからね。

投稿2020/07/03 05:15

miyabi-sun

総合スコア21203

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NaoSasaki

2020/07/04 10:50

Webサーバであれば自由度の高いシステムを作れる、ということはそんなメリットにも繋がるのですね! サービスができた背景を知るとバックエンド処理を自身の手で構築できることの偉大さを痛感します…。 まだまだ知らないことがいっぱいあるな…と改めて気付けました!本当にありがとうございます! Node.jsをいじるのが面白くなってきた所なので、まだまだ勉強して好きなものが作れるよう技術を身につけます!!
guest

0

クライアントサイドで絞り込みをやるということは、絞り込む前の全データをクライアントに送る必要があります。

例えば絞り込みによって1万件のデータが10件まで減るとしたら、クライアントサイドでやる場合とサーバサイドでやる場合とで、データ転送量が1000倍違うことになります。当然転送にかかる時間も1000倍近く違います。

どう考えても、クライアントサイドの方が遅くなりますね?

投稿2020/07/02 23:41

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NaoSasaki

2020/07/03 00:04 編集

ごもっともです… Firebase RDBを使用していた際、データ表示までの時間がやけに長くヤキモキしていました… 確かに全データをクライアントサイドで取得し、クライアントサイドで振り分けを行っていました、転送量や時間についても納得しました。 欲しいデータに直接取ってきていち早くユーザに示すことができたら、より良いUXにも繋がりますし…もっと勉強します!! こんな稚拙な内容にお答えいただきありがとうございました!
退会済みユーザー

退会済みユーザー

2020/07/03 02:36

> tacsheaven さん 言わんとしているところは分かるんですけど、この表現だと誤解を生むかと。 絞り込みのスピードを上げるために、わざわざクライアント側にデータ1万件を放り込むケースはよくあります。
guest

0

ベストアンサー

Firebase Realtime DB や Contentful を使用していると少しわかりにくいかもしれないですね。これらは、一般的なサーバーサイドの処理を部分的に実現できてしまうため、必要ないように思えてしまいます。(というより、そういったコンセプトで作られたプロダクトです)

Firebase Realtime DB や Contentful はごく限定的な要件に対してパフォーマンスを発揮するものなので、合致しない要件に対しては当然適用できません。

そのため、より自由度の高いシステムが必要になったときには、別途サーバサイド処理を作ってやる必要があります。つまり、Node.js 等でわざわざサーバーサイドの処理を記述する理由やメリットは、「より高い自由度の高いシステムを実現するため」ですね。

投稿2020/07/02 22:07

編集2020/07/02 22:08
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NaoSasaki

2020/07/02 23:45

なるほど…確かに、それらのサービスの利用中もイマイチ機能に満足しきれないことが多かったです… >>自由度の高いシステムを実現するため とても納得できました!確かに自分で理想の機能を実現できたらUXの向上にも繋がりますし、それは開発者としてとても魅力的なスキルになりますね!! こんな稚拙な質問にお答えいただきありがとうございました! もっと調べてもっと勉強します!!
guest

0

身も蓋もない表現すると、「そういう設計をしてるから」「そういう要件だから」
初期の段階でメリットデメリットの話をすると結構混乱してくると思いますし、ピンとこないのではとも思います。

もう少し学習していって、「できること」「できないこと」「守れるもの」「守れないもの」が分かってから考えても良いのではと思います。

投稿2020/07/02 21:17

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NaoSasaki

2020/07/02 23:57

確かにある程度の機能が実装できるようになってから考えるべきでした…! 今質問を見返すと、試さず嫌いのような内容で情けない限りです…! 他の方々もおっしゃっているような「守るべきもの」等を自身の目で捕らえられるようになるまで、もっと調べてもっと勉強します! こんな稚拙な質問にお答えいただきありがとうございました!!
hentaiman

2020/07/03 00:29

firebaseで学習を始めてしまったからこういう疑問が湧くのかもしれませんが、例えばTwitterAPI(リクエストヘッダーの指定が必要)やDiscordAPIを利用した何かを作ろうとするとクライアント(ブラウザ)のみでは対応できなくなります あとは一般的なデータベースは仲介するサーバーサイドのプログラムが必要です
NaoSasaki

2020/07/04 08:28

返信が遅れてしまいました、すみません! そうなんですね…先ほどTwitterAPIについて調べましたがNode.jsを使用した例がいくつかあったので試してみます、MySQLやMongoDB等にも触れてみます! 詳しい例まで出していただて本当にありがとうございます…????
guest

0

クライアントサイドだと、プログラム改竄が簡単にできますよ。
ゲームキャラクターを無敵に変更したり、銀行残高を不正に増やしたり。

投稿2020/07/02 19:41

shiracamus

総合スコア5406

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NaoSasaki

2020/07/02 23:52

なるほど… バックエンド側の処理がブラウザの開発者ツールから覗けないのはそんなメリットも含んでいるんですね… 確かにクライアントサイドだとソースが全部覗けますし危険ですね… こんな稚拙な質問にお答えいただきありがとうございました! もっと調べてもっと勉強します!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問