msksgm’s blog

msksgm’s blog

Webエンジニアです。日々の勉強記録、技術書感想、美術観賞感想を投稿します。

「エンジニアのための文章術再入門講座 新版 状況別にすぐ効く!文書・文章作成の実践テクニック」 感想

「エンジニアのための文章術再入門講座 新版 状況別にすぐ効く!文書・文章作成の実践テクニック」[芦屋 広太, 2021]を読みました。

感想について記述していきます。

感想

知り合いのエンジニアに勧められたのと、仕事がフルリモートかつドキュメント作成をする機会が多いので、読むことにしました。

一言で言うと、「業務メール用、『理科系の作文技術』」感がありました。
『理科系の作文技術』は論文をわかりやすく書くための本でしたが、この本は業務メールのための本といったような印象です。

仕事における様々なユースケース(社内、社外、企画など) で、相手に伝わる書き方を実践的な例題とともに解説してくれます。
ユースケースが多岐に渡るので、役に立つ考え方が多いと思いました。
本書自体がページ数が多くなくて(200 ページぐらい)なので、読みやすく全ての内容に一通り目を通すことができるのはよかったです。
ただ、例題が、その状況を理解していないと書きづらく身につきにくそうなので、この本を仕事中に手元に置いて文章作成するさいに調べて書く、というようなやり方で身につける方が良いかと思いました。

気になった点が2点あります。
1点目は、あまり「エンジニア」だけの話ではないこと(あくまで槍玉として「エンジニアのための」をつけている?)。
2点目は、「文書術」と書かれているので、ドキュメントの作成方法が書いてあるのかと思ったら、ほぼ全てが業務メールの話で、一度ほどチャットアプリを対象にした内容だったこと。
です。
なので、ドキュメント作成を求めていた人には向かないし、Slack で使うには少しだけアレンジする必要があると感じました。

まとめると、様々なユースケースに対して伝わりやすい文章を簡潔に網羅した本、ただしドキュメント作成ではなく、業務メール向きといった印象でした。
過去に文章校正の指導を受けたことがなかったり、書き方を忘れてしまった、伝わる業務用メールの書き方を知りたいという人に良いのではないでしょうか。

「コンテナ時代の Web サービスの作り方 ver. 202107」 感想

「コンテナ時代の Web サービスの作り方 ver. 202107」[楽描商店(nasum), 2021]を読みました。

booth.pm

感想について記述していきます。

感想

nasum さんが書かれた本です。

twitter.com

知り合いのエンジニアが強くお勧めされたのと、自身が ecs まわりの実装で悩んでいたいたこともあり、購入して読むことにしました。 SSL 化と Route53 のドメイン取得、migration しながら自動デプロイの箇所以外を読みました。(前者は使い捨てのアプリなので採用を見送って、後者はいまだに詰まっています。)

内容は、Terraform と ecs(と関連する AWS のリソース)を用いた Web アプリケーションのデプロイです。 「aws の console 画面 から ec2 のデプロイまではなんとか理解できるけど、ecs の使い方がわからなかったり、vpc などのネットーワーク関連のリソースの知識に不安があったりする。Terraform は名前ぐらいなら知っている(or 名前も知らない)。」という人には超絶おすすめします。

awsGCP などのクラウドサービスはインターネットの記事や書籍などを確認しても、GUI の仕様変更によって情報が古くなったり、もう一度実行するときに同じ記事を確認したり(ソースコードみたいに手元に残していない)、よくわからないまま画面遷移して内容を忘れてしまったりする場合が多いです。 しかし、この書籍は、Terraform という「infrastructure as code」の OSS を使って AWS のリソースの設定をすすめていきます。Terraform なら、GUI の仕様変更に左右されることなく、一度使ったことがある設定を再現することができます。そのため、作成した結果が手元に残り、リソースごとの関連を確認しながら、理解しながら読み進める内容となっています。また、GUI での操作が必要な画面でも適宜画像で解説してくれます。

