読者です 読者をやめる 読者になる 読者になる

プログラマでありたい

おっさんになっても、プログラマでありつづけたい

AWS認定ソリューションアーキテクト - プロフェッショナルに合格したので、調子に乗って勉強方法を考えてみる

f:id:dkfj:20160525073947p:plain

 AWSの本を2冊書いていますが、AWS認定資格を1つも持っていませんでした。(正確に言うと、ソリューションアーキテクトのアソシエイトを持っていたけれど、2016年4月末で有効期限切れで失効していました。)会社の後輩たちが、どんどんプロ資格を取っていって疑いの目を向けられるようになってきたので、これはまずいと受験することにしました。昨日受けて無事合格したものの、幾つか反省点があるのでまとめてみます。

AWS認定資格の概要



 AWSの認定資格は、2016年5月現在では2つのレベル・3つの分野があります。まずエントリーレベルであるAssociateは、一番メジャーで全般的な知識を問うSolutions Architect、開発者向けのDeveloper、運用管理者向けのSysOpsの3つがあります。そして下位の資格を持っていないと受験できないプロフェッショナルは、Solutions ArchitectとDevOpsがあります。DevOpsは、DeveloperもしくはSysOpsのどちらかの資格をもっていれば受験できます。何となくRPGの合成職みたいで厨二病な感じがしますね。
 試験範囲は、AWS認定の準備からそれぞれの資格に遷移し、試験ガイドのPDFを落とすことで解ります。例えば、SAプロの場合は、下記のような出題範囲と配点になっています。

  分野 試験に占める範囲
1.0 高可用性および事業継続性 15%
2.0 原価計算 5%
3.0 デプロイメントマネージメント 10%
4.0 ネットワーク設計 10%
5.0 データストレージ 15%
6.0 セキュリティ 20%
7.0 拡張性と伸縮自在性 15%
8.0 クラウド移行およびハイブリッドなアーキテクチャ 10%

 分野の中で扱う内容は、ガイドの中に細かく書いています。

AWS認定ソリューションアーキテクトの勉強方法



 上記を踏まえてどう勉強するかです。試験の出題者の意図としては、試験対象の範囲の知識を満遍なく持っていて、その中から適切なアーキテクチャを選択できるかという点にあります。ということは、当然試験範囲のサービスについては把握しておく必要があります。またAWS認定試験の特徴としては、具体的なシーンに基いて解決策を求めるという傾向があります。その為、サービスの知識だけではなく、実践的なアーキテクチャ設計の経験が必要になります。その辺りを踏まえて効率的に勉強するとしたら、下記の優先順位あたりかなと思います。

 概要を知った上で、サービスに触れる・デザインパターンを知るということが特に重要になります。

弱点補強



 SAプロの試験の範囲に、専用線サービスであるダイレクトコネクトや複数のアカウントでの認証連携があります。何気にここが弱点になっている人が多いのではないでしょうか。そもそもダイレクトコネクトを設置する機会は少ないはずです。また複数アカウントを運用するという経験も、利用環境によっては全くない人もいると思います。ここの部分、自習方法があるのでやっておく方がよいかもしれません。

 ダイレクトコネクトについては、AWS専用線アクセス体験ラボです。これは実際にオンプレミスのルーターを設定して、AWS Direct Connectを使ってVPCに接続するハンズオンとなっています。私は参加したことがないのですが、参加した人に聞くとかなり実践的で勉強になるそうです。一度手を動かしているのと動かしていないのでは、勉強するにしても情報の吸収力が違います。東京・大阪に限定されていますが、ぜひ一度受けてみると良いのではないでしょうか。

 次に複数アカウントの連携です。これは2つのアカウントを使って試してみましょう。クロスアカウントでロールによって認証などの経験があると、STS周りの説明を聞いた時に理解が進むはずです。アカウント複数作っても、IAMだけだと無料です!

今回の受験に関して実施したこと



 自分の中で、AD関係・クロスアカウントでの認証周りが弱点ということは解っていました。またKMS(Key Management Service)についても知識が足りないので補強しようかなと思ってました。が、時間切れで結局まったくやらずに受験という形になってしまいました。案の定、その辺りに関係するセキュリティの配点が低かったです。反省

 AWSに関しては、最近の業務では実務的な意味で深いことは自分でやっていないです。一方で、AWS技術コンサルティングサービスみたいな形で、お客さんのところに行ってよろず相談をしています。その中で色々な環境と悩みを聞いてアーキテクチャを考えているので、その辺り経験値面で有利だったかなぁと思います。ちなみにこのコンサルティング、基本はAWS前提ですがアプリアーキテクチャの話とか多岐に渡るので油断が出来ないです。自分自身にとっても勉強になるので、楽しいのですけどね。興味がある人は、こっそり連絡くださいw

感想



 受かって良かった!!

Amazon Web Services パターン別構築・運用ガイド

Amazon Web Services パターン別構築・運用ガイド

Amazon Web Services クラウドネイティブ・アプリケーション開発技法 一番大切な知識と技術が身につく (Informatics&IDEA)

Amazon Web Services クラウドネイティブ・アプリケーション開発技法 一番大切な知識と技術が身につく (Informatics&IDEA)

  • 作者: NRIネットコム株式会社,佐々木拓郎,佐藤瞬,石川修,高柳怜士,佐藤雄也,岸本勇貴
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2016/04/20
  • メディア: 単行本
  • この商品を含むブログを見る

クローラー/スクレイピング本が充実

 ふと気がついたのですが、ここ1〜2年で言語ごとのクローラー/スクレイピング本が出てきています。まとめがてらに感想と一緒に紹介してみます

PythonによるWebスクレイピング



 直近で出たスクレイピング本としては、PythonによるWebスクレイピングです。購入だけしてまだ読んでいないのですが、BeautifulSoupとScrapyを利用してスクレイピングしているようです。個人的にはrubyを使ってスクレイピングすることが多いのですが、BeautifulSoupはrubyのnokogiriより使いにくいと思っています。一方でrubyのクローラーフレームワークであるanemoneよりScrapyの方が優れた設計・特性をもっているかなぁと思っています。スクレイピングを始める前にrubyかpythonかの選択に悩んだのですが、BeautifulSoupよりnokogiriが良いやという理由でrubyを選択しました。この本を読みながらじっくりPythonのスクレイピングを学んでみようかなと思います。

 それ以外に興味深い点としては、PDFやMS Word、さらには画像認識とテキスト処理ということでOCRといったことにも取り組んでいます。この辺り興味ありますね。

