@hihihiroroのLog

ダラダラと。本ブログは、個人の意見であり、所属会社とは関係がありません。

202007 振り返り

朝起きれなくなってきた。机とベットの配置によって起きて、ベットから降りて2歩でPCの前に座れるようになった。
コロナが収まって会社に毎日行くようになったら戻った初期は辛い目にあうんだろうな。

部屋の掃除を頻繁に行うようになった。こんだけ掃除しているのになんでゴミが貯まるんだろうと思うほど床にホコリや髪の毛が散らばっている。
本棚から溢れている本が全体の85%ほどある。これらまで片すことができればスッキリするだろうなと思っている。

在宅はやりたい時にやれることができるので時間割などを自分で作らないとすべてが中途半端になってしまう。

ブログの見た目を変えてみた。

べんきょうかい

データやクラウドについての勉強会に出るようになった。
考えなきゃいけないこととか、他の方の失敗した内容についてなど聞けるのはとても勉強になる。

ほん

波よ聞いてくれ、はじめアルゴリズム、地獄楽を毎月決まった冊数買っていたが最新刊まで追いついてしまった。
他にもドリフターズや数字であそぼなどのオススメを聞いた分も買って読み終わった。
部屋の本がまた少し減った。部屋内の未毒殺未読冊数が200冊をようやく切った。今後も頑張っていこう。

えいが

朝一や夜など人の少い時間を選んで少しずつ映画鑑賞を再開してる。
今日から俺は、コンフィデンスマンは笑いが起きるような面白い映画だったし、ステップでは泣くし良い映画だった。
山田孝之って年下だったのか…

  • 今日から俺は!!劇場版
  • コンフィデンスマンJP プリンセス編
  • ステップ

ぶろぐ

hihihiroro.hatenablog.com

hihihiroro.hatenablog.com

「LeanとDevOpsの科学」を読んだ

頂いた本をようやくだけど読んでみた。

具体的な手法などについては書かれていない。タイトルに科学と書かれているように、調査内容や研究内容について書かれている。
ソフトウェアデリバリのパフォーマンスを改善するため効果の高いケイパビリティが24個列挙され、それぞれが本書の中で詳しく解説されている。
列挙されていた、ケイパビリティは以下。

継続的デリバリの促進効果が高いケイパビリティ

  1. バージョン管理
  2. デプロイの自動化
  3. 継続的インテグレーション
  4. トランクベースの開発
  5. テストの自動化
  6. テストデータの管理
  7. 情報セキュリティのシフトレフト
  8. 継続的デリバリ

アーキテクチャ関連のケイパビリティ

  1. 疎結合へのアーキテクチャ
  2. チームへの権限の付与

製品・プロセス関連のケイパビリティ

  1. 顧客フィードバック
  2. 業務プロセスの可視化
  3. 作業の細分化
  4. チームによる実験

リーン思考に即した管理・監視に関わるケイパビリティ

  1. 変更承認プロセス
  2. 監視
  3. プロアクティブな通知
  4. 進行中の作業(WIP:Work in Progress)の制限
  5. 作業の可視化

組織文化に関わるケイパビリティ

  1. Westrum推奨の創造的な組織文化
  2. 学びの支援
  3. チーム間の協働
  4. 職務満足度
  5. 改善を推進するリーダーシップ

ソフトウェアのデリバリパフォーマンスをあげる、チーム、文化などについて、アンケート調査の結果分析や調査研究内容について説明されている。
上記に記載したケイパビリティを高めるために、自分のチームでの業務プロセス、文化、開発環境などを見直して、少しづつ改善点を見つけては直していこうと思った。

Effective DevOps ―4本柱による持続可能な組織文化の育て方

Effective DevOps ―4本柱による持続可能な組織文化の育て方

「レガシーコードからの脱却」を読んだ

レガシーが残っている環境に所属している。前職も現職も古から動いていて、まだまだ現役だと言わんばかりのシステムがある。
※古をどれほど前と取るかは読んでる人に任せます。

それらのシステムをえいやという掛け声と、南無と祈る気持ちでいくつか切り替えてきた。しかし、期待するも虚しく失敗した経験も何度もあるので、タイトルがとても気になった。
また、2月にあったデブサミITエンジニア本大賞2020で技術書部門大賞も受賞されていたので*1読んでみようと思った。

レガシーコードを上手に消し去る方法などが書かれているかと思ったていた。実際には、レガシーコードをいかに生み出さないようにするかが書かれている。
本書では、ソフトウェアの寿命を延ばし価値を高める原則とプラクティスが9つにまとめられ、それぞれについて説明されている。
ちなみに9つという数字は「人が一度に記憶できるのは7プラスマイナス2個」という考えの上限値になっているらしい。 以下が、9つのプラクティスになる。

  • ラクティス1 やり方より先に目的、理由、誰のためかを伝える
  • ラクティス2 小さなバッチで作る
  • ラクティス3 継続的に統合する
  • ラクティス4 協力しあう
  • ラクティス5 「CLEAN」コードを作る
  • ラクティス6 まずテストを書く
  • ラクティス7 テストでふるまいを明示する
  • ラクティス8 設計は最後に行う
  • ラクティス9 レガシーコードをリファクタリングする