全体的に、とても参考になる内容である反面、必要になりそうな前提知識や環境、誤植などが読み進めていくうえで、目に付くところがありました(詳細は後述します)。

しかし、それらの面を除いても、Terraform で ecs にデプロイまでをおこなってくれる。書籍は他にないとおもいます。 Terraform を学びたかったり、ecs まわりについて参考になる記事が見つからないと言う人に是非おすすめしたいと思います。

良いところ、悪いところ、懸念点

良いところ、悪いところ、懸念点についてそれぞれ記述していきます。

良いところ

1. Terraform v1 以上に対応。

一部の書籍でも、Terraform について述べている内容はあると思いますが、v1.0 以上は今年の 6 月ぐらいにおこなわれ、それに対応できている書籍は他にないと思います。 大きな変更があったわけではないと思うのですが、破壊的な変更が v1 を使っていればないと考えられるのでメリットに感じられました。

2. AWS のリソースの簡易的な解説

様々な種類の AWS のリソースが登場します。 最初の方に、簡易的な解説をしてくれるので、読み進めるのが楽です。 また、パラメータに関する知識も解説しながらソースコードを記述していくので、いままでおざなりにしていた知識を得ながら読むことができます。

3. github actions

デプロイ方法は github actions を使ってくれます。 github actions の知識がなくても、実装できるので ecs の勉強ついでに CI/CD までできるようになってしまいます。

悪いところ

1. ソースコード が公開されていない(2021 年 9 月 23 日現在)

ソースコードのリンクがあるのですが、非公開 or 削除になっていて、参照することができません。著者のツイート曰く、現在作成中だそうです。 実装をする上で写経しか方法がないので、タイポが発生したり、ファイルの配置場所を間違えたりして、動作がとまったりします。 解決するにも、再度一つずつページを読み解く必要があるので、時間がかかっています。

本の中に、作成したファイル一覧が表示されていますが、非公開ファイル(.ドットファイル」)が載せられていないので、.github以下のファイルが気になりました。

個人的には.gitignoreファイルが公開されていないので、個人開発のときに、Terraform の ignore テンプレートが欲しくなりました。 ググったら、それらしきテンプレートがでてきたので、そのまま活用しています。

github.com

2. 誤植がたまに目立つ

更新が重ねられており、過去の出版物を知りませんが、最新版でも誤植がたまに目立ちます。 クリティカルなものはあまりないと思いますが、簡単にわかるものだけでも以下がのような誤植?が見つかります。 本の評価を落とすほどではないですが、若干読みづらくなっていました。

  1. teffaform applyTerraform applyのタイポ
  2. p.67 associcationassociationのタイポ
  3. 追記のはずが、ファイル名がことなる
  4. ファイルのパスがリポジトリ名から始まったり、始まらなかったり
  5. p.85 sample-rails-alb、おそらく過去のサンプルコードから持ってきて名前を変更していないだけ
  6. p.103 〜やや冗長で。今回〜、突然がある(誤植ではない?)
  7. p.105 iam/aws_iam_policies/deploy.jsonおそらく、deploy_policy.jsonの誤植(これは間違えると動かない)
  8. p.110 誤植ではないがcd Terraform-sample/service配下でもTerraform planTerraform applyが必要

3. テストコードが途中までしかない

github actions で自動テストを実装していますが、main のソースコードを追記しても、テストコードが追記されることはありませんでした。 そのままではもちろん github actions が通らないので、テストコードはコメントアウトしました。 本書の本質からは外れていますが、Go 言語に対する知見がないで、どのように実装してくのかが気になりました。

また、DB との接続をおこなう処理もローカルでの動作確認を想定していなさそうだったのが、少し残念でした。

懸念点、沼ったところ

1. 本書を読むにあたって求められる前提知識

読んでいて、どのレベルが対象なのかと気になっていました。