PythonによるWebスクレイピング

PythonによるWebスクレイピング

目次

まえがき
第I部 スクレイパーを作る
1章 最初のWebスクレイパー
1.1 つなげる
1.2 はじめてのBeautifulSoup
2章 高度なHTMLパーシング
2.1 いつもハンマーが必要なわけではない
2.2 BeautifulSoupの別の使い方
2.3 正規表現
2.4 正規表現とBeautifulSoup
2.5 属性へのアクセス
2.6 ラムダ式
2.7 BeautifulSoupを超えて
3章 クローリングを開始する
3.1 単一ドメインを走査する
3.2 サイト全体をクローリング
3.3 インターネットをクローリング
3.4 Scrapyでクローリング
4章 APIを使う
4.1 APIはどう働くか
4.2 共通表記
4.3 レスポンス
4.4 Echo Nest
4.5 Twitter
4.6 Google API
4.7 JSONをパースする
4.8 すべてをホームに集める
4.9 APIについてさらに学ぶ
5章 データを格納する
5.1 メディアファイル
5.2 データをCSVに格納する
5.3 MySQL
5.4 メール
6章 文書を読む
6.1 文書エンコーディング
6.2 テキスト
6.3 CSV
6.4 PDF
6.5 Microsoft Wordと.docx

第II部 高度なスクレイピング
7章 汚れたデータをクリーニング
7.1 コードでのクリーニング
7.2 事実の後でクリーニング
8章 自然言語の読み書き
9章 フォームとログインでクロール
10章 JavaScriptのスクレイピング
11章 画像処理とテキスト認識
12章 スクレイピングの落とし穴を避ける
13章 Webサイトをスクレイパーでテストする
14章 リモートでスクレイピング

付録A Python入門
付録B インターネット入門
付録C Webスクレイピングの適法性と倫理

訳者あとがき
索引

JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック



 Node.jsでクローラーといえば、このJS+Node.jsによるWebクローラー/ネットエージェント開発テクニックです。この本の特徴としては、Node.jsのモジュールをいろいろ紹介しているので、Node.js初学者に作りながら学べるという点が大きいです。一方でクローラー特有の要素であるHTMLから要素の指定方法など、もう少し説明が欲しいなぁと思うこともあります。ただ、コンパクトにまとまってバランスの良い1冊であることは間違いありません。

JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック

JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック

第1章 開発環境の準備
第2章 Web データの収集
第3章 ログインの必要なWebサイトをクロールする
第4章 データの整形と保存
第5章 形態素解析で日本語を扱う
第6章 クローラーのためのデータソース
第7章 データの分類と予測と機械学
第8章 データの視覚化と応用

Excel VBAでIEを思いのままに操作できるプログラミング術



あまりクローラー/スクレイピング本と認識されいないけど、凄い1冊がExcel VBAでIEを思いのままに操作できるプログラミング術です。ExcelのVBAからIEを呼び出して、IEでDOMを操作して情報を収集するという本です。この本の存在を最近まで知らなかったのですが、私が初めてスクレイピングをした時と同じやり方で感動しました。人にスクレイピングを勧めるにも、プログラムの実行環境をどうするか悩ましい問題です。オフィスワーカーの共通プラットフォームであるエクセルを使うのは、いい選択肢と思います。(IE+DOM操作は面倒くさいですが)

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

1 初めてのIE制御
2 理解しておくべき基礎知識
3 IEの動作や外観を制御する
4 HTML画面部品の制御
5 Webサイトを自動操作する
6 Webページ解析のテクニック

Rubyによるクローラー開発技法



 せっかくなので、自分が書いた本も紹介させてもらいます。Rubyによるクローラー開発技法は、私が初めて書いた本です。クローラー本ですが、その周辺技術のHTMLのxPath,CSSセレクタ・正規表現の考え方の他、サーバサイドのことまで書いています。2章以降を担当し400ページ近く書きました。今目次を見返しても、いろいろ書いたなぁと思えるくらい多岐に渡っています。またサンプルも多いので、クローラー/スクレイピングをしようとした際は、たいてい似たパターンの書き方を見つけることが出来るのではないでしょうか。
 おかげ様で発売から2年近く経っても売れ続けています。改訂版を出すとしたら、サーバサイドの部分をAWS Lambda使うパターンを足したいなぁと思います。

Chapter 1 10分クローラーの作成
 1-1 イントロダクション
 1-2 クローラー 「GNU Wget」
 1-3 クローラーを作るにあたってのRubyの基礎
 1-4 Rubyでテストサーバを立てる
 1-5 超簡単! 10分で作るクローラー
 1-6 クローラーを拡張する
Chapter 2 クローラー作成の基礎
 2-1 クローラーの目的と構造
 2-2 Anemoneを利用する
 2-3 Anemoneのインストール(Windows編)
 2-4 Anemoneのインストール(Mac編)
 2-5 基本的なクローラーを作成する
 2-6 クローリングができない場合の対処法
 2-7 行儀のよいクローラーを作るには
 2-8 ブラウザタイプのクローラー
Chapter 3 収集したデータを分析する
 3-1 収集したデータを分析する
 3-2 HTML解析と正規表現
 3-3 文字コードの対処法
 3-4 RSSの解析
 3-5 HTMLの解析
 3-6 自然言語を使った日本語の処理
Chapter 4 高度な利用方法
 4-1 データの保存方法
 4-2 クローラーの開発とデバッグ方法
 4-3 クローリングとスクレイピングの分離
 4-4 クローラーを効率的に動かすには
 4-5 Anemoneのオプション一覧
 4-6 APIを利用した収集
Chapter 5 目的別クローラーの作成
 5-1 Google の検索結果を取得する
 5-2 ブログへのクローリング
 5-3 Amazonのデータを取得する
 5-4 Twitter のデータ収集
 5-5 Facebookへのクローリング
 5-6 画像を収集する
 5-7 YouTube から動画を収集する
 5-8 iTunes Store の順位を取得する
 5-9 Google Playの順位を取得する
 5-10 SEOに役立てる
 5-11 Wikipediaのデータを活用する
 5-12 キーワードを収集する
 5-13 流行をキャッチする
 5-14 企業株価情報を収集する
 5-15 為替情報金融指標を収集する
 5-16 郵便番号と緯度経度情報を取得する
 5-17 新刊情報を収集する
 5-18 荷物を追跡する
 5-19 不動産情報を取得する
 5-20 官公庁のオープンデータを活用する
 5-21 新聞の見出しを集める
