今日読んだ本と感想。
本書は、JavaScriptで新しい手法を試してみたい、あるいはJavaScriptの基本的な機能と高度な機能の両方について理解を深めたいと考えている読者を対象としたレシピ集です。HTML5やECMAScript 5などの新機能をカバーし、今日的なJavaScriptのテクニックを十二分に解説しています。JavaScriptの基礎や本質から解説されているので、本書を読破すればJavaScriptへの理解が深まることは間違いありません。もちろん必要なトピックを拾い読みしても十分に価値があり、JavaScriptへの新鮮な視点とアイデアをたっぷり供給してくれる頼りになる一冊です。
目次
-
はじめに
- 1章 JavaScript文字列の操作 はじめに
- レシピ1.1 複数の文字列を連結する
- レシピ1.2 文字列と別のデータ型を連結する
- レシピ1.3 条件に基づいて文字列を比較する
- レシピ1.4 文字列内で部分文字列を検索する
- レシピ1.5 文字列から部分文字列を取り出す
- レシピ1.6 文字列が存在し、空でないことを調べる
- レシピ1.7 キーワード文字列を個々のキーワードに分割する
- レシピ1.8 特殊文字を挿入する
- レシピ1.9 textareaを1行ずつ処理する
- レシピ1.10 文字列から前後のホワイトスペースを削除する
- レシピ1.11 文字列の左右にパディングを施す
- 2章 正規表現の使用 はじめに
- レシピ2.1 部分文字列が存在するかどうかをテストする
- レシピ2.2 大文字と小文字を区別しない部分文字列マッチングをテストする
- レシピ2.3 社会保障番号を検証する
- レシピ2.4 パターンのインスタンスをすべて検出してハイライト表示する
- レシピ2.5 パターンを新しい文字列と置き換える
- レシピ2.6 キャプチャを使って文字列内の単語を入れ替える
- レシピ2.7 正規表現を使ってホワイトスペースを削除する
- レシピ2.8 HTMLタグを名前付きエンティティと置き換える
- レシピ2.9 特殊文字を検索する
- 3章 日付、時間、タイマー はじめに
- レシピ3.1 今日の日付を表示する
- レシピ3.2 日時をUTCで出力する
- レシピ3.3 ISO 8601表記の日付を出力する
- レシピ3.4 ISO 8601表記の日付をDateオブジェクトに適した形式に変換する
- レシピ3.5 特定の日付を作成する
- レシピ3.6 未来の日付をスケジュールする
- レシピ3.7 経過時間を追跡する
- レシピ3.8 タイムアウトを作成する
- レシピ3.9 繰り返し実行するタイマーを作成する
- レシピ3.10 タイマーで関数クロージャを使う
- 4章 数字と算術演算の処理 はじめに
- レシピ4.1 増分カウンタを管理する
- レシピ4.2 10進数値を16進数値に変換する
- レシピ4.3 乱数ジェネレータを作成する
- レシピ4.4 色をランダムに生成する
- レシピ4.5 テーブルの中の文字列を数値に変換する
- レシピ4.6 テーブル列のすべての数値を合計する
- レシピ4.7 度数とラジアンの間で変換を行う
- レシピ4.8 ページ要素に収まる円の半径と中心を割り出す
- レシピ4.9 円弧の長さを計算する
- 5章 配列とループの操作 はじめに
- レシピ5.1 配列をループにかける
- レシピ5.2 多次元配列を作成する
- レシピ5.3 配列から文字列を作成する
- レシピ5.4 配列をソートする
- レシピ5.5 値を受け取った順序で格納し、アクセスする
- レシピ5.6 値を受け取った順序で格納し、逆の順序でアクセスする
- レシピ5.7 新しい配列を既存の配列のサブセットとして作成する
- レシピ5.8 配列内を検索する
- レシピ5.9 多次元配列を1次元配列にする
- レシピ5.10 配列要素を検索して削除または置換する
- レシピ5.11 各配列要素に関数を適用する
- レシピ5.12 すべての配列要素に関数を適用し、新しい配列を返す
- レシピ5.13 フィルタリングされた配列を作成する
- レシピ5.14 配列の内容を検証する
- レシピ5.15 連想配列を使ってフォーム要素の名前と値を格納する
- 6章 JavaScript関数の再利用 はじめに
- レシピ6.1 再利用可能なコードブロックを作成する
- レシピ6.2 関数との間で1つのデータ値をやり取りする
- レシピ6.3 引数として複雑なデータオブジェクトを使う
- レシピ6.4 動的なランタイム関数を作成する
- レシピ6.5 関数を引数として渡す
- レシピ6.6 再帰アルゴリズムを実装する
- レシピ6.7 状態を記憶する関数を作成する
- レシピ6.8 汎用カリー化関数を使ってアプリケーションのパフォーマンスを改善する
- レシピ6.9 メモ化を使ってアプリケーションのパフォーマンスを改善する
- レシピ6.10 匿名関数を使ってグローバル変数をラッピングする
- 7章 イベントの処理 はじめに
- レシピ7.1 ページの読み込みが完了したことを検知する
- レシピ7.2 イベントオブジェクトを使ってマウスクリックイベントの位置を捕捉する
- レシピ7.3 再利用可能な汎用イベントハンドラ関数を作成する
- レシピ7.4 状況の変化に応じてイベントを取り消す
- レシピ7.5 イベントが入れ子の要素伝いに引き渡されないようにする
- レシピ7.6 キーボードアクティビティを捕捉する
- レシピ7.7 HTML5の新しいドラッグ&ドロップ機能を使う
- レシピ7.8 Safariの回転イベントと他のモバイル開発環境を使う
- 8章 ブラウザの構成要素 はじめに
- レシピ8.1 Webページのユーザーにアクションの確認を求める
- レシピ8.2 無駄なものを省いた新しいブラウザウィンドウを作成する
- レシピ8.3 ページにアクセスするブラウザについて調べる
- レシピ8.4 Webページからの移動についてページのユーザーに警告する
- レシピ8.5 色のサポートに応じてスタイルシートを変更する
- レシピ8.6 ページサイズに応じて画像サイズを変更する
- レシピ8.7 CMSテンプレートページでパンくずを作成する
- レシピ8.8 動的なページをブックマークする
- レシピ8.9 状態の保存を戻るボタンとページの更新に対応させる
- 9章 フォームの要素と検証 はじめに
- レシピ9.1 フォームのテキスト入力の値にアクセスする
- レシピ9.2 フォーム要素を動的に有効または無効にする
- レシピ9.3 イベントに基づいてフォーム要素から情報を取得する
- レシピ9.4 ラジオボタンがクリックされたときにアクションを実行する
- レシピ9.5 電話番号の有効性を確認する
- レシピ9.6 フォームのサブミットを中止する
- レシピ9.7 フォームのサブミットを重複させない
- レシピ9.8 フォーム要素を表示または非表示にする
- レシピ9.9 フォーム上でのアクションに基づいて選択リストを変更する
- 10章 デバッグとエラー処理 はじめに
- レシピ10.1 JavaScriptがサポートされない状況にうまく対処する
- レシピ10.2 関数のエラーをチェックする
- レシピ10.3 単純なデバッグとしてアラートを使う
- レシピ10.4 エラーを捕捉して適切に処理する
- レシピ10.5 処理しやすいエラーを発生させる
- レシピ10.6 FirefoxでFirebugを使う
- レシピ10.7 Firebugを使ってブレークポイントを設定し、データを調べる
- レシピ10.8 Firefoxとコンソール
- レシピ10.9 Internet Explorerの組み込みデバッガを使う
- レシピ10.10 Internet Explorerの開発者ツールを使ってブレークポイントを設定する
- レシピ10.11 OperaのDragonfly
- レシピ10.12 Dragonflyを使ってブレークポイントを設定する
- レシピ10.13 Safariの開発者ツールを有効にする
- レシピ10.14 Safariのデバッガを使ってブレークポイントを設定する
- レシピ10.15 Chromeでデバッグする
- 11章 ページ要素へのアクセス はじめに
- レシピ11.1 特定の要素にアクセスし、その親要素と子要素を調べる
- レシピ11.2 Webページ内のすべての画像にアクセスする
- レシピ11.3 article要素の画像をすべて検索する
- レシピ11.4 Selectors APIを使ってarticle要素の画像をすべて検索する
- レシピ11.5 要素グループの親要素を検索する
- レシピ11.6 すべての要素で最初の段落をハイライト表示する
- レシピ11.7 <ul>にストライプテーマを適用する
- レシピ11.8 特定のクラス名を持つすべての要素を配列にまとめる
- レシピ11.9 ある属性を共有する要素をすべて検索する
- レシピ11.10 選択されたオプションをすべて取得する
- レシピ11.11 テーブル行のすべての値を合計する
- レシピ11.12 要素の属性を取得する
- レシピ11.13 要素のスタイル情報を取得する
- 12章 要素と属性の作成と削除 はじめに
- レシピ12.1 innerHTMLを使ってコンテンツをすばやく簡単に追加する
- レシピ12.2 ページの既存の要素の前に要素を挿入する
- レシピ12.3 ページの最後に新しい要素を追加する
- レシピ12.4 Internet Explorerの古いバージョンで新しい要素のスタイルを設定する
- レシピ12.5 新しい段落を挿入する
- レシピ12.6 新しい段落にテキストを追加する
- レシピ12.7 既存の要素に属性を追加する
- レシピ12.8 Boolean属性を評価する
- レシピ12.9 属性を削除する
- レシピ12.10 段落を移動する
- レシピ12.11 リンクを脚注の箇条書きに置き換える
- レシピ12.12 既存のテーブルに行を追加する
- レシピ12.13 div要素から段落を削除する
- レシピ12.14 HTMLテーブルから行を削除する
- レシピ12.15 要素のCSSスタイルプロパティを変更する
- 13章 Webページ空間の操作 はじめに
- レシピ13.1 Webページの領域を割り出す
- レシピ13.2 要素を測定する
- レシピ13.3 ページ内の要素の位置を確認する
- レシピ13.4 ページの一部を非表示にする
- レシピ13.5 たたみ込み可能なフォームセクションを作成する
- レシピ13.6 ページオーバーレイを追加する
- レシピ13.7 タブページを作成する
- レシピ13.8 マウスホバーで表示されるポップアップ情報ウィンドウを作成する
- レシピ13.9 サイドバーのたたみ込みとサイズ変更
- 14章 対話性とアクセシビリティ はじめに
- レシピ14.1 非表示のページセクションを表示する
- レシピ14.2 アラートメッセージを作成する
- レシピ14.3 データが正しく設定されていないフォームフィールドをハイライト表示する
- レシピ14.4 ページオーバーレイにキーボードアクセシビリティを追加する
- レシピ14.5 たたみ込み可能なフォームセクションを作成する
- レシピ14.6 カラーフラッシュでアクションを示す
- レシピ14.7 タブページにARIA属性を追加する
- レシピ14.8 ライブリージョン
- 15章 メディアを活かした対話型アプリケーションの作成 はじめに
- レシピ15.1 Canvasで基本的な図形を作成する
- レシピ15.2 Internet ExplorerでCanvasアプリケーションを実行する
- レシピ15.3 Canvasに動的な折れ線グラフを描画する
- レシピ15.4 JavaScriptをSVGファイルに追加する
- レシピ15.5 WebページのスクリプトからSVGにアクセスする
- レシピ15.6 Internet ExplorerでSVGをエミュレートする
- レシピ15.7 HTMLに対話型のSVGを埋め込む
- レシピ15.8 数学関数を使ってSVGでリアルなアナログ時計を作成する
- レシピ15.9 SVGとcanvas要素をHTMLに組み込む
- レシピ15.10 FirefoxとWebKit/SafariでWebGLのサポートを有効にする
- レシピ15.11 オーディオファイルの再生中にルーチンを実行する
- レシピ15.12 video要素を使ってJavaScriptからビデオを制御する
- 16章 JavaScriptオブジェクト はじめに
- レシピ16.1 基本のJavaScriptオブジェクトを定義する
- レシピ16.2 オブジェクトのメンバをプライベートにする
- レシピ16.3 オブジェクトをプロトタイプで拡張する
- レシピ16.4 オブジェクトにゲッターとセッターを追加する
- レシピ16.5 オブジェクトの機能を継承する
- レシピ16.6 新しいプロパティを定義してオブジェクトを拡張する
- レシピ16.7 オブジェクトのプロパティを列挙する
- レシピ16.8 オブジェクトの拡張性を抑制する
- レシピ16.9 オブジェクトへの追加やプロパティデスクリプタの変更を阻止する
- レシピ16.10 オブジェクトへの変更を阻止する
- レシピ16.11 1回限りのオブジェクトとJavaScriptの名前空間を実装する
- レシピ16.12 Prototype.bindで"this"を再発見する
- レシピ16.13 オブジェクトのメソッドを数珠つなぎにする
- 17章 JavaScriptライブラリ はじめに
- レシピ17.1 コードをパッケージ化する
- レシピ17.2 コードをJsUnitでテストする
- レシピ17.3 ライブラリをミニファイする
- レシピ17.4 ライブラリをホストする
- レシピ17.5 外部ライブラリ:jQueryフレームワークを使う
- レシピ17.6 既存のjQueryプラグインを使う
- レシピ17.7 ライブラリをjQueryプラグインに変換する
- レシピ17.8 アプリケーションで複数のライブラリを安全に組み合わせる
- 18章 通信 はじめに
- レシピ18.1 XMLHttpRequestオブジェクトにアクセスする
- レシピ18.2 データを送信するための準備
- レシピ18.3 クエリ呼び出しの種類を特定する
- レシピ18.4 Ajaxリクエストにコールバック関数を追加する
- レシピ18.5 エラー状態を調べる
- レシピ18.6 テキストの結果を処理する
- レシピ18.7 Ajaxリクエストを別のドメインに送信する
- レシピ18.8 サーバーの選択リストを設定する
- レシピ18.9 タイマーを使ってページを新しいデータで自動的に更新する
- レシピ18.10 postMessageを使ってウィンドウ間で通信する
- 19章 構造化データの処理 はじめに
- レシピ19.1 Ajax呼び出しから返されたXMLドキュメントを処理する
- レシピ19.2 XMLツリーから関連情報を取り出す
- レシピ19.3 JSONを使ってJavaScriptオブジェクトを生成する
- レシピ19.4 JSONフォーマットの文字列を解析する
- レシピ19.5 JSONを使ってオブジェクトを文字列に変換する
- レシピ19.6 hCalendarアノテーションをCanvasのタイムラインに変換する
- レシピ19.7 RDFプラグインを使ってページのRDFaをJSONに変換する
- 20章 永続性 はじめに
- レシピ20.1 永続情報をURLに追加する
- レシピ20.2 ページ間で情報を維持するためのCookieを作成する
- レシピ20.3 history.pushStateメソッドとwindow.onpopstateを使って情報を維持する
- レシピ20.4 クライアント側のストレージとしてsessionStorageを使う
- レシピ20.5 クライアント側でlocalStorageデータストレージアイテムを作成する
- レシピ20.6 リレーショナルデータストアを使ってデータを永続化する
- 21章 アウトサイドJavaScript はじめに
- レシピ21.1 ブラウザのアドオン、プラグイン、拡張機能を作成する
- レシピ21.2 デスクトップウィジェットとモバイルウィジェットを作成する
- レシピ21.3 PhoneGapを使ってJavaScriptアプリケーションを作成する
- レシピ21.4 JavaScriptを使ってツールを拡張する
- レシピ21.5 Web WorkersとFile APIを使ってデスクトップアプリケーションを作成する 索引
今まで、JavaScriptを使用中に必要性を感じたときや、分からない事があったときに、その都度目次をみて必要なとこを探して見つけたりして参考にはしてたけど、最初から最後まで,通して一気に読んだことはなかったので、読んでみる事に。
目次のレシピからは分からなかった事、あるいはまだ読んだ事のないレシピで新たなことや、新しめのECMAScript 5で追加された機能等(オブジェクトのゲッター、セッターとか、for/inで取得できるようにするとかの機能が特に興味深かった)を沢山知る事ができて面白かった。そして、本書を通して一気に読んだ事によって、使用中のJavaScriptライブラリー、jQueryの裏側で何が行われているのか、jQueryのおかげでどれだけコードの記述が短く、あるいはすっきり読みやすいかを知る事が出来て楽しめた。(jQueryについては」jQueryクックブックで学習。)もちろん、今回一気に読む事によっても楽しめたけど、その都度必要なレシピを見つけるという使い方で、今までも十分役に立っていたので、JavaScriptを使う方には一気に読まなくても、手元に置いておくだけでも十分役立つ1冊。
普段、jQueryを中心に使っているから、あまり気にしたことなかったけど、JavaScriptのメソッドの名前って一個一個長いなあ〜という印象。jQuery無し、エディタの自動コード補完等が無かったら、コード記述するの大変そう。。(名前が長い分、そのメソッドの名前を見ればその役割が分かるといういい面もあるだろうけど。)
ということで、本書を読んだおかげでJavaScriptの新たな事、より深い事を知ることができたり、今まで以上にjQueryの有り難さを感じる事ができたり、他にもjQueryを使うばかりではなく、自分自身でも簡単な物でもいいのでJavaScriptの便利で役立つライブラリーを作成してみたいなあという気持ちになったり、本書を読んで良かったなあと感じた今日この頃。
0 コメント:
コメントを投稿