『React入門』を読んだ

React入門 React・Reduxの導入からサーバサイドレンダリングによるUXの向上まで (NEXT ONE)

『React入門』は、JavaScriptの定番ライブラリ、React.jsの入門書です。

Reactの入門書は他にもありますが、本書が特に優れているのは、実務で使う上で必要なポイントが書かれている点です。

Reactはそれほど機能の多くないビューライブラリで、Reactと他のライブラリを適宜組み合わせることで、リッチなユーザインターフェースを実現します。

しかし、従来の入門書の多くは、React本体の入門で終わっています。ある程度の規模になると必要になる状態管理ライブラリや、リッチなインタフェースを実現するためのUIライブラリ等、Reactは本体以外にも学ぶべきことが色々あります。

本書では、他の入門書で扱っているようなReact本体の入門は前半3分の1くらいで、その後はReduxやUIライブラリ、ユニットテスト、作ったアプリケーションの公開方法(GitHub PagesとFirebase)からサーバサイドレンダリングまで、より実践的なトピックを手厚く紹介しています。

Vue.jsやAngular等、モダンなJavaScriptフレームワークの経験者であれば、本書でいきなりReactに入門できると思います。そうでない人は、もう1冊他の入門書を挟んでから本書を読んだ方が良いかもしれません。

Webフロントエンド技術を扱った本の宿命として、本書もそれほど賞味期限は長くないので、早めに読むのがオススメです。

Learning Vue.js 2 を読んだ

Learning Vue.js 2

Vue.jsは公式ドキュメントが充実していて、かつ、完璧な日本語訳もされているので、Vue.jsの入門書はそれほど必要ではありません。また、vue-cliが生成するアプリケーションの構造を見ると、ライブラリの組み合わせ方や設定方法などもわかります。

しかし、実際のアプリケーションを作りながらステップバイステップで作るチュートリアルは公式では提供されていません。ブログなどに書かれた簡単なチュートリアルは見つかりますが、それなりの規模のアプリケーションをテストまで含めて書いていく、というものになると、数は少ないでしょう。

本書『Learning Vue.js 2』はそのようなユースケースにぴったりな本です。本書の基本的な構成は、Vue.jsを触り始めるところから始めて、vue-cliによるスキャッフォルディング、ディレクティブの解説、コンポーネント、プラグイン、テスト、デプロイと、Vue.jsアプリケーションを作るのに必要な事項が一通り網羅されています。これらの事項を、「ショッピングリスト」と「ポモドーロタイマー」の2つのアプリケーションを作る過程で学ぶことができます。

英語で書かれた本ではありますが、使われている語彙や文法はとても易しいです。著者がドイツ人で、おそらく英語ネイティブではない、というのが良い具合に作用していそうです。Vue.jsの入門書としてだけでなく、英語で書かれた技術書にチャレンジしてみたい方にもおすすめです。

『ポートとソケットがわかればインターネットがわかる』を読んだ

ポートとソケットがわかればインターネットがわかる――TCP/IP・ネットワーク技術を学びたいあなたのために (Software Design plus)

Geekなページ のあきみち氏による、TCP/IPの入門書。情報処理技術者試験対策本のような、無味乾燥な知識をただ覚えるための本ではなく、ネットワークの初歩的な知識と、それを実際に何かに使うことの橋渡しをしようとする意図が感じられる。

具体的には、この手の入門書には珍しく、本書にはソケットを利用したプログラムのサンプルが載っている(※)。その他、ネットワークコマンドの使用例も記載されていて、手を動かしながら学ぶことができる。

挿絵も的確で、本文だけではわかりづらいところでも理解の助けになっている。

ネットワークを初めて学ぶ人だけでなく、自分のように、ネットワークに苦手意識のあるソフトウェアエンジニアが読んでも得るものは多いと思う。

※ただし、C言語で書かれているので、厳しいという人もいそう。Working With TCP SocketsというRubyを使ってソケットプログラミングを行う入門書もあるけど、こっちはこっちで英語なのがつらいという人が多いかも。

モダンJavaScriptの練習に:『Electronではじめるアプリ開発』