Chapter 6 クローラーの運用
 6-1 サーバサイドで動かす
 6-2 定期的にデータを収集する
 6-3 収集結果をメールで自動送信する
 6-4 クラウドを活用する
 6-5 さらなる高速化の手法
 6-6 変化に対応する
 6-7 クローラーとそれに付随する技術

感想



 Spidering Hacksからの空白の10年。主要なスクレイピング言語でクローラー/スクレイピング本が揃ったということは結構幸せなことではないかなと思っています。あと1つ足りないと思っているものがあるので、どこかのタイミングで出してみようかなとも思います。

完全版!!ジュンク堂書店池袋本店2015年コンピュータ書売上げランキング

 2015年度のジュンク堂書店池袋本店のコンピュータ書の売り上げランキング。作って公開するの忘れてました。座談会レポートで一部公開されていますが、全部版です。

2015年4月ランキング



 話題になった関数型プログラミング本。情熱は凄い。

4月順位 タイトル 書影リンク
1 スッキリわかるJava入門 第2版 スッキリわかるJava入門 第2版 (スッキリシリーズ)
2 たった一日で即戦力になるExcelの教科書 たった1日で即戦力になるExcelの教科書
3 SQL実践入門 SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)
4 機械学習プロフェッショナルシリーズ 深層学習 深層学習 (機械学習プロフェッショナルシリーズ)
5 人工知能は人間を超えるか 人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書)
6 関数型プログラミングに目覚めた! IQ145の女子高校生の先輩から受けた特訓5日間 関数型プログラミングに目覚めた!IQ145の女子高校生の先輩から受けた特訓5日間
7 Android Studioではじめる簡単Androidアプリ開発 Android Studioではじめる 簡単Androidアプリ開発
8 理論から学ぶデータベース実践入門 理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus)
9 Pythonエンジニア養生読本 Pythonエンジニア養成読本[いまどきの開発ノウハウ満載!] (Software Design plus)
10 リーダブルコード リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
11 はじめてのiOSアプリ開発 Swift対応版 TECHNICAL MASTERはじめてのiOSアプリ開発Swift対応版
12 機械学習プロフェッショナルシリーズ オンライン機械学習 オンライン機械学習 (機械学習プロフェッショナルシリーズ)
13 スッキリわかるJava入門 実践編 第2版 スッキリわかる Java入門 実践編 第2版 (スッキリシリーズ)
14 Photoshopペイントメソッド Photoshopペイントメソッド
15 入門React 入門 React ―コンポーネントベースのWebフロントエンド開発
16 やさしいJava 第5版 やさしいJava 第5版 (「やさしい」シリーズ)
17 機械学習プロフェッショナルシリーズ 機械学習のための確率と統計 機械学習のための確率と統計 (機械学習プロフェッショナルシリーズ)
18 スッキリわかるサーブレット&JSP入門 スッキリわかる サーブレット&JSP入門 (スッキリシリーズ)
19 Javaパフォーマンス Javaパフォーマンス
20 マスタリングTCP/IP 入門編 第5版 マスタリングTCP/IP 入門編 第5版

2015年5月ランキング



 シェル本というジャンル、根強い人気。

5月順位 タイトル 書影リンク
1 たった一日で即戦力になるExcelの教科書 たった1日で即戦力になるExcelの教科書
2 人工知能は人間を超えるか 人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書)
3 スッキリわかるJava入門 第2版 スッキリわかるJava入門 第2版 (スッキリシリーズ)
4 リーダブルコード リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
5 機械学習プロフェッショナルシリーズ 深層学習 深層学習 (機械学習プロフェッショナルシリーズ)
6 デジタル原型師養成講座 デジタル原型師養成講座 プロとして通用するフィギュア作成技法
7 シェルプログラミング実用テクニック シェルプログラミング実用テクニック (Software Design plus)
8 誰のためのデザイン? 増補・改訂版 誰のためのデザイン? 増補・改訂版 ―認知科学者のデザイン原論
9 HTML5&CSS3デザインブック HTML5&CSS3デザインブック (ステップバイステップ形式でマスターできる)
10 その数式、プログラムできますか? その数式、プログラムできますか?
11 わかりやすいJavaEE ウェブシステム わかりやすいJavaEEウェブシステム入門
12 インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門 インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門
13 本格ビジネスサイトを作りながら学ぶWordPressの教科書 Ver.4.X対応版 本格ビジネスサイトを作りながら学ぶ WordPressの教科書 Ver.4.x対応版
14 スッキリわかるサーブレット&JSP入門 スッキリわかる サーブレット&JSP入門 (スッキリシリーズ)
15 スッキリわかるJava入門 実践編 第2版 スッキリわかる Java入門 実践編 第2版 (スッキリシリーズ)
16 機械学習プロフェッショナルシリーズ オンライン機械学習 オンライン機械学習 (機械学習プロフェッショナルシリーズ)
17 Pythonエンジニア養生読本 Pythonエンジニア養成読本[いまどきの開発ノウハウ満載!] (Software Design plus)
18 現場のプロが教えるHTML+CSSコーディングの最新常識 現場のプロが教えるHTML+CSSコーディングの最新常識 知らないと困るWebデザインの新ルール4
19 図解 コレ1枚でわかる最新ITトレンド 【図解】コレ1枚でわかる最新ITトレンド
20 ハッカーの学校 ハッカーの学校

2015年6月ランキング



 エクストリームプログラミングの改訂版は嬉しかった

6月順位 タイトル 書影リンク
1 Dockerエキスパート養成読本 Dockerエキスパート養成読本[活用の基礎と実践ノウハウ満載!] (Software Design plus)
2 たった一日で即戦力になるExcelの教科書 たった1日で即戦力になるExcelの教科書
3 人工知能は人間を超えるか 人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書)
4 エクストリームプログラミング エクストリームプログラミング
5 スッキリわかるJava入門 第2版 スッキリわかるJava入門 第2版 (スッキリシリーズ)
6 10年戦えるデータ分析入門 10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)
7 リーダブルコード リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
8 インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門 インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門
9 JavaScript入門教室 第3版 10日でおぼえるJavaScript入門教室 第3版 (10日でおぼえるシリーズ)
10 人工知能 人類最悪にして最後の発明 人工知能 人類最悪にして最後の発明
11 誰のためのデザイン? 増補・改訂版 誰のためのデザイン? 増補・改訂版 ―認知科学者のデザイン原論
12 マスタリングTCP/IP 入門編 第5版 マスタリングTCP/IP 入門編 第5版
13 Jenkins実践入門 改訂版 改訂新版Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)
14 スッキリわかるサーブレット&JSP入門 スッキリわかる サーブレット&JSP入門 (スッキリシリーズ)
15 HTML5&CSS3デザインブック HTML5&CSS3デザインブック (ステップバイステップ形式でマスターできる)
16 Fireworksレッスンブック CS6 Fireworksレッスンブック Fireworks CS6/CS5/CS4対応 (-)
17 機械学習プロフェッショナルシリーズ 深層学習 深層学習 (機械学習プロフェッショナルシリーズ)
18 伝わるデザインの基本 伝わるデザインの基本 よい資料を作るためのレイアウトのルール
19 ハッカーの学校 ハッカーの学校
20 シェルプログラミング実用テクニック シェルプログラミング実用テクニック (Software Design plus)