個人的には、

  1. aws の ecs デプロイは GUI で試したことがある経験があると良い(あと関連するリソースを触ったことがある)」、
  2. 「go の知識は必須ではないが、envs(pyenv、phpenv、nodenv)を使用して言語の環境構築経験があると良い」。

ぐらいだと思いました。

2. aws cli のバージョンについて

懸念点というより、個人的に沼ったポイントです。

本書で使用するaws cliコマンドのうち、aws ecs execute-commandは、v2 でも一定上のバージョンじゃないと含まれていません。 そのため、バージョンアップする必要があったのですが、原因がバージョン違いであることを表示してくれないので、沼ってしまいました。 最初の方に必須バージョンなどを記述してくれると嬉しかったです。

3. aws ecs exec-command について

こちらも沼ったポイントです。

aws ecs exec-commandでコンテナに ssh するのにも苦戦しました。 admin ユーザーであれば、不要なはずの ecs の service にenable-exec-commandを付与しないとできなかったり、IAM ロールポリシーにssmmessages:がうまく付与できていなかったりと、詰まってしまいました。

最終的には、amazon-ecs-exec-checkerというリポジトリをみつけたので、そちらで不足事項を確認しながら進めることができました。

github.com

まとめ

悪かった点、懸念点などを、多く述べてしまいましたが、内容がとてもすばらしく、じっくり読んでいるうちに気になる点があったので記述しました。

最初にも述べたとおり、Terraform、ecs、自動デプロイなどに興味がある人に一番におすすめしたい本です。

自身が今年読んだ、実践的な技術書の中で一番良かったです。

「OAuth徹底入門 セキュアな認可システムを適用するための原則と実践」 感想

「OAuth 徹底入門 セキュアな認可システムを適用するための原則と実践」[Justin Richer (著), Antonio Sanso (著), Authlete Inc. (監修), 須田 智之 (翻訳), 2019]を読みました。

感想について記述していきます。

感想

OAuth の入門書の中で有名だと思われる本です。
知り合いのエンジニアとの勉強会の課題図書だったの、じっくり読み進めていきました。

簡単に書くと OAuth の知識を網羅できる入門書ではあるけれども、決して初心者向けではない、内容でした。
また、全体的に読みづらいので軽快に読み進めることができないのが問題です。

よかった点と悪かった点についてまとめましたので記述していきます。

よかった点

1. 網羅的な OAuth に関する情報

OAuth の解説に関してはタイトルの通り徹底的で、登場人物や認可フローの種類などと他の書籍や記事ではまとめられていなさそうな、内容となっています。
歴史的な背景もある程度まとめており、OAuth に関する知識ついては、この一冊で十分なものとなっています(後述しますが、理解しやすいかどうかは別です)。

2. 豊富なソースコード

OAuth の OAuth ダンスに該当するソースコードは認可サーバー、クライアント、保護対象リソースのすべてにおいて githubソースコードが公開されています。
そのため、フローごとに処理を追うことができるので理解が深まります。
クライアント、認可サーバー、保護対象リソースを適切に実装

ただし、Node.js の基本知識が必要です。

悪かった点

1. 日本語が不自然で冗長

英語を無理やり日本語訳したような文章で不自然です。
また、同意味の内容を違う言い回しで説明されているせいで、とても読みづらいです。
比喩もわかりづらいので、順番から読んでいって理解できないので、なんども繰り返し読むことになります。
「まず最初に」という日本語は意味が重複しているため誤用なのですが、この本では多用しています。

2. 文章構成がわかりづらい

1 と内容か被りますが、文章構成がわかりづらいです。
結論を最初に述べたり、説明内容の概要の列挙したりしてくれないので、内容を予測しなが読むことができません。
太字を使う箇所も、何を強調したいのかわかりづらいので意味をなしていません。

3. OpenID Connect 関連の解説がわかりにくい

OAuth2.0 の解説はわかりやすいかどうかは別として徹底的に解説をしてくれるので、理解が深まります。
ただ、OpenID Connect 関連の説明は初出の単語が多いです。
それらに関する補足説明もないので、読み進めるには他の資料を探す必要があります。

