凡ジニアのtxt

エンジニアリングができない凡ジニア

「技術書」の読書術を読んだ個人的感想

なぜこの本を読もうと思ったか

3-4年前から気になったことは、本を買って読書するようになっていた。しかし、ここ最近物覚えも悪くなってきたり、集中力がなくなったりして、本を読むことについてもやもやしてきた。ある日、ちらっとブログを眺めていると、「技術書」の読書術という「今の私の欲求にピッタリな本があるじゃないか!」ということで即購入したのが経緯です。 本記事では、これから3つのことを取り組んでみようと思うことだけ書いてます。

「技術書」の読書術 達人が教える選び方・読み方・情報発信&共有のコツとテクニック | IPUSIRON, 増井 敏克 |本 | 通販 | Amazon

取り組むこと

1. 時間制限読書法

一定の制限時間を決めて、一気に一つの本を読破する読書法。筆者は、本を読む際に、全部の内容に目を通すと気がすまない(もったいない)という気持ちで読んでしまう癖がある。読んだとしても、仕事で使わない限り1週間以内に忘れてしまうので、時間がもったいないと思っていた。この読書法を実践して、今必要な内容だけを取捨選択できるようにしたい。

2. マーキング読書法

マークをしながら、本を読む読書法。今まで、本を汚すともったいないとか、売る時に値段が下がるのではと思っていた。結局、技術本などはほとんど売らずにいたり、何度も読み返して、本が折れてたりする。なおさらマーキング読書法をつかって、重要なポイントをすぐ読み返せるようにしていきたい。

3.Notionでの読書記録と読書メモ

読書記録をつけて、モチベーションを高めていく方法の一つ。私の場合は、読書記録をつけてなかったので、Notionを使って、記録を残し、簡単なメモを本ブログに書いてみたいと思う。

終わりに

今回は、読書術に関わる3つのことをメモレベルでまとめました。本の内容では、他に英語の技術本についてや本の探し方、アウトプットなど多くの内容を取り扱っているので、ぜひ読書術に困りだした方は一読してみることをおすすめします。

2022年、締めくくり

2022年、締めくくり

2022年なぜか、短く感じた1年になったなとふつふつと感じた。年齢のせいか、仕事が忙しかったのか。

TL;DR

  • 転職して、残業時間がなくなった
  • DevOpsを基礎から学び始めた。
  • Containerの基礎がちょっくり理解できるようになった
  • EXIN DevOps Foundation/OSベンダー資格3つ合格した
  • 英語9か月頑張ったが、やはりスピーキングが伸びない
  • あ、高尿酸血症治した
  • ゴルフを始めた(スコア120切れず...)
  • 草野球/ソフトボール、ほぼ全試合いった
  • 30歳になった
  • 彼女できなかった

ここからは長いかもしれないので、適当に読んでくださいmm

仕事編

転職して早1年、現リーダーの協力もあり、残業が圧倒的に少なくなった。リーダーあざす(見てるかもしれないのでw)。仕事面では、DevOpsのCI/CDの領域を主に取り扱ってきた。Helmだったり、Ansibleだったり、Jenkinsのおじちゃんだったり色々活用できてよかった。k3sを使っていることもあり、containerdの基礎を理解することもあったり、面白い一年になった気がする。あとは、Infrastructure as Code (IaC)を取り入れる上で、すべてのインフラをコードで状態がわかるようにするというのは理解できるが、現実的にどこまでコード化できるのかなど葛藤もあったな。実装しているものも成熟度的には「管理された」状態が終わり、「最適化された」状態のステージで来年頑張りたいと思う。

勉強編

勉強...勉強...園児ニア界隈には、エンジニアはプライベートでも勉強すべき論争があるが、自分はこの圧に負け、勉強しなきゃ圧力に弱い。でも。今年は社会人歴で一番勉強する時間が短かったかもしれない。とはいえ、仕事に必要なDevOpsだったり、技術スキルもいい塩梅で勉強した気がする。あれこれ、多方面に手を出さず、必要最低限の領域に対して、勉強するスキル?考えた方も大切だなと思った。これは過去これまで勉強したり、経験で得たものが日常的に理解できるようになったという理由もあるかもしれない。

