Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(nodecli): Hello Worldのセクションを追加 #162

Merged
merged 10 commits into from
Nov 15, 2016

Conversation

lacolaco
Copy link
Collaborator

@lacolaco lacolaco commented Nov 3, 2016

#7


[Node.js][]とは、サーバーサイドで動作するJavaScript実行環境のことです。
WebブラウザのChromeと同じ、[V8][]というJavaScriptエンジンで動作しており、Node.jsを使うことでWebブラウザ以外の環境でJavaScriptを実行できます。
使われる用途の例としては、HTTPサーバーやコマンドラインで使用するツールなどが多く、特にWebアプリケーションの開発に用いるツールの作成に用いられることが多いです。
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"多く、〜〜多い" が違和感あるな

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

用途の例としては、サーバサイドのWebアプリケーションやコマンドラインのツールとして利用されています。
ツールとしては、Webアプリケーションの開発を補助する用途?で利用されることが多いです。

なんか難しい。既存の文書とか参考にした方がいいかも。

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

書きすぎてる気がしたので内容を減らすことにした。別にNode.jsの宣伝がしたいわけではないことを思い出した

WebブラウザのChromeと同じ、[V8][]というJavaScriptエンジンで動作しており、Node.jsを使うことでWebブラウザ以外の環境でJavaScriptを実行できます。
使われる用途の例としては、HTTPサーバーやコマンドラインで使用するツールなどが多く、特にWebアプリケーションの開発に用いるツールの作成に用いられることが多いです。
同じJavaScriptで記述できるうえに、場合によってはNode.jsとフロントエンドのJavaScriptでソースコードの一部を共有することも可能なので、
その親和性の高さからNode.jsはサーバーサイドだけでなくフロントエンドの開発においても重要な要素になっています。
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"サーバーサイド" <-> "フロントエンド" ?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

サーバーサイド <-> クライアントサイド
バックエンド <-> フロントエンド

https://speakerdeck.com/koichik/isomorphic-survival-guide

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ですよねー


## Node.jsとは

[Node.js][]とは、サーバーサイドで動作するJavaScript実行環境のことです。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Node.js とは 〜 は 主に以下の2つになると思います。

これを事実と意見(推測、判断、想像)に分けてみると、以下な感じになりそう。

  • 事実: Node.jsは、Chrome の V8 JavaScript エンジン で動作する JavaScript 実行環境
  • 事実: Node.jsは、オープンソース
  • 事実: Node.jsは、クロスプラットフォームで動作する
  • 意見: Node.jsは、主にツールやアプリケーションの開発に利用される
  • 意見: Node.jsは、サーバサイドで利用される

事実と意見は見て分かるように区別できたのほうがいいので、事実は淡々と書いて、
"使われる用途の例としては〜" に意見を書いていく感じか。

基本的な流れはよさそう。最初に"サーバーサイドで動作する"というのがちょっとだけ違和感ある。"サーバーサイドで" か もっと抽象的に "クロスプラットフォームで" とかかな。

## Node.jsとは

[Node.js][]とは、サーバーサイドで動作するJavaScript実行環境のことです。
WebブラウザのChromeと同じ、[V8][]というJavaScriptエンジンで動作しており、Node.jsを使うことでWebブラウザ以外の環境でJavaScriptを実行できます。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WebブラウザのChromeと同じ、[V8][]というJavaScriptエンジンで動作します。

Node.jsを使うことでWebブラウザ以外の環境でJavaScriptを実行できます。

にイマイチ直接的なつながりがないので、分けたほうが良さそうかも。

次のコマンドを実行して、Node.jsで`main.js`を実行します。