2015年7月ランキング



 人工知能本で上位独占

7月順位 タイトル 書影リンク
1 人工知能は人間を超えるか 人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書)
2 人工知能 人類最悪にして最後の発明 人工知能 人類最悪にして最後の発明
3 リーダブルコード リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
4 たった一日で即戦力になるExcelの教科書 たった1日で即戦力になるExcelの教科書
5 スッキリわかるJava入門 第2版 スッキリわかるJava入門 第2版 (スッキリシリーズ)
6 機械学習プロフェッショナルシリーズ 深層学習 深層学習 (機械学習プロフェッショナルシリーズ)
7 おうちで学べるセキュリティのきほん おうちで学べるセキュリティのきほん
8 エクストリームプログラミング エクストリームプログラミング
9 データ解析の実務プロセス入門 データ解析の実務プロセス入門
10 Dockerエキスパート養成読本 Dockerエキスパート養成読本[活用の基礎と実践ノウハウ満載!] (Software Design plus)
11 スッキリわかるJava入門 実践編 第2版 スッキリわかる Java入門 実践編 第2版 (スッキリシリーズ)
12 Unityで神になる本。 Unityで神になる本。
13 HTML5&CSS3デザインブック HTML5&CSS3デザインブック (ステップバイステップ形式でマスターできる)
14 10年戦えるデータ分析入門 10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)
15 本格ビジネスサイトを作りながら学ぶWordPressの教科書 Ver.4.X対応版 本格ビジネスサイトを作りながら学ぶ WordPressの教科書 Ver.4.x対応版
16 CSS3開発者ガイド 第2版 CSS3開発者ガイド 第2版 ―モダンWebデザインのスタイル設計
17 スクラム 仕事が4倍速くなる”世界標準”のチーム戦術 スクラム 仕事が4倍速くなる“世界標準”のチーム戦術
18 伝わるデザインの基本 伝わるデザインの基本 よい資料を作るためのレイアウトのルール
19 インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門 インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門
20 いちばんやさしいWordPressの教本 4.x対応 第2版 いちばんやさしいWordPressの教本 人気講師が教える本格Webサイトの作り方 第2版 WordPress 4.x対応 (「いちばんやさしい教本」シリーズ)

2015年8月ランキング



 暗号化本が一番売れているということに、ちょっと希望を見出した

8月順位 タイトル 書影リンク
1 暗号技術入門 第3版 暗号技術入門 第3版 秘密の国のアリス
2 最速の仕事術はプログラマーが知っている 最速の仕事術はプログラマーが知っている
3 人工知能は人間を超えるか 人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書)
4 文系で知っておきたいプログラミングとプログラマーのこと 文系でも知っておきたいプログラミングとプログラマーのこと
5 よくわかるHTML5+CSS3の教科書 第2版 よくわかるHTML5+CSS3の教科書【第2版】
6 たった一日で即戦力になるExcelの教科書 たった1日で即戦力になるExcelの教科書
7 機械学習プロフェッショナルシリーズ 深層学習 深層学習 (機械学習プロフェッショナルシリーズ)
8 人工知能 人類最悪にして最後の発明 人工知能 人類最悪にして最後の発明
9 スッキリわかるJava入門 第2版 スッキリわかるJava入門 第2版 (スッキリシリーズ)
10 Unity5 3D/2Dゲーム開発実践入門 Unity5 3D/2Dゲーム開発実践入門 作りながら覚えるスマートフォンゲーム開発
11 リーダブルコード リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
12 ヘルシープログラマ ヘルシープログラマ ―プログラミングを楽しく続けるための健康Hack
13 おうちで学べるセキュリティのきほん おうちで学べるセキュリティのきほん
14 Unreal Engine 4で極めるゲーム開発 Unreal Engine 4で極めるゲーム開発:サンプルデータと動画で学ぶUE4ゲーム制作プロジェクト
15 機械学習プロフェッショナルシリーズ 確率的最適化 確率的最適化 (機械学習プロフェッショナルシリーズ)
16 機械学習プロフェッショナルシリーズ 異常検知と変化検知 異常検知と変化検知 (機械学習プロフェッショナルシリーズ)
17 ハッカーの学校 ハッカーの学校
18 ファンタジー背景画 パーツ編 ファンタジー背景画 パーツ編
19 マスタリングTCP/IP 入門編 第5版 マスタリングTCP/IP 入門編 第5版
20 HTML5&CSS3デザインブック HTML5&CSS3デザインブック (ステップバイステップ形式でマスターできる)

2015年9月ランキング



 Node.jsのクローラー本登場。自著のライバルだけど、いい本だと思う。