aki5151.hateblo.jp

あとは英語...君はもうあれだよね...癖強いよね...。スピーキング能力に関してはやり続けるしかないので、留学しとけばなという後悔もあるが、後悔しても仕方ないので、継続的スピーキング改善していこうと心のすみっちょに置いておこう。

プライベート

今年からゴルフを始めるようになり、運動不足気味になっていたので、習慣的に練習していい運動不足解消になったと思う。

草野球では、ようやく肩が治り、6回9失点10奪三振3四球ぐらいでひどい結果になった。社会人以降まともに投げれた時がなかったが、ようやくいい整体と出会えて、肩回りの硬さをほぐすアプローチが取れたのが良かった。

ソフトボールでは、7本ホームラン打てた。来年はチームでホームラン数、打率1位になれるよう思考錯誤していきたいな。

終わり

今年で30歳になり、体力の劣ろえが非常に気になり始めたが、来年も頑張っていこう!! (夜型のはずが、眠すぎる)。年末休暇は「LeanとDevOpsの科学」と「継続デリバリーのソフトウェア工学」読破すっぞ。

www.amazon.co.jp

books.rakuten.co.jp

EXIN DevOps Foundation取りました

今年は、あまり勉強しておかないとこうと思っていたが、時間があったので、EXIN DevOps Foundationを受けてみた。この試験を選んだ主な理由は、

  • CI/CDパイプラインの構築に携わっているため、DevOpsの概念から勉強してみたい
  • DevOps, アジャイルの言葉はざっくりはわかるけど、どのように説明したらいいかわからない
  • DevOps大変だけど、楽しい

といったぼんやりしたことからです。

EXINとは

EXINとは、ITILの認定試験を行うオランダの会社です。よく聞くAgile Scrum xxxの各認定資格も行っている企業かな。

EXIN DevOps Foundationとは

ITに携わる人でDevOpsの基礎を学び、理解するための認定資格であり、上位にはDevOps Professional, DevOps Masterがある。興味ある方は、ぜひ以下リンクから飛んでみてください。公式の練習問題もあります!!

https://embed.exin.totalservices.io/certifications/exin-devops-foundation-exam?language=ja

勉強時間・方法

公式では、60時間の勉強時間が目安となっている。おそらく私もこの時間ぐらい2ヶ月と、だらだら勉強した。

8月から資格取ることを決意しました。以下のUdemyのコースをセール時に購入して、気力ある時に週2/3日に1時間程度を勉強しました。日本語翻訳がないので、英語字幕にして学んでました。

www.udemy.com

9月からも、同じく週2/3日に1時間程度を公式の練習問題を解いては、内容を覚えていた。あとは、公式からキーワードリストが公開されているので、その内容と関係性など覚えました。

ちなみに、以下のガイドブックが公式のガイドブックになっています。

www.amazon.co.jp

受験方法

公式サイトから購入した後に、メールが来ます。受信メールに記載されているURLを使えば、24時間いつでもオンラインで受験できます。受験するにあたって、顔写真付き身分証明証の準備とカメラ付きPCを準備して、試験を開始します。ビデオ録画になるので、試験管とのやりとりはなかったです。

結果

公式の練習問題以外は、情報が全くないので、恐る恐る受験しました。結果は、68%(27/40)のスコアでした。あと1問間違えてたらアウトでした。

感想

DevOpsでよく聞くアジャイル、リーン、デプロイメントなどとは何か、これらによって、何が期待できるかなど学べてた気がする。DevOpsを実践するにあたって、ビジネスと組織にどのような影響を与えるか、期待ができるかなど学びたい初学者向きに試験だと思います。

