Murga

個人的に言いたいコト・主張・気持ち。

JavaScript・Node.js が他のプログラミング言語より優れていると思う点

僕は JavaScript が好きだ。そして、単に好みなだけでなく、他のプログラミング言語と比べて有利な点も多いと思うので、選びやすいと思っている。

今回は、JavaScript・Node.js が他のプログラミング言語より優れていると思っている点を挙げてみる。

Node.js を使わない JavaScript のメリット

  • 実行環境の用意が要らない
    • HTML ファイル内に JS をベタ書きし、OS にプリインストールされているブラウザで開けば結果が見られる
  • 使用するブラウザによる差異もない
    • IE を除けば、尖った新し目の関数を多用したりしなければ、実行するブラウザによる差異も基本的にない (良い時代になった…)
  • コンパイルする必要がない
    • 書いたコードがそのまま動かせる

Node.js のメリット

  • クロスプラットフォーム対応している
    • Node.js さえインストールされていれば OS を選ばない (ファイル周りは若干 OS を意識した書き方の注意が必要だが)
  • コンパイルする必要がない
    • 素の Node.js で書いていればトランスパイル不要 (最近は TypeScript を使う例も多いとは思うが、僕は素の JS でよく書いている)
  • フロントエンド開発で必ず使うことになる JavaScript 言語をそのまま使ってバックエンドを実装できる
    • バックエンド開発で別言語を選ぶと、コンテキストスイッチが辛かったりする (Java なのに JS っぽく書きそうになったり、「JS ではこう書くけど PHP ではこう書く」みたいなことを考えなくて良くなる)
    • フロントエンドでも使われていて、JavaScript が読めないプログラマは居ないので (決め付ける)、Scala とか Go とか Python とかで書くよりも読んでもらいやすい
  • 簡単なスクリプトならシングルファイルで実行できる
    • 外部 npm パッケージを使わないレベルなら、シングルの .js ファイルを node コマンドで直接実行すれば良い。package.json も不要
    • Shebang #!/usr/bin/env/ node を1行目に書いてファイルに実行権を与えれば、コマンド的にも動く

「Ruby、Perl、PHP なんかもシングルファイルでコンパイルなしに動かせますけど?」って言われそうだけど、これらの言語は実行環境・開発環境をインストールするのに若干手間がかかる感じがある。また、Windows でも Mac でも関係なく、バージョンアップすると実行環境が壊れてちょっとしたトラブルが起こることが多いなと感じている。

それと比べて、Node.js は (v5 あたりまでは微妙だったが) v7 以降くらいなら大体同じように動くようになってきたから環境を選ばない。バージョンアップする時も、Nodist や Nodebrew を経由して入れていれば、他の言語における anyenv 系よりもトラブルなくアップデートしやすいと思う。

何より、フロントエンドと同じ言語で書けるのはとても良いと思う。Web アプリを作る上で、HTML・CSS・JavaScript は必ず触れる。その中の1つである JavaScript でバックエンドも書けるなら、学習する言語の数を増やさなくて良いし、コード的にもフロントエンドとバックエンドで共用できるコードが出来たりする (モデルとか)。Nx というフロントエンドとバックエンドを合わせたモノレポを作るツールもあったりして、同じ言語でそのまま書けるメリットはデカい。

JavaScript を読んだことも書いたこともない、というプログラマは少ないだろうから、JavaScript に苦手感があるような人間に対しても、無理やり引き継がせて何とかなる言語だと思っている。コレが Python や Go なんかだとちょっと尖ってるし、どうだかなぁと。

ところで、JavaScript に抵抗感を持つプログラマって何なんだろう。言語的な特徴でいえば PHP も大して変わらないと思ってるし、単にレベル低いのに選り好みしてるなーコイツとしか思ってないんだが。式、関数、暗黙型変換などの言語仕様も、フロントエンドとバックエンドの両方で JS を使っていればすぐに分かることだし、そういうことでやらかすようなコードはすぐに書かなくなる。他の言語に優位性を感じるほど大きな問題だとは思ってないんだけど、結局はスキルの問題かねぇ。

そんなワケで、JavaScript、Node.js、良い言語ダヨー、他の言語より楽なところ多いヨー、という主張でした。

JavaScript Web開発パーフェクトマスター (Perfect Master)

JavaScript Web開発パーフェクトマスター (Perfect Master)

「気がつきすぎて疲れる」が驚くほどなくなる「繊細さん」の本 を読んだ

「気がつきすぎて疲れる」が驚くほどなくなる「繊細さん」の本、という本を読んだ。

HSP、Highly Sensitive Person。日本語でいうと「高感受性」という特性が、一部の人にはあるそうだ。日常会話だと「気にしい」「心配性」「神経質」といった言葉で表現されたりするが、五感の感受性が他人よりも強く、そのためにストレスを感じる人のことだそうだ。

自分はまさにコレだ。僕の妻は、周りの状況をいちいち気にしたりしないが、自分は「向かいから歩いてくる人とぶつかりそうになった」程度のことでも気を使うし、「妻の生活音がいつもより少し大きい、何かイライラしているのだろうか?」などと考えてしまい自分の作業に集中できなくなったりする。

この本では、「そういう神経質な特性は治んねえから、無理に治そうとすんな」というところから始まり、「他の人が気にしていなくても、自分が気になるなら、こうやって対処してみなはれ」という対処法を紹介してくれている。

例えば、隣の席の上司にイライラするなら、ファイルホルダーを置くとかして物理的に仕切りを作ってしまえ、とかいう話があった。他の人はそうしていなくても、自分が気になるのであれば、仕切りを作ることで「ココからは自分のスペースだ」という安心感を作り出し、自分の心を平穏に保つワケだ。

アロマを炊いてごまかしても良いし、「あることが無視しきれない」なら、「3回中2回は無視することにする」といった自分ルールを作ることで、無理なく対象を遠ざけるテクニックが紹介されている。

この本で紹介されているテクニックは、「こうすると図太くなれるよ」という類のモノではないので、そこは注意だ。あくまで、こうした性質を使い、穏便に済ませていく、優しい気持ちの人向けの内容だ。「俺はこんなに我慢してイライラしてるんだ、どうやってこの怒りを相手にぶつけたらいいんだ!!」と思っているような、攻撃的な人に向けた対処法は紹介されていないので、あしからず。

もう少し他人をバカにしたり攻撃したりして自分を保ちたい、という人は、ひろゆきの本が良いんじゃないかと思う。コレ↓とか。

neos21.hatenablog.jp

以上〜。神経質なみんなも、HSP という言葉を覚えて、平穏に暮らしていきましょう〜。

「気がつきすぎて疲れる」が驚くほどなくなる  「繊細さん」の本

「気がつきすぎて疲れる」が驚くほどなくなる 「繊細さん」の本