プログラマでありたい

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

VPCとクラウドネイティブ

 長くAWSを使っていると気が付かなくなるのだけど、VPCというのはAWSを始めようとする際の1つの関門になっています。こういう事を書くと、ネットワークの知識があればVPCやサブネットの構築なんて簡単と反論されるかもしれません。どの辺りが解りにくいのか、順番に見てみましょう。

AWSネットワークとVPCネットワーク



 まずAWSのネットワークと、VPCのネットワークの違いを見てみましょう。VPCは、(便宜的に名付ける)AWSネットワークの中に、仮想的に作られたネットワークです。広大なAWSネットワークの海の隅っこにブイと網で囲まれた遊泳場のような場所がVPCです。まずこの概念が解りにくいのです。
 次にAWSのサービスの中には、VPC内のみに利用できるサービスとVPC内にいれられないサービス、そして中にも外にも作れるサービスの3種類があります。更に、VPC内には作れないけど、VPCにエンドポイント(接続ポイント)が作れるものがあります。一度、図示してみます。
f:id:dkfj:20160425080634p:plain

 VPC/非VPCのサービスがあるために、利用しようとしているサービスを利用する場合に、どう始めればよいのか解らないという声を聞いたことがあります。VPCを作ってから始めるのか、そのまま利用できるのか。また非VPCのサービスをVPC内から利用するにはどうすれば良いのかなどです。
 私はこれを聞いた時、成る程と思いました。昔から触っていて、それぞれのサービスができた時に一つづつ覚えてきた人間には、この悩みは起きにくいなぁという点です。これから利用するユーザに対して、何らかの配慮が必要なのでしょう。

Amazon Web Services クラウドネイティブ・アプリケーション開発技法の場合



 Amazon Web Services クラウドネイティブ・アプリケーション開発技法は、EC2を一切利用せずにアプリケーションのバックエンド・サービスを構築する方法の説明をしています。実はEC2だけではなく、VPCも一切使っていません。
 理由としては、2つあります。1つ目は、サービスを素早く使って貰うことにより、VPCの構成に悩むなど挫折してほしく無いためです。(VPCの作成については、前作読んで貰いたいし)そして、2つ目は、実はVPCなくてもちゃんとセキュリティを意識したサービスを作れるからです。

VPC対応とセキュリティ



 日常は、いわゆるエンタープライズと呼ばれるような企業さんと一緒に仕事をしていることもあり、AWSさんにAWSの各種サービスのVPC対応をよろしく頼みますとかお願いしていたりします。一方で、VPCが無いからセキュリティが低いと考えるのは、思考停止だなと思っています。VPCを使う理由としてはアクセス元制限などがありますが、実はVPCを使わずにちゃんと出来るんだぜということを、Amazon Web Services クラウドネイティブ・アプリケーション開発技法に書いているつもりです。

感想



 VPCを使おうが使うまいがクラウドネイティブとは関係ないと思います。一方で、VPCに対応していないサービスはセキュアではないと考えている人もいるのも事実です。個人的にはもっとクラウドの利用が進んでいると、VPCというのが使われなくなってくるのではと考えています。理由としては、EC2やRDSではなくDynamoDBやLambdaというサービスを使っていくとVPCの枠組みに収まらなくなってくるからです。もちろんAWSは、しっかりと各種サービスのVPC対応はしていくでしょう。一方で、ユーザーとしては必ずしも使う必要はないかもしれません。


See Also:
アプリケーションエンジニア向けのAWS本を書きました
Amazon Web Services クラウドネイティブ・アプリケーション開発技法の目次
Amazon Web Services クラウドネイティブ・アプリケーション開発技法のサンプルアプリケーションをGitHubで公開しました
エンジニアよ、越境しよう!!クラウド時代のエンジニア像
『Rubyによるクローラー開発技法』を書きました
『Amazon Web Services パターン別構築・運用ガイド』を書きました

