無限大な夢のあと

テニスとアニメが大好きな厨二病SEのブログ

【書評】実践ドメイン駆動設計から学ぶDDDの実装入門 ( @yyamada )

WINGSプロジェクトの書籍レビュアーに応募し、献本してもらったので、書評を書きました。
今回は表題にある通り「実践ドメイン駆動設計」から学ぶDDDの実装入門」の書評となります。

「実践ドメイン駆動設計」から学ぶDDDの実装入門 (CodeZine Digital First)

「実践ドメイン駆動設計」から学ぶDDDの実装入門 (CodeZine Digital First)

DDDは実際に業務で2年ほど使用していて、復習の意味も込めて今回レビュー応募をさせていただきました。

では早速、本題のレビューをさせていただきます。

まず、書籍にざっと一通り目を通した感想をものすごく端的にいうと、
「IDDD本を要約して読み返すことができる和書としての書籍」という印象です。

簡潔に書籍の「良かった点」、「改善点」をまとめます。

良かった点

  • IDDD本に比べて抜粋して記載してあって、非常に読みやすいくらいの分量になっている。
  • コーディングするに当たって役立つ法則などについてまとめていた上で、書籍の引用元やブログなども参考として載せてあるので知識を深めやすい。
  • 今まで洋書の翻訳本ばかりで日本語的に読みにくいものばかりでしたが、和書として読みやすいので、気持ち的にも障壁が下がった。

改善点

  • 難しい点ではありますが、IDDD本とは別のサンプルがあったりしたら、今後DDDを始める人の参考にもなったかなとは思いました。
  • IDDD本と同じサンプルにするにしても、より読書層を広げるなら、モバイルアプリ開発に使われるSwift/Kotlinなどのサンプルもあっても良いかなと思いました。

エリック・エヴァンスのドメイン駆動設計(通称エリック本)とIDDD本を初めて読んだのは2016年で、部分的には読み返してはいたのですが、今回の書籍を通してあの時の自分の実装が正しかったのかなどを思い返すきっかけになりました。
また、IDDD本をしっかり読んだのがかなり昔なので、IDDD本ってここまで書いてたっけと復習するきっかけにもなりました。

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

実践ドメイン駆動設計 (Object Oriented SELECTION)

実践ドメイン駆動設計 (Object Oriented SELECTION)

実際にはしっかりとエリック本を読んだ上で読むべき書籍であるので、一番最初の書籍として、今回のレビュー書籍として飛びつくのはあまり良くないかもしれないですが、エリック本をしっかり読むのに心が折れてしまう人もいると思うので、その合間で併読して読むと実装のイメージも湧いて読みやすいかもしれません。

理想プランとしてはエリック本→IDDD本ですが、エリック本→今回のレビュー書籍→IDDD本でも悪くはないかなぁとは思います。
※私は社内研修でエリック本→DDDで実際に掲示板を作り、チームメンバーにレビューをしてもらう→実際に実装をするにあたりIDDD本を読むというのが最初の導入でした。

個人的にDDDに入門する人たちにとって、翻訳本以外の書籍の一つになると思いますので、取っ付きやすい書籍が一つ増えて嬉しいなと思いました。

以上、レビューとなります。

ユースケース駆動開発実践ガイド

ユースケース駆動開発実践ガイド

Swift, Rust, Elmで言語処理100本ノック2015 #1 00. 文字列の逆順+文字列のUnicodeコードポイント/バイト列表示

# はじめに
普段使いのSwiftに加えて、Rust, Elmに慣れるためにトライする実行環境紹介ページです。

言語処理100本ノック2015はこちら
http://www.cl.ecei.tohoku.ac.jp/nlp100/

この方がスマートあるいは処理効率が良いなどありましたら、コメントくださいませ。

## 00. 文字列の逆順

文字列"stressed"の文字を逆に(末尾から先頭に向かって)並べた文字列を得よ.
おまけで文字列のUnicodeコードポイント/バイト列表示。

