woodcockのブログ

ソフトウェアエンジニアをしています。技術メモや買ってよかったものなどを記録していきます。

2023年の振り返り

プライベート

コロナになったりはしたが、家族みんな健康で何より。

ただ年始早々義父が破傷風に感染し、3ヶ月間意識がないまま寝たきりになるという恐ろしい出来事があった。そこから回復して今は仕事に復帰しているのでこれまた本当にすごい。自分も救急車に同乗したり、主治医の方の説明を聞いたりしたのだが、医療に携わる方々への感謝と尊敬が高まるばかりだった。

家買った

そのほかでは、買ってよかったものにも書いたのだが、マンションを買ったのが大きい出来事だった。 買うまでリセールバリューのことなどいろいろ調べていたのだが、自分なりに調べたり考えてわかったこととしては、自分のニーズとメジャーなニーズ(=リセールバリューにつながり安い)にそこそこギャップがある、ということだった。 自分のニーズを妥協してリセールバリューをとるか、自分のニーズを優先してリセールバリューは諦めるか、というトレードオフのどこに落とし所を見つけるのかという。 結論としては、自分のニーズを最優先に選ぶことにした。結果はまあわからないけど、(当然)住んでいる分にはとても快適で、買ってよかったな〜と思っている。

旅行

いろいろ旅行に行って、良き宿に泊まることが出来た。

閉館する前に泊まることが出来た。いい宿だった・・・ www.ikyu.com 金沢旅行で泊まった。ここは駅へのアクセスもよく、なんというか力を入れるところ入れないところがハッキリしていてよかった。 www.ikyu.com ディズニーシーに行ってきた。本当はバーとかに行ってみたかったのだが、バテバテで全然無理だった。 www.ikyu.com

仕事

転職してこの11月で1年だった。去年書いた通り、同僚が信頼できる人ばかりで、それが何よりありがたいなぁという感じだった。 この1年を振り返ると、

  1. 一生懸命取り組んだ施策が全然振るわなかったこと
  2. かなり優先度の高い施策を任せてもらって、それをストレッチした目標でリリースできたこと

の2つが印象に残った。

まず1つめについては、とにかくユーザーは正直だなというか数字は嘘をつかないというか、、、施策の考え方・進め方・リリースの仕方など、いろいろ反省させられる出来事だった。

2つめについては、社内的にも相当優先度の高い施策を任せてもらって、ストレッチした目標を立てて、それを守ってリリースすることが出来た。これは普通に達成感があって嬉しかったというのもそうなのだが、ストレッチした目標を立てる(見積もりをする)というのが個人的にいい経験だった。自分は割と見積もりする時にバッファを積んでしまいがちなのだが、この時はめちゃくちゃ優先度が高いこともあって、本当にバッファを全く考えず、ベストを尽くして本当にうまくいったらこのくらいかな、という見積もりを立ててみた(だいぶ勢いもあった)。結果として、予期せぬ出来事なりそれに伴う遅延などは発生した訳だが、その都度マネージャーやチームのメンバーがめちゃくちゃサポートしてくれて(なんなら巻き取ってもらったりヘルプに来てくれたりした)、目標通りリリースすることが出来た。まあ単純にめちゃくちゃ助けてもらいましたという話ではあるのだが、優先度の高いプロジェクトほど、見積もりは攻めても良いのか?と思ったりもした(助けてもらっておいてあれだが)。これ以降、なんとなく見積もりは出来るだけ攻めてみようと思っている。

そのほか、社内のアドベントカレンダーを書かせてもらったのもいい経験だった。いままであまりこういうのはやったことがなかったのだが、社内にそういうインターネット使いが上手な人がいて、その人主導でやっているのに自分も乗っからせてもらった。結果としてなかなか評判も良く、いい経験をさせてもらうことが出来た。ありがたや。

趣味

イタリアンパセリ栽培

これまでの反省を踏まえて、

  • 水は本当に最低限
  • 複数種を同じ鉢に植えない
  • 間引きはちゃんとする

の3点を意識して、秋植えの割に今のところうまくいっている。

競プロ

社内の競プロ部にはこれまでも参加していたのだが、この8月から3年ぶりにRatedでコンテストに出るようになった。 CTOが競プロにのめり込んでいて、その熱意に引っ張られた感じだったが、やってみるとやっぱり面白く、自分ものめり込むようになった。 そしてちょうどこのクリスマスのコンテストで、緑色復帰を果たすことが出来た。