それぞれのプラクティスについて、原則の説明、実践するための7つの戦略、振り返りがそれぞれちょうど良い分量で書かれている。
本書の内容は、特別目新しい事が書いてあるようには思わなかったが、色々な分野の内容がそれほど多くない量、適度な内容だったのでとても読みやすかった。
それぞれで勉強していた内容がここでもつながるのかと思えるのは楽しかった。
また、まずは良いソフトウェアを書くためにすることを本書で学んで、気になったところは参考文献に載っている本や、文中で紹介しているブログなどを読んで深堀りしていくのにも向いているのかなと思った。

まとめ

  • ソフトウェアを作り出すための原則とプラクティスがまとまっててわかりやすかった
  • 開発者以外の人にも読んでもらうと開発者の気持ちがわかってもらえそうだなと思った
  • 自分で作るソフトウェアはレガシーと言われないように気にしながら作成しよう

テスト駆動開発

テスト駆動開発

  • 作者:Kent Beck
  • 発売日: 2017/10/14
  • メディア: 単行本(ソフトカバー)

*1:受賞おめでとうございます!!!

202006 振り返り

机をようやく購入した。机の便利さに感動しているが、椅子が低いのしかなくバランスボールに座って仕事をしている。次は椅子を買いたいと思っているが、机があるとディスプレイも欲しくなってきた。どちらから先に買うか悩む。
机を導入してみたところほぼほぼ、机の前から動かない生活になった。仕事をするのも机、本を読むのも机、ご飯を食べるのも机。机便利。

本は変わらずのペースで読みすすめている。連休を使って読みすすめれたのでこのペースで本を失くしていきたい。

べんきょうかい

現在の仕事に関する勉強会に出ることが増えてきた。
興味はあって出ているが、まだ自分の知識が足りなくてわからないことも多いので勉強が足りていないなと思っている。

ほん

積読が少しだけだが減ってきた。
気になる漫画を毎月決まった冊数買い進めているのだがそろそろ新刊まで追いついてしまいそう。
次に買うものを探そうと思う。オススメの漫画とか詳しい人に聞いてみよう。

えいが

ジブリ映画が映画館でやっているので観に行ってきた。
ナウシカは映画館で見たことなかったし、ゲド戦記も今回初めて見た。
やっぱり大きいスクリーンで見るのは良い。

ぶろぐ

Kubernetes 本が部屋の積読から無くなった。
次はクラウド本かアジャイル本だな。

hihihiroro.hatenablog.com

hihihiroro.hatenablog.com

hihihiroro.hatenablog.com

hihihiroro.hatenablog.com

link.medium.com

「みんなでアジャイル」を読んだ

みんなでアジャイル ―変化に対応できる顧客中心組織のつくりかた

みんなでアジャイル ―変化に対応できる顧客中心組織のつくりかた

  • 作者:Matt LeMay
  • 発売日: 2020/03/19
  • メディア: 単行本(ソフトカバー)

Scrum Fest Osaka 2020 に参加したあとに、アジャイルの勉強をしようと思って読んでみた。

本書ではアジャイルの原則を以下の3つとしている。

  1. 顧客から始める
  2. 早期から頻繁にコラボレーションする
  3. 不確実性を計画する

本書では具体的なアジャイルの手法が詳しく説明されているわけではない。アジャイルには手法、マインドセット、ムーブメントという3つの手法があると説明されている。そして、ムーブメントとしてのアジャイルを「原則(なぜ)」と「プラクティス(どうやって)」と「兆候(何を)」の軸で説明している。3章から5章では、「組織重力の法則」と呼ばれるアンチパターンが解説されており、原則やプラクティスを理解した上で、成功に向かうためのアイデアや方法について書かれている。また、良い方向にすすんでいる兆候、悪い方向にすすんでいる兆候について確認する方法と、うまくいかない際の対応法について書かれている。

組織重力の法則は以下の3つ

  1. 組織に属する個人は、日々の責任やインセンティブと整合性がなければ、顧客と向き合う仕事を避ける。
  2. 組織に置ける個人は、自分のチームやサイロの心地よさのなかでいちばん簡単に完了できる作業を優先する。
  3. 進行中のプロジェクトは、それを承認したいちばん上の人が止めないかぎり、止まることはない。

本書は開発手法について特化したことが書かれている本ではない。セールス、マーケティングなどエンジニア外の人にも読みやすくなっている。1つ目の原則として顧客からはじめることをすすめられている。顧客について考えるためにはエンジニアだけで足りるわけがない。仕事に関わる人すべてで考える必要があると思う。アジャイルをみんなではじめる時に本書のように、「なぜ」についても説明されていると理解しやすくなるのだと思う。

また、アジャイルを試してみているが上手くいってないと思った場合は、各章に書かれている「兆候」にそって自分たちの現状を確かめながら対処していくのが良いと思う。

まとめ

  • エンジニア外の人にもおすすめできる読みやすい本だった
  • 良い方向、悪い方向にすすんでる兆候があるので現状の確認をしてみたい
  • アジャイルプレイブックにある、チームのコンテキストを設定してみる

その他

読んでる最中に、オヤと思う箇所があった。
思ってる通りだと面白いなー。

Design It! ―プログラマーのためのアーキテクティング入門

Design It! ―プログラマーのためのアーキテクティング入門

  • 作者:Michael Keeling
  • 発売日: 2019/11/25
  • メディア: 単行本(ソフトカバー)

「Docker/Kubernetes開発・運用のためのセキュリティ実践ガイド」を読んだ

家にあったDockerや Kubernetes がタイトルについている本の最後の1冊をついに読み終えた。Kubernetesで実践するクラウドネイティブDevOpsもそうだけど、Kubernetes の解説本だけではなく、Kubernetes を使った際に考えるべきこと、Tips についての本が増えてきた気がする。

第1章 Docker・Kubernetes の復習
第2章 コンテナ運用における驚異の事例
第3章 ランタイムのセキュリティ Tips
第4章 イメージのセキュリティ Tips
第5章 Kubernetes クラスタのセキュリティ Tips
第6章 アプリケーション間通信を守る

本書は、本番環境でのKubernetes 環境上での安全な開発・運用を行うためのTips がたくさん書かれている。

1章では復習として、Docker 、Kubernetes だけではなくTLS についての復習がされている。安全な通信を行うためにTLS を使うのでその復習もあるのが面白かった。

2章では、実際に起きているセキュリティの事例とその対処法について説明されている。たしかに設定ミスなどは普通に行われていると思う。
それらを検知できる仕組みを考える必要がある気がしている。

3章から5章まではそれぞれ、ランタイムとイメージ、Kubernetes それぞれのセキュリティについて気にするべきこととそれぞれの対応方法についての説明が書かれている。実際に、基盤を構築して運用をしている方々が書かれているからか、そこ気になるはというところもよく書かれている。

6章では、Pod の通信を可用性が高いまま安全に行うためのTips が書かれている。Network Policy やIstio による認証・認可、通信制御、サーキットブレーカについての解説。他にもPod 上のアプリケーションが外部と通信する際のセキュリティについても書かれている。

まとめ

  • Kubernetes 上でアプリケーションを動かす時に気をつけるセキュリティについて勉強できた
  • 内部構造についての絵がところどころ書かれていてわかりやすかった
  • コラムも面白かったので読むべき

試して学ぶ Dockerコンテナ開発

試して学ぶ Dockerコンテナ開発

「GCPの教科書Ⅱ 【コンテナ開発編】」を読んだ

2019年のお盆に読んだ本の続編が出ていたので読んでみた。

hihihiroro.hatenablog.com

1冊目では、GCPのサービスについて幅広く触れていた。今回発売された2冊目では、GCPのなかでもコンテナに関するサービスについて重点的に触れている。
目次は以下。

第1章 Google Cloud Platform の紹介
第2章 Google Container Registry
第3章 Cloud Build
第4章 Kubernetes
第5章 GKE
第6章 Cloud Run
第7章 サービスメッシュ

本書の前提の知識として、Knative と書かれていることにびっくりした。僕は詳しく知らないけど、とりあえず読んでみたが読むことができた。

まず、Kubernetes 上で動かすためのイメージを保存するGCR についての説明から始まっている。次に、CI/CD サービスのCloud Build についての説明となっている。これでアプリケーションのデプロイが出来るようになる。その後、Kubernetes を使うための最低限の基礎知識を勉強する。

5章では、マネージドなKubernetes としてGKEの紹介とノウハウが紹介されている。
6章では2019年に発表された、コンテナホスティングサービスのCloud Run についての使い方が説明されている。実際に動かすまでの流れが詳しく説明されているが、まだあまり使われていないのかノウハウなどは載っていなかった。僕も触ったこと無いから動かすことを試してみた。

最終章では、サービスメッシュの背景としてマイクロサービスの説明があり、サービスメッシュの概要と実例としてIstio が紹介されている。
ただ、Istio についてはminikube での実行しかないのでGCP 上での例ではなかったのが残念だった。

まとめ

  • GCP 上でコンテナを動かすための知識を勉強できた
  • GKE、Cloud Run などの使い分けについて学びたい
  • 無料枠で試すことができるのでどんどん試していきたい