9月順位 タイトル 書影リンク
1[http://amzn.to/1W5cXaK:title= 暗号技術入門 第3版] 暗号技術入門 第3版 秘密の国のアリス
2 データサイエンティスト養成読本 機械学習入門編 データサイエンティスト養成読本 機械学習入門編 (Software Design plus)
3 人工知能は人間を超えるか 人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書)
4 JS+Node.jsによるWebクローラー/ネットエージェント[開発テクニック] JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック
5 リーダブルコード リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
6 スッキリわかるJava入門 第2版 スッキリわかるJava入門 第2版 (スッキリシリーズ)
7 Effective Modern C++ Effective Modern C++ ―C++11/14プログラムを進化させる42項目
8 あなたの知らない超絶技巧プログラミングの世界 あなたの知らない超絶技巧プログラミングの世界
9 最速の仕事術はプログラマーが知っている 最速の仕事術はプログラマーが知っている
10 ゲームグラフィックス 2015 ゲームグラフィックス 2015 CGWORLD特別編集版
11 たった一日で即戦力になるExcelの教科書 たった1日で即戦力になるExcelの教科書
12 人工知能 人類最悪にして最後の発明 人工知能 人類最悪にして最後の発明
13 機械学習プロフェッショナルシリーズ 深層学習 深層学習 (機械学習プロフェッショナルシリーズ)
14 たのしいインフラの歩き方 たのしいインフラの歩き方
15 ネットワークエンジニアの教科書 ネットワークエンジニアの教科書
16 人工知能入門 人工知能入門
17 PHPはどのように動くのか? PHPはどのように動くのか ~PHPコアから読み解く仕組みと定石
18 Unity5 3D/2Dゲーム開発実践入門 Unity5 3D/2Dゲーム開発実践入門 作りながら覚えるスマートフォンゲーム開発
19 HTML5&CSS3デザインブック HTML5&CSS3デザインブック (ステップバイステップ形式でマスターできる)
20 機械学習プロフェッショナルシリーズ 異常検知と変化検知 異常検知と変化検知 (機械学習プロフェッショナルシリーズ)

2015年10月ランキング



 岩波データサイエンス!!

10月順位 タイトル 書影リンク
1 岩波データサイエンス Vol.1 岩波データサイエンス Vol.1
2 PHPはどのように動くのか? PHPはどのように動くのか ~PHPコアから読み解く仕組みと定石
3 暗号技術入門 第3版 暗号技術入門 第3版 秘密の国のアリス
4 人工知能は人間を超えるか 人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書)
5 たった一日で即戦力になるExcelの教科書 たった1日で即戦力になるExcelの教科書
6 スッキリわかるJava入門 第2版 スッキリわかるJava入門 第2版 (スッキリシリーズ)
7 プログラマ脳を鍛える数学パズル プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問
8 データサイエンティスト養成読本 機械学習入門編 データサイエンティスト養成読本 機械学習入門編 (Software Design plus)
9 機械学習プロフェッショナルシリーズ 深層学習 深層学習 (機械学習プロフェッショナルシリーズ)
10 Docker実践入門 Docker実践入門――Linuxコンテナ技術の基礎から応用まで (Software Design plus)
11 人工知能 人類最悪にして最後の発明 人工知能 人類最悪にして最後の発明
12 ITエンジニアのための機械学習理論入門 ITエンジニアのための機械学習理論入門
13 メタプログラミングRuby 第2版 メタプログラミングRuby 第2版
14 リーダブルコード リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
15 サイバーセキュリティプログラミング サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考
16 JS+Node.jsによるWebクローラー/ネットエージェント[開発テクニック] JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック
17 セキュリティコンテストチャレンジブック セキュリティコンテストチャレンジブック -CTFで学ぼう! 情報を守るための戦い方-
18 スッキリわかるJava入門 実践編 第2版 スッキリわかる Java入門 実践編 第2版 (スッキリシリーズ)
19 さよなら、インタフェース さよなら、インタフェース -脱「画面」の思考法
20 Pythonライブラリ厳選レシピ Python ライブラリ厳選レシピ

2015年11月ランキング



 Amazon Web Servers実践入門。いい本だよ!!

11月順位 タイトル 書影リンク
1 人工知能は人間を超えるか 人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書)
2 Amazon Web Servers実践入門 Amazon Web Services実践入門 (WEB+DB PRESS plus)
3 深層学習 深層学習 Deep Learning (監修:人工知能学会)
4 岩波データサイエンス Vol.1 岩波データサイエンス Vol.1
5 データサイエンティスト養成読本 機械学習入門編 データサイエンティスト養成読本 機械学習入門編 (Software Design plus)
6 たった一日で即戦力になるExcelの教科書 たった1日で即戦力になるExcelの教科書
7 ITエンジニアのための機械学習理論入門 ITエンジニアのための機械学習理論入門
8 暗号技術入門 第3版 暗号技術入門 第3版 秘密の国のアリス
9 進化計算と深層学習 進化計算と深層学習 -創発する知能―
10 プログラマ脳を鍛える数学パズル プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問
11 サイバーセキュリティプログラミング サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考
12 機械学習プロフェッショナルシリーズ 深層学習 深層学習 (機械学習プロフェッショナルシリーズ)
13 徳丸浩のWebセキュリティ教室 徳丸浩のWebセキュリティ教室
14 ハッカーの学校 ハッカーの学校
15 SwiftではじめるiPhoneアプリ開発の教科書 Swift2&Xcode7対応 Swiftではじめる iPhoneアプリ開発の教科書 【Swift 2&Xcode 7対応】 (教科書シリーズ)
16 スッキリわかるJava入門 第2版 スッキリわかるJava入門 第2版 (スッキリシリーズ)
17 HTML5&CSS3デザインブック HTML5&CSS3デザインブック (ステップバイステップ形式でマスターできる)
18 ビジュアル版 コンピューター&テクノロジー解体新書 コンピューター&テクノロジー解体新書 ビジュアル版
19 HTML5&CSS3モダンコーディング HTML5/CSS3モダンコーディング フロントエンドエンジニアが教える3つの本格レイアウト スタンダード・グリッド・シングルページレイアウトの作り方 (WEB Engineer’s Books)
20 リーダブルコード リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

2015年12月ランキング



 API本は、もう少し色々と出てきて欲しい。

12月順位 タイトル 書影リンク
1 APIデザインケーススタディ APIデザインケーススタディ ~Rubyの実例から学ぶ。問題に即したデザインと普遍の考え方 (WEB+DB PRESS plus)
2 メタプログラミングRuby 第2版 メタプログラミングRuby 第2版
3 人工知能は人間を超えるか 人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書)
4 スッキリわかるJava入門 第2版 スッキリわかるJava入門 第2版 (スッキリシリーズ)
5 入門Python3 入門 Python 3
6 ビジュアル版 コンピューター&テクノロジー解体新書 コンピューター&テクノロジー解体新書 ビジュアル版
7 たった一日で即戦力になるExcelの教科書 たった1日で即戦力になるExcelの教科書
8 暗号技術入門 第3版 暗号技術入門 第3版 秘密の国のアリス
9 プログラマ脳を鍛える数学パズル プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問
10 アニメCGの現場 2015 アニメCGの現場 2015 CGWORLD特別編集版 (Works books)
11 深層学習 深層学習 Deep Learning (監修:人工知能学会)
12 あなたの知らない超絶技巧プログラミングの世界 あなたの知らない超絶技巧プログラミングの世界
13 Amazon Web Servers実践入門 Amazon Web Services実践入門 (WEB+DB PRESS plus)
14 インフラエンジニア教本 Volume2 インフラエンジニア教本2――システム管理・構築技術解説 (Software Design別冊)
15 インフラ/ネットワークエンジニアのためのネットワーク・デザインパターン インフラ/ネットワークエンジニアのためのネットワーク・デザインパターン
16 リーダブルコード リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
17 岩波データサイエンス Vol.1 岩波データサイエンス Vol.1
18 データサイエンティスト養成読本 機械学習入門編 データサイエンティスト養成読本 機械学習入門編 (Software Design plus)
19 ITエンジニアのための機械学習理論入門 ITエンジニアのための機械学習理論入門
20 ランディングページ・デザインメソッド ランディングページ・デザインメソッド WEB制作のプロが教えるLPの考え方、設計、コーディング、コンテンツ制作ガイド