ブランクが長すぎて直近がよく見えない

今年の目標振り返り・来年の目標

今年の目標だった、読書50冊は達成していた。ブログ5件も達成することが出来た。(12/31に4件・・・)

来年は、読書は変わらず50冊、ブログは4ヶ月に1件を目標にしようと思う。まとめて書くと書評とかもっとちゃんと書きたかった・・という気持ちになったので、書評のブログも書いてみたいと思う。

読んでよかった本2023 : 小説編

大した量読んでいる訳でもないのだが、いやだからこそ名作ばっかり読めるのでありがたい。

 

パチンコ

 

在日コリアンが苦難の中生き抜いていく様を描いた物語。壮大、という感じだった。

 

ワイルド・ソウル

 

日本からブラジルに渡った移民の物語。何を書いてもネタバレみたいになりそうで書けないのだがとにかくスケールと疾走感がすごかった。

 

ジェノサイド

 

これまた内容の説明が難しいのだが、SFでありサスペンスであり、これまたすごいスケールの作品だった。

 

専門的な話も多いのだが、作者の事前の取材量がすごくて(取材先の専門家も錚々たるメンツだった、)、全く白けることなく読むことが出来た。

 

 

トマソン 

 

小説ではないかもしれない。これのジャンルは何になるんだろう。

 

暗渠つながりで読み始めたのだが、トマソンとは何か、の説明からしてめちゃくちゃ面白くて外で爆笑してしまった。

 

十角館の殺人

 

名作ミステリー、とかで調べて読んでみた。これぞクラシック!という感じで、一番の見所と思われる箇所では本当に「マジで??」となってしまった。すごかった。

 

所感

テスカトリポカ然り、自分は舞台がどんどん変わる「壮大!」という感じの小説が好きなのかもしれないと思った。

 

あと小説のレビューって何書いてもネタバレになりそうで、かといってそれを避けると何も書けなくてめちゃくちゃ難しい。

 

 

読んでよかった本2023 : 実用書編

世界インフレの謎

bookclub.kodansha.co.jp

なぜインフレが起こっているのかは、戦争ではなくコロナ禍の不可逆な行動変容とそれに伴うリソース確保によるものだと説明していく。知らなかったことも多いし、説明も論理的でわかりやすく読んでいて楽しかった。 インフレに対抗して賃金を上昇させるには?といえ話もあり、とても納得感があった。

会社という迷宮

www.diamond.co.jp

なんというか一文一文の濃度というか密度がすごかった。ちょっと読むごとに「うおお〜、、、なるほど〜、、、」みたいになる。パンチラインの嵐。

現代思想入門

bookclub.kodansha.co.jp 難しそうだなというイメージしかなかった哲学を、本当に面白い、と読ませてくれる本。なお読後に哲学者に興味が出て、参考文献にある哲学書を読んでみようとしたけど、1mmも理解できなかった。

DIE WITH ZERO

www.diamond.co.jp タイトル通りの本。いや本当その通りだなとなった。この本を読んで以降、清々しく消費できるようになった(?)

大規模言語モデルは新たな知能か

www.iwanami.co.jp 専門でなくてもLLMについてわかりやすく説明してくれる本。ディープラーニングの時の松尾先生の『人工知能は人間を超えるか』に近いイメージだった。 岡野原さんが語る将来の展望?みたいなところもとてもおもしろかった。

良い戦略、悪い戦略

bookplus.nikkei.com 戦略のカーネルは「診断」「基本方針」「行動」と、「戦略」とはなにか説明してくれる本。 カーネル以外だと9章の「戦略を立てるということは、選択や意思決定というよりは、設計することに近い」という話がおもしろかった。 事例もスターバックスNVIDIAなどそれぞれおもしろい。

訂正可能性の哲学

genron.co.jp 半分以上は装丁がきれいだったという理由で買ったのだが、めちゃくちゃ良かった。 もともとポパー反証可能性の考え方が好きだったのでそれもあって気になったのだが、訂正可能性という考え方は、今の世の中にも適用できるというか、今の世の中に必要とされている考え方なのではないかと思った。 続けて新書の『訂正する力』も読んでいるのだが、議論する時に「訂正する準備がある」というのは簡単なようで難しいなぁと思った。 ちなみに『日本の歪み』も読んだのだがこちらは個人的にめちゃくちゃハズレだった。