Electronは、Webの技術(HTML+CSS+JavaScript)を使用してデスクトップアプリケーションを構築するためのフレームワークです。Atom、Visual Studio Codeといったモダンなエディタや、Slackのデスクトップ版などに利用されています。ChromiumというChromeのベースとなっているブラウザを使用することで、Windows/macOS/Linuxといった様々なOS上で動作する、クロスプラットフォームなデスクトップアプリケーションを構築することができます。

本書では、ES2015 + Reactという組み合わせでアプリケーションを構築していきます。ES2015やReactについての詳しい解説は無いので、あらかじめES2015のクラス構文やアロー関数式、Reactの基本的な使い方を身に着けておいたほうが読みやすいでしょう。

ES2015については『改訂新版JavaScript本格入門』がおすすめです。Reactについては、公式チュートリアルをやっておけば大丈夫でしょう。
以下のようなソースを見て、だいたい何をやっているかわかればOKです。

本書には、様々なライブラリを活用して、手早く高機能なアプリケーションを構築する方法が記載されています。また、各章はチュートリアル形式になっているので、実際に手を動かしながら学ぶことができます。Electronに興味がある人だけでなく、モダンなJavaScriptアプリケーションの組み方について理解を深めたい人にもおすすめできる内容です。

『プログラミングASP.NET MVC 第3版』を読んだ

プログラミングMicrosoft ASP.NET MVC 第3版ASP.NET MVC 5 対応版 (マイクロソフト公式解説書)

ASP MVC 5の解説書。初歩的な解説も載っていますが、それ以上に「ASP MVCを使って良いアプリケーションを作るにはどうすればよいか」ということを詳しく書いてあります。

以下、目次

■第1部 ASP.NET MVCの基礎
第1章 ASP.NET MVCのコントローラー
第2章 ASP.NET MVCのビュー
第3章 モデルバインディングアーキテクチャ
第4章 入力フォーム
■第2部 ASP.MVCのソフトウェアデザイン
第5章 ASP.NET MVCアプリケーションの機能
第6章 アプリケーションのセキュリティ
第7章 ASP.NET MVCコントローラーの設計上の注意点
第8章 ASP.NET MVCのコントローラーのカスタマイズ
第9章 ASP.NET MVCでのテストとテスタビリティ
第10章 ASP.NET Web APIエグゼクティブガイド
■第3部 モバイルクライアント
第11章 効果的なJavaScript
第12章 モバイル対応のWebサイトの作成
第13章 マルチデバイスサイトの構築

500ページ長と大きめの本ですが、本書の中でも力を入れて読むべきなのは、第2部「ASP.MVCのソフトウェアデザイン」です。
特に、第7章「ASP.NET MVCコントローラーの設計上の注意点」には、さまざまな設計上のヒントが散りばめられています。

たとえば、MVCのControllerは、その名の通りの「Controller(さまざまなオブジェクトを統合して管理する責務)」ではなく、「Coordinator(さまざまなワーカーサービスの調整を行う責務)」として実装したほうが、シンプルに実装できる、といった指摘です。

もう1つ、個人的に気になったテクニックが、ビューモデルです。ビューモデルの概念は、WPFなどでは当たり前に用いられているようですが、WebのMVCの世界ではそれほど一般的ではありません。しかし、ビューモデルを使うことで、DBを操作するためのモデルクラスと、ビューに表示するデータを保持するだけのビューモデルクラスを分離することができます。このような分離は、単純なアプリケーションでは手間がかかるだけでメリットは薄いでしょうが、データベースのデータを画面上に表示するための整形処理等が必要な場合には、ビューモデルを活用することで、個々のクラスの実装を簡潔に保つことができます。

ASP MVCの入門者が最初に読む本としては適していませんが、2冊めに読む本としては良いと思います。

この本の著者(Dino Esposito氏)の本は良さそうだなと思ったので、以下の書籍も購入しました(ちょうど、Kidleで50%ポイント還元やってたので)。

.NETのエンタープライズアプリケーションアーキテクチャ第2版 .NETを例にしたアプリケーション設計原則