nekoTheShadow’s diary

IT業界の片隅でひっそり生きるシステムエンジニアです(´・ω・`)

最近読んだ技術書:『システムを作らせる技術』『ドキュメント作成の基本』『セキュア・バイ・デザイン』『RustによるWebアプリケーション開発』

最近読んだ技術書の読書メモです。

『システムを作らせる技術 エンジニアではないあなたへ』

honto.jp

タイトルがやや刺激的ということで話題になった1冊です。システム構築に関するITエンジニア向けの本はさまざま出版されていますが、ITエンジニアへ発注する側にフォーカスしたものは珍しいかと思います。この手の本は「社員一丸となってシステム構築を成功させよう!」というような精神論よりの内容になりがちですが、本書はきわめて実務・実践より。SIerに発注する前の超上流工程から、実際の設計開発が始まる下流工程の間で、システムを作らせる側が具体的に何をするのか。どういう資料を作って、どのように周りを巻き込むのか。困ったときにはどういう対応策があるのか。そういった、さまざまなテクニック・Tipsがわかりやすく整理されています。自分は真逆のSIer側にいて、今後もそちら側でキャリアを積む予定ですが、そのような立場においても、お客さんの中に入っていって、いろいろとファシリテートしていかなければならないわけです。そういった意味では、ITエンジニアの自分にとっても勉強になる1冊だったと思います。

『エンジニアが一生困らない ドキュメント作成の基本』

honto.jp

自分はSIerのSEということで、実際のプログラムを触るよりExcelで資料作成している時間のほうが長かったりします。要はExcel職人として、ドキュメントを書くことが主業務なわけですが、そのわりにドキュメントの作成について真面目に勉強したことがないなと思って、本書を購入。内容としてはいわゆるパラグラフリーディング・パラグラフライティングの入門書といった感じ。タイトルには「エンジニア」とはあるものの、IT関係のビジネス文書全般に通用する内容となっています。逆にいうと、SIer的な設計書や手順書の書き方講座的なものを期待していると、ちょっと違うかもしれません。

近年はリモートワークも一般化し、メールやチャットなどのテキストコミュニケーションの機会も増えています。誰かになにかを伝えるという意味ではこれらもまた「ドキュメント」なわけですから、本書の内容が活かせるのではないかと思いました。また生成AIについても最後の方にわずかに触れられているのですが、個人的にはこれはかなり実用的であると感じました。ページ数も少なく、お仕事全般で役に立ち、しかもほとんど陳腐化しない中身ですので、読んでいて損はない1冊かと思います。

『セキュア・バイ・デザイン』

honto.jp

タイトルに「セキュア」とあるので、てっきりセキュリティ関係の本なのかと誤解しそうになりますが、本書の主眼は「デザイン」。すなわち、本書はソフトウェア設計やAPI設計の書籍になります。ソフトウェアが思った通り動かない、あるいは想定外の動きをするなどにより、システムが利用できず、ビジネスが停滞する。このシステムがちゃんと思った通り使えるかというのは可用性といい、セキュリティの世界では重要な要素のひとつとなっています。本書はこうしたシステム不具合は誤ったソフトウェア設計に基づくものも多いとし、それを乗り越える設計手法としてドメイン駆動設計を紹介します。すなわち、本書はDDDの入門書でもあるわけです。

DDDについては近年注目が集まっており、自分も何冊も入門書を読んできました。ビジネスとソフトウェアが一体になって、ビジネスを加速させるということをDDDの目的にすることが多いなか、ソフトウェアの品質に着目してDDDを導入するのは、観点として珍しいのではないかと思いました。DDDの入門書として見ると、やや分量は多いものの、全体的にわかりやすいですし、またDDD至上主義的な感じでもないので、おすすめできる1冊であると思います。

『RustによるWebアプリケーション開発 設計からリリース・運用まで』

honto.jp

本書はRustで書籍管理アプリを作りながら、RustによるWebアプリ作成の基礎を学ぼうというものです。Rustは近年注目が集まっていますが、どちらかというとシステムプログラミング領域であり、本書のようにアプリ開発に着目したものは珍しいかと思います。

個人的によかったポイントとしては、本書がハンズオン形式であるということ。古臭いですが、自分は演習方式のほうが頭に入ってくるタイプなので、ここは好感度高いです。ハンズオン自体もよく練られており、 ライブラリの機能を紹介して終わりではなく、レイヤードアーキテクチャや依存性の注入を導入するなど、最近のトレンドを抑えています。ここはRust抜きにしても勉強になりました。Dockerを使った環境構築、GitHub ActionsによるCI/CDの導入、クラウド環境へのデプロイなどもハンズオンにあり、RustでWeb開発をするためのすべてを学べるといって過言ではないと思います。ただし、Rustの文法や特徴的なメモリ管理など、Rustの基礎についてはまったく触れられていないので、そこは別にキャッチアップする必要があります。Rustの入門書は読んで、ひととおりの文法とコンセプトを理解した初心者が中級者にステップアップするためにはもってこいの1冊であると思います。