その他

本に書いてあるソースコードは少し誤植があります。
github の方は問題なく動きますが、ソースコードを書きながら読むと少しだけ詰まってしまう箇所がありました。

まとめ

OAuth2.0 に関する説明は十分すぎる本。
ただ、「徹底」入門なので、決して初心者向けではないです。
サンプルコードをもとに理解をすすめるには、Node.js の理解が必要です。

日本語文章と構成がわかりづらく、OpenID Connect は他の本に頼った方がいい印象を受けました。

基本的な要素や語彙の理解に OAuth 屋さんの書籍のほうが向いており、より入門書なのではないでしょうか

booth.pm

booth.pm

booth.pm

「映画大好きポンポさん」感想

「映画大好きポンポさん」を観ました。

pompo-the-cinephile.com

感想について述べていきます。

感想

映画製作をテーマにしたアニメ映画です。

天才映画ディレクター「ポンポさん」のアシスタントである「ジーン」が、「ポンポさん」の脚本をもとに映画製作をするストーリーです。

すごくテンポよく、綺麗にまとまっていて、鑑賞しやすく面白い作品だと思いました。

登場人物の登場シーンが説明している雰囲気になりすぎなかったり、シーンの演出が簡潔で見所があったり、「ポンポさん」の語る映画のこだわりが作品自身にも込められていて、映画が好きな人ほど見ていて心地の良い作品だと思います。
また、映画製作だけでなく、ものづくりをする人と関わる人たちがが感じる楽しさや苦悩、を感じっとたり共感したりすることができるという点においても楽しむことができます。

原作の1巻分(映画分)が pixiv コミックで無料公開されており読むことができます。
原作のコミカルな雰囲気を残しつつも、演出の工夫によってゴチャゴチャした部分がなくなったり、よりわかりやすくなったりします。
特に、映画の後半パートはほとんどオリジナル展開となっているけれども、主人公の「ジーン」に感情移入しやすくなり、彼が主人公であることを認識させてくれます。

もともと5分間アニメのボツ企画を、漫画として公開したことで人気となりアニメ化まで果たした「映画大好きポンポさん」。
公開された頃からのファンの方々によって支えられ、その期待を映画によって答えたであろうこの作品は、製作者側からの愛も感じられる作品として、是非おすすめです。

UNIXという考え方―その設計思想と哲学

UNIX という考え方―その設計思想と哲学」[Mike Gancarz (著), 2001]を読みました。

感想について記述していきます。

感想

著名なエンジニア系ビジネス書の一つです。

この本は、以下の9つの UNIX の定理の解説がおこなわれるように構成が進んでいきます。

  1. スモール・イズ・ビューティフル
  2. 一つのプログラムには一つのことをうまくやらせる
  3. できるだけ早く試作する
  4. 効率より移植性を優先する
  5. 数値データは ASCII フラットファイルに保存する
  6. ソフトウェアを梃子として使う
  7. シェルスクリプトによって梃子の効果と移植性を高める
  8. 過度の対話的インタフェースを避ける
  9. すべてのプログラムをフィルタとして設計する

本書は 2001 年にも出版されたにもかかわらず、今でも納得できるような定理について解説をしてくれています。
また、合計 148 ページと技術同人誌のように短いのでさくっと読めることに加えて、和訳も独特な言い回しがないので読みやすかったです。

内容はタイトルの通り、UNIX のことだけなので、まったく知らない状態よりは、MacOS または Linux OS でコマンドの操作やシェルスクリプトもなんとなくわかっておくとより一層理解が深まると思います。
一番最後の第9章だけ、歴史的な背景がを知ってないと話の内容がわからなさそうです。

まとめると、UNIX の 9 つの原理について簡潔にまとめられた本です。今なお適用できる考え方になっているので気になっている人は是非購入してみてください。