AWS/GCP/Azureなどのサービスを使って、実践的なスキルをつけたい方は各クラウドベンダーの試験を受けた方がいいかなと思います。

気が向いたら、上位のDevOps Professionalも勉強して、取ってみようかなと思います。(年末以降...今年はもう遊ぼう

30代直前になって

「アラサー」が近づいてくると冗談交じりで話していた20代が終わり、本格的に30代になる直前まで迎えてしまった。 社会人になって、夢にも思わなかった関東に出てきて、田舎が恋しいが、なんとかやれてこれた。 就活でも、仕事でも、英語でも心が幾度かねじ曲がったが、そう捨てた物でもないと思えてきた。 ここ数年は、仕事と勉強(特にコンテナ、k8s)に集中してたため、体重も10kg増え、体力もなくなってきた。 しばらくは、野球、ソフトボール、最近始めたゴルフで健康を取り戻そうと思う。

追伸

体力なくなると、集中力もなくなるし、お酒も飲めなくなる。がんばろう、おじさん。

閉域環境のラズパイ4にk3sをインストールする

背景

閉域(インターネットへ疎通ができない)環境に対して、k3sをインストールすることがあったので、備忘録として書きます。

*閉域環境を英語ではair-gapと呼ばれることがある。Rancher公式サイトにはair-gapと記載されている。

環境

  • ラズパイ4
  • Ubuntu 18.04
  • aarch64 (arm64)
  • k3s v1.23.6+k3s1

閉域環境へk3sインスール

1. k3sのimage/バイナリとinstall.shをダウンロード

GitHubからローカル環境に手動でk3sのimageとバイナリをダウンロードします。本環境では、現時点(2022/05/10)で最新のv1.23.6+k3s1を使用します。

https://github.com/k3s-io/k3s/releases

次に、ローカル環境にラズパイサーバーで実行するk3sインストール用スクリプトをダウンロードします。

# get.k3s.ioからスクリプトをダウンロード
% curl  https://get.k3s.io -o ~/Downloads/install.sh
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 27501  100 27501    0     0  26412      0  0:00:01  0:00:01 --:--:-- 26622

# ローカル環境にダウンロードできたか確認
% ls ~/Downloads/install.sh
/Users/****/Downloads/install.sh

2. ラズパイサーバーへ転送

先ほどダウンロードしたものをラズパイサーバーへ転送します。

# localからラズパイサーバーへimageを転送
% scp ~/Downloads/k3s-airgap-images-arm64.tar ubuntu@192.168.3.101:/home/ubuntu
ubuntu@192.168.3.101's password:
k3s-airgap-images-arm64.tar                                                                                                                        100%  462MB   4.5MB/s   01:42

% scp ~/Downloads/k3s ubuntu@192.168.3.101:/home/ubuntu
ubuntu@192.168.3.101's password:
k3s                                                                                                                                                100%   60MB   6.1MB/s   00:09

% scp ~/Downloads/install.sh ubuntu@192.168.3.101:/home/ubuntu
ubuntu@192.168.3.101's password:
install.sh                                                                                                                                         100%   27KB   2.2MB/s   00:00

# ラズパイサーバーでファイルを確認
ubuntu@ras01:~$ ls -lh
total 522M
-rw-r--r-- 1 ubuntu ubuntu  27K Dec 15 19:39 install.sh
-rw-r--r-- 1 ubuntu ubuntu  60M Dec 15 19:37 k3s
-rw-r--r-- 1 ubuntu ubuntu 462M Dec 15 19:25 k3s-airgap-images-arm64.tar

# /usr/local/bin配下にk3sバイナリを格納
ubuntu@ras01:~$ sudo mv k3s-arm64 /usr/local/bin/k3s
ubuntu@ras01:~$ ls /usr/local/bin/
k3s

# /var/lib/rancher/k3s/agent/images配下にk3s imageをコピー
sudo mkdir -p /var/lib/rancher/k3s/agent/images/
sudo cp k3s-airgap-images-arm64.tar /var/lib/rancher/k3s/agent/images/

3. スクリプトとk3sバイナリに実行権限を付与

# install.shに実行権限を付与
ubuntu@ras01:~$ sudo chmod +x install.sh
ubuntu@ras01:~$ ls -lh install.sh
-rwxr-xr-x 1 ubuntu ubuntu 27K Dec 15 19:39 install.sh

# k3sバイナリに実行権限を付与
ubuntu@ras01:~$ sudo chmod +x  /usr/local/bin/k3s
ubuntu@ras01:~$ ls -lh  /usr/local/bin/
total 60M
-rwxr-xr-x 1 ubuntu ubuntu 60M Dec 15 19:37 k3s

4. k3sインストールを実行

install.shを実行して、ラズパイサーバーにk3sをインストールします。

# インストールの実行
ubuntu@ras01:~$ INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh
[INFO]  Skipping k3s download and verify
[INFO]  Skipping installation of SELinux RPM
[INFO]  Skipping /usr/local/bin/kubectl symlink to k3s, command exists in PATH at /usr/bin/kubectl
[INFO]  Skipping /usr/local/bin/crictl symlink to k3s, command exists in PATH at /usr/bin/crictl
[INFO]  Skipping /usr/local/bin/ctr symlink to k3s, command exists in PATH at /usr/bin/ctr
[INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
[INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO]  env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO]  systemd: Creating service file /etc/systemd/system/k3s.service
[INFO]  systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO]  systemd: Starting k3s

