2015年7月14日
優秀なJavaScriptの開発者になるための5か条
(2015-06-17)by Ustun Ozgur
本記事は、原著者の許諾のもとに翻訳・掲載しております。
(注記:7/15、いただいた翻訳フィードバックを元に記事を修正いたしました。)
子供の頃、私の興味は互いに関係性のない様々な分野に及んでいました。数学も歴史も大好きでした。 ルネッサンスマン 、つまり 博学者 と言う、複数の分野に秀でた人になりたいと思っていました。これはとても難しい課題で、私は突如として、器用貧乏な人になってしまう危機に直面したのです。
私は特定の分野に特化しなくては、と考え始めました。そうすればたとえルネッサンスマンにはなれなくても、少なくとも、器用貧乏にならなくても済むと思ったのです。どうしたらソフトウェア開発をするのに必要な広い知識を保ちながら、1つの分野で専門性を高めることができるのでしょうか。
この記事では、過去5年間、私が良いJavaScript開発者になるために使ったテクニックとリソースの概要をお伝えしようと思います。
最近の多くのWeb開発者は、ある共通の問題に直面しています。複数の異なる分野、つまりデータベース、バックエンド・アーキテクチャ、フロントエンドUI、CSSの知識を用いてUIを洗練させることなど、全てにおいて優れていなければならないということです。
本を読みましょう
何よりもまず大切な所見としては、卓越するためには懸命な努力が必要だということです。生半可な(例えば、ブログ記事などをたまに読むような)勉強で得られるのは断片的な知識でしかありません。最初に投資する時間が少なくて済むので、楽に思えます。しかし熱心に集中して行う学習プロセスに比べ、このような勉強方法は長期的に見れば却って時間がかかるでしょう。ではどうすればいいのか? 答えは簡単です。本を読みましょう。
私たちの文明は本の上に成り立っています。書かれた言葉は、凝縮した形で、世代から世代へと知識を引き継ぐ手段です。Webテクノロジのエキスパートになろうと思う時にやっかいなのは、Webからは離れて勉強しなければならないことです。Webというのは何かを学習するには無秩序で気が散る媒体だからです。そこで、提案したいのは関連するテーマの本を読むことです。
JavaScriptについては、次の本から始めてみてください。『 JavaScript the Good Parts 』(訳注: 日本語版は『 JavaScript: The Good Parts – 「良いパーツ」によるベストプラクティス 』)は、JavaScriptのバイブルです。古い本ですが、最初に手に取るのに最適です。それから、『 JavaScript: the Definitive Guide 』(訳注: 日本語版は『 JavaScript 第6版 』)も必携です。参考図書としてそばに置いておきたいものです。jQueryの作者John Resigによる『 Secrets of the JavaScript Ninja 』(訳注: 日本語版は『 JavaScript Ninjaの極意 ライブラリ開発のための知識とコーディング(Programmers’ SELECTION) 』)も注目に値します。もしも良い(そしてオンラインで無料で入手可能な)本を探しているなら、『 JavaScript Allongé 』、『 You Don’t Know JS 』、そして『 Eloquent JavaScript 』( ここに 注釈付きのバージョンがあります)を見てみてください。紹介した本は電子ブック、または紙の本として購入できます。それと、本ではありませんがMozillaのデベロッパネットワークには良い JavaScriptガイド があります。
ライブラリを学び、使用し、読む
次に重要なステップは、ライブラリについて知ることです。言語の読み方を教えてくれるのが本だとすれば、ライブラリは言語の話し方を教えてくれるものです。ライブラリを扱う上で大切なことが2つあります。ライブラリを使うことと、そのソースコードを読むことです。
ライブラリを使うには、次に挙げるものに慣れましょう。jQuery、Backbone、 underscore、そしてReact、Angular、Emberの3つのうちどれか1つです。こうしたライブラリの使用は必須というわけではありませんが、それなりのJavaScriptの開発者であれば、当然これらのライブラリについて(良かれ悪しかれ)少なくとも何かしらの経験を持っているものです。
JavaScriptのスキル向上を目指す上で次に大切なことは、こうしたライブラリのソースコードを読むことです。中でも、Backboneとunderscoreのソースコードが特にお勧めです。というのも、コードの記述が実に素晴らしいからです。underscoreを読んで理解すれば、関数型プログラミングのスキルは向上するでしょう。ソースコードを読むのに適している他のライブラリを挙げるとすれば、何人かの開発者が勧めてくれたのですが、Mootoolsがあります(個人的にMootoolsを使ったこともソースコードを読んだこともありませんので、受け売りに過ぎませんが)。
上記リストの、例えばReactやEmberなどは、その他に比べると理解するのが難しいかもしれませんが、努力してみる価値はあります。少なくとも、自分のコードベースをどのように構築するかを理解し、何らかのパターンを見つけるために、他のライブラリのソースコードに目を通してみましょう。他にも、ソースコードを使用したり読んだりするのに適した有名なライブラリと言えば、d3、highcharts、moment.jsなどがあります。
訓練を積み、自問自答してみる
優れたJavaScriptの開発者になるための次のステップは、多くの訓練を積むことです。理想を言えば、DOMではなく、言語に焦点を当てたほうが良いでしょう。ですから、node.jsで実行できるように、テストハーネスがあることを確認します。ささやかなものでいいので、node.jsでたくさん練習しましょう。型を使って、JavaScriptの様々に異なる使い方を体験してみましょう。クロージャ、プロトタイプ、配列拡張(マップ、フィルタ)などです。練習を通して、JavaScriptの基本的な考え方を、常に心に留めておきましょう。
私の友人 Armagan はJavaScriptの優秀なプログラマで、講師でもあります。彼が講義で使っている本『 Pro JavaScript Design Patterns 』は、一読の価値があります。
次のような質問に答えてみましょう。prototypeの継承はどのように機能するのか、クロージャを決めるのは何か、thisというキーワードの意味はどのように変わるのか、apply、bind、map、filter、callなどはどのように使うのか、などです。JavaScriptの開発者が直面する、ソースに関するよくある疑問点のリストを作り、自分の言葉で説明してみましょう。他の人に対して、その概念を文章や口頭で説明することで、あなたのスキルは大いに向上します。こうした練習をする一方で、”もしこうだったら? ”と仮定し、深く考えてみましょう。例えば、”もしbindを2回使ったら、”this”の意味はどうなるか? jQueryはどうやって、キーワードの this
が、グローバルオブジェクトではなく、jQueryのオブジェクトを確実に参照するように制御するのか。このライブラリはどのような方法で、特定の機能を実現するのか”などです。こうしたよくある質問については、自分自身で考えてみるべきです。
標準規格を学ぶ
次のステップは、ECMAScriptの標準規格をより詳しく知ることです。最新のECMAScriptの仕様書をプリントアウトし、読んでみましょう。そして、ES6やES7で導入されたようなJavaScriptの新機能についても学びましょう。最近、promise、module、generator、comprehensionといった新しい機能が続々と登場しています。そしてもう一度言いますが、仕様書を読み、それに加えて専門書を読みましょう。Nicholas Zakasの本(『 Understanding ECMAScript 6 』)やAxel Rauschmayer博士のES6の本(『 Exploring JS 』)が役に立つでしょう。標準規格を主要なソースから学び、その言語に新しく追加された機能を知ることで、エキスパートへの道を進むことができます。
Webのリソースを使う
先ほど、Webを学ぶためにWebを使うことの危険性をお伝えしました。ですから私の最後の提案は、Web上のリソースからどのように最良のものを得るかということについてです。Hacker Newsは良いソースですが、S/N比が小さく、全てを読むには必要以上に時間がかかるでしょう。その代わりに、 JavaScript Weekly など、週ごとのダイジェストを読みましょう。そのうち、勢いがあるのはどのライブラリあるいはテクニックなのかが分かるでしょう。Twitterで、影響力のあるJavaScript開発者を探すようにしましょう。Tutsplusによる、 33人のフォローすべきJavaScript開発者 のリストが参考になるはずです。その他のWebのリソースとしては、 Toptal Blogs や Rebecca Murphey’s blog (このブログに興味があれば、 フロントエンド(JS)開発者のためのベースライン: 2015 という記事も読んでみましょう)、 Nicholas Zakas’ blog などのブログがあります(この他にも良いブログがありましたら、このリストに追加しますのでメールでお知らせください)。
他のWeb上の重要なリソースとしては、カンファレンスのビデオや教育用ビデオがあります。カンファレンスのビデオとして質が高いのは、JSConfのシリーズです。教育用ビデオとしては、Pluralsightを強くお勧めします。良質のコースを準備している経験豊かな開発者たちが大勢いるからです(別に提携関係を結んでいるわけではありません)。
時間のない人のために、簡潔にまとめたバージョン
* 本を読むことから始めましょう。凝縮された情報を得ることができます。
* jQuery、underscore、Backboneなどの基本的なライブラリを学びましょう。それらのソースコードを読むことも忘れずに。
* 訓練を積み、例えば継承のような一般的なJavaScriptの概念を、自分の言葉で説明できるようにしましょう。これらのテーマについて、講義や議論をしましょう。
* 新しいバージョンの標準規格をひと通り読みましょう。そしてその最新版を言語に使い始めましょう。
* Webリソースは、まとめてフォローしましょう。あなたが頻繁に読んでいるダイジェストやブログを週に1回程度、あるいはカンファレンスのビデオや教育用ビデオを見ましょう。
まとめ
これらのことを繰り返し行い、たくさんのプロジェクトを作り上げることで、あなたのJavaScriptのスキルは劇的に向上するでしょう。献身的な努力をいつでも心がけていれば、数年後にはエキスパートになっているはずです。私は自分自身を優れたJavaScriptプログラマだと思っていますが、高度な専門知識を身につけるには、まだまだ長い道のりが待っています。今回ご紹介したのは、私も行っているテクニックです。フィードバックや訂正があれば、遠慮なく [email protected] まで連絡してください。
最後に、Ustun Ozgur Softwareではトルコのイスタンブールにおいて、才能のあるJavaScript開発者を探しています。求人のある職種については、 当社のWebサイト でご確認ください。
楽しく学び続けましょう。
Ustun
ここまで読んでくださった皆様、私のTwitterアカウント、 @ustunozgur をフォローしてみてください。
私と一緒にこの議論を始めてくれた、 Engin Artislan に感謝します。
この記事について、 HackerNews で議論をしましょう。
株式会社リクルート プロダクト統括本部 プロダクト開発統括室 グループマネジャー 株式会社ニジボックス デベロップメント室 室長 Node.js 日本ユーザーグループ代表
- Twitter: @yosuke_furukawa
- Github: yosuke-furukawa