読んでよかった本2023 : 技術書編

読んでよかった技術書を紹介していく。今年の本ではなく、割と古典的な本が多かった。

レガシーコード改善ガイド

www.shoeisha.co.jp

「テストがないコードはレガシーコードだ!」という過激?な定義をしつつ、「とはいえ目の前にテストのないコードがあるんですがどうすれば、、、」という人のために、テストのないコードに安全にテストを書いていく方法をていねいに解説してくれる本。 OOP全盛の時代の本なので、今だったら別なやり方をするよな〜みたいな話はあるものの、それでもエッセンスとしては有用だったりする。もちろん今もそのまま使える手法もたくさんあって、

あたりはとてもお世話になった。(後者は既存のコードをテストで保護できている訳ではないので最終手段ではあるのだが)

言い回しがユーモラスだったり、「そうそうそうなんすよ〜(涙)」みたいになる文章も多く、筆者のファンになった。笑

単体テストの考え方/使い方

book.mynavi.jp タイトルは「単体テスト」だけど、「単体テストとは何か」の定義から始まり、「単体テストや統合テストの対象とするコードは何か」「対象とするためにはどうリファクタリングすれば良いのか」という話があったり、全然単体テストだけの本ではない。 モックの使い方に1章割かれているなど、これまでなんとなくあいまいにしていたことが体系だって説明され、その上で筆者のスタンスがはっきりとられている。体系だった説明をした上でスタンスを取ってくれると、「いやでも自分の状況だとこっちだな」とか考えが進めやすくて非常に助かる。 本当にいい本だった。

この書評(?)記事もすごくおもしろかった。 swet.dena.com

Webフロントエンド ハイパフォーマンス チューニング

gihyo.jp いい加減フロントエンドから逃げるのをやめないとな・・・と思ったものの、そもそもブラウザがよくわからないな・・と思い、同僚に相談しておすすめしてもらった本。 パフォーマンスチューニングとあるけど前半はブラウザの動きについて書かれていて、かといって重厚なわけでもなくとても助かる本だった。 わからない分野は何を読めばいいかわからん、みたいになりがちなので、こういう時わかってる人にオススメしてもらえるのは本当に助かる。

Real World HTTP 第2版

www.oreilly.co.jp これもフロントエンド駆け出すぞということで読んだ本。なんとなく知っていたことも多かったのだが、やはり穴も多く、そこをドンピシャにビタっと体系的に説明してくれる本で非常に助かった。 XHRがMicrosoft発祥というのが一番驚いたポイントだった。

.NETのエンタープライズアプリケーションアーキテクチャ 第2版

bookplus.nikkei.com

前に読んだんだけど改めて読んで「やはり最高だな・・」となった本。前半はソフトウェア設計の原則のようなことが書かれていて、後半以降はドメインモデリングやCQRSなどのトピックを扱っている。それぞれの説明が体系だっていつつも実践的で、例えば定期的に議論になる「DB を入れ替えたいなんてそうそう起きないよ」みたいな話は、「そんなこと実際はそうそう起きないよ」などと書かれていたりする。 「.NETの」という名前でかなり損している気がする。

JavaScript関数型プログラミング

book.impress.co.jp関数型プログラミングを学ぶ入門にいいよ」とこれまた同僚にオススメしてもらった本。JavaScriptとあるけど全然読めた。実際に書かなければ分かるようにならない気はするが、関数型プログラミングのエッ(センス)くらいは学べた気がする。 単体テストの考え方/使い方でも関数型プログラミングの考え方を利用していたりして、ここで読んだことが役に立つシチュエーションが結構多かった。

所感

レガシーコードと格闘するシチュエーションがあり、それ関連の書籍をたくさん読んだ感じだった。読んでみると、「こんな先人の知恵が・・・」となることも多く、もっと早く読んでおくべきだったなぁ〜となった。 また狙った訳ではないのだが、『レガシーコード改善ガイド』『単体テストの考え方/使い方』『.NETのエンタープライズアプリケーションアーキテクチャ』と、C#で書かれた書籍が多くなった。 あとはフロントエンド(に至っていないかもだが)関連の書籍も、今まで逃げてきた(?)分野だったこともあって、勉強し始めるとすごくおもしろく読めた。

そのほか読んでよかった本

買ってよかった2023

本以外の買ってよかったものを書いてみる。