# k3sのステータス確認
ubuntu@ras01:~$ systemctl status k3s
● k3s.service - Lightweight Kubernetes
   Loaded: loaded (/etc/systemd/system/k3s.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2021-12-15 19:54:15 JST; 1min 44s ago
     Docs: https://k3s.io
  Process: 18730 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)
  Process: 18725 ExecStartPre=/sbin/modprobe br_netfilter (code=exited, status=0/SUCCESS)
  Process: 18723 ExecStartPre=/bin/sh -xc ! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service (code=exited, status=0/SUCCESS)
 Main PID: 18733 (k3s-server)
    Tasks: 65
   CGroup: /system.slice/k3s.service
           ├─18733 /usr/local/bin/k3s server
           └─18894 containerd -c /var/lib/rancher/k3s/agent/etc/containerd/config.toml -a /run/k3s/containerd/containerd.sock --state /run/k3s/containerd --root /var/lib/rancher/k3s

Dec 15 19:55:37 ras01 k3s[18733]: E1215 19:55:37.805540   18733 remote_runtime.go:209] "RunPodSandbox from runtime service failed" err="rpc error: code = Unknown desc = failed to ge
Dec 15 19:55:37 ras01 k3s[18733]: E1215 19:55:37.805691   18733 kuberuntime_sandbox.go:70] "Failed to create sandbox for pod" err="rpc error: code = Unknown desc = failed to get san
Dec 15 19:55:37 ras01 k3s[18733]: E1215 19:55:37.805771   18733 kuberuntime_manager.go:833] "CreatePodSandbox for pod failed" err="rpc error: code = Unknown desc = failed to get san
Dec 15 19:55:37 ras01 k3s[18733]: E1215 19:55:37.805964   18733 pod_workers.go:951] "Error syncing pod, skipping" err="failed to \"CreatePodSandbox\" for \"metrics-server-7cd5fcb6b7
Dec 15 19:55:45 ras01 k3s[18733]: E1215 19:55:45.015469   18733 resource_quota_controller.go:413] unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the se
Dec 15 19:55:45 ras01 k3s[18733]: W1215 19:55:45.523766   18733 garbagecollector.go:707] failed to discover some groups: map[metrics.k8s.io/v1beta1:the server is currently unable to
Dec 15 19:55:46 ras01 k3s[18733]: W1215 19:55:46.502560   18733 handler_proxy.go:104] no RequestInfo found in the context
Dec 15 19:55:46 ras01 k3s[18733]: E1215 19:55:46.502809   18733 controller.go:116] loading OpenAPI spec for "v1beta1.metrics.k8s.io" failed with: failed to retrieve openAPI spec, ht
Dec 15 19:55:46 ras01 k3s[18733]: , Header: map[Content-Type:[text/plain; charset=utf-8] X-Content-Type-Options:[nosniff]]
Dec 15 19:55:46 ras01 k3s[18733]: I1215 19:55:46.502881   18733 controller.go:129] OpenAPI AggregationController: action for item v1beta1.metrics.k8s.io: Rate Limited Requeue.

