- ベストアンサー
JSでサーバサイドのプログラミングが可能?
- JSその物でサーバサイドのプログラミングができるのか疑問に思っている人も多いです。
- 実際にはJSその物やtypescriptでもサーバサイドのプログラミングが可能です。
- Node.jsやExpressと組み合わせることで、問い合わせフォームやショッピングカートのサーバーサイドのWEBアプリを作ることができます。
- みんなの回答 (12)
- 専門家の回答
質問者が選んだベストアンサー
>javascript(typescript/babel)とnodejs、expressは全く別の言語を学ぶような物という事ですか? 質問者さんにとって、どこからが別の言語に感じるのか分からないので、回答が難しいですね。ただ、当たり前ですが、言語はあくまでjavascriptなので、同じです。そこに差はありません。おそらく、言語が違うかどうかはあまり問題ではないのではないでしょうか。ようするに、どれくらいの学習コストが必要か、クライアントサイドでの学習がどれくらい役に立つのか、ということが知りたいのですよね? クライアントサイドのjavascriptをある程度ご存知であることを前提に話を進めますが、ブラウザを対象にしたjavascriptはwindowオブジェクトを主に操作します。この場合のほとんどのメソッドがwindowオブジェクトの中にあるといっても過言ではありません。対して、node.jsでは、windowオブジェクトは登場しません。当然です。目的がことなるからです。 今やjavascriptは、サーバーのみならず、machintoshのネイティブや、Adobe製品のプラグインなど、あらゆる場所で使えるようになっています。言語を共通して使えるということは、構文や基本メソッド(function/array/objectなど)を同じように扱えることを指します。しかし、javascriptの対象・目的が変われば、それに伴った学習が必要になります。ブラウザにはブラウザ用のメソッドが提供され、サーバーにはサーバー用のメソッドが提供されます。それを「まったくちがう言語くらいの学習が必要」と受け取るかどうかは個人の問題ですね。だって、言語は同じなんですから。
その他の回答 (11)
- b0a0a
- ベストアンサー率49% (156/313)
何を選んだらいいのか、ですか。 いつも同じような物を作るそこそこ人数のいるチームに所属しているのであれば、 チーム全体としてフレームワークを選んで投資するのは賢いと思います。 ですが、個人的に依頼を受けるようになれるためということであれば、 これをしておくべきと言うのはありません。 ありとあらゆるフレームワークに手を出し慣れ親しんでおくのも素敵だと思いますし、 そう言ったのには基本手を出さず、スクラッチで作れる技術を磨くのも格好いいと思います。 まあでも、ショッピングサイトのような典型的なものであればフレームワークに乗っかった方が良いでしょう。 もっとアプリケーション的なものであればAPIに強く構築技術を持ってる方が良いです。
お礼
>>> まあでも、ショッピングサイトのような典型的なものであればフレームワークに乗っかった方が良いでしょう。 もっとアプリケーション的なものであればAPIに強く構築技術を持ってる方が良いです。 JSその物(typescriptかbabel)jQueryもトイアワセフォームやショッピングカートなどは0から作る事になるので大変なので、アンギュラないしはreact、meteorなどフレームワークを使って作れば、簡単に導入が出来るのですね。
補足
トイアワセフォームやショッピングカートはサーバサイドなのでmeteor、expressだったですね。 レンサバでnodeが使える佐倉インターネットなどで有れば使えるのですね。 PHPより値段的に不利でしょうが。
- b0a0a
- ベストアンサー率49% (156/313)
因みにクライアントサイドの互換性問題は未だ有りますが、減ってきていますし質が変わって来ています。 昔の互換性問題とは、各ベンダーが好き勝手に自分の好きな仕様を作って入れたり、 独自に解釈しており、バグだらけで滅茶苦茶なものでした。 今は、標準機能が機能が実装されているか、いないかで考えればよいです。 しかも、高度なWebアプリでもない問い合わせフォーム作成程度で、 必要な機能が実装されているか悩むということは起きないでしょう。
お礼
問い合わせフォーム、ショッピングサイト作成程度ならtypescriptはもちろんバニラJSでも問題は起きなくなっているのですね。 結局どれを選んだら良いのか分かりませんね。
- b0a0a
- ベストアンサー率49% (156/313)
クライアントサイドとサーバサイドのコードベースを共通化しようとする試みはずっとされて来ていますが、 そもそも役割が違うのですからそんなに何でもかんでも上手くいくものではありません。 ただ、Nodeのnpmに登録されているモジュールは、サバクラ両方で同じように使える物がだいぶ増えてきました。 そこまでして共通化する必要があるかどうかは置いといて、パーツ単位ではかなり同じように組み立てることが可能です。
お礼
結局JSとjQueryの基本を学んだあとは、 javascript(typescript/babel)とnodejs、express、react何を学んでいくと、自分でサイト制作の仕事を受ける位なら良い選択と言えるのですかね? jQueryはオワコンのようですが、小規模サイトなら今後もこれで良いのですかね?
- amanojaku1
- ベストアンサー率54% (265/488)
(フォロント・エンドにおいて) JavaScript はブラウザによって互換性がありません、普通は対象ブラウザを何種類か決めて その非互換な部分に対応させるように工夫が必要となります。 シェアの低いブラウザまでは対応しないのが普通です。 こんなに違う! 世界と日本のブラウザシェア http://www.live-commerce.com/ecommerce-blog/browsers_share/#.Vu6-9333Ni8 PhantomJSと各ブラウザのJavascriptエンジンまとめ https://tsuchikazu.net/phantomjs-browser-javascript-engine/
- amanojaku1
- ベストアンサー率54% (265/488)
(難しいことはせずに単純なプログラムだけなら)新Netscape系は「Firefox、Chrome」と互換性があるようです。 JavaScript の場合、この程度のプログラムでも非互換部分の対応に労力がかかってしまう事もあると言う事です。
お礼
今はIE9以上のみの対応だと思いますが、それでもドロワーメニュー、などのどこのサイトでもある程度の物を作った場合、互換性の問題が出るのでしょうか? モダンブラウザでは問題なくなったので、jQueryはこれから学ぶ人は必要ないという記事が沢山ありますので、もう問題ないのではないでしょうか?
- amanojaku1
- ベストアンサー率54% (265/488)
後、Web アプリなどを作成したいのならクロスブラウザに関する事も知っておいた方が良いでしょう。 CSS/HTMLのテクニックをクロスブラウザ対応(特にIE)にする方法のまとめ http://coliss.com/articles/build-websites/operation/css/css-and-html-effect-with-cross-browsing-alternatives-by-1stwebdesigner.html HTML,CSSコーディングで気をつけたい基本的なポイント http://qiita.com/sawadays0118/items/4720d9c0d44e937fb2c2
- amanojaku1
- ベストアンサー率54% (265/488)
> Wikipedia『Node.js』 > https://ja.wikipedia.org/wiki/Node.js >> Node.js はイベント化された入出力を扱うUnix系プラットフォーム上のサーバーサイドJavaScript環境である(V8 JavaScriptエンジンで動作する)。 Node.js、Windows上でネイティブ実行が可能に http://www.infoq.com/jp/news/2011/11/Nodejs-Windows > Node.jsがCygwinなしでWindowsで動くようになった。パフォーマンスはWindows、Unix系ともにかなり改善されている。 > Node.jsの作者Ryan Dahl氏は、サーバサイドJavaScript環境の新しい安定バージョン、Node.js 0.6を発表した。その最重要フィーチャーはソケットにI/O Completion Portsを使ったWindowsのネイティブサポートだ。Node.jsのこれまでのバージョンはCygwin経由でしか動かせなかったが、これによってCygwinビルドはもはやサポートされなくなる。
- amanojaku1
- ベストアンサー率54% (265/488)
> 『体感!JavaScriptで超速アプリケーション開発 -Meteor完全解説』 > http://gihyo.jp/dev/serial/01/meteor/0001 >> Node.jsをベースとしており,全てをJavaScriptで記述できる >> Webアプリ開発を劇的に省力化してくれる >> 初心者に優しい > ↑広告が表示されたら右上のボタンをクリックして広告をスキップして下さい、 「Meteor」は、JavaScript/HTMLで開発するリアルタイムWebアプリケーション基盤。 http://www.publickey1.jp/blog/12/meteorjavascripthtmlweb.html > 公開されたデモンストレーションのスクリーンキャストを見たところ、Meteorにはそれ以上に新しい仕掛けが盛り込まれていました(スクリーンキャストはこの記事の末尾に埋め込んであります)。 > > それは「リアルタイムなWebアプリケーションを構築する」ための仕掛けです。正直に言うとスクリーンキャストを1回見ただけでは、すごいことは分かっても、具体的にそこで何が起きているのかよくわからず「何が起きているんだ!」と何度も画面につぶやきました(単に不勉強なのかもしれませんが……)。 > サーバのコード変更がWebブラウザへリアルタイムに反映 > Webブラウザ上のデータがサーバへリアルタイムに反映 > Webブラウザの変更が別のWebブラウザへリアルタイムで伝わる ↑この「Webブラウザの変更が別のWebブラウザへリアルタイムで伝わる」は どのような場合に使うかと言うとチャットなどのようなモノを作る時に必要となります。
- amanojaku1
- ベストアンサー率54% (265/488)
Babelとは CodeGrid https://app.codegrid.net/entry/babel-1#toc-0 > Babel(バベル)*は、次世代のJavaScriptの標準機能を、ブラウザのサポートを待たずに使えるようにするNode.js製のツールです。次世代の標準機能を使って書かれたコードを、それらの機能をサポートしていないブラウザでも動くコードに変換(トランスパイル)します。 ↑この記事からすると Babel はフロント・エンド(ユーザーの PC)側で動くようです。 Wikipedia『TypeScript』 https://ja.wikipedia.org/wiki/TypeScript > TypeScript はマイクロソフトによって開発されたフリーでオープンソースのプログラミング言語である。TypeScript は JavaScript に対して、省略も可能な静的型付けとクラスベースオブジェクト指向を加えたスーパーセットとなっている。 > TypeScript は大規模なアプリケーションの開発のために設計されており、コンパイルすると JavaScript のソースコードを出力する。 > 各種の JavaScript エンジン上で動作し、Node.js 等と共にコンパイラ・パッケージとして配布される場合もある。 『体感!JavaScriptで超速アプリケーション開発 -Meteor完全解説』 http://gihyo.jp/dev/serial/01/meteor/0001 > Node.jsをベースとしており,全てをJavaScriptで記述できる > Webアプリ開発を劇的に省力化してくれる > 初心者に優しい ↑広告が表示されたら右上のボタンをクリックして広告をスキップして下さい、 Wikipedia『Node.js』 https://ja.wikipedia.org/wiki/Node.js > Node.js はイベント化された入出力を扱うUnix系プラットフォーム上のサーバーサイドJavaScript環境である(V8 JavaScriptエンジンで動作する)。 『Node.jsのMVCフレームワーク「Express」の基礎知識とインストール (1/3)』 http://www.atmarkit.co.jp/ait/articles/1503/04/news047.html > 「Express」とは、Node.js上で動作するWebアプリのフレームワークです。 『Node.jsのMVCフレームワーク「Express」の基礎知識とインストール (2/3)』 http://www.atmarkit.co.jp/ait/articles/1503/04/news047_2.html > Expressでは「ejs」「ect」「haml」「jade」など、いろいろなテンプレートエンジンを使用してビューを記述できます。 ↑この記事からすると Express は Node.js上で動作し、「MVC」の「V」(ビュー)を記述できると言う事らしいです。 「MVC」に関しては下記『Model View Controller』を参照して下さい。 Wikipedia『Model View Controller』 https://ja.wikipedia.org/wiki/Model_View_Controller
- tracer
- ベストアンサー率41% (255/621)
>トイアワセフォームやショッピングカートなどが作れるようになるのでしょうか? なんの問題もなく作ることができます。 ただ、大いなる誤解をされているようにも見えますね。javascript(typescript/babel)を学べば、サーバーサイドプラグラミングができるようになると思わているとしたら、それは誤りです。発想としてはまるっきり逆です。サーバーサイドプラグラミングをするためのひとつの手段がjavascriptなのであって、javascriptをどんなに極めてもサーバーサイドができるようにはなりません。サーバーサイドプラグラミングをするには、その名の通り、サーバーサイドの学習が必要です。
お礼
>>> サーバーサイドプラグラミングをするためのひとつの手段がjavascriptなのであって、javascriptをどんなに極めてもサーバーサイドができるようにはなりません。サーバーサイドプラグラミングをするには、その名の通り、サーバーサイドの学習が必要です。 javascript(typescript/babel)とnodejs、expressは全く別の言語を学ぶような物という事ですか? それならアンギュラJS(ないしはリアクト)>nodejs、expressといった方が近いなどありますか? メテオ以外は結局別の言語のようなものでしょうか?
- 1
- 2
お礼
>>> 質問者さんにとって、どこからが別の言語に感じるのか分からないので、回答が難しいですね。ただ、当たり前ですが、言語はあくまでjavascriptなので、同じです。そこに差はありません。おそらく、言語が違うかどうかはあまり問題ではないのではないでしょうか。ようするに、どれくらいの学習コストが必要か、クライアントサイドでの学習がどれくらい役に立つのか、ということが知りたいのですよね? 仰る通りです。 文法は同じだが使うメソッドが全く違うと言う事ですね。 するとメソッド以外は、さほど変わらないがメソッドは全く0からのスタートというイメージですかね。