マンションを買った。結構勢いで買ったのだが、すごく快適で、買ってよかったなぁと思っている。 買う時にいろいろ検討した結果、なんとなくマンションを見るのにハマって、軽い趣味みたいになった。笑

購入に至っては、購入経験のある頼りになる先人に聞いたほか、その人からのオススメで以下2冊を読んだ。

園芸用ホース

新しい家のベランダに水道がついているので、前までペットボトルに汲んではあげていた水をこれで直接あげられるようになってとても楽になった。 ホースは別にこれじゃなくてもいいんだろうけど、安くて使いやすくて今のところ気にいっている。

特に追加の道具も工具もなしで取り付け出来るのがいい
霧モード
シャワーモード
アイリスオーヤマ ホースリール 10m フルカバーコンパクトホースリール FCH-10MP

ダンボール捨てるやつ

ダンボールを捨てる時に、これに刺してゴミ捨て場に持っていくための道具。 これが革命的だった。自分は段ボールを捨てる時に縛るのが苦手で、ダンボールがずり落ちてしまったりしてそれがすごいストレスだったのだが、それを解決してくれる。カバンに入れて置けるサイズなので、ダンボールを出してそのままカバンにしまって会社に行くなども出来て素晴らしい。ダンボールのゴミ出しにストレスを感じている人にはぜひ使ってみてほしい。

コジット ダンボールのストック ゴミ出し これ一つで解決 持ち運びできる段ボールストッカー

Bose QuietComfort Ultra Headphones

ノイズキャンセリングヘッドホンを持っていなかったのだが、これはもっと早く買っておくべきだったと後悔した。ここまで変わるとは。。 SonyのWH-1000Xシリーズも考えたが、見た目が好みだったのでこれにした。最高。 www.bose.co.jp

THE CORONA UTILITY - CS001・NAVY 1POCKET SHIRT / Blue Chambray

図書館でおじさんがクタクタになったシャンブレーシャツを着ているのをみてなんかいいなと思い、いろいろ検討してこれを買った。 着まくっているのでいい感じにクタクタになってきた。 画像は以下より拝借

THE CORONA UTILITY - CS001・NAVY 1POCKET SHIRT / Blue Chambray

AXE5400 トライバンド メッシュWi-Fi 6Eシステム

家のWi-Fiをメッシュにしたいと思い買った。今までずっとNEC派だったのだが、会社の同僚にすすめられてスペックを見たところ圧倒的で、陥落して購入に至った。買ってみて思ったが、めちゃくちゃ強力なので、うちの大きさならメッシュにする必要すらなかったかもしれない。 www.tp-link.com

2022年の振り返り

去年の振り返りは公開が年をまたいでしまったので、今年は今年のうちに書き切りたいところ。

プライベート

娘が健康に育ってくれていることがすべてという感じ。 後述するが転職したこともあり、その有休消化期間中に以前から行きたかった京都旅行に行くことが出来た。 奮発して炭屋旅館という京都御三家と言われる旅館に泊まってみたのだが、これが最高だった。 部屋での食事がとにかく素晴らしく、本当に行ってよかったと思った。 また、市街地の中心部に位置しているため、娘を連れて長距離を移動せずとも観光が完結するのがよかった。 (ちなみに御三家の他の2軒も、すぐ近くにあるようだった) www.ikyu.com

仕事

3年勤めたスタートアップを退職し、旅行やレストラン予約のサービスを展開する企業に転職した。 転職のきっかけは、PjM的な調整の割合が増えてしまったことで、転職にあたってはエンジニアとしてプロダクト開発にコミット出来ることを軸に企業探しをした。 転職は ( Amazon ギフトカードに釣られて ) Findy というサービスを利用したのだが、自分についてくれたエージェントの方がとても良い方で、魅力的なオファーをいくつか頂くことが出来た。 転職後は、希望通りエンジニアとしてプロダクト開発に集中出来る環境で、同僚も社交辞令抜きに本当にいい人ばかりで、あとは自分が成果を出すだけ、という状況である。焦ってもあれだが、期待に応えるべく頑張っていこうと思う。

技術面

個人開発

転職の理由にもなった調整業務の増加の反発もあり、去年から始めていた個人開発だが、4月にサービスをリリースすることが出来た。

