re:Invent 2017で聴いたセッション + あとでみるセッション
re:Invent 2017から昨日帰国しました。聴いたセッション、またあとでビデオ + スライドを見ておきたいセッションをメモしておきます。
聴いたセッション
Workshopが多いですね。セッション中のメモはDropbox Paperで取っていたのですが、Tweetにまとめているのもあるのでそちらもどうぞ。
- ATC303 - Cache Me If You Can: Minimizing Latency While Optimizing Cost Through Advanced Caching Strategies
- bidding engineの話。Lambda@EdgeでABテストとか。
- タイトルがおしゃれ。 元ネタ: https://en.wikipedia.org/wiki/Catch_Me_If_You_Can
- ATC301 - 1 Million bids in 100ms – using AWS to power your Real Time Bidder
- NLB + ENAで2M connection / min. さばいてるのが印象的なセッション。あとはbidderはstatelessにしてspot instanceにしてるとか。
- AerospikeをNVMe SSDで使ってる。I3 or F1。
- MCL309 - Deep Learning on a Raspberry Pi
- MXNetをラズパイで。資料はこれ GitHub - juliensimon/mxnetworkshop
- といっても実習はEC2でやったのであった。手法変えつつtrainの時間みつつ。あとはPyCameraつかえばinferenceをノードで動かせるとこまでやって終了。
- IOT204 - AWS Greengrass Basic Workshop
- Greengrassのセットアップまわりの基礎的な説明。pubsubをAWS IoTで眺めつつEC2をIoT Deviceとみなせるようにして一通りさわった。
- ARC401 - Serverless Architectural Patterns and Best Practices
- CTD403 - Supercharge Your Websites with the Power of Lambda@Edge
- suzuken on Twitter: "CTD403 - Supercharge Your Websites with the Power of Lambda@Edgeに来た。早速cloudfront distribution立てつつ準備中。 #reinvent"
- 内容はこれ GitHub - aws-samples/aws-lambda-edge-workshops: This repository contains instructions and blueprints for Lambda@Edge workshops
- Lambda@EdgeからDynamoDBのUpdate + Scanをするのが面白かった
- CON309 - Containerized Machine Learning on AWS
- クックパッドさんから2人登壇されていたので見に行ってきました。動画: AWS re:Invent 2017: Containerized Machine Learning on AWS (CON309) - YouTube 手元のiPhoneで試したらばっちり分類されていて便利でした :)
- MCL212 - SESSION FULL! NEW LAUNCH! AWS DeepLens workshop: Building Computer Vision Applications
- MCL209 - NEW LAUNCH! Introducing Amazon Translate – Now in Preview
- MCL345 - NEW LAUNCH! Integrating Amazon SageMaker into your Enterprise
- MCL215 - NEW LAUNCH! Introducing Amazon Transcribe – Now in Preview
- DAT318 - NEW LAUNCH! Deep dive on Amazon Neptune
- MCL343 - NEW LAUNCH! Natural Language Processing for Data Analytics
聴いたセッションについてはajitofmでも話したのでよかったらそちらもどうぞ。
Published: ajitofm 14: Losing $100 in 5 minutes at Las Vegas with @_nishigori @chocopie116 https://t.co/ppllM62Uwf #ajitofm
— ajitofm (@ajitofm) 2017年12月1日
聴きたいけど聴けなかったセッション
あとでビデオとスライドで見ようかなあと思っているもの。Breakout Sessionの動画はこちら。そのうち全部あがるはず。
月曜日
- ABD331 - Log Analytics at Expedia Using Amazon Elasticsearch Service
- ATC302 - How to Leverage AWS Machine Learning Services to Analyze and Optimize your Google DoubleClick Campaign Manager Data at Scale
- AMF305 - Autonomous Driving Algorithm Development on Amazon AI
- GPSTEC313 - GPS: Real-Time Data Processing with AWS Lambda Quickly, at Scale, and What Comes Next?
- CMP332 - C5 Instances and the Evolution of Amazon EC2 Virtualization
- ABD315 - Building Serverless ETL Pipelines with AWS Glue
火曜日
- MCL365 - NEW LAUNCH! Introducing Amazon SageMaker
- ABD327 - Migrating Your Traditional Data Warehouse to a Modern Data Lake
- MCL310 - Building Deep Learning Applications with Apache MXNet and Gluon
- ABD215-R - [REPEAT] Serverless Data Prep with AWS Glue
- CTD301 - Amazon CloudFront Flash Talks: Best Practices on Configuring, Securing, Customizing, and Monitoring Your Distribution.
- DEV315 - GitHub to AWS Lambda: Developing, Testing, and Deploying Serverless Apps
- SRV403-R - [REPEAT] Serverless Authentication and Authorization: Identity Management for Serverless Applications
- MBL402 - NEW LAUNCH! Data Driven Apps with GraphQL: AWS AppSync Deep Dive
- CMP323 - AWS Batch: Easy and Efficient Batch Computing on AWS
水曜日
- DAT342 - NEW LAUNCH! How to build graph applications with SPARQL and Gremlin using Amazon Neptune
- SID341 - Using AWS CloudTrail Logs for Scalable, Automated Anomaly Detection
- MCL333-R - [REPEAT] Building Deep Learning Applications with TensorFlow on AWS
- CTD206 - NEW LAUNCH! Learn how Fubo is monetizing their content with server side ad insertion using AWS Elemental MediaTailor
- DAT326 - How DynamoDB Powered Amazon Prime Day 2017
- CON404 - Deep Dive into Container Scheduling with Amazon ECS
- CTD203 - NEW LAUNCH! Hear how OwnZones is using AWS Elemental MediaConvert to help media customers deliver world class VOD experiences
- CMP332 - C5 Instances and the Evolution of Amazon EC2 Virtualization
- CTD304 - Dow Jones & Wall Street Journal's journey to manage traffic spikes while mitigating DDoS & application layer threats
- CON214 - NEW LAUNCH! Introducing AWS Fargate
- MCL305 - Scaling Convolutional Neural Networks with Kubernetes and TensorFlow on AWS
- DEV324 - Deep Dive on Advanced Continuous Delivery Techniques Using AWS DevOps Tools
木曜日
- DAT308 - A story of Netflix and AB Testing in the User Interface using DynamoDB
- DEV203-R - [REPEAT] Launch Applications the Amazon Way
- DEV402 - Deep-Dive for AWS X-Ray
- SRV401 - Become a Serverless Black Belt: Optimizing Your Serverless Applications
- MCL341 - NEW LAUNCH! Infinitely Scalable Machine Learning Algorithms with Amazon AI
- SRV424 - Massively Parallel Data Processing with PyWren and AWS Lambda
- MCL342 - NEW LAUNCH! Graph-based Approaches for Cyber Investigative Analytics Using GPU Accelerated Community Detection and Visualization with Amazon Neptune and Graphistry
- CMP330 - NEW LAUNCH! Amazon EC2 Bare Metal Instances
おまけ
1週間ぶりに食べる日本食は最高だなあと思いました。
我々一行は帰国後すぐ蕎麦屋に向かった。この一週間でもっとも美味いを言い続けている… pic.twitter.com/9yKWEfP2vT
— suzuken (@suzu_v) 2017年12月2日
DeepLensはAWSの新サービスてんこ盛りデバイスだった
今週はラスベガスで開催されているAWS re:Inventに来ています。DeepLensのWorkshopに先程出てきたのでメモがてら貼っておきます。
概要
DeepLens自体は次の記事が詳しいです。
AWS DeepLens – Get Hands-On Experience with Deep Learning With Our New Video Camera | AWS News Blog
私はビデオもデバイスについても特に詳しいわけではないのですが、DeepLensがすごいなーと思ったのは、それ自体が今回発表されたサービスを含め、AWSのサービスを上手くつかって構築されていることです。
- SageMakerで作ったモデルを取り込む
- Greengrass Core上でlocal Lambdaを動かし、デバイスデータの送信とinferenceをする。
- eventのpubsub管理はAWS IoTで
- Greengrassに乗っているのでデプロイも簡単にできる
- ビデオデータはKinesis Video Streamでサーバ側へ送信 + バッファ可能
- inferenceの結果はAWS IoTトピックで扱えるので、任意のLambda functionのtriggerに設定可能
DeepLens自体のスペックは次のとおりです。
AWS DeepLens – Deep learning enabled video camera for developers - AWS
Workshopではこれらを一通り触りながらDeepLensにモデルをデプロイしていきました。次がWorkshopでつかったプロジェクトです。
GreengrassにDeepLensをデバイスとして関連付けすると、AWS IoT Device Gateway経由でイベントが流れてきます。例えば物体認識したイベントは次のようなデータが流れてきます。GreengrassではLambda functionをデバイスのlocalで実行できるので、ここでinferを実行するわけです。Greengrass SDKをつかったコードは次にあります。infer結果をpublishしているのがわかります。この例だとMXNetを使っています。
https://s3.amazonaws.com/deeplens-managed-resources/lambdas/hotdog-no-hotdog/new_hot_dog_lambda.zip
ちなみに今日あったアップデートでGreengrassからカメラやGPUにアクセスできるようになっています。
今日試したところ、DeepLensにはProjectを1つだけデプロイできます。ProjectというのはModelとFunctionの組み合わせでつくられるDeepLensの挙動のだと思うとわかりやすいです。
公式ページにもあるとおり、DeepLensがProgrammableというのはここで実現されています。
AWS DeepLens is easy to customize and is fully programmable using AWS Lambda. The deep learning models in DeepLens even run as part of an AWS Lambda function, providing a familiar programming environment to experiment with.
1つ1つをみるとやっていることはシンプルですが、よく考えられているなあと思ったポイントは以下のとおりです。
- Greengrass Coreの設定をしなくていい。DeepLensのconsoleからdeviceを紐付けるだけ。
- ゆえに証明書の配置とかも気にしなくていい。(出荷時点で組み込みのはず)Greengrassの設定するの若干面倒ですし・・
- ひとまずつなげばAWS IoTのpubsubにつなげるのでユーザはmodelとLambdaをどう書くかだけ考えるのに集中できる
あたりかなと。Greengrassで管理してるのでnetwork connectivityが安定しなければ再送される、あるいは他のGreeengrass Coreと連携して端末間通信する、あたりも便利そうですね。
感想
お、これは早速実物だ #reinvent #deeplens pic.twitter.com/lwbFhAfQ8x
— suzuken@re:Invent (@suzu_v) 2017年11月29日
あーこれgreengrassd動いてるのかな。まだ触らないでね!っていわれてる
— suzuken@re:Invent (@suzu_v) 2017年11月29日
ということでDeeplens Workshop始まった。デバイスのチームとMLのチームがコラボして開発されたとのこと。開発者が簡単にMLを扱えることを目指して開発しているとのこと。Video CameraではなくてDL enabled developer kitだと。
— suzuken@re:Invent (@suzu_v) 2017年11月29日
Workshopではすでにサンプルプロジェクトが用意されている。物体認識、行動認識、顔認識など。機能をカスタムしてもいいし、自分でプロジェクトを作ることもできる。
— suzuken@re:Invent (@suzu_v) 2017年11月29日
SageMakerで作ったモデルをgreengrass経由でlocal Lambdaつかってデプロイするのかなーと想像してるけどどんな感じで進むのかしら
— suzuken@re:Invent (@suzu_v) 2017年11月29日
Deeplens, Ubuntuのってるのか https://t.co/kIAck0l1aQ
— suzuken@re:Invent (@suzu_v) 2017年11月29日
Deeplensはlambdaでinferenceする。VideoをKinesis Video Streamにおくる。デバイス管理はGreengrass。trainingなどはSageMakerで。今回発表されたサービスをもりもりつかっているなあ。
— suzuken@re:Invent (@suzu_v) 2017年11月29日
Deeplensのstorageは拡張できるらしい。MXNet用にclDNNが入ってる。
— suzuken@re:Invent (@suzu_v) 2017年11月29日
— suzuken@re:Invent (@suzu_v) 2017年11月29日
Tensorflowもサポート予定とのこと
— suzuken@re:Invent (@suzu_v) 2017年11月29日
Alexaは入ってない。Audio StreamingではなくVideo Streaming。
— suzuken@re:Invent (@suzu_v) 2017年11月29日
ホットドッグが配布されたw 「ホットドックの検出やるからまだ食べないでください!」とのこと
— suzuken@re:Invent (@suzu_v) 2017年11月29日
あ、これGreengrass Coreの1.2.0入ってるな。
— suzuken@re:Invent (@suzu_v) 2017年11月29日
DeepLens consoleではmodelの設定とGreengrass上のLambda functionの設定ができる
— suzuken@re:Invent (@suzu_v) 2017年11月29日
あーDeepLensのinferenceの結果はMQTT topicでsubscribeできるのか。なるほど。
— suzuken@re:Invent (@suzu_v) 2017年11月29日
なんていうか、DeepLens自体はGreengrassがpresetされたシンプルな構成だけど、Greengrass + Lambdaのおかげでデプロイもしやすいのがいいな。
— suzuken@re:Invent (@suzu_v) 2017年11月29日
DeepLens上のLambda functionではpreprocess, inference, publishをしている。
— suzuken@re:Invent (@suzu_v) 2017年11月29日
昨日Greengrass Workshopにいったので理解しやすくてよい
— suzuken@re:Invent (@suzu_v) 2017年11月29日
検出できた #deeplens #reinvent pic.twitter.com/ae4iolMad2
— suzuken@re:Invent (@suzu_v) 2017年11月29日
コードあった https://t.co/7E7fucz4p2 SageMakerつかってmodelを組んでみる
— suzuken@re:Invent (@suzu_v) 2017年11月29日
お、SageMakerでJupyter Notebookさくっと開いて実行できるじゃん便利
— suzuken@re:Invent (@suzu_v) 2017年11月29日
あーSageMakerでたてたJupyter NotebookでtrainしてmodelをS3にuploadしてそれをDeepLensですぐつかえるのかなにこれ便利
— suzuken@re:Invent (@suzu_v) 2017年11月29日
Hotdog判別モデルをSageMakerでつくってs3に配置し、それをDeepLensのプロジェクトに追加してデプロイしている。
— suzuken@re:Invent (@suzu_v) 2017年11月29日
Lab 4だとsubscribeしたtopicをLambdaのIoT RuleでSQLで絞り込むというのをしているな。これあったっけ? https://t.co/GMRrGffPlU
— suzuken@re:Invent (@suzu_v) 2017年11月29日
LambdaでIoT topicをsubscribeして、一定以上のp値でHotdogだと判定したらSNSでメールとばすのできた。無限にホットドック検出メールが飛んでくる・・w
— suzuken@re:Invent (@suzu_v) 2017年11月29日
これがないとDeepLensできないもんなあ。これ、DeepLensを作ろうとして用意したのかどうかとか気になる。SageMakerないとこのWorkshopも面倒だったろうし。https://t.co/fQheSFNnOA
— suzuken@re:Invent (@suzu_v) 2017年11月29日
Greengrass + Local Lambda + SageMakerの実用例がDeepLensっていうのはプレゼンテーションとしてもわかりやすいよなあ
— suzuken@re:Invent (@suzu_v) 2017年11月29日
今回のワークショップだとDeepLens上のUbuntuにはいってるデスクトップ環境つかってconsoleでの操作とかもできるし、なんていうか忍者の小道具みたいな感じがすごい
— suzuken@re:Invent (@suzu_v) 2017年11月29日
DeepLens Challenge Virtual Hackathonとな https://t.co/AhuooPL0oY #reinvent #deeplens
— suzuken@re:Invent (@suzu_v) 2017年11月29日
まとめ
*1:Workshop後にDeepLensももらえます
PHPカンファレンスで話してきた
先々週のことですが、PHPカンファレンス2017で話してきました。初PHPカンファレンス。楽しかった!ひさびさにPHPの話をいっぱいできてよかったです。
会社のブログにもゆきみねがまとめてくれてます。 techlog.voyagegroup.com
発表資料はこちら。
セッション動画も載ってます。
セッション内容としてはレガシーなシステムの段階的改善です。「こんなケース、ありませんか?」というのが今回の問い。会場で聴いていただいた方々にも多く該当される方がいたようで、このテーマで話をしてよかったなあと思いました。
コードを書くとき、すでにあるコードを変更することのほうが多いはずです。そして価値を出している。価値を出しているコードを、僕は尊敬しています。なのでそれらをより良くしていくためにどうしたらよいか?というのがこの1年間ほど取り組んでいたテーマの1つでした。
大きくなってしまったコードベースを読み解くのは大変です。コードを読むことは、書くことよりも時間を使います。コードは読まれる時間のほうが長いのです。Readabilityは最も重要です。ですがすでにReadabilityが低いコードである場合にはどうしたらよいのでしょう。小さい規模であればリファクタリングして地道につぶしていくのもいいかもしれませんが、それだと時間がかかりすぎてしまうかもしれません。
最近読んでいる本にレガシーソフトウェア改善ガイドがあります。レガシーソフトウェア改善ガイドの話は発表中にはしていないのですが、おすすめです。レガシープロジェクトの改善をどう進めていくかという観点から体系立てて書かれています。
リファクタリングかリライトするかというのは、常に悩ましい問題です。しかし、リプレースという選択肢もあります。リファクタリングするのでもリライトするのでもなく、リプレースをする。書き直さずに、置き換える。サードパーティ製のソフトウェアで代替えできるのであれば、それは素晴らしいことです。
今日公開した ajito.fm/10 でもPHPカンファレンスについて話したので、よかったら聴いてみてください。 ajito.fm
カンファレンス運営者のみなさま、スポンサーのみなさま、そして参加者のみなさま、どうもありがとうございました!
「データ分析基盤構築入門」の執筆に参加しました
「データ分析基盤構築入門」の執筆に参加させていただきました。
概要は以下のとおりです。
「サービスのデザインはログのデザインから。」良いサービスを作り上げるには,ログデータを収集し,改善を続けるシステムの構築が必要です。本書は,ログデータを効率的に収集するFluentdをはじめ,データストアとして注目を集めているElasticsearch,可視化ツールのKibanaを解説します。本書を通して,ログ収集,データストア,可視化の役割を理解しながらデータ分析基盤を構築できます。2014年に刊行した「サーバ/インフラエンジニア養成読本ログ収集 可視化編」の記事をもとに最新の内容に加筆しています。
最初に執筆させていただいてから早3年、改訂しませんか?との話から始まった今回の執筆。ログ解析にまつわる環境にも変化がありました。前に書いた原稿を眺め、反省しつつ、2017年の今また改めてこの文章を書くならどう書くのが良いのだろうか?というのを自分なりに再解釈し、書いたのが今回の書籍になります。
もともとElasticsearch, Fluentd, KibanaのいわゆるEFKスタックの本として書かれていました。その間にETLの領域でも様々なツールが生まれ、実践され、よりよい運用が試みられてきました。そうした取り組みを改めて俯瞰し書く機会をいただき、嬉しく思っています。特に今回はy-kenさんにより、Embulk、Digdagに関しても多く加筆されています。
10/10夜にはピクシブ株式会社様にて刊行記念の勉強会が開かれます。お気軽に聞きに来ていただけると幸いです。
PHPカンファレンス2017で話します
2017年10月8日(日)に開催されるPHPカンファレンス2017にて登壇します。
https://joind.in/event/japan-php-conference-2017/session14-php--
session14: 広告配信管理システムを支えるPHP ~ レガシーシステムからの段階的移行戦略 13:35 4Fコンベンションホール梅 (手前側)
弊社管理画面の改善ネタです。下記の記事をみていただくと雰囲気が伝わるかと思います。
是非お越し下さいませ。会場でもPHPerの皆様とお話できるのを楽しみにしております :)
8/4 12:10- ランチセッションにて出張 #ajitofm します
お知らせ: 8/4 #builderscon の12:10-12:40のランチセッションにて出張 #ajitofm をします。ランチがてら是非聴きに来てください!
— ajitofm (@ajitofm) 2017年8月2日
builderscon, 今週ですね!弊社でもスポンサーさせていただいており、「ランチセッション枠もらったのでなんかやらない?」と話をふってもらったので出張 https://ajito.fm をすることにしました。8/4 12:10 - 12:40 イベントホールです。ランチでます!ゲストは @ajiyoshiさん、yowcowさん、そして初登場 トミールさんです。
いつも通り(?)ゆるい雰囲気で話していく予定ですのでお楽しみに!8/4は終日日吉にいますので是非お話しましょう〜。
A Tour of Goを終えたあなたにおすすめのGoを勉強するためのリソース
今年も夏のインターンで学生にGoの講義をします。多く寄せられる質問が「A Tour of Goを終えたのですが、その後に何をやるのがおすすめですか?」というものです。学生に限らず、言語を学ぶ方はプログラミングそのものに対する慣れやバックグラウンドも違います。そこでなるべくいろんな方の参考になるように、おすすめな本なりページなり方法なりをまとめてみます。
わりと多くの人におすすめ
「プログラミング言語Go」(Alan A.A. Donovan, Brian W. Kernighan著)です。通称GOPL。
柴田さんによる日本語翻訳もあります。
https://www.amazon.co.jp/dp/4621300253
Go言語のイントロダクションから始まり、型・インタフェース・並列性の説明などが丁寧にかかれています。私がGOPLを良いと思う点は、例示が豊富なところです。Goのインタフェースはとても強力ですが、最初その有用性をどのように活かせばいいかというのはちょっとした応用のコツを抑える必要があります。GOPLでは例を交えながら説明されているので、とてもわかりやすく、実践的です。例えば7.9では簡単な評価器をつくります。以下のような簡易電卓を実装します。
sqrt(A / pi) pow(x, 3) + pow(y, 3) (F - 32) * 5 / 9 (7.9 Example: Expression Evaluator より抜粋)
これらの式に対するパーサをどのように実装していくか、というのがわかりやすく説明されています。単項演算、二項演算の型を定義し、式をインタフェースとして定義します。
type Expr interface{ Eval(env Env) float64 }
この例では浮動小数点演算のみサポートしています。各演算はすべて Expr
のインタフェースを満たします。これにより、評価器の環境モデルをわかりやすく記述できるようにしています。
評価器の実装はインタフェースの演習の一例です。機能性を知り、理解を深めるために良い例だと私は思います。またGOPLでは、テストの実践例、豊富なGoのツールセット、Reflectionなどについても扱われており、私が知る中で日本語で読める書籍だと最も網羅的に書かれている本です。
もっと言語自体を深く知りたい方におすすめ
言語自体の理解を深めるには golang.org に載っているコンテンツを読み込むのがおすすめです。Goチームはドキュメントをとても重視していて、どの文章もよく書かれています。godocもその文化の一例です。
- 言語仕様: The Go Programming Language Specification - The Go Programming Language
- Effective Go: Effective Go - The Go Programming Language
- Goのメモリモデル: The Go Memory Model - The Go Programming Language
Goチームの書いているブログはどの記事も言語機能及び応用に関する解説として秀逸です。
The Go Programming Language Blog
ymotongpooさんが日本語訳を公開してくださっています。
個人的に好きな記事をあげておきます。
- Toward Go 2 - The Go Blog
- Error handling and Go - The Go Blog
- Arrays, slices (and strings): The mechanics of 'append' - The Go Blog
- Go Concurrency Patterns: Pipelines and cancellation - The Go Blog
- The Laws of Reflection - The Go Blog
- Errors are values - The Go Blog
- Go Slices: usage and internals - The Go Blog
また、Goの標準ライブラリを読み進めるのがおすすめです。言語仕様を読みつつ、「どう実装してるんだろう」と想像しながらコードを読み進めていくと楽しいです。Goの標準ライブラリはGoで書かれているので、読みやすいというのも嬉しいところです。
標準ライブラリを読むときはテストコードを読むとさらに理解が深まります。Goの標準ライブラリのテストコードは、そのライブラリをどのようにつかうかという視点でみたときによいサンプルになります。例えば、 encoding/json
を深く知りたいときには、
https://golang.org/src/encoding/json/encode.go を読みつつ
https://golang.org/src/encoding/json/encode_test.go を読むとわかりやすいです。 Examplesとして書かれたテスト はgodocにも載っているので、そちらも参考になります。
Webエンジニアで*1実践にGoを使ってみたいというあなたにおすすめ
Goの本ではないのですが、「Real World HTTP」(渋川よしき著)を個人的におすすめします。
内容紹介より引用します。
本書はHTTPに関する技術的な内容を一冊にまとめることを目的とした書籍です。HTTP/1.0、HTTP/1.1、HTTP/2と、HTTPが進化する道筋をたどりながら、ブラウザが内部で行っていること、サーバーとのやりとりの内容などについて、プロトコルの実例や実際の使用例などを交えながら紹介しています。 GoやJavaScriptによるコード例によって、単純なHTTPアクセス、フォームの送信、キャッシュやクッキーのコントロール、Keep-Alive、SSL/TLS、プロトコルアップグレード、サーバープッシュ、Server-Sent Events、WebSocketなどの動作を理解します。 これからウェブに関係する開発をする人や、これまで場当たり的に学んできた人にとって、幅広く複雑なHTTPとウェブ技術に関する知識を整理するのに役立ちます。HTTPでは日々新しいトピックが登場していますが、本書によって基礎をしっかりと押さえることは、さまざまな新しい技術をキャッチアップする一助にもなるでしょう。
夏のインターンでも学生向けにGoの話だけではなく、Webに関わるエンジニアとしてHTTPに関する講義を設けています。Real World HTTPはHTTPについて仕様を紹介するだけでなく、実際に動かす例を示しながら読み進めることのできる稀有な本です。また、HTTPの進化の過程を知ることもできますし、セキュリティに関わるトピックも丁寧に説明されています。Real World HTTPのコード例はサーバ実装、クライアント実装ともにGoが使われています。もちろん主眼はHTTPを学ぶことにありますが、GoでどのようにこのHTTPの機能を使うのか?というときに逆引きするのにも便利だと思います。
実践的なTipsをもっと知りたい方におすすめ
手前味噌ですが去年執筆に参加させていただいた「みんなのGo言語」、おすすめです。*2
そして何より
どんどん手を動かしてコードを書きましょう :)
思いつくまま挙げてみました。他にももしおすすめの本やリソースなどがあればコメントいただけると幸いです。