5. kubectlの確認

この段階ではPATH設定などを行なっていないため、kubectl が使えません。最後に、kubectlコマンドが使えるように以下を設定していきます。

# kubectlの実行 (この段階ではrefusedとなる)
ubuntu@ras01:~$ kubectl get nodes
The connection to the server localhost:8080 was refused - did you specify the right host or port?

# kubectlのパスを設定
ubuntu@ras01:~$ echo "export KUBECONFIG=/etc/rancher/k3s/k3s.yaml" >> ~/.bashrc
ubuntu@ras01:~$ source ~/.bashrc

# ファイル所有者を一般ユーザーに変更
ubuntu@ras01:~$ sudo chown ubuntu /etc/rancher/k3s/k3s.yaml
ubuntu@ras01:~$ ls -lh /etc/rancher/k3s/k3s.yaml
-rw------- 1 ubuntu root 2.9K Dec 15 19:54 /etc/rancher/k3s/k3s.yaml

# kubectlの実行
ubuntu@ras01:~$ kubectl get nodes
NAME    STATUS   ROLES                  AGE     VERSION
ras01   Ready    control-plane,master   6m55s   v1.23.6+k3s1

6. お片付け

k3sをアンインストールしたい場合は、以下のスクリプトを実行すれば、アンインストールが実行されます。

ubuntu@ras01: /usr/local/bin/k3s-uninstall.sh

参照

Rancher Docs: Air-Gap Install

https://github.com/k3s-io/k3s/releases

2021年読んだ本 まとめ

 2019~2021年の間、本格的に業務範囲がiOSからk8sにチェンジしたことによって、2021年に読んだ本を紹介します。各本に対して、なぜ読んだのか、何がよかったのかを書いております。

読んだ本リスト

  • Linuxのしくみ
  • Kubernetes on AWS アプリケーションエンジニア本番環境へ備える
  • マイクロサービスアーキテクチャ
  • New Relic 実践入門
  • エンジニアリング組織論への招待
  • SREサイトリライアビリティエンジニアリング
  • SREの探求
  • 分散システムデザインパターン
  • 実践Terraform AWSにおけるシステム設計とベストプラクティス
  • マスタリングTCP/IP 応用編 SNMPSSL/TLS
  • Wiresharkではじめるパケット解析入門
  • 転職2.0

Linuxのしくみ

 Linuxサーバーを触る機会が増えたので、基本的なメモリ/CPU/プロセスの動作を勉強するために購入しました。少し難しい章があるが、全体的にわかりやすい図解でまとめられていて良い本になります。Linuxの仕組みで困った際に、何度も振り返りたい本かと思います。

www.amazon.co.jp

Kubernetes on AWS アプリケーションエンジニア本番環境へ備える

 昨今、AWS/GCPなどのクラウドプロバイダーが提供するk8sプラットファームが増えているので、自主勉強用に購入しました。業務では、オンプレk8s環境しか触ってこなかったので、AWSk8sを動かしたい方にオススメになります。また自宅サーバー(ラズパイなど)でk8sを構築する際に、ノードのOS設定やCPUのアーキテクチャを考慮しなければならないので、手軽に試したい方にオススメになります。

www.amazon.co.jp

