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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

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

Webサーバー

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

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

3回答

771閲覧

サーバーについて     

grougrau

総合スコア4

Node.js

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

Webサーバー

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

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

1クリップ

投稿2022/06/03 08:52

編集2022/06/03 08:52

サーバーについて学習するためにチャットアプリ(androidアプリ)を作成しようとしています。
いろいろ調べた結果、サーバーサイドはnode.jsで書き、クライアント側はkotlinで書こうと思います。

そこでいくつか疑問点が出たので質問します。

  1. サーバールームの画像を見るとPCの本体だけが並べられているのですが、あれは一度モニターにつないだ後にサーバーを起動してもう一度モニターを外してから24時間起動した状態いるのでしょうか?
  2. node.jsでサーバーを起動したあとに、実際に外部から接続するにはレンタルサーバーを借りないといけないのでしょうか?
  3. サーバーサイドもkotlinで書いたほうが良いのでしょうか?

サーバーについてはほとんど知識がないので詳しく教えていただければ嬉しいです

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

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

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

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

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

guest

回答3

0

ベストアンサー

サービス提供者がサーバー、サービスを受ける側がクライアントです。
例えば牛丼屋に入って注文して金払ったら牛丼が出てくる流れがありますが、
この時牛丼屋がサーバ利用者がクライアントです。

そして質問文の文脈的に
インターネット上に存在するHTTPサーバの事を指しています。
……が、インターネットとはなんぞや?Webとはなんぞや?に関する知識がまだ不足してそうですね。

3分間 NetWorking

PCをLANケーブルで繋げばLANケーブル越しに0と1の羅列を送受信することが出来ます。
各々が適当に文字列を発射しても対話は成立しないので、
偉い人がルールを作って管理してるわけです。

その根本的な話から、HTTPサーバとはなんぞやみたいな所まで、
3分間Networkingを読めばなんとなくで全てわかるので一度全部に目を通してきてください。
一見面倒に思えますが、これらを読んでおくのはこれからの人生でかなり重要になると思います。


ここからサーバーになる為の条件を解説していきます。

Webサーバというのは

  • マシンのTCP80/443番等のポートで待ち受ける事
  • HTTPリクエストを受信したら、HTTPレスポンスを返す事(Webの仕様書であるRFCで定義されている)

こういう機能を持つアプリケーションを稼働させているマシンを指します。

別にデータセンターのサーバールームの中で無かろうが、ディスプレイがひっついていようがいまいが、
HTTPリクエストを受信して、HTTPレスポンスを返す機能を持つアプリケーションを稼働させれば
それは全てHTTPサーバ、Webサーバと名乗って構いません。

もし貴方がWindowsやMacOSのマシンを使ってteratailにアクセスしているのであれば、
すぐにでもWebサーバに変身させる事が可能です。


2: node.jsでサーバーを起動したあとに、実際に外部から接続するにはレンタルサーバーを借りないといけないのでしょうか?

必ずしもしなければならないのか?という意味で言えば、NOです。
自宅で光回線を引いているのなら、ルーターの設定を変更して外部からの通信がマシンにアクセス出来るようにして、
そこでHTTPサーバを構築すれば実現出来ます。
1990〜2000年頃はこういう手法でWebサーバを立ち上げる人もそれなりにいました。

しかし、今日では月1000円弱でインターネット上にぶら下がってるPCをレンタル出来るようなサービスがいくつもあり
そのマシンでWebサーバを稼働させればすぐに通信出来ますからね。
サービス作って一山当ててやろうとする企業以外は皆そういうサービス使ってますね。
例: ConoHaのVPS

まぁ、自宅内でサーバサイドを作り込んで、
完成して公開する時にこういうVPSサービスを借りれば良いでしょう。

3: サーバーサイドもkotlinで書いたほうが良いのでしょうか?

Node.jsでもKotlinでも、C++でもGo言語でも……
HTTPリクエストを受け取って様々な処理を施して、HTTPレスポンスを返すプログラミング言語は腐る程存在します。
なので自分が好きな言語、自分が得意な言語、お目当てのライブラリやモジュールがあって楽に実現できそうな言語と色々選択する軸が存在します。

質問者さんの場合、Androidアプリを作りたいということなのでKotlinはどの道扱う必要があると思うので、
0からNode.jsを覚え直して使うより、なれてきたKotlinをそのまま使うよというのはアリよりのアリって感じになります。

逆にNode.jsでAndroidアプリを作ってしまう仕組みもありますから、
Kotlin捨てちゃってNode.jsで全部作ってみるなんて案もあります。

投稿2022/06/03 10:09

miyabi-sun

総合スコア21158

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

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

grougrau

2022/06/03 23:35

