ようこそ!浜村拓夫の世界へ

    ブログ内検索

    最近の記事

    ブックマーク数の多い記事

    Blog Translation

    Powered By FC2ブログ

    Powered By FC2ブログ
    ブログやるならFC2ブログ


    FC2ブログ LOGIN

    with Ajax Amazon

    スポンサーサイト

    このエントリーを含むはてなブックマーク はてなブックマーク - スポンサーサイト あとで読む
    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    パーフェクトJavaScript

    このエントリーを含むはてなブックマーク はてなブックマーク - パーフェクトJavaScript あとで読む
    パーフェクトJavaScriptを読み始めた。

    パーフェクトJavaScript (PERFECT SERIES 4)
    井上 誠一郎
    技術評論社
    2011-09-23
    3360円


    JavaScriptを十分に使いこなせていなかったので、何とかしたいと焦っていた。
    やりたいことは、WebサービスのUIを自由自在に作ること。
    jQueryの潜在的能力を引き出すには、やはりjQueryのプラグインを自作したくなるだろう。

    ●できないんじゃなくて、やってないだけ
    経験則から、自分には「できない」とか、能力がないと思う場合、たいていは「やっていない」だけ、というケースが多い。
    =Aさんにはできて、Bさんにはできない、という事象は、本質的には存在しない。
    =与えられた条件と、問題解決策の有無に、差異があるだけだ。

    JavaScriptが使いこなせていないのは、使いこなすために必要な学習をやっていないだけ、ということだ。


    ●書評
    「パーフェクトJavaScript」は、評判が良いようだ。
    パーフェクトJavaScriptはガチ本。クソと言われる言語仕様をまとめあげた良書 - 三等兵
    パーフェクトJavaScriptは読者を選ぶ硬派な本 - 八発白中


    ●目次
    パーフェクトJavaScript:書籍案内|技術評論社



    Part1 JavaScript~overview

     1章 JavaScriptの概要
      1-1 JavaScriptの見方
      1-2 JavaScriptの歴史
       1-2-1 JavaScriptのトピック
      1-3 ECMAScript
       1-3-1 JavaScriptの標準化
       1-3-2 見送られたECMAScript第4版
      1-4 JavaScriptのバージョン
      1-5 JavaScript処理系
       1-5-1 クライアントサイドJavaScriptコードの移植性
      1-6 JavaScript実行環境
       1-6-1 コア言語
       1-6-2 ホストオブジェクト
      1-7 JavaScript周辺環境
       1-7-1 ライブラリ
       1-7-2 ソースコード圧縮
       1-7-3 統合開発環境(IDE)

    Part2 JavaScript言語仕様

     2章 JavaScriptの基礎
      2-1 JavaScriptの特徴
      2-2 表記について
       2-2-1 Print関数
      2-3 変数の基礎
       2-3-1 変数の使い方
       2-3-2 varの省略
       2-3-3 定数
      2-4 関数の基礎
       2-4-1 関数とは
       2-4-2 関数宣言と呼び出し
       2-4-3 関数リテラル
       2-4-4 関数はオブジェクト
      2-5 オブジェクトの基礎
       2-5-1 オブジェクトとは
       2-5-2 オブジェクトリテラル式とオブジェクトの利用
       2-5-3 プロパティアクセス
       2-5-4 プロパティアクセス(ブラケット)
       2-5-5 メソッド
       2-5-6 new式
       2-5-7 クラスとインスタンス
       2-5-8 クラス機能の整理方法
       2-5-9 オブジェクトと型
      2-6 配列の基礎
      コラム イディオム

     3章 JavaScriptの型
      3-1 型とは
       3-1-1 型に関してJavaとの比較
       3-1-2 基本型と参照型
      3-2 組み込み型の概要
       3-2-1 JavaScriptの基本型
      3-3 文字列型
       3-3-1 文字列値リテラル
       3-3-2 文字列型の演算
       3-3-3 文字列型の比較
       3-3-4 文字列クラス(Stringクラス)
       3-3-5 文字列オブジェクト
       3-3-6 文字列値と文字列オブジェクトの混乱の回避
       3-3-7 String関数呼び出し
       3-3-8 Stringクラスの機能
       3-3-9 非破壊的なメソッド
      3-4 数値型
       3-4-1 数値リテラル
       3-4-2 数値型の演算
       3-4-3 浮動小数点数の一般的注意
       3-4-4 数値クラス(Numberクラス)
       3-4-5 Number関数呼び出し
       3-4-6 Numberクラスの機能
       3-4-7 境界値と特別な数値
       3-4-8 NaN
      3-5 ブーリアン型
       3-5-1 ブーリアン値
       3-5-2 ブーリアンクラス(Booleanクラス)
       3-5-3 Booleanクラスの機能
      3-6 null型
      3-7 undefined型
       3-7-1 undefined値
      3-8 オブジェクト型
       3-8-1 関数型
      3-9 型変換
       3-9-1 文字列値から数値の型変換
       3-9-2 数値から文字列値の型変換
       3-9-3 型変換のイディオム
       3-9-4 ブーリアン型への型変換
       3-9-5 その他の型変換
       3-9-6 オブジェクト型から基本型への型変換
       3-9-7 基本型からオブジェクト型への型変換
      コラム JavaScriptのプロファイラ

     4章 文、式、演算子
      4-1 式と文の構造
      4-2 予約語
      4-3 識別子
      4-4 リテラル表記
      4-5 文とは
      4-6 ブロック文(複合文)
      4-7 変数宣言文
      4-8 関数宣言文
      4-9 式文
      4-10 空文
      4-11 制御文
      4-12 if-else文
      4-13 switch文
      4-14 繰り返し文
      4-15 while文
      4-16 do-while文
      4-17 for文
       4-17-1 for文のイディオム
      4-18 for in文
       4-18-1 配列とfor in文
       4-18-2 for in文に関する注意点
      4-19 for each in文
      4-20 break文
      4-21 continue文
      4-22 ラベルを使ったジャンプ
      4-23 return文
      4-24 例外
      4-25 その他
      4-26 コメント
      4-27 式
      4-28 演算子
      4-29 式の評価
      4-30 演算子の優先順序と結合規則
      4-31 算術演算子
      4-32 文字列連結演算子
      4-33 同値演算子
      4-34 比較演算子
      4-35 in演算子
      4-36 instanceof演算子
      4-37 論理演算子
      4-38 ビット演算子
      4-39 代入演算子
      4-40 算術代入演算子
      4-41 条件演算子(3項演算子)
      4-42 typeof演算子
      4-43 new演算子
      4-44 delete演算子
      4-45 void演算子
      4-46 カンマ(,)演算子
      4-47 ドット演算子とブラケット演算子
      4-48 関数呼び出し演算子
      4-49 演算子と型変換の注意点

     5章 変数とオブジェクト
      5-1 変数の宣言
      5-2 変数と参照
       5-2-1 関数の引数(値渡し)
       5-2-2 文字列と参照
       5-2-3 オブジェクトと参照にまつわる用語の整理
      5-3 変数とプロパティ
      5-4 変数名の解決
      5-5 変数の存在チェック
       5-5-1 プロパティの存在チェック
      5-6 オブジェクトとは
       5-6-1 抽象データ型とオブジェクト指向
       5-6-2 インスタンスの協調とオブジェクト指向
      5-7 オブジェクトの生成
       5-7-1 オブジェクトリテラル
      コラム 関数の多値の返り値を受け取るJavaScript独自拡張
       5-7-2 コンストラクタとnew式
       5-7-3 コンストラクタとクラス定義
      5-8 プロパティのアクセス
       5-8-1 プロパティ値の更新
       5-8-2 ドット演算子とブラケット演算子の使い分け
       5-8-3 プロパティの列挙
      5-9 連想配列としてのオブジェクト
       5-9-1 連想配列
       5-9-2 連想配列としてオブジェクトの注意点
      5-10 プロパティの属性
      5-11 ガベージコレクション
      5-12 不変オブジェクト
       5-12-1 不変オブジェクトとは
       5-12-2 不変オブジェクトの有用性
       5-12-3 不変オブジェクトの手法
      5-13 メソッド
      5-14 this参照
       5-14-1 this参照の規則
       5-14-2 this参照の注意点
      5-15 applyとcall
      5-16 プロトタイプ継承
       5-16-1 プロトタイプチェーン
       5-16-2 プロトタイプチェーンの具体例
       5-16-3 プロトタイプ継承とクラス
       5-16-4 プロトタイプチェーンのよくある勘違いと__proto__プロパティ
       5-16-5 プロトタイプオブジェクト
       5-16-6 プロトタイプオブジェクトとECMAScript第5版
      5-17 オブジェクトと型
       5-17-1 型判定(constructorプロパティ)
       5-17-2 constructorプロパティの注意点
       5-17-3 型判定(instanceof演算とisPrototypeOfメソッド)
       5-17-4 型判定(ダックタイピング)
       5-17-5 プロパティの列挙(プロトタイプ継承を考慮)
      5-18 ECMAScript第5版のObjectクラス
       5-18-1 プロパティオブジェクト
       5-18-2 アクセッサ属性
      コラム その他の型判定
      5-19 標準オブジェクト
      5-20 Objectクラス
      コラム オブジェクトの互換性
      5-21 グローバルオブジェクト
       5-21-1 グローバルオブジェクトとグローバル変数
       5-21-2 Mathオブジェクト
       5-21-3 Errorオブジェクト

     6章 関数とクロージャ
      6-1 関数宣言文と関数リテラル式
      6-2 関数呼び出しの整理
       6-2-1 関数宣言文の巻き上げ
      6-3 引数とローカル変数
       6-3-1 argumentsオブジェクト
       6-3-2 再帰関数
      6-4 スコープ
       6-4-1 Webブラウザとスコープ
       6-4-2 ブロックスコープ
       6-4-3 letとブロックスコープ
       6-4-4 入れ子の関数とスコープ
       6-4-5 シャドーイング
      6-5 関数はオブジェクト
       6-5-1 関数名とデバッグ容易性
      6-6 Functionクラス
       6-6-1 Functionクラスの継承
      6-7 入れ子の関数宣言とクロージャ
       6-7-1 クロージャの表層的な理解
       6-7-2 クロージャの仕組み
       6-7-3 クロージャの落とし穴
       6-7-4 名前空間の汚染を防ぐ
       6-7-5 クロージャとクラス
      コラム 式クロージャ
      6-8 コールバックパターン
       6-8-1 コールバックと制御の反転
       6-8-2 JavaScriptとコールバック
      コラム イベントリスナ風の実装

     7章 データ処理
      7-1 配列
       7-1-1 JavaScriptの配列
       7-1-2 配列の要素アクセス
       7-1-3 配列の長さ
       7-1-4 配列の要素の列挙
      コラム 配列の長さの上限
       7-1-5 多次元配列
       7-1-6 配列はオブジェクト
       7-1-7 Arrayクラス
       7-1-8 配列オブジェクトの意味
       7-1-9 配列のイディオム
       7-1-10 配列の内部
       7-1-11 配列風のオブジェクト
       7-1-12 イテレータ
       7-1-13 ジェネレータ
       7-1-14 配列の内包
      7-2 JSON
       7-2-1 JSON文字列
       7-2-2 JSONオブジェクト
      7-3 日付処理
       7-3-1 Dateクラス
      7-4 正規表現
       7-4-1 正規表現とは
       7-4-2 正規表現の用語
       7-4-3 正規表現の文法
       7-4-4 JavaScriptの正規表現
       7-4-5 正規表現プログラミング
       7-4-6 文字列オブジェクトと正規表現オブジェクト
      コラム ECMAScript第5版のstrict mode

    Part3 クライアントサイドJavaScript

     8章 クライアントサイドJavaScriptとHTML
      8-1 クライアントサイドJavaScriptの重要性
       8-1-1 Webアプリケーションの発達
       8-1-2 JavaScriptの高速化
       8-1-3 JavaScriptの役割
      8-2 HTMLとJavaScript
       8-2-1 Webページを表示するときの処理の流れ
       8-2-2 JavaScriptの記述方法と実行タイミング
       8-2-3 実行タイミングまとめ
      8-3 実行環境と開発環境
       8-3-1 実行環境
       8-3-2 開発環境
      8-4 デバッグ
       8-4-1 alert
       8-4-2 console
       8-4-3 onerror
       8-4-4 Firebug, Web Inspector (Developer Tools), Opera Dragonfly
      8-5 クロスブラウザ対応
       8-5-1 対応すべきブラウザ
       8-5-2 実装方法
      8-6 Windowオブジェクト
       8-6-1 Navigatorオブジェクト
       8-6-2 Locationオブジェクト
       8-6-3 Historyオブジェクト
       8-6-4 Screenオブジェクト
       8-6-5 Windowオブジェクトへの参照
       8-6-6 Documentオブジェクト

     9章 DOM
      9-1 DOMとは
       9-1-1 DOM Level 1
       9-1-2 DOM Level 2
       9-1-3 DOM Level 3
      コラム DOM Level 0
       9-1-4 DOMの記述
      9-2 DOMの基礎
       9-2-1 タグ、要素、ノード
       9-2-2 DOM操作
       9-2-3 Documentオブジェクト
      9-3 ノードの選択
       9-3-1 IDによる検索
       9-3-2 タグ名による検索
       9-3-3 名前による検索
       9-3-4 クラス名による検索
       9-3-5 親、子、兄弟
       9-3-6 XPath
       9-3-7 Selectors API
      9-4 ノードの作成・追加
      9-5 ノードの内容変更
      9-6 ノードの削除
      9-7 innerHTML/textContent
       9-7-1 innerHTML
       9-7-2 textContent
      9-8 DOM操作のパフォーマンス

     10章 イベント
      10-1 イベント駆動型プログラミング
      10-2 イベントハンドラ/イベントリスナの設定
       10-2-1 HTML要素の属性に指定する
       10-2-2 DOM要素のプロパティに指定する
       10-2-3 EventTarget.addEventListener()を利用する
       10-2-4 イベントハンドラ/イベントリスナ内でのthis
      10-3 イベント発火
      10-4 イベントの伝播
       10-4-1 キャプチャリングフェーズ
       10-4-2 ターゲットフェーズ
       10-4-3 バブリングフェーズ
       10-4-4 キャンセル
      10-5 イベントが持つ要素
      10-6 標準イベント
       10-6-1 DOM Level 2で定義されているイベント
       10-6-2 DOM Level 3で定義されているイベント
      10-7 独自イベント

     11章 実践 クライアントサイドJavaScript
      11-1 スタイル
       11-1-1 スタイル変更方法
       11-1-2 位置の指定
       11-1-3 位置
       11-1-4 アニメーション
      11-2 Ajax
       11-2-1 非同期処理の利点
       11-2-2 XMLHttpRequest
       11-2-3 基本的な処理の流れ
       11-2-4 同期通信
       11-2-5 タイムアウト
       11-2-6 レスポンス
       11-2-7 クロスオリジン制限
       11-2-8 クロスオリジン通信
       11-2-9 JSONP
       11-2-10 iframeハック
       11-2-11 window.postMessage
       11-2-12 XMLHttpRequest Level 2
       11-2-13 クロスオリジン通信のセキュリティ問題
      11-3 フォーム
       11-3-1 フォーム要素
       11-3-2 フォームコントロール要素
       11-3-3 内容の検証
       11-3-4 検証に利用できるイベント
       11-3-5 フォームを使ってページ遷移を発生させない方法

     12章 ライブラリ
      12-1 ライブラリを使うべき理由
      12-2 jQueryの特徴
      12-3 jQueryの基本
       12-3-1 記述例
       12-3-2 メソッドチェーン
      コラム メソッドチェーンのデメリット
      12-4 $関数
       12-4-1 セレクタにマッチする要素を抽出する
       12-4-2 新しくDOM要素を作成する
       12-4-3 既存のDOM要素をjQueryオブジェクトに変換する
       12-4-4 DOM構築後のイベントリスナを設定する
      12-5 jQueryによるDOM操作
       12-5-1 要素の選択
       12-5-2 要素の作成・追加・置換・削除
      12-6 jQueryによるイベント処理
       12-6-1 イベントリスナの登録・削除
       12-6-2 イベント専用のイベントリスナ登録メソッド
       12-6-3 ready()メソッド
      12-7 jQueryによるスタイル操作
       12-7-1 基本的なスタイル操作
       12-7-2 アニメーション
      12-8 jQueryによるAjax
       12-8-1 ajax()関数
       12-8-2 ajax()のラッパー関数
       12-8-3 グローバルイベント
      12-9 Deferred
       12-9-1 Defferdの基本
       12-9-2 状態遷移
       12-9-3 後続関数
       12-9-4 並列処理
      12-10 jQueryプラグイン
       12-10-1 jQueryプラグインの利用
       12-10-2 jQueryプラグインの作成
      12-11 他のライブラリとの共存
       12-11-1 $オブジェクトの衝突
       12-11-2 $オブジェクトの衝突回避
     12-12 ライブラリの利用方法

    Part4 HTML5

     13章 HTML5概要
      13-1 HTML5の歴史
       13-1-1 HTML5の登場の経緯
      13-2 HTML5の現状
       13-2-1 ブラウザの対応状況
       13-2-2 Webアプリケーションとネイティブアプリケーション
      13-3 HTML5の概要
      コラム ブラウザベンダーのHTML5情報ポータル

     14章 Webアプリケーション
      14-1 History API
       14-1-1 History APIとは
       14-1-2 ハッシュフラグメント
       14-1-3 インターフェース
      14-2 ApplicationCache
       14-2-1 キャッシュ管理について
       14-2-2 キャッシュマニフェスト
       14-2-3 ApplicationCache API
       14-2-4 オンラインとオフライン

     15章 デスクトップ連携
      15-1 Drag Drop API
       15-1-1 Drag Drop APIとは
       15-1-2 インターフェース
       15-1-3 基本的なドラッグ&ドロップ
       15-1-4 表示のカスタマイズ
       15-1-5 ファイルのDrag-In/Drag-Out
      コラム DataTransferItemList
      15-2 File API
       15-2-1 File APIとは
       15-2-2 Fileオブジェクト
      コラム のvalueについて
       15-2-3 FileReader
       15-2-4 data URL
       15-2-5 FileReaderSync

     16章 ストレージ
      16-1 Web Storage
       16-1-1 Web Storageとは
      コラム オリジンとは
       16-1-2 基本操作
       16-1-3 storageイベント
       16-1-4 Cookieについて
       16-1-5 ネームスペースの管理
       16-1-6 バージョンの管理
       16-1-7 localStorageのエミュレート
      16-2 Indexed Database
       16-2-1 Indexed Databaseとは
      コラム Web SQL Databaseについて
       16-2-2 インフラストラクチャ
       16-2-3 データベースに接続
       16-2-4 オブジェクトストアの作成
       16-2-5 データの追加・削除・参照
       16-2-6 インデックスの作成
       16-2-7 データの検索と更新
       16-2-8 データのソート
       16-2-9 トランザクション
       16-2-10 同期API

     17章 WebSocket
      17-1 WebSocket概要
       17-1-1 WebSocketとは
       17-1-2 既存の通信技術
       17-1-3 WebSocketの仕様
       17-1-4 WebSocketの動作
      17-2 基本操作
       17-2-1 コネクションの確立
       17-2-2 メッセージの送受信
       17-2-3 コネクションの切断
       17-2-4 コネクションの状態確認
       17-2-5 バイナリデータの送受信
       17-2-6 WebSocketインスタンスのプロパティ一覧
      17-3 WebSocket実践
       17-3-1 Node.jsのインストール
       17-3-2 サーバサイドの実装
       17-3-3 クライアントサイドの実装
       17-3-4 クライアントサイドの実装2

     18章 Web Workers
      18-1 Web Workers概要
       18-1-1 Web Workersとは
       18-1-2 Web Workersの動作
      18-2 基本操作
       18-2-1 ワーカの生成
       18-2-2 メインスレッド側のメッセージ送受信
       18-2-3 ワーカ側のメッセージ送受信
       18-2-4 ワーカの削除
       18-2-5 外部ファイルの読み込み
      18-3 Web Workers実践
       18-3-1 ワーカの利用
       18-3-2 ワーカの処理を中断する
      18-4 共有ワーカ
       18-4-1 共有ワーカとは
       18-4-2 共有ワーカの生成
       18-4-3 共有ワーカのメッセージ送受信
       18-4-4 共有ワーカの削除
       18-4-5 共有ワーカの応用例

    Part5 Web API

     19章 Web APIの基礎
      19-1 Web APIとWebサービス
       19-1-1 Web APIが想定するシステム
      19-2 Web APIの歴史
       19-2-1 スクレイピング
       19-2-2 セマンティックWeb
       19-2-3 XML
       19-2-4 Atom
       19-2-5 JSON
       19-2-6 SOAP
       19-2-7 REST
       19-2-8 簡単なまとめ
      19-3 Web APIの構成
       19-3-1 Web APIの形態
       19-3-2 Web APIの利用
       19-3-3 RESTful API
       19-3-4 APIキー
      19-4 ユーザ認証と認可
       19-4-1 Webアプリのセッション管理
       19-4-2 セッション管理とユーザ認証
       19-4-3 Web APIと権限
       19-4-4 認証と認可
       19-4-5 OAuth

     20章 Web APIの実例
      20-1 Web APIのカテゴリ
      20-2 Google Translate API
       20-2-1 準備
       20-2-2 動作概要
       20-2-3 Web APIの利用コード
       20-2-4 ウィジェット(Google Translate Element)
      20-3 Google Maps API
       20-3-1 Google Static Maps API
       20-3-2 マイマップ
       20-3-3 Google Maps APIの概要
       20-3-4 Google Maps APIの簡単な例
       20-3-5 イベント
       20-3-6 Geolocation APIとGeocoding API
      20-4 Yahoo! Flickr
       20-4-1 Flickr Web APIの利用
       20-4-2 FlickrのWeb APIの利用例
      20-5 Twitter
       20-5-1 検索API
       20-5-2 REST API
       20-5-3 Twitter JS API @anywhere
       20-5-4 Twitter Widget
      20-6 Facebook
       20-6-1 Facebookアプリの変遷
       20-6-2 FacebookのJavaScript API
       20-6-3 Facebookのプラグイン
      20-7 OpenSocial
       20-7-1 OpenSocialの基本アーキテクチャ
      コラム OpenSocialスペックの読み方とActivity

    Part6 サーバサイドJavaScript

     21章 サーバサイドJavaScriptとNode.js
      21-1 サーバサイドJavaScriptの動向
      21-2 CommonJS
       21-2-1 CommonJSとは
      コラム ホストオブジェクトに依存しないライブラリ
       21-2-2 CommonJSの動向
       21-2-3 モジュール機能
      21-3 Node.js
       21-3-1 Node.jsとは
       21-3-2 nodeコマンド
       21-3-3 npmとパッケージ
       21-3-4 consoleモジュール
       21-3-5 utilモジュール
       21-3-6 processオブジェクト
       21-3-7 グローバルオブジェクト
       21-3-8 Node.jsプログラミングの概要
       21-3-9 イベントAPI
       21-3-10 バッファ
       21-3-11 ストリーム

     22章 実践 Node.jsプログラミング
      22-1 HTTPサーバ処理
       22-1-1 HTTPサーバ処理の基本
       22-1-2 リクエスト処理
       22-1-3 レスポンス処理
       22-1-4 POSTリクエスト処理
      22-2 HTTPクライアント処理
      22-3 HTTPS処理
       22-3-1 opensslコマンドを使う自己証明書の発行方法
       22-3-2 HTTPSサーバ
      22-4 Socket.IOとWebSocket
      22-5 低レイヤのネットワークプログラミング
       22-5-1 低レイヤネットワーク処理
       22-5-2 ソケットとは
       22-5-3 ソケットプログラミングの基本構造
       22-5-4 ソケットプログラミングの具体例
      22-6 ファイル処理
       22-6-1 本節のサンプルコード
       22-6-2 ファイルの非同期処理
       22-6-3 ファイルの同期処理
       22-6-4 ファイル操作系の関数
       22-6-5 ファイル読み込み
       22-6-6 ファイル書き込み
       22-6-7 ディレクトリ操作
       22-6-8 ファイルの変更監視
       22-6-9 ファイルパス
      22-7 タイマー
      コラム Node.jsのデバッグ
      22-8 Express
       22-8-1 URLルーティング
       22-8-2 リクエスト処理
       22-8-3 レスポンス処理
       22-8-4 scaffold作成機能
       22-8-5 MVCアーキテクチャ
       22-8-6 テンプレート言語Jade
       22-8-7 MongoDB(データベース)
       22-8-8 Mongooseの実例
       22-8-9 ExpressとMongooseを使うWebアプリ

    関連記事

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバックURL:
    http://hamamuratakuo.blog61.fc2.com/tb.php/869-da2ae059

    FC2Ad

    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。