セールを利用してMartin FowlerのRefactoringとMichael NygardのRelease It!を少しお安く購入した話

前回は海外の出版社のセールについて書きました。

shinharad.hateblo.jp

私は早速このセールを利用して、以下の2冊を購入しました。いずれもeBookです。

今回の買い物でどのくらい安くなったかというと、

  • Refactoring: Improving the Design of Existing Code, 2nd Edition
    • List Price: $47.99
    • Discount: -$16.80 (BLACK FRIDAY SALE Buy 1, Save 35%)
    • Subtotal: $31.19
  • Release It! Second Edition
    • List Price: $25.95
    • Discount: -$10.38 (Annual Black Friday Sale 40%OFF)
    • Subtotal: $15.57

合計で $46.76 でした。定価で買うと $73.94 なのでお得な買い物でした!

この時期は洋書の技術書をお得に買おう!

毎年恒例ですが、11月下旬から12月末にかけてのこの時期は、海外の出版社が相次いで年間最大規模のセールへ突入するので、洋書の技術書がお得に買えますよ、という話。

普段Safari Books Onlineなどのサブスクリプションサービスを利用していない人にとっては、この時期のセールを狙ってまとめ買いをしている人も多いのではないでしょうか。

今回は、Manning Publications、Packt Publishing、Apress、The Pragmatic Bookshelf、InformITのセールについて書きたいと思います。

Manning Publications

まずは、安心と信頼 *1 のManningです。 Manningは、毎年12月になると年末のカウントダウンセールとして、日替わりで何かしら安くなります。何が安くなるかは、特設サイトで毎日発表しています。今回であればここですね。

www.manning.com

ちなみに、日によっては電子書籍が全て半額とか、Videoが全て半額とかやるので、私の場合はその日を狙って購入しています。

Packt Publishing

Packtは、11/22現在Black Fridayで全品$10セールをやってますが、例年だと12月に更にお得な$5セールを開催しています。確実に開催されるかどうかは分からないですが、今回の$10セールは見送って$5セールを待ってみるというのも手ですね。ちなみにここ数年は毎年開催されていたと思います。

www.packtpub.com

Apress

Apressも現在Cyber Monday Saleで、eBookが全品$7と今ならお得に買えるようです。

www.apress.com

Apressの場合、Practical NATSみたいなニッチな書籍 *2 も扱っているので、ラインナップを見ているだけでも楽しいかもしれません。

www.apress.com

The Pragmatic Bookshelf

The Pragmatic Bookshelfは、現在Annual Black Friday Saleとして全品40%OFFとなってます。

Annual Black Friday Sale | The Pragmatic Bookshelf

Programming Clojure, Third Edition を安く買えるチャンスですね!

InformIT

InformITは、現在Black Friday Saleとして1冊購入で35%OFF、2冊以上購入で55%OFFとなってます。

www.informit.com

終わりに

海外の出版社の面白いところは、豊富なコンテンツだけでなく、これから出版予定の本も併せてセール対象になるところだと思います。 是非このセールを利用してお得にまとめ買いしちゃいましょう!

*1:個人の感想です

*2:NATSを扱った唯一の書籍?

Scala関西Summit 2018のスライドのリンク集(WIP)

Scala関西Summit 2018 で公開されたスライドを集めてみました。順不同です。随時更新していきます。

「Complete React Tutorial (with Redux)」はReactの基礎を学ぶのに良いかもしれない

フロントエンドの技術を学ぶのに私がよく利用している The Net Ninja (動画学習サイト)ですが、知りたいことはまず動画で学び、深掘りしたくなったら書籍などで学ぶというスタイルが効率的な学習方法なのかなと最近感じています。

さて、今回はそんな The Net Ninjaの「Complete React Tutorial (with Redux)」でReactを学んでみました。

Complete React Tutorial (with Redux)

こちらはYouTubeで公開されている学習コースになります。

www.youtube.com

動画の総数は44本で、1本あたりの長さは短いもので3、4分程度、長いものだと10分程度なので、空いた時間に少しずつ進められます。

