【開発ネタ】jqueryのDeferredを理解するために役に立った本やwebサイト

f:id:keisuke_ohta:20160107210957j:plain

はっきり言って、僕はJavaScriptが嫌いです。JavaScript触っていると、クラスの概念がなくてちょくちょく「orz」ってなってます。

しかしシングルページアプリケーションが当たり前になりつつあるこの時代に、エンジニアならJavaScriptは避けては通れない道になっていると言っても過言ではありません。

そこでJavaScriptが嫌いな僕は、JavaScriptにクラスの概念を持ち込んだTypeScriptに出会い恋に落ちました。「これでJavaScript開発で幸せになれるー!」と。

しかし、新規開発であれば縦横無尽にTypeScriptで書けばいいものの、世の中には既に星の数ほどのシステムがあるわけで、その中でもTypeScriptで既に書かれているWEBアプリケーションはほんの一握りなわけで、ほとんどがJavaScriptjQueryAjaxのオンパレードなわけです。

そうなってくると、いくらTypeScriptが好きでも、実際にJavaScriptがわからないとTypeScriptに書き換えることもできないわけです。となるとJavaScriptをどうしても勉強する必要が出てきます。

そんなこんなでJavaScriptを日夜勉強中な僕ですが、既存のWEBアプリケーションを触っているとよく出てくる単語があります。「Deferred」ってやつです。皆さんご存じですか?Deferred。

前置きが長くなりましたが、このDeferredってやつがよくわからなかったのでいろいろ調べてみました。今回はその中でも役に立ったサイトや本を共有します。

Deferredとは?

先にDeferredを知らない人のためにDeferredの説明をしたほうがいいかもしれないですね。 Deferredの説明として、「パーフェクトJavaScript」という本にこんなことが書かれています。

Deferredは非同期処理を直列に記述、実行するための仕組みです。(中略)非同期処理の場合、順番に記述したとしても複数の処理が同時に実行されるため非同期処理Aが終わったら非同期処理Bを実行して、という処理の順番を指定するのが難しくなります。(中略)また、AとBの処理が終わってからCの処理を行う、というような記述をしようと思うとさらに複雑さを増します。そのような処理を簡単に記述するための仕組みがDeferredです。

つまり、非同期処理において「Aが終わったらB」とか「AとBが終わったらC」といったような記述を簡単にするものってことですね。そのまんまか。

役に立ったサイトとか本とか

本:パーフェクトJavaScript

この本は全体的に丁寧に書かれているのですが、その中でもdeferredを知るのに特に役に立ちました。ただ、実際のdeferredのコードにぶち当たったことのない人にとってはそれでも内容は難しいかもしれないです。

webページ

こちらはyahooデベロッパーネットワーク(つまりyahooさんの社員さん?)がまとめているページです。図解されていてわかりやすいです。「用語の整理:DeferredとPromise」の部分は一旦飛ばしてもいいかもしれません。

techblog.yahoo.co.jp

まとめ

2つしかなくて申し訳ないのですが、改めてdeferredを知るときにいろいろなwebサイトを見ましたが、この2つで十分かもしれません。他のページを読むとかえって混乱するかも。この2つをちゃんと読み込んだ方がいいと思います。

deferredをあまり知らない方で、既存のプログラム見てたらdeferredが嫌となるほど出てきた方は参考にしてみてください。 それではまた。

photo credit: Spring 2012 Student Hackathon Coding via photopin (license)