感想



 今年は、ランキングに載れるように頑張ります。
一方で、技術書の市場の大きさが決まっているなかで、技術の細分化で1冊あたりの売上が下がっている現状。
出版社としても著者としても辛いんだろうなぁと思います。

cheerio-httpcliを使って、Amazonのほしい物リスト(Wish List)から商品コード(asin)を抜き出す

 40手前の手習いで、cheerio-httpcliの使い方学習中です。
サンプルコードを読んで動作はなんとなく解ったので、次は欲しいデータを取得することで習熟していこうと思います。今回は、公開されたAmazonの欲しい物リスト(wish list)から、Amazonの商品管理コードであるasinを抜き出してみます。


欲しい物リスト(ウィッシュリスト)の構造



 ウィッシュリストは、個々に一意のIDが振られているので(公開設定されているのであれば)ログイン不要で取得できます。例えば、私のウィッシュリストは下記のようなURLになっています。最後のランダムな英数字の部分が、ウィッシュリストのIDです。

http://www.amazon.co.jp/gp/registry/wishlist/3G4653SB32HMZ/

 ウィッシュリストの中身に目を向けてみると、1ページあたり25件づつ表示されます。リストが25件以上ある場合は、ページ番号のボタンで表示されジャンプすることができます。そして最終ページ以外は、「次へ」のボタンがクリックできるようになっています。
f:id:dkfj:20160518074522p:plainf:id:dkfj:20160518074531p:plain

 今回は、一覧中からリンクのaタグを取得し、その中のhref属性からasin、title属性からタイトルを取得します。そして、次のページがある場合は再帰的に取得するようにしてみます。
 一覧中のaタグは複数あるのですが、h5タグの下のclassがa-link-normalのaタグを取るという指定の仕方が良さそうです。
f:id:dkfj:20160518075615p:plain
 「次のページ」は、xPathを取得すると、このような構造になっています。

//*[@id="wishlistPagination"]/span/div/ul/li[7]/a

f:id:dkfj:20160518075626p:plain
id:wishlistPaginationから辿って、直前のliタグがa-lastというクラスを持っているaタグを取ってくるというやり方でできそうです。

cheerio-httpcliを使って、欲しい物リストを取得するコード



 下調べが出来たので、cheerio-httpcliを使って取得するコードを書いてみます。ここまで調べておけば、要素の取得は簡単にできます。

'use strict';

/**
 * Amazonのほしい物リスト(公開)からASINを取得
 *
 */


var client = require('cheerio-httpcli');

var base = 'http://www.amazon.co.jp';
var url = 'http://www.amazon.co.jp/gp/registry/wishlist/3G4653SB32HMZ/';

function getWishList(url) {
  //console.log('getWishList: '+url);
  client.fetch(url).then(function (result) {
    var $ = result.$;
    $('h5 .a-link-normal').each(function () {
      var element = $(this);
      var href = element.attr('href');
      var title = element.attr('title');
      var array = href.match(/(\/dp\/+)(.{10})/);
      var asin = array[2];
      if (asin) console.log(asin);
    });
    var next = hasNextPage($);
    if (next)  getWishList(base+next);
  })
};

function hasNextPage($){
  //console.log($('div[id=wishlistPagination] .a-last a').attr('href'));
  return $('div[id=wishlistPagination] .a-last a').attr('href');
};
getWishList(url);

 しかしまぁ、JavaScriptっぽい書き方でないので、皆さま是非添削してこう書くのだよと教えてください。

Node.jsのWebスクレイピングモジュール 『cheerio-httpcli』のサンプルソースを読み解く

 不定期連載、Node.jsのcheerio-httpcliによるWebスクレイピング講座です。今回は具体的なcheerio-httpcliの使い方をみていきましょう。cheerio-httpcliが公開されてるGithubリポジトリには、豊富なサンプルがあります。サンプル例としては下記の通りで2016年5月現在で11本もあり、これを読んでると一通りの使い方が解ってきます。ということで、サンプル読みながら紹介してみます。

2ちゃんねる検索サンプル



 1つ目のサンプルは、2ちゃんねる検索のサンプルです。特定のワードを入れて、その検索結果を表示するという形です。

まず2ちゃんねるの検索部分がどうなっているかです。サイト上は、下記のとおりです。シンプルですね。
f:id:dkfj:20160514164719p:plain

 HTMLのソースは次のような形になっています。

<div style="display: inline; margin-left: 2.0em;">
	<form method="get" action="http://find.2ch.net/" style="display: inline;">
		<input type="text" name="q" value="" style="width: 16em; height: 1.00em;" id="fulltext-keyword">
		<input type="hidden" name="ita" value="">
		<button type="submit" value="">【新】全文検索</button>
	</form>
	<form method="get" action="http://dig.2ch.net/" accept-charset="UTF-8" style="display: inline;">
		<input type="text" name="keywords" value="" style="width: 16em; height: 1.00em; display: none;" id="thread-keyword">
		<input type="hidden" name="Bbs" value="">
		<button type="submit" value="">スレタイ検索</button>
	</form>
</div>

※見辛いので、適当にインデントをつけました。

 それでは、cheerio-httpcliのソースを見てみましょう。まず検索部分です。

var word = 'ぬるぽ';


var client = require('../index');

client.fetch('http://www.2ch.net/')
.then(function (result) {
  return result.$('form').eq(0).submit({
    q: word
  });
})