学習コースの内容

本学習コースは大きく5つに分かれていて、以降はそれぞれでどんな内容を学べるのかを書いていきたいと思います。 (ちなみに「基本編」「応用編」とかは便宜上私が付けました。)

基本編1

スライドを見たりコードを書いたりしながら以下の内容を学びます。

  • Reactの概要とセットアップ
  • Component、State、Event、JSX

(動画の#1から#9に相当)

基本編2

シンプルな画面を作りながら次のような内容を学びます。

  • create-react-appでReactアプリを作成
  • React Dev Toolのインストールと使い方
  • Virtual DOM
  • Nested Component、Props
  • Container Component vs UI Component
  • Conditional Output
  • cssファイルの扱い方
  • Componentのライフサイクル
    • componentDidMount、componentDidUpdate

(動画の#10から#22に相当)

応用編

これまでの応用編としてTODOアプリを作ります。

f:id:shinharad:20181110225957p:plain

(動画の#23、#24に相当)

React Router

Poke'Timesというシングルページアプリケーションを作りながら次のような内容を学びます。

  • React Routerのインストールと使い方
    • Links & NavLinks
    • Route Parameters
    • Redirect
    • Switch Tag
  • Higher Order Components
  • Axiosを使用し外部APIより取得したデータを画面に出力

f:id:shinharad:20181110225753p:plain

(動画の#25から#33に相当)

Redux

Reduxの解説から始まり、Poke'TimesにReduxを組み込んでいきます。

(動画の#34から#43に相当。#44は総まとめの回)

終わりに

Reactは前々から気になっていたのでこの学習コースを通じて理解を深めることができました。Vue.jsと比較するとフレームワークが隠蔽している部分がReactの方が少ないので、個人的にはReactの方が好きだったりします。今後は更に深掘りしつつ趣味のやつを作っていきたいと思います!

毎週末持って帰るのがつらいので自宅用のHHKBを購入した

今までHHKBは一台しか持っていなくて、平日は職場で、週末は自宅へ持って帰るという生活が続いていました。

一応、ハードケースDX というHHKB専用のケースで持ち運んでいたのですが、これだと電車で片手が塞がってしまい、本を読むのに邪魔だったんですよね。

それなので、思い切って自宅用のHHKBを購入してみました。中古ですが状態はとても良いです。

f:id:shinharad:20181029235545j:plain

自宅でしか使わないのでType-Sじゃない方を購入しましたが、やはりType-Sと打鍵感が全然違いますね。この辺は割り切りが必要なのかなと思ってます。

今後は吸振マットとキーボードブリッジを装備させてより快適な環境にしていきたいと思ってます。

(二刀流をやってみたので記念にパチリ)

f:id:shinharad:20181029235738j:plain

「Mastering Functional Programming」を読んだ

Packt PublishingMastering Functional Programming を読みました。今回はこの本について書きたいと思います。

www.packtpub.com

どんな本か

この本はざっと次のような内容が書かれています。ちなみに言語はScalaです。

  • 関数型、命令型プログラミング双方のアプローチの違いについての比較
  • 副作用を抽象化し参照透過性を維持させる方法
  • 型クラスでWriterやIOなどのEffect Typeに対してビヘイビアを注入する方法
  • Cats の構成と利用頻度の高い型クラスについて
  • Cats Effect を使用した並行プログラミング
  • Typelevel.scala の各種ライブラリを使用したWebAPIの実装
  • Monad TransformerやTagless Final、HListなど、FP特有のパターン
  • アクターモデルとそのユースケース

内容的には、Scala with Cats の前に読むと良さそうかなと思いました。

理解度に応じた読み方

目次はこんな感じになっています。

  • Chapter 1 The Declarative Programming Style
  • Chapter 2 Functions and Lambdas
  • Chapter 3 Functional Data Structures
  • Chapter 4 The Problem of Side Effects
  • Chapter 5 Effect Types: Abstracting Away Side Effects
  • Chapter 6 Effect Types in Practice
  • Chapter 7 The Idea of the Type Classes
  • Chapter 8 Basic Type Classes and Their Usage
  • Chapter 9 Libraries for Pure Functional Programming
  • Chapter 10 Patterns of Advanced Functional Programming
  • Chapter 11 Introduction to the Actor Model
  • Chapter 12 Actor Model in Practice
  • Chapter 13 Use Case: A Parallel Web Crawler

この内、ScalaのコレクションフレームワークやOption、Either、Future、Tryが分かっている人はChapter 6まで読み飛ばして良さそうです。それと、型クラスを理解しているのならChapter 7は読まなくても良さそう。あと、Akka実践バイブル などでAkkaをある程度理解している人であればChapter 11以降は読まなくても良さそう。

つまり、Cats をはじめとする Typelevel.scala の各種ライブラリに触れるだけの目的であれば、Chapter 8 〜 10 だけ読めば十分だと思います。

それでは、そのChapter 8 〜 10についてもう少し詳しく書きたいと思います。

Chapter 8 Basic Type Classes and Their Usage

Cats の構成を俯瞰的に解説していて、全体を把握するのに良いですね。instances、data、syntaxそれぞれのパッケージがどのような役割を持っているのかとか。型クラスのHierarchyとか。Monad、Applicative、Fuctor、Monoid、MonoidK、Traverseについての解説など、参考になりました。

Chapter 9 Libraries for Pure Functional Programming

Cats Effect を使用した並行プログラミングについて解説しています。その中で、FiberはMonadicフローにおいてIOの非同期処理の開始(start)、待ち合わせ(join)、キャンセル(cancel)を明示的に宣言するものであるとか、Bracketはリソースの開放をするものだとか。そして、Typelevel.scala の以下のライブラリを使用したWebAPIの実装例を紹介しています。

個々はそれほど深い内容ではないので、気になったら各ライブラリの公式サイトなどで学ぶと良さそう。

Chapter 10 Patterns of Advanced Functional Programming

関数型プログラミングをより便利に書くためのパターンとして、Monad TransformerやTagless Final、Heterogeneous List(HList)を解説しています。この内、Tagless Finalについて名前は知っていたものの、どのようなものなのか知らなかったので、学ぶ良い機会だったなと思います。

終わりに

Mastering Functional Programmingは、それほど濃い内容では無いものの、Catsを俯瞰して見ることができたり、doobieやhttp4sなど今まで触ったことの無いライブラリと出会えて良い刺激になりました。

「JavaScript DOM Tutorial」でVanilla JS力を磨く

現在フロントエンドの技術を少しずつキャッチアップしていますが、今回はVanilla JS力を磨くべく The Net NinjaJavaScript DOM Tutorial をやってみました。

JavaScript DOM Tutorial

JavaScript DOM Tutorialは、YouTubeで公開されている学習コースです。

www.youtube.com

こちらは1本あたり4〜10分程度の動画が全部で18本あって、こんな感じの画面にステップバイステップで機能を追加しながら学習を進めていきます。色々試しながら進めても3時間あれば終わると思います。

f:id:shinharad:20181006230905p:plain

このコースで何が得られるのか

これを全てやり終える頃には以下の内容についての理解が深まります。

  • Selectors APIを使用したDOM要素の指定
  • Element.classListによるcssのclass名の制御
  • DOMのEvent Bubbling
  • DOMContentLoaded Event

つまり、jQueryのような便利だけどページのローディングが遅くなるライブラリは使用しないと決めた時に、 Vanilla JS(素のJavaScript)でどう戦うかを入門レベルで教えてくれるコースになっています。

ちなみに、ソースコードGitHubで公開されています。(各動画に対応したブランチが切られてます)

github.com

終わりに

プライベートではVue.jsを触っていますが、特殊なケースではどうしてもDOMを触る必要があったりして、そうしたときに今回のコースはやって良かったなと思いました。

というわけで、今回は JavaScript DOM Tutorial の紹介でした!