- ベストアンサー
Webサーバを自分で作る場合に知っておきたいこと
- Node.jsを使用してWebサーバを作成する方法についての質問です。具体的には、Node.jsのコマンドプロンプトを使用せずに別途作成したファイルをサーバにすることができる理由と、Node.jsの役割について知りたいということです。
- Webページを作成するために必要なファイルについての質問です。具体的には、どのような拡張子のファイルが必要で、それらの役割について知りたいということです。
- 以上が、Webサーバを自分で作る場合に知っておきたい情報です。Node.jsを使用することで簡単にサーバを作成することができますし、適切なファイルを用意することでWebページを作成することができます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>>ただ、その際に、なにが接点になるのでしょうか(><;;)またの質問本当にごめんなさい はじめにfsreadFileで読み込ませれば大丈夫ですか? これって、建築の例に例えたら、既成のアルミサッシを使わず、自分で木などを切断して窓枠を作りたいので、その作り方を質問しているって感じですね。 まあ、サーバに限らず、プログラミングを学ぶときは、このレベルから学習するのが王道だと思います。 「どのようにファイルを分けるか?」っていうのを考えるときは、プログラムに必要な機能を書き出して、どんな機能が必要か?を最初に一覧表などにします。 そして1つの機能を1つのファイルにまとめるのが、とりあえずの考え方だと思います。 1つの機能が簡単であれば、プログラムも短いはずですので、1つのファイルにまとめますし、もしかしたら、共通機能と名前をつけたファイルの中に、1つの関数とか、クラスとして詰め込むこともあると思います。 でも、1つの機能を日本語で簡単に表現できても、実際のプログラムは難しくて、長くなることがあります。 この場合は、1つの機能を細分化して、複数のファイルに分けたりします。 たとえば、fsreadFileは、ファイルなどの読み込みにつかう関数かメソッドでしょうから、1つとして考えてもいいと思います。 そして、通常、各機能は、呼び出し元と呼ばれる側の関係がある階層構造になることが多いです。これをモジュール構成図なんていったりします。 ソース・ファイルというか、プログラムの各機能を振り分ける方法は、書籍の「ソフトウエアの複合/構造化設計/G.J.Myers著」とか、「ソフトウエア作法/ブライアン.W.カーニハン&P.J.ブローガー著」を読むと勉強になります。 私は、これらの書籍でプログラムの設計方法を勉強しました。
その他の回答 (2)
- catpow
- ベストアンサー率24% (620/2527)
>>そのように、ファイルをわける際、なにを基準にしてわけるのでしょうか 同じhtmlとjavascriptで書かれているので、どこを区切りにしてファイルを分けて良いのか、難しいです まあ、「どのようにファイルをわけるか?」って質問は、「どのようなアーキティクチャーのWebシステムを選ぶか?」とか「どんな言語を使って、どのようなプログラム設計を採用するか?」という、もっと上位の問題に関係してきます。 最近では、WordPressというCMSソフトが幅広く利用されています。これを使えば、とりあえずのブログサイトを構築する場合、htmlとかjavascriptにタッチすることなく、お手軽にサイト構築ができます。 htmlやjavascriptにタッチしないので、「どこを区切りにファイルを分けるか?」なんて問題は発生しません。 また、同じCMSソフトですが、concrete5というフりーのものがあります。こちらは、ブログサイトを作るには不向きですけど、自由度あふれるレイアウトが手軽に作れたり、記事のバージョン管理や作成した記事の公開許可を別の担当者が行うなんて、大企業や官公庁での数万人ユーザでの利用を考慮した機能が盛り込まれています。 こちらも、WordPressと同様に、htmlやjavascriptに全くタッチしないでも、ある程度のサイト構築が可能となっています。 まあ、そういうCMSを使わない場合、データベースを使うなら、htmlとjavascriptだけでは無理で、SQL言語やPHP、Ruby、Rerl(おっと、Javaもいたか)などの言語が必要になります。 それらのソースやファイルをどう組み合わせるか?どう区切るか?ってのは、なかなか難しいと思います。 たぶん、時代の流れとしては、「htmlとかjavascriptやRubyなどのソースコードをどう区切るか?」なんて細かなことは、タッチせず、「こんなシステムが欲しい!、とその要求をルールに従って記載すれば、自動でシステムが完成する」という方向で流れていくのではないか?なんて思っています。 建築に例えると、「htmlやjavascriptをどう作るか?」ってのは、窓枠、お風呂を大工さんが1つずつ手作りしているのに対応する気がします。 現在では、窓は既成のアルミサッシー窓をベースに作成するでしょうし、お風呂も、カタログにあるユニットバスの番号を指定して、細部やオプションを調整しているだけだと思います。 最初に戻りますけど、「どこで区切るか?」は、昔からのプログラム設計手法である、「構造化プログラミング」「モジュール化」や「複合設計」を基本として、さらに「オブジェクト指向」やマイクロソフトのC#にある「デリゲート」「Linq」「EntityFramework」や「メタプログラミング」などの応用によってさまざまに変化すると思います。 (MSの最近提供されている、「Webサイトの自動生成機能は、なかなか頑張っているなあ」、なんて思ったりします) 「高度な機能、楽に使えるものを作りたい!、が、できるだけ楽して短期で作りたい!」とはいえ「最新のソフトは楽できるかもしれないけど、覚えることが多すぎるし、バグも多いだろうし・・・」っていう相反する状況の中で、自分に最適なものを選んで、その中で工夫していくしかないのでないか?と思います。
お礼
有り難うございます
補足
ファイルを分けるのは結構高度な知識が必要なのですね。でも、おっしゃっていたように、自分の中で分けたいなとおもったものを分けてみようかと思います。 ただ、その際に、なにが接点になるのでしょうか(><;;)またの質問本当にごめんなさい はじめにfsreadFileで読み込ませれば大丈夫ですか? すみません もう面倒だった無視してください m(__)m
- catpow
- ベストアンサー率24% (620/2527)
私は、今日、Node.jsというものを知ったので、違っているかもしれませんが・・・ >>Node.jsのコマンドプロンプトに書かなくて、 なぜ別途で作ったファイルをサーバにすることができるのでしょうか。 別途作ったファイルがサーバになったわけではありません。Node.jsがサーバであって、別途つくったファイルは、Node.jsに命令を与えているだけ。 >>一つのwebページをつくるのに、どのような拡張子の、どのような役割のファイルがいくつ必要ですか? 作りたいwebページに依存する。 たとえば、あるURLにアクセスしたら"Hello,world!"というメッセージだけをクライアントの画面に表示するだけなら、1つのjsファイルを用意するだけで終わりかもしれません。 でも、一般のWEBアプリ、たとえば、この質問サイトのようなアプリの場合、複雑な処理が必要です。 アクセスしたユーザIDを確認し、パスワードが違ったら拒否する。 ゲストなら、閲覧だけはOKとする。 登録ユーザなら、質問もOKとする。 選ばれたメニューによって、データベースに蓄積されたデータから、該当するデータだけを抽出して、それを見やすいように編集して、さらに広告ページを大量に挿入して、さらにアクセス記録をデータベースに書き込んで・・・ こうなってくると、プログラムの作り方によるでしょうが、1つのwebページを作るだけで、多くのファイルが必要になると思います。 また、ネットの情報を見ると、Node.jsは、1つの重い処理があると、それが全体の処理を重くするケースもあるけど、一般的なApacheサーバでは、発生しない問題がいくつかあるそうです。 ですから、「Node.jsで現在のApacheサーバを置き換えればOK!」ということにはならないようです。
お礼
有り難うございます
補足
回答有り難うございます! とてもわかりやすく回答していただいたので、どうしても、もう一つ質問したくなてしまったのですが、宜しければ回答お願い致しますm(__)m そのように、ファイルをわける際、なにを基準にしてわけるのでしょうか 同じhtmlとjavascriptで書かれているので、どこを区切りにしてファイルを分けて良いのか、難しいです すみません
お礼
回答有り難うございます! わがままいって答えをいただけるとは…!! すみません その本Amazonで見てみます! 階層に答えがあるんですね 今まで階層という言葉はよく見たんですが、なかなか理解しにくくて。。それ専門のような本もあるんですね 階層って、言葉の意味を理解しても、感覚として理解できないといいますか、プログラミングの中での強い、弱いという関係が一つ一つわからないので困ったものです