http://www.2ch.net/のフォームの一つ目に、『ぬるぽ』という単語を設定してサブミットボタンを押しています。HTMLのソースをみると、【新】全文検索とスレタイ検索があるので、ここで利用しているのは【新】全文検索の方ですね。検索ワードを入れるinput type="text"の名前が、qなのでそこにwordを入れています。なお、requireの部分は、Git等でソースとサンプルをまとめてダウンロードして展開した以外は、下記のように指定します。

var client = require('cheerio-httpcli');

次に取得した結果に対する処理です。先に実行結果をみてみましょう。検索結果の中から、title,url,timestampをJSON形式で出力しています。

[ { title: '【DMM/角川】艦隊これくしょん〜艦これ〜6208隻目 [無断転載禁止]©2ch.net',
    url: 'http://wc2014.2ch.net/test/read.cgi/gameswf/1463111858/294',
    timestamp: '2016-05-13 21:36:28.08' },

〜中略

  { title: '【テレ玉】TVSアニメ専門スレ45【テレビ埼玉】 [転載禁止]©2ch.net',
    url: 'http://yomogi.2ch.net/test/read.cgi/asaloon/1443865196/142',
    timestamp: '2016-05-06 21:01:38.4' },
  { title: '歴史秘話ヒストリア「愛と悲しみの大奥物語」★2©2ch.net',
    url: 'http://nhk.2ch.net/test/read.cgi/livenhk/1462533366/167',
    timestamp: '2016-05-06 20:35:22.01' } ]
終了します

 これを出力しているコードは下記のとおりです。
htmlのソースと比べると、classがboxのdivタグの中から、aタグを抽出しているようです。

f:id:dkfj:20160514215641p:plain

.then(function (result) {
  var $ = result.$;
  var results = [];
  $('.box').each(function () {
    var $a = $(this).find('a').eq(0);
    results.push({
      title: $a.text().trim(),
      url: $a.attr('href'),
      timestamp: $(this).find('.timestamp').text().trim()
    });
  });
  console.info(results);
})

 aタグの抽出の部分が、黒魔術に見えます。

var $a = $(this).find('a').eq(0);

findでaタグを指定して、その後のeqで絞り込んでいます。cheerioのメソッド説明によると、eqは下記のとおりです。

Reduce the set of matched elements to the one at the specified index. Use .eq(-i) to count backwards from the last selected element.

マッチした一つ目の要素のみ取得しているということのようです。使いこなすと便利そうですね。

 2ちゃんねる検索のサンプルで、検索ワードワードを入れて結果一覧から取得するというスクレイピングの基本的な動作が解りました。特に検索結果からの抽出の部分は参考になります。

要素の多段絞込



 後はサンプルの中から、使いそうな記述の仕方をピックアップします。まず、要素の絞込の仕方です。これは、例えば、特定のタグの下のものを選んで、再度絞り込むというやり方です。一度で抽出するという方法もありますが、2回に別けた方がよい場合もあります。ということで、sync.jsの例を見ていきましょう。sync.jsは同期リクエストのサンプルですが、要素の絞込があったのでピックアップします。