### Swift

String peace = "azatoi";
> String("stressed".reversed())
String = "desserts"

> "stressed".reversed()
ReversedCollection<String> = {
  _base = "stressed"
}
# Stringで囲まないと、ReversedCollection<String>が返ってくるようです。
# 昔にSwift3の時に練習した時のを掘り出すと.charactersというString.CharacterViewを使わないとダメでしたが、
# Swift4からはStringから直接使えるようになりましたね。
> String("stressed".characters.reversed())

# 文字列のUnicodeのコードポイントを返す
# https://developer.apple.com/documentation/swift/unicode/scalar
# Unicode スカラは U+0000 〜 U+D7FF または U+E000 〜 U+10FFFF の範囲に含まれるコードポイントです。
# Unicode スカラは U+D800 〜 U+DFFF の範囲に含まれるコードポイントであるサロゲートペアのコードポイントは含まれません。
> "Go言語".unicodeScalars.map { print($0.value) }
71
111
35328
35486

# 文字列のバイト列を返す
> Array("Go言語".utf8)
$R1: [String.UTF8View.Element] = 8 values {
  [0] = 71
  [1] = 111
  [2] = 232
  [3] = 168
  [4] = 128
  [5] = 232
  [6] = 170
  [7] = 158
}
}

### Elm

> String.reverse "stressed"
"desserts" : String

> "stressed" |> String.reverse
"desserts" : String
-- パイプじゃないとまだ慣れないなぁ

-- Char型がUnicodeのコードポイント(32bit数値表現かな)ということで試してみました。
-- https://package.elm-lang.org/packages/elm/core/latest/Char#toCode
> "Go言語" |> String.toList |> List.map Char.toCode
[71,111,35328,35486] : List Int


-- バイト列を表示するには
-- ライブラリ導入が早いです。
-- https://package.elm-lang.org/packages/ktonon/elm-word/2.1.2/

> import Word.Bytes exposing (..)
> Word.Bytes.fromUTF8 "Go言語" 
[71,111,232,168,128,232,170,158]

### Rust

> "stressed".chars().rev().collect::<String>()
"desserts"

"stressed".chars().rev()
Rev { iter: Chars { iter: Iter([115, 116, 114, 101, 115, 115, 101, 100]) } }
// collectしないと文字列のバイト列が返ってくる。
// https://doc.rust-lang.org/std/primitive.char.html
"Go言語".chars()
Rev { iter: Chars { iter: Iter([71, 111, 232, 168, 128, 232, 170, 158]) } }
"Go言語".as_bytes()
[71, 111, 232, 168, 128, 232, 170, 158]
// StringはVec<u8>のラッパです。上記は単純にバイト列を返しているだけです。言と語はそれぞれ3バイト使います。
// Unicodeコードポイントの32bit数値表現だとしたら、Iter([71, 111, 35328, 35486]) で返ってくる。
// Unicodeコードポイントが返ってくる実装については一旦保留

【書評】作って楽しむプログラミング Androidアプリ超入門( @yyamada )

WINGSプロジェクトの書籍レビュアーに応募し、献本してもらったので、書評を書きました。
今回は表題にある通り「作って楽しむプログラミング Androidアプリ超入門」の書評となります。

作って楽しむプログラミング Androidアプリ超入門

作って楽しむプログラミング Androidアプリ超入門


Androidの経験は個人的にはFlutterでの検証を少々したことや、Kotlinでの開発も1ヶ月ほど行い、最近はレビューでコードを眺めているくらいの経験値です。

では早速、本題のレビューをさせていただきます。

まず、書籍にざっと一通り目を通した感想をものすごく端的にいうと、
「プログラミング初めての方がAndroidアプリにチャレンジするための入門書」という印象です。

簡潔に書籍の「良かった点」、「改善点」をまとめます。