アルバイトの方などのシフトを自動で作成出来るアプリで、アプリは Flutter で、サーバーサイドは Go x Cloud Run で実装している。 試してみたかった技術をいろいろ使ってみることも出来、ユーザーからもちょくちょくフィードバックを頂けたりして、頑張って良かったという感想。 ただ転職してからはなかなか時間を使うことが出来ておらず、ユーザーに申し訳ない気持ちが募っているので来年はアップデートをしていきたいところ。

学んだ技術など

個人開発を通して以下のあたりを触れることができた。 こうしてみるとGoogle様様だなぁ、、

  • Flutter
    • Sembast
    • Firebase Auth
    • Admob
  • Cloud Run
  • Cloud Build
  • API Gateway
  • gRPC

また、今年もISUCONに出場した。結果はまたもや予選落ちだったが、過去一番突破の匂いを感じることができたと思う。 参加にあたっては、ISUCON本を一通り読んで、AWS上でも一通り動かして望んでみたのだが、これがISUCON対策以外の意味でもとても勉強になった。 特にキャッシュ周りやnginxの設定は自分でやってみたことがなかったので、わかりやすい題材で実践する機会になりとても良かった。 gihyo.jp

その他、転職期間に時間が空いたので、重めの本や、積んでいた本を消化することが出来て良かった。 読んだ中では、以下のあたりが特に良かった。

  • 実用Go言語
  • マスタリングTCP/IP
  • データ指向アプリケーションデザイン
  • A Philosophy of Software Design

読んでよかった本

  • コーヒー抽出の法則
  • 脳の大統一理論
  • 銭湯空間
  • 狭小邸宅
  • 地面師たち
  • テスカトリポカ
  • はじめての囲碁の教科書

ベストを決めるならテスカトリポカだった。相当ダークな内容だが、スケールが大きく、自分のゆかりのある土地も出てきたりして、リアリティがすごかった。 そのほか新庄耕作品にハマり、小説すばるで地面師たち2の連載を楽しみにしている。

買ってよかったもの

  • WESTOVERALLS 801S

シルエットが綺麗で、楽で、何にでも合うのでこればかり穿くようになった。 www.westoveralls-shop.jp

  • マグロ漁船の靴下

とにかく暖かい。在宅勤務の時はまずこれを履いて業務スタート。 shop.sagyo.jp

  • MWクリーム

娘が生まれたので香料付きのクリームは嫌だなということで、こちらを使うようになった。 手以外全身に支えて、伸びが良く、ベタつかないので最高。 mwcream.onsiteproject.jp

来年の目標

今年は本を38冊ほど読んでいたようなので、今年は50冊行きたい。 ブログも結局振り返りブログ以外に1件しか書いていないようなので、まずは5件ほどを目標に書いていきたいところ。

GCPのCloud Runでzerologを使う

Golangでログと言えばzapを使っていましたが、以下の記事で他の良いロギングライブラリを知ることが出来、せっかくなので他のものを使ってみることにしました。

moriyoshi.hatenablog.com

早見表を見て良さげだったので、特に何も考えずにZeroLogを選びました。

github.com

最近勉強がてらCloud Runを使っているので、この上で動かします。

つまりどころ

正直ブログにすることがないくらい、Readmeを見て速攻で使えてしまいました。

が、それでは困るので強いていうと、

デフォルトの使い方の通り

log.Info().Msgf("Received requests.")

などとしても、ログエクスプローラの画面上でSeverity(重大度)を表示させる事ができません。

f:id:woodcock:20220214015035p:plain

(この※マークのようなものはデフォルトの意味だそうです)

f:id:woodcock:20220214015516p:plain

そこでどのようにすれば良いかですが、ログメッセージに

{ "Severity" : "Info" }

と追加すれば良い模様。

ZeroLogでどうするかですが、これもReadmeにそのまま例が書いてあり、 Hookの仕組みを使えばOKでした。 これは、Hookが登録されたLoggerでログを出力する都度、そのHookのメソッドを呼び出してくれるというものです。

例としては(Readmeそのままですが)、こんな感じでHookのStructを定義しておいて、

package service

import "github.com/rs/zerolog"

type SeverityHook struct{}

func (h SeverityHook) Run(e *zerolog.Event, level zerolog.Level, msg string) {
    if level != zerolog.NoLevel {
        e.Str("severity", level.String())
    }
}

ログ出力時にHookを登録したLoggerを利用すればOKです。

logger := log.Hook(SeverityHook{})
logger.Info().Msgf("Received requests.")

f:id:woodcock:20220214020729p:plain