セールを利用してMartin FowlerのRefactoringとMichael NygardのRelease It!を少しお安く購入した話
前回は海外の出版社のセールについて書きました。
私は早速このセールを利用して、以下の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月になると年末のカウントダウンセールとして、日替わりで何かしら安くなります。何が安くなるかは、特設サイトで毎日発表しています。今回であればここですね。
ちなみに、日によっては電子書籍が全て半額とか、Videoが全て半額とかやるので、私の場合はその日を狙って購入しています。
Packt Publishing
Packtは、11/22現在Black Fridayで全品$10セールをやってますが、例年だと12月に更にお得な$5セールを開催しています。確実に開催されるかどうかは分からないですが、今回の$10セールは見送って$5セールを待ってみるというのも手ですね。ちなみにここ数年は毎年開催されていたと思います。
Apress
Apressも現在Cyber Monday Saleで、eBookが全品$7と今ならお得に買えるようです。
Apressの場合、Practical NATSみたいなニッチな書籍 *2 も扱っているので、ラインナップを見ているだけでも楽しいかもしれません。
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となってます。
終わりに
海外の出版社の面白いところは、豊富なコンテンツだけでなく、これから出版予定の本も併せてセール対象になるところだと思います。 是非このセールを利用してお得にまとめ買いしちゃいましょう!
Scala関西Summit 2018のスライドのリンク集(WIP)
Scala関西Summit 2018 で公開されたスライドを集めてみました。順不同です。随時更新していきます。
- Scalaでのドメインモデリングのやりかた by @j5jk2o さん
- DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 by @smdmts さん
- 明日から使える実践エラーハンドリング by @gakuzzzz さん
- Akka Typed - 型安全にメッセージパッシングする! / Akka Typed - typesafe messaging by @hayasshi_ さん
- circeから学ぶ GenericProgramming入門 - Scala関西Summit 2018 by @shnmorimoto さん
- Readable Code in Scala by @blac_k_ey さん
- エンタープライズ Scala by @crossroad0201 さん
- Akkaを分散トレーシングで見てみよう by @grimrose さん
- Scala でつくる証券会社とスタートアップ / Securities and Startup with Scala by @Mura_Mi さん
- Scalaでの並行・並列処理戦略/strategy-for-concurrency-and-parallel-by-scala by @Fhiroki1 さん
- 実践GraphQL on Scala/Real world GraphQL on Scala by @petitviolet さん
- 変位指定について わかりやすく 解説させてください by @taket0ra1 さん
- Scalaで作るカジュアルゲーム by @dont_cocoa さん
- 関数型言語で始めるネットワークプログラミング by @kamijin_fanta さん
- Scalaの好きなところ・・・//// @omiend さん
- Format things with scalafmt by @tanishiking さん
- ゼロから始めるScala文法 (再) by @hamazy さん
- アニメーションで理解するAkka StreamsとAkka HTTP by @RichardImaokaJP さん
- How to keep maintainability of long life Scala applications by @takezoen さん
「Complete React Tutorial (with Redux)」はReactの基礎を学ぶのに良いかもしれない
フロントエンドの技術を学ぶのに私がよく利用している The Net Ninja (動画学習サイト)ですが、知りたいことはまず動画で学び、深掘りしたくなったら書籍などで学ぶというスタイルが効率的な学習方法なのかなと最近感じています。
さて、今回はそんな The Net Ninjaの「Complete React Tutorial (with Redux)」でReactを学んでみました。
Complete React Tutorial (with Redux)
こちらはYouTubeで公開されている学習コースになります。
動画の総数は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アプリを作ります。
(動画の#23、#24に相当)
React Router
Poke'Timesというシングルページアプリケーションを作りながら次のような内容を学びます。
- React Routerのインストールと使い方
- Links & NavLinks
- Route Parameters
- Redirect
- Switch Tag
- Higher Order Components
- Axiosを使用し外部APIより取得したデータを画面に出力
(動画の#25から#33に相当)
Redux
Reduxの解説から始まり、Poke'TimesにReduxを組み込んでいきます。
(動画の#34から#43に相当。#44は総まとめの回)
終わりに
Reactは前々から気になっていたのでこの学習コースを通じて理解を深めることができました。Vue.jsと比較するとフレームワークが隠蔽している部分がReactの方が少ないので、個人的にはReactの方が好きだったりします。今後は更に深掘りしつつ趣味のやつを作っていきたいと思います!
毎週末持って帰るのがつらいので自宅用のHHKBを購入した
今までHHKBは一台しか持っていなくて、平日は職場で、週末は自宅へ持って帰るという生活が続いていました。
一応、ハードケースDX というHHKB専用のケースで持ち運んでいたのですが、これだと電車で片手が塞がってしまい、本を読むのに邪魔だったんですよね。
それなので、思い切って自宅用のHHKBを購入してみました。中古ですが状態はとても良いです。
自宅でしか使わないのでType-Sじゃない方を購入しましたが、やはりType-Sと打鍵感が全然違いますね。この辺は割り切りが必要なのかなと思ってます。
今後は吸振マットとキーボードブリッジを装備させてより快適な環境にしていきたいと思ってます。
(二刀流をやってみたので記念にパチリ)
「Mastering Functional Programming」を読んだ
Packt Publishing の Mastering Functional Programming を読みました。今回はこの本について書きたいと思います。
どんな本か
この本はざっと次のような内容が書かれています。ちなみに言語は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 Ninja の JavaScript DOM Tutorial をやってみました。
JavaScript DOM Tutorial
JavaScript DOM Tutorialは、YouTubeで公開されている学習コースです。
こちらは1本あたり4〜10分程度の動画が全部で18本あって、こんな感じの画面にステップバイステップで機能を追加しながら学習を進めていきます。色々試しながら進めても3時間あれば終わると思います。
このコースで何が得られるのか
これを全てやり終える頃には以下の内容についての理解が深まります。
- Selectors APIを使用したDOM要素の指定
- Element.classListによるcssのclass名の制御
- DOMのEvent Bubbling
- DOMContentLoaded Event
つまり、jQueryのような便利だけどページのローディングが遅くなるライブラリは使用しないと決めた時に、 Vanilla JS(素のJavaScript)でどう戦うかを入門レベルで教えてくれるコースになっています。
ちなみに、ソースコードはGitHubで公開されています。(各動画に対応したブランチが切られてます)
終わりに
プライベートではVue.jsを触っていますが、特殊なケースではどうしてもDOMを触る必要があったりして、そうしたときに今回のコースはやって良かったなと思いました。
というわけで、今回は JavaScript DOM Tutorial の紹介でした!