良かった点

  • プログラミングが初めての人でもできるくらいスクリーンショットと共に詳細な手順が記載してある。(Enterを押して改行レベルまで記載
  • Kotlinで説明してあり、文法も基礎から説明している。
  • 他プログラミング経験者であっても手順が詳細なのでAndroidStudioの使い方がわかり、Android初学者にも優しい。
  • 章ごとに従って、おみくじアプリを作る流れなので、実際に進めていくと楽しい。
  • Androidの基礎の説明もありつつ、画面遷移やライフサイクルのことも言及し、リリースのやり方も丁寧に書いてある。


改善点

  • プログラミング完全初心者にとっては、アプリの最終的な動きとして入れたかったとしてもちょっとアニメーションは難しかったかなと思いました。
  • とりあえず、書いてある通りには作れるけれど、理解度を試す問題みたいなのが章末にあるとよかったかなと思いました(チェックポイントはありましたが


書籍を読みながら、中学生や高校生でもPCさえあれば、環境構築も含めるとこの1冊でおみくじアプリにチャレンジできるので、著者の人は詳細に手順を記載して、大変だったと思いましたが、すごく良い書籍だと思いました。
手順が詳細ゆえに、AndroidStudioのメジャーバージョンアップごとに書籍出しても有難いレベルの書籍かなと思いました。
プログラミング初学者でAndroidアプリ開発にチャレンジしてみたい人には勧めてみたいと思います。

以上、レビューとなります。

Kotlinスタートブック -新しいAndroidプログラミング

Kotlinスタートブック -新しいAndroidプログラミング

Kotlinイン・アクション

Kotlinイン・アクション

【書評】JavaScript逆引きレシピ 第2版 ( @yyamada )

WINGSプロジェクトの書籍レビュアーに応募し、献本してもらったので、書評を書きました。
今回は表題にある通り「JavaScript逆引きレシピ 第2版」の書評となります。

JavaScript逆引きレシピ 第2版

JavaScript逆引きレシピ 第2版


現在、久しぶりにWebのフロントエンドを実装中のため、書評レビューアーに応募しました。

では早速、本題のレビューをさせていただきます。

まず、書籍にざっと一通り目を通した感想をものすごく端的にいうと、
ECMAScript 2015の仕様も踏まえたうえのリファレンス」という印象です。

「改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで」も1度目を通していますが、よりコンパクトにさっと引けるリファレンスという印象です。

改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで

簡潔に書籍の「良かった点」、「改善点」をまとめます。

良かった点

fetchとXMLHttpRequestなど、古いバージョンだとこう使うみたいなレシピが用意してあってよかったこと
基礎としてブラウザオブジェクト(Windowsオブジェクトなど)の話も押さえていること
Webpack、Babel、ESLintなどのツール類の話も押さえていること
改善点

ES2015前提で、レシピ内のサンプルはアロー関数式で記述でもよかったこと
実開発で用いることの多いTypeScriptならこう書くみたいなのも併記してあったら嬉しいと思ったこと

実際に開発していると、JavaScriptの情報を調べようとした際に、Webの情報の質の差が大きい気がして、こちらのリファレンスのような書籍があって、すごく便利に使わせていただいています。
また、説明中で図でも表現してあったりもしているので、視覚的に理解しやすくて助かっています。
Webでの開発はいろんな知識が必要なのだなと改めて実感しました。

以上、レビューとなります。

【書評】Bootstrap 4 フロントエンド開発の教科書 ( @yyamada )

WINGSプロジェクトの書籍レビュアーに応募し、献本してもらったので、書評を書きました。
今回は表題にある通り「Bootstrap 4 フロントエンド開発の教科書 」の書評となります。

Bootstrap 4 フロントエンド開発の教科書

Bootstrap 4 フロントエンド開発の教科書

来月にWebのフロントエンドを実装するので参考にさせていただきたいため、書評レビューアーに応募しました。

では早速、本題のレビューをさせていただきます。

まず、書籍にざっと一通り目を通した感想をものすごく端的にいうと、
「実業務でBootstrapで画面を作る際のリファレンス」という印象です。
昔にBootstrap2/3と必要な時に公式ドキュメントをさらっと読んで2-3画面作ったくらいなので、これだけまとまっていると嬉しいと感じました。

簡潔に書籍の「良かった点」、「改善点」をまとめます。

良かった点

  • (これが一番よかった点) モックアップからBootstrapを使って画面を作っていくプロセスを追う章があること
  • 配色の違いがわかるように、必要な箇所はカラーになっていること
  • Bootstrapのカスタマイズをする章があること
  • Bootstrapの歴史から説明していること
  • 概念の説明などがとても丁寧なこと


「改善点」

  • 厚さ的に厳しいかもしれないですが、モックアップの章がもう1章欲しかったこと
  • Bootstrap4の標準パーツでは実現が難しい実装の紹介の章が欲しかったこと

来月からWebのフロント画面の実装をがっつりやることになるので、活用させていただきます。

以上、レビューとなります。

Bootstrap 4 フロントエンド開発の教科書

Bootstrap 4 フロントエンド開発の教科書

速習Vue.js 速習シリーズ

速習Vue.js 速習シリーズ

基礎から学ぶ Vue.js

基礎から学ぶ Vue.js

【書評】速習 React ( @yyamada )

WINGSプロジェクトの書籍レビュアーに応募し、献本してもらったので、書評を書きました。
今回は表題にある通り「速習 React」の書評となります。

速習 React 速習シリーズ

速習 React 速習シリーズ


今月からWebのフロントエンドを実装するので参考にさせていただきたいため、書評レビューアーに応募しました。

では早速、本題のレビューをさせていただきます。

まず、書籍にざっと一通り目を通した感想をものすごく端的にいうと、
「Reactを速習で学ぶと言う意味では良い書籍」という印象です。

3章に出てきたJSX自体知らなく、初めてのReact入門の書籍だったため、速習で一通り触れられた印象です。

簡潔に書籍の「良かった点」、「改善点」をまとめます。

良かった点

  • 速習と言う名の通り、フォームや状態が変わるサンプルの章の説明が合ったこと
  • サンプルをそのまま動かせるように説明する内容ごとにサンプルコードがあること
  • 関数コンポーネントよりクラスコンポーネントを使う例など、著者としてのオススメの方法と理由が記載されていたこと

以上、レビューとなります。

Bootstrap 4 フロントエンド開発の教科書

Bootstrap 4 フロントエンド開発の教科書

【書評】3ステップでしっかり学ぶ Python 入門 ( @yyamada ) 

WINGSプロジェクトの書籍レビュアーに応募し、献本してもらったので、書評を書きました。
今回は表題にある通り「3ステップでしっかり学ぶ Python 入門 」の書評となります。

Pythonの経験が全くないので、良い機会だなと思い書評レビューアーに応募しました。

では早速、本題のレビューをさせていただきます。

まず、書籍を読み終えた感想をものすごく端的にいうと、
「プログラミング経験のない人が読む最初にPythonを学ぶ1冊としてすごく良い」という印象です。
新卒でJavaの研修を受けた時を思い出しました。

簡潔に書籍の「良かった点」をまとめます。(今回特に「改善して欲しい点」はないです。)

良かった点

  • プログラミング経験のない人がつまづく環境構築について、Windows/Mac共にスクリーンショット付きで丁寧に解説している
  • 最近流行り(?)のVisual Studio Codeを使って、説明をしている
  • 章ごとに練習問題を準備していて、理解度を確認できる


個人的に、スライスなどの概念はGolangで初めて知ったのですが、Pythonから来ていたんだなぁと思いました。

また、プログラミング未経験だけれども業務効率化したいと言っていた友人に以下の書籍と共に進めようと思いました。


以上、レビューとなります。

独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで