技術書典5で買った本の感想いくつか

# はじめに

10/08に開催された[技術書典5](https://techbookfest.org/event/tbf05)で書籍を多数購入したので、その中の気になったいくつかの本について感想や学んだことをつらつらと書きます。
まだ読んでないのが多数あるので、その都度記事を追加していくかもしれません。

# [Android Data Binding 実践](https://booth.pm/ja/items/1039369)	
著者: kuluna.class

## 本の概要

Android [Data Binding](https://developer.android.com/topic/libraries/data-binding/)について書かれた本です。DataBindingの技術について、基本的な使い方から応用、まで書かれた内容となっています。

## 購入経緯

Android開発を進める中で、Data Bindingについて少しだけ齧ってはいたけれど、あまり詳しくは知らない状態でした。1冊の中に情報がしっかりまとまっていて、役立ちそうとだと思い購入しました。

ちなみに、データバインディング技術はWindowsのGUIアプリケーションで多少使ったのでどういった物かは多少理解していました。なお、あちらはVisual Studioのビジュアライザで設定した内容から自動的にコードを生成し、使うことがほとんどだったので、内部的にどういったコードが吐き出され、どういう仕組みになっているかはあまり知らなかったです。

## 感想

本書は、findViewByIdを除去することから始まり、各種データやイベントのバインド方法や、双方向バンディング、バリデーションのやり方など、各種技術について書かれています。それらの内容が、Data Bindingを使う事によってどのようなメリットがあるかを明確に示しながら、段階的に理解出来るように書かれているので、とても読みやすく、分かりやすかったです。
個人的には、ListViewやRecycleViewへの適用がよく分かってなかったので、その辺もしっかり書かれていた点が助かったのと、API通信における使い方がしっかり書かれていたので、今後の役に立ちそうだと感じました。

今までもData Bindingに類似する技術やライブラリは多数あったかと思いますが、いつ更新が途絶えて技術的負債と化すかが気になって、あまり手を出す気が起きませんでした。こちらはGoogleが公式に提供する技術ということで、サポートや利用拡大が期待できるため、今後は本書などを参考にしつつ、積極的に取り入れていきたいと考えています。


# [完全SIer脱出マニュアル](https://booth.pm/ja/items/1038004)
(著者:jumpei_ikegami、zuckey_17)

## 本の概要

いわゆるSIerやSESと呼ばれる企業で働くエンジニアに向けた、IT業界における転職のやり方について書かれています。
転職に至る要因の分析、転職の始め方から採用までのフロー、各ステップにおける注意点などについて書かれています。
また、著者の運営するサイトでは、実際に転職された方へインタビューなどをラジオとして公開しており、転職の実例して紹介されています。

## 購入経緯

今年の8月に転職済みなので、自分の転職活動の振り返りをする意味を込めて購入しました。自分はネットで調べながら色々活動をやってみましたが、この業界で転職する人はどんな行動をして、どうやって転職をしていくのだろう、という部分に興味がありました。
ちなみに、現在の会社を転職しようとする意図は全く無いです。念の為。

## 感想

私が現在の会社に転職したのは今年の8月、4ヶ月前のことです。私自身、30代半ばを過ぎてからの初転職なので「35歳定年説」を蹴飛ばしてきた側の人間ということになります。

本書を読み進めていくうちに、「あー、やっぱり同じようなことを考えて、同じような転職を考える人は多いんだな」という事が分かって少しホッとしました。というか、本書に書かれたパターン通りの転職をしたというか…。（本書はもう少し若い方を主なターゲットにしていますが）

転職をするしないはさておき、転職の動機や企業選択基準などが丁寧に書かれているため、その辺りは自己分析のための資料として一見の価値はあると思いました。
個人的に注目したのは、エンジニアとして働く場所を以下の5つの軸で分類している点でした。

* IT 企業∕⾮IT 企業
* 受託開発∕⾃社サービス開発
* 外部発注∕⾃社開発
* オンプレミス∕クラウド
* レガシー企業∕ベンチャー企業

最近のITエンジニアは、SIerとWeb系というザックリした2分類で語られることが多いように思います（本書にはこの点についても触れられています）。個人的にこれは大雑把すぎてあまりしっくり来なかったのですが（そもそもモバイルも含めて"Web系"って名前もどうかと）、この5軸の分類は実態に即していて分かりやすいと思います。転職する企業を選ぶ上で、この5軸で企業を分類してみて、自分が就きたい仕事に適合するかを考えるのは、転職のミスマッチを避ける上で有効な手立てだと感じました。

余談ですが、私が最初に就職した時、このような分類は無かったと思います。あったかもしれませんが、決してメジャーではなかったと思います。よく聞いたのは、「独立系」「ユーザー系」「メーカー系」というこれまたザックリした分類ですが、今考えるといわゆるSI系企業の分類の話ですね。ちなみに、未だにこの分類の詳細がよく分かっていません。

本書は、転職を考える人にはもちろんですが、自己分析や、業界の概要を知るといった用途でも、有効な資料であると感じました。


# [スマートスピーカーアプリのお品書き](https://booth.pm/ja/items/1032329)
著者: 温泉♨BBA

## 本の概要

音声アプリの開発者である著者が、音声アプリ開発手法についてまとめた書籍です。

- プラットフォーム概要 (Amazon Alexa, Google Assistant, LINE colva)
- 音声アプリの設計方法
- Voice UI/UXデザイン
- Colvaを使った開発

## 購入経緯

会社では総務の方々向けにスマートスピーカーが設置されており、来客や荷物の配送の際に、「〇〇様が△名で来られました」という感じで読み上げるようになっています。これを毎日聞いているうちに、スマートスピーカーで他に何か面白い/便利なもの作れないかと考えるようになったのですが、知識もノウハウも無いので、とりあえずスマートスピーカーの技術特性を知るための本を何か買おう、という感じで購入。

## 感想

内容の中でとても興味が惹かれたのは、音声UIの設計に関する部分です。一般的な画面上のカーソルやポインティングによるUIとは異なり、視覚や動作を使わない、音声のみでUIを構築しなくてはいけないため、常識が完全に異なっていることが分かりました。気になったところを挙げると、

- 音声が流れている時間 = ユーザが消費する時間なので、なるべく端的な会話が行われることを心がける（エンタテイメント性のある場合を除く）
- ユーザは音声アシスタントを人格とみなすので、あらかじめ「人格」を決め、それに沿った受け答えをするようにする
- ユーザと音声アシスタントのやり取りを最後まで通すための台本（ハッピーパス）やフローを作る
- 多数の読み方に対応したり、固有名詞に対応したりすると非常に手間がかかる
- 音声をやり取りする時間がデバッグ時間に直結するため、デバッグは恐ろしく時間がかかる

といった辺りです。今まで画面のUIしか作ったことがない人間が軽い気持ちで作ると、大火傷するであろうことは容易に想像できます。

その他、最近発売された画面付きのAmazon Echo SPOTの対応についての言及や、プラットフォームの特性など、幅広く音声アプリを開発してきた中で得られたノウハウがたくさん書かれているので、読んでてとても面白い内容になっていると感じました。スマートスピーカーの特性を知りたいという目的に十分応える1冊だったと思います。

ところで、本書の30ページにスキル/アクション履歴書というものが書かれています。これは、音声アシスタントの「人格」の方針を定義するために作成するそうです。これを見た瞬間思ったのは、「履歴書というより、これは…TRPGのキャラクターシートだ！」でした。特に、Alexaはアプリを「スキル」と呼ぶので、眠っている中二心がムクムクと頭をもたげてきます（個人の感想です）。よく考えれば、キャラクターを決めるための資料なのだから、類似してくるのは当然なのかもしれませんが。

余談ですが、現状では個人的に、スマートスピーカーを使って以下の2点を試しています。

- RATOC Systemsの学習リモコン[RS-WFIREX3](https://www.ratocsystems.com/products/subpage/wfirex3.html)とGoogle Home miniを組み合わせて、自宅の電気やエアコンのON/OFFが出来るようにしている。「OK Google, おやすみ」で、天気の読み上げ、照明OFF、エアコンOFFまでを一度に行っている。
- [IFTTT](https://ifttt.com/)で、Google Home mini (Google Assistant)から、音声でTwitterにツイートできるようにしている。車の運転中に音声だけでツイートする等の利用を試みている。

この辺は基本的な機能なので、30分もあれば設定できるような内容です。アプリ開発とまでは行けなくても、こうしたサービスや機器の組み合わせで、なにか便利なものが出来ないか、少し考えていければと思っています。