Amazon Web Services クラウドネイティブ・アプリケーション開発技法の電子書籍化とパターン別構築・運用ガイドの増刷決定!!

 書名が長いので何とかして欲しい今日この頃ですが、表題の通りAmazon Web Services クラウドネイティブ・アプリケーション開発技法が電子書籍化しています。また、Amazon Web Services パターン別構築・運用ガイドの増刷も決定しました。著者冥利につきます。ありがとうございます!!

f:id:dkfj:20160423090211p:plain
f:id:dkfj:20160421171418j:plain

Amazon Web Services クラウドネイティブ・アプリケーション開発技法



 一部の間で分厚いを通り越して鈍器のような本と呼ばれている『Amazon Web Services クラウドネイティブ・アプリケーション開発技法』です。ポータビリティが無いので、電子書籍版でないのと良く聞かれていました。私自身も電子化の計画は解らなかったのですが、ほぼ発売日と同時に実現できました。
 しかし、従来の電子化の問題点も引きずっております。画像ベースのPDFのため、サイズが大きい・検索/ハイライトが出来ないといった問題があります。これについては出版社に繰り返し要望していますが、電子書籍の市場がまだまだ小さいのでコストを余り掛けられないというところに起因しています。技術書として使いにくいから普及せず、普及しないからコストを掛けられずという『卵が先か鶏が先か』問題ですね。
 一方で、電子書籍だと増刷時や改訂時にアップデートできるというメリットもあるので、ここのメリットは著者として提供していきたいと思います。

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



 1年前に発売した『Amazon Web Services パターン別構築・運用ガイド』ですが、未だに売れ続けています。EC2やVPCなどAWSを扱う為にベーシックな機能を中心に取り扱っています。お陰で生きの長い本になりそうです。クラウドネイティブ・アプリケーション開発技法との相乗効果で、Amazonのクラウドランキングで1位、2位を独占することが出来ました。ありがたい限りです。
f:id:dkfj:20160423085459p:plain

今後の予定



 おかげ様で、複数の執筆依頼がきています。その中にはAWS関係もあるし、全く別のテーマのものもあります。依頼される間が華なので、出来る限り対応していきたいです。でもその前に、一度Kindleダイレクト・パブリッシングに挑戦してみたいですね。



See Also:
アプリケーションエンジニア向けのAWS本を書きました
Amazon Web Services クラウドネイティブ・アプリケーション開発技法の目次
Amazon Web Services クラウドネイティブ・アプリケーション開発技法のサンプルアプリケーションをGitHubで公開しました
エンジニアよ、越境しよう!!クラウド時代のエンジニア像
『Rubyによるクローラー開発技法』を書きました
『Amazon Web Services パターン別構築・運用ガイド』を書きました

実録!!15分で出来るクラウドネイティブなアプリ構築例。コーディングからアプリのデプロイまで

 4/20発売のAmazon Web Services クラウドネイティブ・アプリケーション開発技法は、順調な出だしのようで一安心です。本を出すと気になるのが、Amazon上でのランキングです。全体ランキングで10,000位以内であれば技術書であればかなり売れている方です。そして、発売開始直後は1,000位以内でいてほしいです。そんなこともあって、わりとチョクチョク順位を確認しています。

Amazonのランキングはスマホのブラウザから表示されない



 Amazon内順位の確認ですが、とある問題があります。スマホのブラウザの場合は、表示されないのです。これだけでは伝わらないと思うので、写真を見てください。

まずPCから見たAmazonのページです。
f:id:dkfj:20160422074234p:plain
Amazon 売れ筋ランキングの他に、カテゴリごとの順位がでていますね。

次にモバイルです。
f:id:dkfj:20160422072124j:plain
さっぱり表示されません。

API Gateway + Lambdaで解決する



 以前は、KimonoLabsというスクレイピングサービスで30分に一度順位を取得させていました。しかし、2016年2月に(私の中で)惜しまれつつもサービスが終了してしまいました。まぁなければ作れば良いやということで、API GatewayとLambdaを使ってAmazon上から特定の項目だけを取得するようにしました。構成としては、以下のとおりです。

f:id:dkfj:20160422074905p:plain

 LambdaからNode.jsのモジュールであるcheerio-httpcliを呼び出し、Amazonの商品詳細ページからランキングの部分だけを抜き出しています。順位は、HTML中の要素liのidがSalesRankに含まれています。かなり雑ですが、下記のようなコードで取得できます。

'use strict';
let client = require('cheerio-httpcli');

exports.handler = (event, context, callback) => {
  client.fetch('http://www.amazon.co.jp/dp/4797386312/', { q: 'node.js' }, function (err, $, res) {
    console.log(res.headers);
    console.log($('title').text());
    let list = '';
    let rank = $("li[id=SalesRank]").text();
    console.log(rank);
    callback(null, rank);
  });
};

取得結果は以下のとおりです。
f:id:dkfj:20160422075147j:plain

 余計な要素が多いですが、そこはスクレイピング後の整形でなおせます。これくらい雑なものであれば、慣れていればコードとあわせて15分もあれば作れれます。

感想というか本の宣伝



 今回の本は、このような感じでAPI GatewayとLambda、それ以外にCognitoやDynamoDBといったものを中心に扱っています。ここで紹介した例は非常にシンプルですが、例えば高速に応答したい場合に、予め処理を定期的に動かすにはどうするかや。その結果を保存するにはといった具体的なことを書いています。どういう場合に、どのサービスを使えばよいのか実際のコードと共に実例集みたいな感じにもなっています。
 クラウドネイティブ・アプリケーションというと御大層な感じがしますが、自分が欲しいものをサクッと作れるように、その考え方・作り方の説明書となっています。少しでも興味を持ってもらえればなぁと思います。本屋さんで見かけたら、ぜひ手にとってパラパラめくってください。ちなみにスクレイピングの話は、取り扱っていません。


See Also:
アプリケーションエンジニア向けのAWS本を書きました
Amazon Web Services クラウドネイティブ・アプリケーション開発技法の目次
Amazon Web Services クラウドネイティブ・アプリケーション開発技法のサンプルアプリケーションをGitHubで公開しました
エンジニアよ、越境しよう!!クラウド時代のエンジニア像
『Rubyによるクローラー開発技法』を書きました
『Amazon Web Services パターン別構築・運用ガイド』を書きました

エンジニアよ、越境しよう!!クラウド時代のエンジニア像

 Amazon Web Services クラウドネイティブ・アプリケーション開発技法のAppendixとして、「クラウドとエンジニア」をテーマに、クラウド時代のエンジニアのあり方について少し書きました。その趣旨としては、次のようなものです。

従来は、アプリケーション・エンジニアとインフラ・エンジニアという役割で分業することが多かったです。しかし、API GatewayやLambdaのような新しいサービスが出てくる現状で、果たしてそれを扱うのは誰なのだという問題がでてきます。

 図示化すると、次のような感じですね。
f:id:dkfj:20160421080159j:plain

アーキテクチャが変われば、エンジニアの役割も変わる



 今、Webの世界で一般的に見られるアーキテクチャはIntel LinuxサーバやWindowsサーバが普及してからのものです。せいぜい20年位の歴史だと思います。その前は、ホストを中心としたC/Sシステムなどが中心だったのでしょう。つまりプラットフォームが変われば、アーキテクチャも変わります。そして、アーキテクチャが変われば、エンジニアの役割も変わります。
 実は、今回アプリケーションをメインのターゲットにAWS本を書こうとしたのは、上記のモヤモヤっとした考えを文章化しようとしたのがキッカケです。社内のエンジニアとよく話しているのですが、インフラエンジニアがAWSのサービス群を使いこなすことによりアプリエンジニア抜きでソリューションを作ることも出来るし、アプリエンジニアがインフラ構築なしにシステムを作ることも出来るようになってきています。そうなると、両者の線引の意味があるのかとなります。
 もちろん高度に専門的なところは分業する必要があります。技術の細分化が進み、一人の人間が全てを把握するのは不可能に近くなっています。それでも、自分にインフラ・エンジニアやアプリケーション・エンジニアとラベルを貼るのをやめて、まずはいろいろやってみるのが良いのでしょうか?今回の本は、そのキッカケの一つになれるよう目指しています。実際、著者陣も執筆を機に、また一段と変わってきています。エンジニアの皆さん。越境しましょう!!

蛇足



 Amazon Web Services クラウドネイティブ・アプリケーション開発技法のAppendixに上記のようなことを書いています。ブログの会社として有名で、Developers.IOを運営するクラスメソッドさんの中の人がそれを読んで、次のような言葉を頂きました。

ちなみに付録前半を担当されたのはどなたでしょうか?うちのブログのポエム枠投稿してもらえませんかね?w

 本当に、ありがとうございますw立派なポエマー目指します。

See Also:
アプリケーションエンジニア向けのAWS本を書きました
Amazon Web Services クラウドネイティブ・アプリケーション開発技法の目次
Amazon Web Services クラウドネイティブ・アプリケーション開発技法のサンプルアプリケーションをGitHubで公開しました
クラウドネイティブなアプリ構築例。AWSのサービスを利用してスマホブラウザからAmazonのランキングを取得する
『Rubyによるクローラー開発技法』を書きました
『Amazon Web Services パターン別構築・運用ガイド』を書きました

Amazon Web Services クラウドネイティブ・アプリケーション開発技法のサンプルアプリケーションをGitHubで公開しました

 Amazon Web Services クラウドネイティブ・アプリケーション開発技法は、本日発売です。それにあわせて、書籍中の説明で利用しているアプリケーションの全コードをGitHubで公開しました。

takuros/aws-application-book: Amazon Web Services クラウドネイティブ・アプリケーション開発技法のサンプルアプリ

サンプル・アプリケーション



 GitHubには、18個のサンプルアプリを格納しています。18個ですが、その中にはiOS,Android,JavaScriptもあるので、実数としてはもっと多いです。

03-01-s3-sample
03-04-dynamodb-sample
03-05-lambda-sample
03-06-CognitoSample/iOSApp
03-08-iot-sample
03-08-kinsis-sample
03-09-sqs-sample
04-01_PictureSharingApp
04-02_Android_Sample_App
04-03-AuthenticationService
04-04-APIGatewayStub/Lambda
04-05-DynamoDBAppleWatchHeatlhcareSample
04-06_AttendanceManagementApp
04-07_Android_Sample_App_For_DeviceFarm
04-08_KeywordCurationService
04-09-KinesisWithTwitter
04-10-ML-Curation-Service
04-11_CognitoSyncMemoApp

行数をカウントしてみると、3万行以上ありました。

$ wc -l `find ./ -type f`
  314886 total

追記:
よく見ると、30万行でした。
フレームワークのコードまでカウントしていたので、除外してみると次のような感じでした。

$ cloc .
     411 text files.
     326 unique files.
     434 files ignored.

https://github.com/AlDanial/cloc v 1.66  T=0.58 s (439.7 files/s, 38461.9 lines/s)
--------------------------------------------------------------------------------
Language                      files          blank        comment           code
--------------------------------------------------------------------------------
C/C++ Header                     87           3585           7976           2785
Java                             35            411            305           1800
Swift                            26            363            422           1191
JavaScript                       36            136            148           1102
XML                              38            113             17            994
JSON                             18              0              0            438
Groovy                            9             37             16            199
Bourne Again Shell                1             19             20            121
HTML                              3              2              0             98
DOS Batch                         1             24              2             64
Python                            1             11              8             38
Prolog                            2              4              0             30
--------------------------------------------------------------------------------
SUM:                            257           4705           8914           8860
--------------------------------------------------------------------------------


 今回紹介しているAWSのサービス群は、自分で触っているとその凄さが実感できるものが多数あります。また、環境を用意する手間も殆どないので、ぜひ本を片手にソースをダウンロードして、自分のアプリを作っていってください。面白いものができたら、PullReqお願いします。公開方法、検討します。

追記:内容の紹介も順次やっていきます。
エンジニアよ、越境しよう!!クラウド時代のエンジニア像


See Also:
アプリケーションエンジニア向けのAWS本を書きました
Amazon Web Services クラウドネイティブ・アプリケーション開発技法の目次
エンジニアよ、越境しよう!!クラウド時代のエンジニア像
『Rubyによるクローラー開発技法』を書きました
『Amazon Web Services パターン別構築・運用ガイド』を書きました