マイクロサービスアーキテクチャ

 マイクロサービスの概念がよくわからなかったため、購入しました。本を読めばマイクロサービスが実現できると言うわけではありません。これまでのシステムと比べ、マイクロサービスの概念が、近年のITシステムの要求に近づけれるのではないかという内容になっていると思います。マイクロサービスについて知りたい方への良本になります。

www.amazon.co.jp

New Relic 実践入門

 オブザーバビリティを実現するNew Relicの実践方法を紹介されている本になります。現時点で無料枠があるので、無料でNew Relicを試したい方にオススメになります。New Relicも日々新しい機能がリリースされているので、時間が経てば、内容が古くなっている可能性もあります。

www.amazon.co.jp

エンジニアリング組織論への招待

 昨年度から少人数ながらメンバーを持たせて頂いたため、チームビルディングするならきちんとしたエンジニアリングがしたいと思い、本書を購入しました。いわゆる開発チームの作りではなく、不明確な問題に対するチーム作りとして書かれているので、非開発チーム(運用保守やビジネスサイドなど)でもアジャイルを実践できるのではないかと思いました。(ちなみにチームは会社都合で1年後に解散しましたが .....)

www.amazon.co.jp

SREの探求

 SREの興味本心で購入しました。SREを導入したい組織において、米国有名企業の例などを用いて、どのようなアプローチしていけば、SREとして実践できるかという内容になっているかと思います。読んでいて、オンコール反対論に関して、非常に共感を得ました。章によっては、理解が難しい内容があったため、振り返り読むことが良いかなと思っています。

www.amazon.co.jp

分散システムデザインパターン

 現場のk8s上のコンテナのデザインが開発側から情報提供がなかったため、自分自身でそのデザインを理解するために購入しました。タイトル通り、分散システム(k8sやOpenStackなど)のデザインパターンが説明されている本になります。200ページぐらいで上手く内容がまとめられています。コンテナを扱ったシステムに関わっている方は、読みやすいので、一度読んでおいた方が良い本かと思います。

www.amazon.co.jp

実践Terraform AWSにおけるシステム設計とベストプラクティス

 Kubernetes on AWSを試した後、AWS上のIaCに興味を持って、購入しました。しかし、あまりTerraformをいじる時間なかったので、今後機会があれば、再びチャレンジしたいと思ってます。 www.amazon.co.jp

マスタリングTCP/IP 応用編 SNMPSSL/TLS

 SNMPv2/SNMPv3/FTP/FTPS/SFTPに関して、学びたかったため購入しました。学びたいプロトコルによっては、内容が薄いこともあるが、持っておいて損はない本だと思います。大学の頃を思うと、入門編以外に3冊も購入することになるとは思わなかった.....。

www.amazon.co.jp

www.amazon.co.jp

www.amazon.co.jp

Wiresharkではじめるパケット解析入門

 タイトル通り、Wiresharkを使ってパケット解析をしたい方とKindle unlimitedの方に対してオススメの本である。ただ、Windows環境での説明になるので、Mac/Linux環境の方は、Wiresharkの設定は別途調べる必要があります。

www.amazon.co.jp

転職2.0

 自分のキャリアに悩んでしまったので、購入しました。LinkedIn 日本代表の村上 臣さんが現代のキャリア論について述べられている本になります。著者の経歴がありきでのキャリア論になっているので、万人に当てはまるかはやや怪しいです。ただし、従来の終身雇用におけるキャリア論とは全く別物になっているので、今後の転職市場では本書で述べられているようなキャリアを持つ人材が有利になっていくのではないかと思います。

www.amazon.co.jp

所感

 2021年において、本ブログで挙げた本だけでも、月1で新しい知識をアップデートしていたので、今年もよく生き残ったなと思います。来年から、業務内容がかわるので、分散システムにおけるGitOps(CI/CD)やテストケースなど知識をもっと深くして、物にできればと思います。あと引き続き、英語もがんばります .....