Edited at

JavaScript(系言語)のススメ

More than 1 year has passed since last update.

JavaScript(系言語)のススメ

この記事はプログラミングを始めようとしている人など、初心者的な人に向けた記事ですが、疑問や突っ込みなどありましたら是非コメントをいただけたらと思います。

僕は最近プログラミング習得における第一言語はJavaScriptが適していると考えています。


  • ブラウザ上で動きを指示することができる言語であり、どうせプログラミングやるなら動きを指示できた方がやれることが広がってハッピーでしょう

  • バックエンドは違う言語にするというのは手だけど、どうせならしっかりJavaScriptやりこんだ方が応用も利くだろうしハッピーでしょう

  • ブラウザ側でJavaScriptを動かす場合でも、バックエンド側のJavaScriptの知識はあった方がいいです

JavaScriptにも難点はあって、ライブラリに定番がない、変化の早すぎる世界だというあたりはしんどいです。知識を常にアップデートし続けるのがつらい人はJavaとかやった方が幸せになれるかもしれません。


どの言語・バージョンを選べばいいのか?

JavaScriptの言語としての仕様がECMA Scriptです。2015/5/2現在のウェブブラウザでの標準はECMA Script 5です。

JavaScriptの世界には方言(AltJS)がいくつかありますが、好みや、周りの人が使ってるモノとかでいいと思います。


ECMA Script 5

一番スタンダードな JavaScript です。利点はブラウザでそのまま動くことで、欠点はちょっと書き方が冗長なことです。

var hoge = 'hoge'

if (hoge === 'hoge') {
console.log(hoge)
}

var fuga = function(arg) {

return arg + 1
}


ECMA Script 6 or 7

未来バージョンの JavaScript です。利点は将来のメインストリームであり、書き方もECMA Script 5 よりは書きやすいこと、欠点は(現状のウェブブラウザでは)コンパイルが必要なことです。

var hoge = 'hoge'

if (hoge === 'hoge') {
console.log(hoge)
}

var fuga = (arg) => {

return arg + 1
}


CoffeeScript

書き方が独特な方言です。コンパイルが必要になります。利点は覚えればすごく描きやすいことやRuby/Python経験がある人にはなれやすいことで、欠点はコンパイルが必要なことと、メインストリームではないってことと、文法が独特な点でしょうか。

hoge = 'hoge'

if hoge == 'hoge'
console.log(hoge)

fuga = (arg) => arg + 1


TypeScript

ECMA Script 6 にほどよく近い感じの方言です。オブジェクト指向をちゃんとやりたい人向きです。利点は将来のメインストリームに近く、素のJavaScriptとの違いがそんなになく、それでいて書きやすいこと。欠点はやはりコンパイルが必要なことでしょうか。

var hoge = 'hoge'

if (hoge === 'hoge') {
console.log(hoge)
}

var fuga = (arg: number) => {

return arg + 1
}


おすすめ習得方法


Hubotをいじる

Hubotは汎用的なチャットbotです。Twitter, IRC, Slack などに対応してます。題材として楽しいというのが理由ですね。最近流行のChatOpsにも役立つかもしれません。

難点になるかもしれないのは、主に使われてる言語がCoffeeScriptという点でしょうか。(JavaScriptでも書けますが、標準のスクリプトがCoffeeで書かれてます)


(TODO: Ajaxネタで何か)


(追加案募集)

ほかに楽しいおすすめの習得方法があれば、是非コメントをお願いします。


どんなライブラリ・フレームワーク・ツールがおすすめなのか

基本的にJavaScript界隈はほかの言語と比較して流行廃りが圧倒的に早いです。なので、いろいろなライブラリ・フレームワークに対応できた方がいいです。そして、基本的には小さいライブラリを使うことをおすすめです。


NodeJS

非ウェブブラウザ(コマンドライン)で動くJavaScript処理系です。様々な非ブラウザ系ツールが動く母体となるものです。クライアント側のJavaScriptにしか興味のない人でも触っておくことをおすすめします。ウェブサービスをNodeJSなどで運用すべきという意見ではないですが経験値はあって損はないってところです。


npm

NodeJS向けのパッケージマネージャ(CentOSで言うところのyumみたいなもの)です。必須のツールです。

インストールするライブラリは大体ジャンル名 + npm でぐぐれば見つかります。


webpack or browserify

複数のJavaScriptを統合したり、様々なコンパイルしたり、npm でインストールしたパッケージを統合したりするのに使えます。


ウェブブラウザのデバッグツール

ChromeやFirefoxには、デバッグツールと言われるものが入っています。console やデバッガがあり、それらはきわめて有用です。JS開発では是非ともなれておきましょう。