AWS Lambda+Node.jsのモジュールcheerio-httpcliでWebスクレピングをする

 先日の『Node.jsでスクレイピングするならば』の続きを書きました。全10回くらいのシリーズになる予定で、今回は一番シンプルな静的サイト/JavaScript不要なページに関するスクレイピングの説明です。cheerio-httpcliをAWS Lambdaで動かすところで、cheerio-httpcliの説明というよりlambdaでの動かし方がメインになっています。ちなみにcheerio-httpcliは、cheerioの拡張で、最近活発に開発されています。
 なお、AWS Lambdaとはなんぞやとと言う人に簡単に説明すると、Lambdaはサーバ不要のコンピュートエンジンです。ユーザーはプログラムをアップロードするだけで実行可能で、サーバのメンテナンスはAWS側が全てやってくれるという夢のようなインフラです。普通にサーバーを立ち上げるより安く便利なことが多いので、是非知っておくべきサービスです。

cheerio-httpcliの準備とソースの記述


 まずはLambdaにアップ用にcheerio-httpcliの準備をします。
プロジェクト用のディレクトリ直下にnode_modulesを作り、そこに関連モジュールをインストールします。

$ mkdir node_modules
$ npm install cheerio-httpcli

 次に、ソースを書きます。LambdaのエンジンがNode.js 4.3になってCallBackの利用を推奨されるようになっているので(このソースでは意味無いですが、)その文法に沿って利用しておきましょう。

'use strict';
let client = require('cheerio-httpcli');

exports.handler = (event, context, callback) => {
  client.fetch('http://www.google.com/search', { q: 'node.js' }, function (err, $, res) {
    console.log(res.headers);
    console.log($('title').text());
    let list = '';
    $('a').each(function (idx) {
      console.log($(this).attr('href'));
      list = $(this).attr('href');
    });
    callback(null, list);
  });
};

 cheerio-httpcliの解説としては、http://www.google.com/searchに引数pに対して、node.jsで検索した結果を取得しています。その習得結果、resからaタグのhref属性を抜き出しています。
 "exports.handler = (event, context, callback) "とcallbackの部分がLambada用に記述しているところです。その他の部分は、Googleの検索結果を取得するというソースを拝借しています。
ソースを記述したら、先ほどのモジュールごと圧縮してzipファイルにします。
※コールバック形式とプロミス形式をどう使うかは、また回を改めて説明します。

zip -r simple-scrape.zip simple-scrape.js node_modules/

AWS Lambdaの準備



 AWSマネージメントコンソールから、Lambdaファンクションを作成します。GUIなんてという硬派な方は、CLIからでも大丈夫です。Nameは、適当につけてください。今回は、cheerio-httpcli-sampleで作っています。Handlerは、「simple-scrape.handler」です。これは、simple-scrape.js内のhandlerを実行するということです。先ほど、export.handler作りましたよね。デフォルトのindex.handlerは、index.jsのexport.handlerを読み込むという意味です。Roleは、Lambdaの実行権限をつければ大丈夫です。そして、コードはUpload a .ZIP fileを選び、先ほど作ったzipファイルをアップロードします。
f:id:dkfj:20160419011001p:plain
f:id:dkfj:20160419011007p:plain

 そして、Testで実行です。Eventの初期設定が必要ですが、引数を取らないプログラムになっているので、デフォルトをO.K.で大丈夫です。実行して、エラーが出ていないことを確認しましょう。
f:id:dkfj:20160419011313p:plain

 今回のソースは、ページタイトルとaタグを全て抜きだすというものです。実行結果については、抜き出す対象を絞り込む必要や、そもそもGoogleのbot対策など、いろいろカスタマイズするところがあります。ひとまずLambdaでcheerio-httpcliを実行の確認が出来たのではないでしょうか。次回は、cheerio-httpcliの使い方を、もう少し掘り下げて解説します。

まとめ



  • AWS LambdaでサードパーティのNode.jsモジュールを利用したい場合は、直下のnode_modulesにまとめて圧縮する
  • cheerio-httpcliは、0.3.0以降はコールバックとプロミスに対応している(未解説)