```
> node main.js
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$> 統一する必要がありそう。

最近 この記号の意味がわからないという人を見たこともあるので(そのままコピペして動かないーとか)、

$ node -v

とは、コマンドラインで node -v を実行するという意味ですみたいなの一回だけ書いたほうがいいのかな。

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

とりあえず $ に統一することにして、注釈をどうするかはあとで考えたい

- OSを問わずクロスプラットフォームで動作する

Node.jsはもともとWebサーバーを構築するために開発されましたが、
今ではコマンドラインツールの開発や、Webアプリケーションの開発ツールの作成にもよく使われています。
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

開発と作成の違いみたいなところでぐちゃぐちゃする

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

今ではコマンドラインツールの開発や、Webアプリケーションの開発ツールの作成にもよく使われています

このツールの違いがイマイチ分からない感じがする。

  • サーバーサイドで使う目的で開発された。
  • けど、今はコマンドラインツールやElectronみたいな、ブラウザに依存しないJavaScript実行環境として幅広く使われてる。

的な感じなのかなー。(後者が広すぎ…)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

そんな感じになおしてみました

Node.jsは多くの他の言語と同じように、実行環境をマシンにインストールすることで使用できます。
公式の[ダウンロードページ][]から、開発用のマシンに合わせたインストーラをダウンロードして、インストールしましょう。

Node.jsには常に2つのリリース版が存在します。ひとつは**LTS(Long-Term Support)**版で、2年間のメンテナンスとサポートが約束されたバージョンです。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1179722411
約束だと当事者同士っぽい感じがするな。
"保証" としたい感じもするけど、イマイチ一般にLTSがどういうレベル守るものなのか分かってない…

他の言語圏ではどういう訳を割り当てるんだろ

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2年間のメンテナンスとサポートを提供するポリシーのバージョン

わかりにくい…

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"サポートが宣言されたバージョン" くらいのふわっとした感じですかね

Copy link
Collaborator

@azu azu Nov 6, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • 長期間のサポートが宣言されたバージョン
  • そのメジャーバージョン間に後方互換性がない変更を入れることは(ほぼ)ない(けどセキュリティパッチはちゃんと出るよ)

後者についての方が具体的なメリット分かりやすいかも?と一瞬思った。
(メジャーバージョン?とはという感じになって説明しにくいけど)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

両方書いてみたけど、後者のほうはごちゃごちゃしますね

@lacolaco
Copy link
Collaborator Author

lacolaco commented Nov 7, 2016

@azu 改めてレビューしてもらえますか?


# Node.jsでHello World

Node.jsでCLIアプリケーションを開発するにあたり、まずはじめにNode.jsについての簡単な解説を行い、Hello Worldアプリケーションを作成します。
Copy link
Collaborator

@azu azu Nov 8, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

微妙にセクションの目的が混ざってる感があるので、

まずはじめにNode.jsについての簡単な解説を行い、Hello Worldアプリケーションを作成します。

このセクションではこっちがメインです と分かるようにしたほうがいいかも。

Node.jsでCLIアプリケーションを開発するにあたり、(ここを補完するか) まずはじめにNode.jsについての簡単な解説を行い、Hello Worldアプリケーションを作成します。

もしくは、「CLIを作成する前に、まずはNode.jsについてとは何かについて学びましょう(ざつっぽい…)」 みたいな

- OSを問わずクロスプラットフォームで動作する

Node.jsはもともとサーバーサイドで使うために開発されました。
しかし今ではコマンドラインツールや[Electron][]のように、Webブラウザに依存しないJavaScript実行環境として幅広い用途で使われています。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ここをElectronにするかIoTにするか、もっと抽象的な表現にするか。
(別に具体的にElectronじゃなくてもいいとは思った)

- オープンソースで開発されている
- OSを問わずクロスプラットフォームで動作する

Node.jsはもともとサーバーサイドで使うために開発されました。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

サーバーサイド -> Webサーバと限定していいじゃないかな

https://en.wikipedia.org/wiki/Node.js#History

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@azu クライアントサイドに対するサーバーサイドという意味だと読んでいて理解しているんですが・・・。Webサーバにしたら何との対比かわからない・・・

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yumetodo あー、たしかにそういう対比ならサーバーサイドの方がいいですね。
"もともと"とあるので、元々Node.jsはWebサーバを目的に開発されてたと思うので。
(イベントループ、C10K)

この章では執筆時点の最新LTS版であるバージョン6.9系で動作するように開発します。

インストールが完了すると、コマンドラインで`node`コマンドが使用可能になっているはずです。
次のコマンドを実行して、インストールされたNode.jsのバージョンを確認しましょう。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

公式のインストーラーって自動的にpath通るんだっけ?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MSのガイドもちゃんと書いてあるわけじゃないのか…

https://github.com/Microsoft/nodejs-guidelines/blob/master/getting-started.md

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

http://qiita.com/taipon_rock/items/9001ae194571feb63a5e
WindowsはPATHを追加するのがデフォルトで入ってるっぽい。
(JavaScript フレームワーク入門|書籍情報|秀和システム読んでたら、Node.jsのインストール手順がスクショ付きで載っててそれで知った)
公式に近い丁寧なガイドあるとリンク貼れていいんだけどなー

[import main.js](src/main.js)

Webブラウザの実行環境では、`console.log`関数の出力先はブラウザのコンソールでしたが、
Node.js環境では標準出力になります。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ターミナルの標準出力 かな

この辺の用語イマイチ自信ない…
http://qiita.com/tadsan/items/441dcd910537d3f408e5

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

標準出力をどう処理するかは実行環境が決める話なので、単に「標準出力」でいいはず。


## Node.jsのインストール

Node.jsは多くの他の言語と同じように、実行環境をマシンにインストールすることで使用できます。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

- 他の言語
+他のプログラミング言語

@lacolaco
Copy link
Collaborator Author

ここらへんが落としどころかなという気がする。 Node.jsのインストール方法についてはいい資料が見つかったらリンクを貼るか、引用させてもらうことにしたい

@azu
Copy link
Collaborator

azu commented Nov 15, 2016

そういえば、 http://nodejs.jp/ も更新されたらしい。(ここにガイドができるといいんだけどなー )
けど、nodejs.org へのリンクがあるぐらいなので、特に紹介しなくてもいいかな。

@lacolaco
Copy link
Collaborator Author

あのサイトはコミュニティのポータルサイトなので、技術的な話は特に書かれてなかった

@lacolaco lacolaco merged commit 425f597 into master Nov 15, 2016
@lacolaco lacolaco deleted the nodecli-helloworld branch November 15, 2016 14:20
@lacolaco
Copy link
Collaborator Author

lacolaco commented Nov 30, 2016

パッケージマネージャ経由でのインストール公式ガイド
https://nodejs.org/ja/download/package-manager/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants