2009年2月24日

Tips

エンジニアの勉強法について

  • このエントリーをはてなブックマークに追加

こんにちは。
サービス統括部に所属しております、堀 邦明と申します。
普段はYahoo! JAPANトップページのフロントエンドエンジニアとして、JavaScriptやPHP,Perlといった言語を利用して開発しています。

この度、デベロッパーズサミット2009というイベントにおいてエンジニアの勉強法というテーマでJavaScriptの勉強法についてお話をさせていただきました。
今回は、そのときのお話について発表しきれなかった部分も含めてご紹介できればと思います。

勉強の分類

勉強には大きく分類して2つのステップがあると思います。

1. 情報収集

1つは情報収集です。

技術書やウェブサイト、ブログを読んだり、勉強会やセミナーに参加してみる、といったことが該当します。

2. 実践

次は実践です。

技術書を読んだだけ、イベントに参加しただけ、では成長しないのでそこで吸収した知識を元に自分で手を動かします。

それでは、上記の内容について具体的にどのようなことをすればいいのかを詳しく紹介していきたいと思います。


1. 情報収集

技術書

まず最初は基本中の基本ですが、技術書を読むことです。
書籍には良い本、悪い本などいろいろあるかと思いますが、幸いJavaScriptには良書と呼ばれるものがたくさん存在しています。

  • JavaScript 第5版

    オライリーより出版されているJavaScript第5版です。
    この本は通称「サイ本」と呼ばれておりJavaScriptを使った開発を行ううえで、手元に常に置いておきたい1冊です。

  • The Good Parts

    こちらもオライリーより出版されている書籍です。
    この本はJavaScriptをより深く使いこなすためのよい手法が多く掲載されています。
    「とりあえず動くものは書けるようになったけどもっとよい書き方はないだろうか?」という人にオススメです。

  • まるごとJavaScript & Ajax ! Vol.1

    こちらはImpress Japanより発行されている書籍です。
    発売当時(2007年)の最新状況を中心とした記事が多く、今読むと若干古い情報も入っていますがそれでもまだまだ勉強になるところがたくさんかかれてあります。
    特に、序盤の小飼弾さんと天野仁史さんの記事ではJavaScriptの特徴である「プロトタイプベースのオブジェクト指向」について解説されており、サイ本の解説が詳細すぎて理解に時間がかかる人はまず先にこちらの解説を読んでみるといいと思います。

  • リファレンス本

    最後は特定の書籍というわけではないのですが、リファレンス本が手元に1冊あると楽だと思います。
    参考までに私はエムディエヌコーポレーションより発行されている「JavaScript ビジュアル・リファレンス」という本を利用しています。

ウェブサイト、ブログ

次はインターネット上からの情報収集です。

ソーシャルブックマーク

一つはソーシャルブックマークからの情報収集です。
例えば国内だと「はてなブックマーク」が特に利用者にエンジニアが多く技術系の情報を収集するのにとても有効です。
また、英語圏のまだ国内で紹介される前の新しい情報を探したい場合は「delicious」などがオススメです。
上記のソーシャルブックマークなどで「JavaScript」や「ajax」といったタグで絞り込んだ内容をRSSリーダーなどで購読することで情報を収集します。

仕様書

JavaScriptは歴史的な経緯によってECMA-262に準拠しており、詳細な仕様はこちらの資料で確認できます。

JavaScripterな人のブログ

JavaScriptを扱っている人のブログを購読します。
仕事で扱っている人、趣味で書いてる人問わずコードが書いてあれば読んでみましょう。
生きているコードを読むと勉強になりますし、自分だったらこう書くなぁ、というのがあればコメントを残す
ことで多くの人とつながりを持つこともできます。

セミナー&勉強会

次はセミナーや勉強会の話です。

今回発表させていただいたデベロッパーズサミット2009もそうですが、セミナーでは普段かかわることの難しい人や企業の貴重なお話を聞くことができます。
Shibuya.JSというJavaScriptコミュニティがあるのですが国内の大きめなイベントでいろいろな発表をしています。
いい意味で変態な人が多く、内容も実用的なものから最新のもの、ちょっと変わったJavaScriptの使い方など多岐にわたっておりとても刺激になります。

ほかにもいろいろなJavaScriptの勉強会が開催されており

などがあります。

また上記以外にもこういったセミナーや勉強会はIT勉強会カレンダーに情報が集約されているので興味のあるセミナーや勉強会には積極的に参加してみるのもよいと思います。

人の書いたソースコードを読む

ウェブサイト、ブログを読むとも少し重なる部分もありますが、人の書いたソースコードを読むことは非常に勉強になります。
リファンレス本や仕様書を片手に書いているだけでは分からない"生きた"コードをたくさん発見できます。

特にライブラリ(フレームワーク)のソースコードなどは非常に勉強になる部分が多いと思います。
代表的なものだと

などがあげられると思います。

また、JavaScriptの特徴として実際に今動いているソースを読める、といったことも大きいと思います。
「ページのソースを表示」などから実際にそのサイトで動いているソースを読めます。

改行やスペースが削除されている場合はJavaScript beautifierなどを利用するといいでしょう。


2. 実践

サンプルの実行

実践で最初に紹介するのはサンプルの実行です。
例えば前述の書籍や多くのウェブサイトやブログで実際のコードを見られます。
これらを実際に動かしてみましょう。
幸いなことに、JavaScriptはブラウザとメモ帳さえあれば実行環境が整っていることになるので今すぐにでも始めることが可能です。

個人的なオススメの実行環境はFirefoxFirebugという組み合わせです。
FirebugはFirefox向けのフロントエンド統合開発環境のようなもので、JavaScriptコマンドラインを兼ね備えており閲覧しているサイト上で手軽にJavaScriptを動かせます。

Try and Error

サンプルを実際に動かしているとタイプミスをしたり、細かい実行環境の違いなどでエラーが発生することもあると思います。
そうしたらチャンスだと思ってください。
JavaScriptに限った話ではないですが、エラーの修正作業はプログラミングスキルを向上させるうえで必要不可欠な要素です。

そのため、とにかくたくさんコードを書いて、たくさんエラーを発生させて、たくさん修正するといったサイ
クルをひたすら繰り返しましょう。
前述にもありますが、手を動かすことがプログラミングスキル上達への一番の近道です。

アウトプット

こうして、たくさんのコードを書いたら今度は自分から情報をアウトプットしてみましょう。

たとえば

  • こんなこと勉強してるよ!
  • このサイトでこういうことができたらもっと便利なのに...。
  • こんなプログラムを書いてみたよ!

といった内容をアウトプットしてみましょう。

具体的な場所としては

などが人目に触れやすいと思います。

内容も

  • Array.join("")と innerHTML += hoge はどっちがいいんだろう?

といったちょっとした疑問や

  • こんなことができるようになる(bookmarklet|Greasemonkey)作ってみた!

といった作成したもののアウトプット、また

  • CodeReposへのコミット

によってほかのエンジニアによって添削してもらう、などさまざまな方法があると思います。

「アウトプットは苦手なんだけど...」

という人もいるでしょう。
自分の周囲にもそういう人がいます。

  • 作ったものを公開するのは恥ずかしい
  • 間違いを指摘されるんじゃないか
  • そんなたいしたもの作ってるわけじゃないし
  • こんなアウトプット見てないよ

でも

そんなのもったいない!!

アウトプットは本当に重要です。

公開しないことによって結果的に間違いに気づけずに余計恥ずかしいことになることもあると思います。
また、アウトプットするという行為自体に価値があります。

アウトプットすることで

  • 間違いを正してもらえる
  • 疑問があれば答えてもらえる
  • 作ったものが評価してもらえる
  • 作ったものを使ってもらえる
  • 同じ興味を持つ人とコミュニケーションをとることができる

といったさまざまなメリットを受けられます。


まとめ

以上、自分が実践している勉強法を紹介してきました。

今回は特に「アウトプット重要」ということを叫んできたのですが、エンジニアにとってこれは言語によらず
とても重要なことだと思います。
みなさんもアウトプットを積極的にすることで、より多くのことを学べるようになるでしょう。

まだ、ブログを持っていない人はブログサービスのアカウントを作るなり、エンジニアの人でしたらレンタルサーバに自分でブログを設置するのもいいでしょう。
設置までの手順をメモしておくだけでさっそく1回目のアウトプットが完成です。

私自身もここでいろいろな情報をアウトプットできればと考えているので、皆さんもぜひ一緒になって積極的にアウトプットをしていきましょう!

Yahoo! JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。

  • このエントリーをはてなブックマークに追加