$('.b_algo').each(function () {
    // 各検索結果のタイトル部分とURL、概要を取得
    var $h2 = $(this).find('h2');
    var url = $h2.find('a').attr('href');
〜省略〜

 ソースを見ると解るのですが、まずh2タグを抽出し変数に代入しています。次に、代入した変数から再度絞り込んでいます。こう書くと解りやすいですね。この辺りの書き方が、スクレイピングしていて個々人の癖が出る部分だと思います。

不要な情報の削除



 次はタグの中から不要な情報の削除です。私は、あまりこういった方法を使わないのですが、読んでて成る程なぁと思いました。上手く使えば、分岐処理とかが不要になるので効率的になります。この例は、hatena-keyword.jsというはてなのキーワード抽出のサンプルにあります。

var $ = result.$;
  $('#updatekeywords ul li .name').each(function () {
    // NEW!は邪魔なので削除
    $('.new', $(this)).remove();
    console.info('* ' + $(this).text());
  });

Cookie情報の取得



 ログイン後のセッションを維持するために、Cookieを使う場合が多いです。スクレイピングで、ログイン後のページを参照する場合は、ログインしてCookieを取得するといったことが必要です。そのサンプルも、facebook.jsにあります。

client.fetch('http://www.facebook.com/')
.then(function (result) {
  console.info('ログインフォームを送信します');
  return result.$('#login_form').submit({
    email: username,
    pass: password
  });
})
.then(function (result) {
  console.info('クッキー', result.response.cookies);
  console.info('ユーザー名を取得します');
  console.info(result.$('._2dpb').text());
})

感想



 cheerio-httpcliは、サンプルが充実しています。どのサンプルもシンプルでありながら、スクレイピングに必要な要素が散りばめられています。今回じっくりと読むことで、だいたいの使い方が理解できました。ということで、ぜひ読んで動かしてみてください。

シリーズ目次:
Node.jsでスクレイピングするならば
AWS Lambdaでcheerio-httpcliを実行する
Node.jsのWebスクレイピングモジュール 『cheerio-httpcli』の使い方その1 cheerioでhtmlの要素指定

See Also:
『Rubyによるクローラー開発技法』を書きました
アプリケーションエンジニア向けのAWS本を書きました
『Amazon Web Services パターン別構築・運用ガイド』を書きました

Kindle Paperwhiteの7,300円引きセール中。6,980円で買えるぞい!!

 2012年11月に買ったKindle Paperwhite。3年以上毎日酷使をしてたのですが、最近故障してしまいました。原因は何となく解っていて、風呂場で無防備に読んでたり、水たまりに落としたりが原因でしょう。ということで、新しいものを買い直そうと検討していました。

Kindleの選択肢



 KindleというかAmazonのモバイルのガジェットとしては、大きく2つの選択肢があります。タブレット系のFireタブレットと、Eインク系のKindleです。前者はAndroidをカスタマイズしたカラーのタブレットで、後者は白黒だけどバッテリーの持ちが良いというのが特徴です。スマホは常に持ち歩いているので、もう一台持つとしてらやはりKindleが良いです。あと補足すると、Kindle端末は本を読むことしかできないのがメリットです。スマホやタブレットだと途中でTwitterやFacebookに切り替えてしまったり、また外部からの通知が来て中断されたりします。Kindle端末は、それが無いのがメリットですね。

 ちなみにFireタブレットの一番安いモデルである、Fireタブレット 8GBは8,980円です。更にAmazonのプライム会員であれば、クーポンコードの『PRIMEFIRE』を入れると4,000円引きの4,980円で買えます。私は、家の風呂でプライムビデオを見る時に重宝しています。

Fire タブレット 8GB、ブラック

Fire タブレット 8GB、ブラック

Kindleの種類



 Kindleは、現行4機種あります。無印の『Kindle』、主力モデルの『Kindle Paperwhite』、少し前の上位機種『Kindle Voyage』、最近発売された最上位機種『Kindle Oasis』。主な違いは、下記のとおりです。

  Kindle Kindle Paperwhite Kindle Voyage Kindle Oasis
値段※ 8,980円(4,980円) 14,280円(10,280円) 23,980円 35,980円
画面解像度 167ppi 300ppi 300ppi 300ppi
内蔵ライト なし あり-LED 4個使用 あり-LED 6個使用
明るさの自動調整機能付き
あり-LED 10個使用
明るさの均一性が向上
ページおくり タッチスクリーン タッチスクリーン タッチスクリーン
ページめくりボタン付き
タッチスクリーン
ページめくりボタン付き
バッテリー 数週間 数週間 数週間 数か月(バッテリー内蔵カバー装着時)

※カッコ内の値段は、プライム会員向けの価格

 違いが解りにくいのですが、値段の差が大きいですね。簡単にこう考えてみてください。無印とそれ以外は、画面の解析度が倍以上違う。PaperwhiteとVoyageの違いは、ページ送りにボタンが使えるかどうか。VoyageとOasisの違いは、周りの人に凄いと言われるかどうかの違い。
 ということで、私はPaperwhiteで満足できます。

3GモデルかWifiモデルか



 Paperwhiteを買うとして、3GモデルとWifiモデルどちらが良いのでしょうか?これ実は、コンテンツのダウンロードの利便性の問題ではなく、複数のデバイス間のページ同期の問題です。コンテンツのダウンロードは、頻度が少ないのでWifiでも3Gでも、実はそれほど気になることはありません。複数のデバイスで本を読む場合は、ページ同期の問題が出てきます。
 私の場合は、iPhoneのKindleとKindle Paperwhiteを使い分けています。前者は、数分の待ち時間。後者は数十分以上のまとまった時間があるときです。そういった時に、Kindle Paperwhite側が3Gで常に同期していれば無駄な時間がなくなりありがたいです。一方で、Kindel端末でしか読まないよという人にとっては、3Gはほぼ不要でしょう。

結論



 Kindle Paperwhiteの3G版を買い直します。せっかくなので、今度は白色にしてみます。初代に較べてページめくりのスピードも速いらしいので、楽しみです。ちなみに、どうせまた風呂で使うので、3年間の延長保証、2,970円も付けました。落下・水濡れにも対応とのこと。
f:id:dkfj:20160515160508p:plain

 クーポンコード『PAPERW7300』の適用もお忘れなく!!
f:id:dkfj:20160515160757p:plain

Kindle Paperwhite Wi-Fi 、ホワイト、キャンペーン情報つきモデル

Kindle Paperwhite Wi-Fi 、ホワイト、キャンペーン情報つきモデル

See Also:
人生に必要なのは、鼻毛カッターではないだろうか?

はてなブログにAmazonアソシエイトのMobile Popoverを設定する

 趣味がブログの私は、朝起きてAmazonのアフィリエイトの結果を見るのが日課となっています。儲かる儲からないじゃなくて、どういう反響があったかの確認方法の1つにコンバージョンというのは重要です。
※儲かれば嬉しいけどw

 ブログのアクセス解析をみていると、このブログもモバイル経由で見ている人が増えてきています。その割合は、2014年は25〜30%だったのですが、2015年は30〜35%と5%ほど比率が上がっています。その反面、Amazonのコンバージョン率は1.5%くらい下がっています。つまりモバイルユーザに対する訴求がうまく出来ていないということです。

Amazonのモバイル専用ウィジット Mobile Popover



 恐らくAmazonとしても、その辺りは課題なのだと思います。モバイル向けのコンバージョンを上げる為の施策として、AmazonはMobile Popoverというサービスを展開しています。これ何かというと、モバイルでAmazonのリンクを検知するとポップアップで大きく表示するというものです。一見すると邪魔に思えますが、使ってみるとそれほど違和感がなかったです。
f:id:dkfj:20160515135642j:plain

 ということで、このブログにも設定してみました。

はてなブログにMobile Popoverの設定をする



 このブログは、はてなブログを利用しています。はてなブログの場合、レスポンシブデザインのテーマを利用していない限りPC用とモバイル用を別々に設定します。Mobile Popoverは、当然モバイル用に設定します。まず管理画面のデザイン設定から、モバイルアイコンを選択します。

f:id:dkfj:20160515143233p:plain

 ヘッダーもしくはタイトル下に、Amazonのアソシエイトの管理画面から取得したMobile Popoverのコードを貼り付けます。コードは、こんな感じのものです。
※必ず自分のコードを取得して貼り付けてくださいね。

<script type="text/javascript">
  amzn_assoc_ad_type = "link_enhancement_widget";
  amzn_assoc_tracking_id = "dkfj-22";
  amzn_assoc_placement = "";
  amzn_assoc_marketplace = "amazon";
  amzn_assoc_region = "JP";
</script>
<script src="//z-fe.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&Operation=GetScript&ID=OneJS&WS=1&MarketPlace=JP"></script>

貼り付けるコードは、Amazonアソシエイトの左メニューにあるMobile Popoverから取得できます。
f:id:dkfj:20160515143655p:plain

リンク先のコードをコピペするだけです。
f:id:dkfj:20160515143703p:plain

ブログのカスタマイズ



 ブログの改善という意味では、もっと根本的に検討しないといけないことが沢山あります。一番大きいのは、はてなドメインから独自ドメインに変えてから、検索経由の激減です。

f:id:dkfj:20150102132843p:plain

 ペナルティ的な問題点はなさそうなので、一つ一つ自分で改善してスコアを上げていくしかなさそうな感じです。そういった意味で、ページの表示速度改善などJS,CSS等も検討しないといけないところです。また、https化などもしたいのですが、はてな側の制約を回避する方法も検討する必要があります。独自ドメインということで、自前でサイト構築というのも1つなのですが、過去資産の活用という意味ではリダイレクトを捨てるのも大きな決断が必要です。
 このブログも、最盛期は月あたり8万以上のアクセスがあったのですが、今は毎月2万前後です。抜本的に何とかしたいとなぁというところです。時間がないので、お金払って誰かにお願いするのも1つなのかもしれませんね。