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

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

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

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

JavaScript

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

Q&A

解決済

2回答

208閲覧

Node.js用のライブラリをjavascriptでも使用できますか?

HikaruS.

総合スコア33

Node.js

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

JavaScript

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

0グッド

1クリップ

投稿2018/09/05 02:20

質問

Node.js用と記載されているライブラリは、javascriptのコードから使用することができると解釈してよいのでしょうか?
それとも、一概にそうとはいえない(製品による)のでしょうか?

質問の背景

「Node.js」が何であるか(言語なのか、ライブラリなのか、フレームワークなのか、環境なのか)について調査した結果、「『サーバサイド用javascript』と表される言語のうちの一種類である」という結論に至りました。
これが正しければ、Node.jsとjavascriptは異なる言語であると解釈するべきだと考えたためです。

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

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

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

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

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

guest

回答2

0

元々JavaScriptにはファイルの読み書き、自由なTCP/IP通信を行う機能は有していません。

えっ、FileAPIやAjaxがあるだろ?
説明がややこしいですが、あれらはブラウザ側が用意しているAPIであって、
JavaScript本体はそれを使わせてもらってるだけで別物なんですよね。
DOM APIもAPIを冠するだけあってJavaScriptの外側です。

要するにJavaScript本体って単純に演算するだけしか能がないんですよ。
だから意外と良いコード書けるやん、ブラウザ関係無しの環境で使いたいと、
V8エンジンを持ち込んでも機能がまるで足りないわけです。

Node.jsはC++でファイル読み書きやTCP/IP通信のモジュールを自作し、
CommonJSのrequireという思想を実装、require関数を通してこれらのモジュールを使えるように魔改造したJavaScriptの実装の一つです。

一概にそうとはいえない(製品による)のでしょうか?

npmで配布されているパッケージは全てrequireで呼び出す所が前提となっており、
そもそも普通のJavaScriptでどうやって使えばいいねん状態です。

JavaScriptのコード自体は単なる文字列です。
理論上は全部コピーして1ファイルに固めて、オレオレのrequire関数を実装して呼び出せるようにしておけばJavaScript環境でも実現できそうですよね。
それを本当にやってのけたのがBrowserifyというライブラリです。
この思想はWebpack等の競合ライブラリに受け継がれ、今ではJavaScriptのコードもnpmで配布することが一般的になっています。

もちろん、Node.jsの為にC++で用意された機能は一切JavaScriptでは使えません。
一覧はドキュメントに載ってまして、
例えばファイルの読み書きはFile System(fs)です。

使いたいライブラリのソースコードにrequire('fs')が書いてあったらほぼアウト。
マジかよ…それを全モジュールで行うの?と聞かれたらマジかつ全部やってくださいという回答になります…
とはいえ、プロジェクトの説明書きでJavaScriptでの利用を想定しているパッケージは、そういう旨を英語で頑張って説明している事が多いです。BrowserifyやWebpackの名前やリンクが出てきたらほぼ確定でセーフでしょう。

投稿2018/09/05 03:08

miyabi-sun

総合スコア21158

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

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

HikaruS.

2018/09/05 04:10

ご親切にありがとうございます。よくわかりました。 確認していたのはWebdriverIOがjsの試験にも使えるか、ということだったのですが、特にそういった記述がないので使えないようですね…。 詳細なご回答ありがとうございました。
miyabi-sun

2018/09/05 04:21

なるほど…そういう事でしたら話は変わってきますね。 既存のコードをNode.jsのようにrequireベースで全て書き直せますか? これがYesならば可能です。 Node.jsはあくまでFileSystemやrequireを内包した魔改造版JavaScriptであるだけなので、 最新のフロントエンドはFileSystemなどは使わないものの、requireの部分をフル活用して、最終的にBrowserifyやWebpackで1ファイルに固めてデプロイという手法を取ることが多いのです。 したがって、既存のjsの試験に使う事は大変だと思いますが、新しくNode.jsベースで書き直したコードはWebdriverIOのテストで活用出来ると思います。 少しの手直しでNode.js版に移植出来ると思いますのでぜひ検討してみてください。
HikaruS.

2018/09/05 04:27

miyabi-sunさん、コメントに対しても迅速にご反応頂きありがとうございます。 いくつかjsを使用しているプロジェクトがありますが、これらを書き直すことは現実的には不可能だと思います…(技術的には可能なのですが…)。 ただ、何故node.js用のライブラリを簡単にjsのそれに使用できないのか、また使用できるようにするためにはどうすればよいのかがよくわかりましたので、ご回答内容は大変意義のあるものでした。 補足的なコメントでしたのに有用な情報をご提供いただき、誠にありがとうございました。 hikarus.
guest

0

ベストアンサー

「『サーバサイド用javascript』と表される言語のうちの一種類である」という結論に至りました。

いえ、Node.jsは動作環境を指す単語であって、動くプログラミング言語はJavaScriptそのものです。

Node.js用と記載されているライブラリは、javascriptのコードから使用することができると解釈してよいのでしょうか?

それとも、一概にそうとはいえない(製品による)のでしょうか?

「javascriptのコード」を動かす環境と、ライブラリの中身によります。単純に計算を行うだけのようなライブラリは、ブラウザ環境でも問題なく動きますが、Node.jsにしかない機能に依存したコードは、もちろんブラウザで動かすことはできません(逆に、「ブラウザでしか動かないJavaScriptライブラリ」も存在します)。

投稿2018/09/05 02:24

maisumakun

総合スコア145183

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

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

HikaruS.

2018/09/05 02:26

理解できました。背景に記載した内容の誤りも正して頂き、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問