なお、AWS Lambdaの使い方については、4/20発売の本に詳しく書いています。主にモバイルアプリからの利用の仕方を中心としていますが、Lambdaの設定方法・権限付与などをこれでもかとサンプル込で解説しています。全部で600ページ超の大作です。

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

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

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


シリーズ目次:
Node.jsでスクレイピングするならば
AWS Lambdaでcheerio-httpcliを実行する

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


参照:
Node.js用のスクレイピングモジュール「cheerio-httpcli」の紹介 - Qiita

Node.jsでスクレイピングするならば

 昔、Rubyでクローラー/Webスクレイピングの本を書きました。今でもちょくちょくとスクレイピングのコードを書いたりはするのですが、実行基盤についてはサーバの運用管理が面倒くさいのでAWS Lambdaを使うことが多いです。そうなると、Lambdaは基本的にはRubyが使えないので、言語はPythonかNode.jsを利用することになります。Pythonもいいけど、今後のことを考えるとNode.js力を高めておきたいと考えています。ということで、Node.js縛りでスクレイピングの仕方です。

スクレイピング対象のページの種類



 私の中の勝手な定義ですが、スクレイピングには3種類あります。

1. 静的サイト/JavaScript不要なページに関するスクレイピング
2. 対話型サイト/JavaScript不要なページに関するスクレイピング
3. JavaScript前提のページに関するスクレイピング

下に行くほど、スクレイピングしづらくなります。

静的サイト/JavaScript不要なページに関するスクレイピング



 これが一番簡単です。HTMLを取得して、そのHTMLの中の特定のデータを抽出するだけです。利用するライブラリとしては、cheerio-httpcliあたりが良いです。

対話型サイト/JavaScript不要なページに関するスクレイピング



 対話型サイトとは、入力フォームやチェックボックスを利用してユーザが入力後にサブミットして遷移するサイトです。利用するプロトコルとしては、getではなくpostのイメージです。単純に検索条件を指定するだけであれば、postであってもパラメータを自分で付加して送ればいいのですが、認証等が絡むことが多いです。その際は、ライブラリ側もCookie等に対応してセッションを維持する必要があります。面倒くささのランクが1つあがることになります。
 こういった場合に利用するライブラリとしては、Mechanizeが定番になります。Node.jsというかJavaScript版としてmechanize-jsがあります。また、先に紹介したcheerio-cliも0.3.0以降は同様の機能が使えるようになっています。選択の悩みどころですね。

JavaScript前提のページに関するスクレイピング



 JavaScript前提のページとは、サーバサイドで画面を生成するのではなく、クライアントサイドから各要素を呼び出して動的にページを生成するタイプです。従来も画像やCSSをクライアントから呼び出してというところはあったのですが、最近は表示するデータ等をクライアントから非同期で呼び出してというパターンが増えてきています。スクレイピングという観点では、大変な場合が多いです。
 対処法としては、JavaScriptを解析してデータ部分を直接引っ張る方法と、スクレイピング側にブラウザ相当のものを用意して画面の生成をする方法があります。前者は認証認可含めて大変な場合が多く、後者はブラウザを利用するので通常のスクレイピングより多くのリソースを必要とします。Selenium+Firefoxで実現する場合もあるのですが、出来るだけ軽量に実行できるようにヘッドレスブラウザと呼ばれるCLIベースのものを利用することが多いです。代表格としては、WebKit ベースで作られたPhantomJSがあります。Node.js+Lambdaから使う際は、phantom-lambda-templateというモジュールもあります。これについては、回を改めて解説します。またPhantomJS以外では、Xvfbを利用してChromeやFirefoxなどの実ブラウザをCLIで使うという方法もあります。

まとめ



 スクレイピングの分類するだけで、結構な分量となりました。次回以降、それぞれの方法を順に解説してみようと思います。つづきは、こちら。
AWS Lambdaでcheerio-httpcliを実行する

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

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

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

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

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

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

シリーズ目次:
Node.jsでスクレイピングするならば
AWS Lambdaでcheerio-httpcliを実行する

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