回答ありがとうございます。 もっと学習して理解を深めたいと思います。
guest

0

他の方が回答されていますので、補足的に回答してみます。

サーバールームの画像を見るとPCの本体だけが並べられているのですが、あれは一度モニターにつないだ後にサーバーを起動してもう一度モニターを外してから24時間起動した状態いるのでしょうか?

http://pinnaclebuspro.com/home/server-room/
http://pinnaclebuspro.com/wp-content/uploads/2018/01/server-room.jpg

イメージがあっているかどうかわからないですが、
仕事でデータセンターなどに行くと、
ラックにサーバーが搭載されているのを使ったりします。

https://ja.wikipedia.org/wiki/ラックマウント型サーバ

同じような形状でディスプレイ(モニター)(コンソール)もラックから引き出して起こして使うようなものがあります。

https://jpn.nec.com/pcserver/option/rackmount/index.html

このコンソールは、スイッチで切り替えて、ラック内の複数のサーバーを操作できるようになっています。
このコンソールは外されることなく、常に接続された状態になっています。
このコンソールは普段はラックの中に収まっています。
(正面から見るとラック1段分のサーバーと同じ形状ですので、本体だけが並んでいるように見えるかもしれません)
ハードウェアを導入する時やハードウェアをメンテナンスする時に引き出して使ったりします。
アプリケーションを開発する人が普段サーバーを操作する際はリモートだったりしますので、あまりこのコンソールを使うことはありません。
ですので、「モニターを外して」というのはちょっと違うのかなと思いました。

(全てのラックマウント型サーバが当てはまるかどうか、ちょっとわかりません・・)
(「サーバールーム」の認識が違っていたらごめんなさい・・)


コメントありがとうございます。
コメントに対する追記です。

スイッチを入れた段階で自動的にアプリが起動してサーバーが立ち上がるという認識で正しいでしょうか?

質問欄の「モニターを外して」の部分についてだけ回答したつもりでしたが、
この回答に対するコメントで良いのでしょうか。。

そういう仕組みにしておくとそのような動きになると思います、
という回答になるのでしょうか。。

Webアプリを動かすための役割を提供するサービスなどを使うと
あまりこの辺りを気にすることはないのかなと思います。
ブラウザーから操作できるような管理ページが提供されていたりして、
ハードウェアの電源ボタンを押して電源を入れる、
なんていうことがなさそうです。。

他の方の回答が適切なのかもしれませんね。
質問者様の聞きたいことをよく把握せず、
見当違いな回答をしてしまったかもしれません。
逆に混乱させてしまったかもしれません。
ごめんなさい。

投稿2022/06/03 10:33

編集2022/06/03 22:00
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

grougrau

2022/06/03 15:24

回答ありがとうございます。 スイッチを入れた段階で自動的にアプリが起動してサーバーが立ち上がるという認識で正しいでしょうか?
grougrau

2022/06/03 23:35

コメント追加ありがとうございます。 もっと学習して理解を深めたいと思います
guest

0

サーバというものを勘違いしていると思います。

サーバールームの画像を見るとPCの本体だけが並べられているのですが、あれは一度モニターにつないだ後にサーバーを起動してもう一度モニターを外してから24時間起動した状態いるのでしょうか?

サーバはPC(Personal Computer)とは言わないと思いますが、そこはおいておいて、OSのインストールにも、OSの起動にもモニタは必須ではありません。
OSのインストールのときだけモニタはつなぐかもしれませんが、電源ON/OFFのときには基本的にはつながないでしょう。

ここでの「サーバ」は、サービスアプリケーションを動かすためのシステム(OSとか)が動いているハードウェアとしてのサーバを指していますね。

node.jsでサーバーを起動したあとに、実際に外部から接続するにはレンタルサーバーを借りないといけないのでしょうか?

ここで言う、「サーバ」というのは、クライアントサーバシステムのサーバアプリケーションのことでしょう。
ここでのサーバは、サービスを提供しているアプリケーションなので、ハードウェアとしての「サーバ」で動作している必要はありません。

node.jsで作ったサーバアプリケーションは、どこで動かしていても「サーバ」となります。
自分のPCでもOKです。

サーバーサイドもkotlinで書いたほうが良いのでしょうか?

そのほうが良いということはありません。適した言語で書けばいいのです。
適しているというのは、サーバの環境だったり、開発者のスキルだったりのいろいろな要因で決まるものです。

回答を書いていると、「サーバーについて学習する」の目的がよくわかりません。
どちらの「サーバ」を学習したいのでしょう?

投稿2022/06/03 09:26

TakaiY

総合スコア12765

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

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

grougrau

2022/06/03 23:35

回答ありがとうございます。 もっと学習して理解を深めたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問