2022年の振り返り

今年も一瞬で終わった。実家でダラダラしながら恒例の振り返り。

仕事

上半期はチームリードしつつ、自分としてはそこそこヘビーなプロジェクトをやっていた。昨年の振り返りで「必要十分にリスクテイクしていきたい」的なことを書いていたが、それが見事にフリとなってリスクをテイクする機会に恵まれた。ポジティブシンキング。下半期からは関心の範囲が広がって、複数のチームを気にしている。業務がマネジメントに寄る一方で、片手間でもプロダクトに触れるプロジェクトを自身にアサインしたり、トラブルシュートでは手を動かしていた。個人としてコードを書きたいとかマネジメントやりたいとかの意図は特になくて、組織の中で必要なことをやれればよい。むしろ何が必要かを考えるロールになってきている。課題発見。人間たちが有意義かつ自律的に成果をあげられるかんじにしたい。

7月に東京オフィスから関西オフィスへ異動になった。物理出社はいまのところ週1回程度でそれ以外は自宅で仕事しているし、所属組織や役割はなにも変わっていない。そのため、距離の近いチームメンバー以外は自分が関西異動したことをほとんど認識していなさそう。異動になったのは公私さまざまな複合的要因によるものではあるが、少なくとも勤務先にとって私を関西に置く動機のひとつとしてエンジニア採用がある。関西でウェブサービスに関わる職を探している人間はぜひ声をかけてください。

生活

東京から京都に引っ越した。勤務先は大阪なので、大阪に住んでもよいのだが、京都が好きなので京都にした。引っ越す前は「大学時代を過ごした京都のイメージが美化されているだけでは」という懸念をもっていたが、完全に杞憂だった。自分にとって田舎と都会のバランスがちょうどよく、暮らしよい。観光客が戻ってくるまでの束の間の平穏かもしれない。

8月某日の深夜、深夜に突然の腹痛で動けなくなり、救急車で病院に運ばれた。盲腸だった。そのまま手術入院で、仕事も1週間くらいおやすみした。結果、私が突然いなくても問題なく業務が成立することが証明された。よかった。人生はいつなにが起こるかわからない。今回は幸いにも大したことなくてよかった。いまを楽しんだほうがよい。

バスケやボルダリングをまれにやるようになってきた。ただ、ずっとうっすら体調が悪いため、頻繁にはできていない。その意味でやはり健康がすべてを成立させる。いろいろ試行錯誤しているものの成果が出ていない。

M-1グランプリウエストランドが優勝した。まだ何もないころから単独ライブやトークライブにかよっていて、出演したメディアは網羅的に楽しませてもらっていた。よって嬉しい。関西にきてからは、お笑いライブはまだ2回しかいけていない。生のライブはやはりよい。

2023年

毎年、何もなかった気がするけど、いざ書きはじめてみると何かしら出てくる。来年は生活での変化がありそうだし、仕事でも成果を示せるとよい。ぼちぼちやっていきます。

おもしろかった本2022

今年は読んだ本を記録してみた。トータルで110冊を読んでいたらしい。その中から、おもしろかった本を記してみる。ネタバレはしない範囲で。

三体

www.hayakawa-online.co.jp

中国のSF小説。世界規模のベストセラー。宇宙とか時間とか物理とか。 とにかくスケールがでかい。科学っぽい話が好きな人は楽しめる。かなり緻密に描かれているが、完全に理解できなくても読み進めて、なんかスゲーとなればよい。無印、II(上・下)、Ⅲ(上・下)、X、0とシリーズとおしてかなりのボリュームがある。個人的にはIIまでで十二分に楽しめる。我々の日々の悩みのなんとちっぽけなことか。

夏物語

books.bunshun.jp

小説。人口受精による未婚の高齢出産について。主人公が様々な人に会う中で考えをめぐらせ、結論に向かっていく。 いままで読んだ小説の中で突出した表現力とかんじた。生まれて死ぬことを抉る。著者が意図したとおりに感情を導かれた感覚がある。 今年の下半期は完全に同著者にハマり、他にもいろいろ読んだ。全部おもしろすぎたが、中でもヘヴンあこがれも同等にすさまじかった。

塞王の盾

lp.shueisha.co.jp

歴史小説。有名な武将ではなく、石垣造りの職人に焦点をあてているところがおもしろい。最強の矛と最強の盾、みたいな図式で、少年ジャンプみたいなアツいストーリー。石垣造りのプロセスがプロジェクトマネジメントそのもので、主人公が体験したりぶつかったりする問題に身に覚えがありすぎた。

暇と退屈の倫理学

www.shinchosha.co.jp

人文書(?)。哲学研究者である著者が、暇と退屈を起点に人間のふるまいを読み解いている。 10年前の出版だけど、コロナ禍により人類が暇・退屈と相対し、最近になって再評価されたのかもしれない。哲学書に分類されるのに、問題提起から一連の流れで哲学だけでなく歴史や心理、脳科学などを踏まえて明瞭でストーリーを感じた。ミステリっぽさすらある。

傲慢と善良

publications.asahi.com

公式曰く恋愛ミステリ。 ストーカー騒動から婚約者の行方不明を追う主人公の視点で、ミステリ要素ありつつ人間の脆弱性を的確に突いてくる。うっすらわかっているけど触れてほしくない部分に踏み込んでおり、どろっとするしんどさで、読んでてもうやめてくれという気持ちになった。

HIGH OUTPUT MANAGEMENT

bookplus.nikkei.com

インテル元CEOがマネジメントについて書いた古典的名著。 この手の本は具体的すぎると陳腐でケースバイケースおじさんになるし、逆に抽象的すぎると実戦のしようがない思想本に落ち着いてしまいがちだが、本書はそのバランスが絶妙だった。マネージャの成果を簡潔に定義している。さらっと読んでしまったので折をみて再読したい。

まとめ

今年もミーハーに世に話題の本を雑多に読んだ。完全に趣味とわりきっており、コスパがよい。2023年もよい本に出会いたい。

2021年の振り返り

2021年も大詰めということで、例年どおり振り返りを記す。

エンジニアリング

端的にいって無をしていた。シャでは、春くらいから名ばかりのチームリードになった。もともと勝手にやってたムーヴに役割がついたというかんじで、特に何も変わってない。チームメンが自立しているので、私は特になにもリードせずに眺めたり邪魔したりする日々を過ごしている。ブログや登壇といった対外的なアウトプットもなく籠っていた。

プロジェクト管理を主にしていて、課題はいくつもあった。一例を挙げると、リスクテイク。開発プロセスが整っていくにつれて、ステークホルダーが増え、どうしても安心安全に倒したくなる。開発工数(特に上流工程)に跳ね、結果としてデリバリが遅くなりがち。トレードオフを認識して適切にリスクをとっていく必要があるが、うまくできていない。など。来年はできるかぎり一般化・言語化して出力していきたい。

ソフトウェアエンジニアの業界は35歳定年説が謳われて久しい。にもかかわらず、定年退職している人間が全然いない。いいかげんにしてほしい。技術的なキャッチアップに関して、昨年までは自分の無能みを嘆き学習せねばという焦燥感があった。最近は自分の能力を受け入れつつある。良し悪しあるが、前提として無理をしてはいけない(後述)。

休暇

土日祝+代休+有給休暇のフルコンボで9月いっぱい会社をお休みした。春から夏にかけて定常的な疲弊を自覚しており、本格的なしんどみに陥るのを予防するためメンテに入ったかんじ。現職についてから7年ほどになるが、その間では最長の休暇となった。とはいっても緊急事態宣言下だったので、特になにもせずおとなしくしていた。

本格的にしんどくなる前に休んだほうがいい。が、それができたら苦労しない、というのも大いに理解できる。ソリューションとしては、定常的かつ自律的な環境整備が重要になってくる。このあたりについては自身の体験を踏まえて別の機会に書きたいと思っている。

趣味

お笑いもあいかわらず見ていたが、ライブに行く頻度はかなり減った。M-1グランプリ2021は行列の先頭*1みがマシマシで最高だった。本記事を書くにあたり昨年の振り返りを読んだところ、ファイナリストのうち初進出のメンバーを予想で挙げていた。来年も楽しみ*2

M-1グランプリ2021では(決勝進出経験者を除くと)シシガシラ、黒帯、ランジャタイ、キュウ、ダイヤモンド、ダイタク、真空ジェシカモグライダーロングコードダディ、滝音、コウテイあたりが活躍しそうと予想しておく。

また、年末駆け込みでボルダリングを再開した。自分の身体能力の衰えをつきつけられてつらい。それでも楽しい。心情の変化として、一人で登るだけでなくだれかと一緒に登る楽しさを以前より感じる。来年は軽率にお誘い合わせたいのでよろしくお願いします。そして2級を落とせるまでになりたい。

生活

結婚というライフイベントがあった。配偶者氏は私と対照的に元気いっぱいであり、節々で助けられている。それに伴い、引っ越しをした。引っ越しを機に、いくつかの家具家電をリプレースしたことで、生活が豊かになった。詳しくは買ってよかったもの2021というエントリに書いた。

基本的に在宅勤務していたこともあり、勤務先の人々や友人関係でもほとんど知られていない。機会があった人々に伝えるとおめでとうと言ってくれて、祝われるのはいいものだなと思うなどした。ウィッシュリストを公開する。配偶者氏と欲しいものについて改めて会話したが、特段なくて困った*3*4


今年関わってくれたみなさま、ありがとうございました。来年もよろおね。

f:id:kyabatalian:20211231113507j:plain

*1:K-PRO主催の大型ライブ

*2:あえて予想はしない

*3:欲しいものがほぼ必要なものと同義なため、都度買っている

*4:苦肉の策としてアマギフを載せた、あとは自分の個人的な本

おもしろかった本2021

最近、読んだ本をブクログに記録しはじめた*1*2。とりあえずいま自宅にある紙の本を登録した。10月の引っ越しでかなり処分したため、ほとんどはそれ以降に買った分になる。せっかくなので、ジャンルごとにおもしろかった本を示す。

技術書

www.oreilly.co.jp

年始に読んだ本書が逃げ切り。副題に分散システムとあるが、その前段としてのデータベース自体の解説だけでも一冊の本としてよいくらい価値がある。リファレンスも豊富。

そもそも今年は技術書をあまり読めなかった。技術に対する関心が緩やかに減衰しているのを実感しており、危機感を覚えている。実際、このときに読んでPoCしてみようと思っていたことが一年たってもできていない。まあそれはそれで受け入れるしかないのかもしれない。

一般・ビジネス書

bookclub.kodansha.co.jp

日本社会における雇用環境の現状と成り立ちを、エビデンスを示しながら解説してくれている。タイトルの印象よりも雇用にフォーカスしていて、特に各企業の人事・採用に関わる人々はおもしろいのではないだろうか。例えば、日本の雇用環境を特徴づける新卒一括採用という仕組みが、どういう経緯で成立してきたのか、など。

今年はいわゆる自己啓発書も含めて、一般書を適当に選んで適当に読む、ということをけっこうやった。一部界隈ではポルノと揶揄されるように、特に有益性があるわけではないが、なんかやった気になって気持ちが楽になるという効能がある。

文芸・小説

books.bunshun.jp

一番好きなジャンルはミステリで、本作はそれに該当しない。自分は小説を読む目的として、感情を揺さぶられたい、みたいな動機が大きいのだけど、その意味で一位だった。自分がいかに平凡で正常でめぐまれていることか。

どんでん返し系のミステリが好きで主に読むのだけど、今年読んだ中だとイニシエーションラブ(乾くるみ)medium 霊媒探偵城塚翡翠(相沢沙呼)がよかった。

マンガ

www.akitashoten.co.jp

ずっと気になっていて今年の春頃に完結したので、Kindleで一気に読んだ。多様性とは。読後にみるYOASOBIのPVが刺さる。

完結していないマンガを新たに読み始めるのがそろそろしんどくなってきた。加齢が著しい。ベルセルクの最後にはついぞ立ち会えなかったし、Drコトーやハンターハンターも完結を迎えられるのか不安になる。


他者から本をオススメされるのが好きなので、軽率に薦めてください。上記からもわかるとおり、ジャンルは問いません。

*1:https://booklog.jp/users/kabaome

*2:マンガはキリがないので未掲載

買ってよかったもの2021

2021年に買ってよかったものを以下に示す。

Fitbit

www.fitbit.com

健康を管理するにあたり、これまで「計測」という重要な要素が欠落していた*1。ソフトウェアエンジニア失格である。

バッテリが長持ちする、睡眠時間が計測できる、Suicaが使える、通知がみれる、あたりを選定条件とした。最近は買い物もだいたいSuicaで完結するし、「スマホをポケットに入れておきたくない」というモチベーションが常々あったので、解消して快適。

日本語が貧弱。通知が文字化けしたり、時計盤の曜日部分が画面からはみ出したりする。ので英語設定で使っている。今後のアップデートに期待したい。コミュニティやネットワーキングの機能的なのもあるっぽい。まったく使いこなせていない。SuicaなしでよければXiaomiのMi bandがコスパ最強ぽいので、計測したい方はどうぞ。

HHKB

www.pfu.fujitsu.com

長らく使っていたMiSTEL BAROCCO MD600の調子が悪くなってきた*2ため、購入した。

使い始めて一ヶ月ちょい経った。押し心地も音も気持ちいい。生産性に寄与しているかはよくわからん。キー配置は独特で、ノートPCの付属キーボードをたまに使うときミスるようになった。もっと使いこなしてドヤりたい。

ドラム式洗濯機

kakaku.com

縦置き洗濯機と比べると価格がエグく、コスパに懐疑的だったが、使ってみるともう前には戻れない。洗剤の投入と干す手間がなくなってアテンションをはらなくてよくなった。タオルとかもふわふわになる。配偶者氏の親族から結婚祝いとしていただいた。

ルンバ

www.rentio.jp

i3+モデルをRentioでレンタルしている。i3+はゴミ捨てまで自動化されていて、都度掃除する必要がない。またこれも言い尽くされているが、副次効果として、ルンバが行動しやすいように部屋を整頓して保つ意識になる。思ってたより綺麗になるが、部屋の隅やルンバのサイズ上入り込めない箇所は当然だがゴミが残る。ハンディな掃除機で補完する。

ポップインアラジン

aladdin.popin.cc

天井の照明に設置するプロジェクタ。もともとテレビをほぼみずにアマプラとかしかみてなかった*3ので、いっそプロジェクタにしようと思い立った。ニトリのロールスクリーンに投影している。設置場所をとらないし、調光照明も兼ねているという観点では実質他に選択肢がない。某氏から結婚祝いでいただいた。この機会にNetflixにも加入してしまって沼りつつある。

ユニクロのもこもこのやつ

www.uniqlo.com

暖かいし軽いし安い。部屋着として一生着ている。

投信

emaxis.jp

ずっと継続して買ってるので、今年特に何ということはない。お金周りはさっさと適当にはじめておくのがよい。よくわからんというひとは、本屋で平積みされている簡単そうな本*4を一冊買って読めばだいたいわかる。


はてなのブログの今週のお題「買ってよかった2021」で投稿してみた。 いままであまり物欲がなく浪費が苦手だったが、今年の後半はいいかんじに浪費できた。来年も浪費していきたい。

*1:指標が体重くらいだった

*2:左右の接続が断続的に切れる

*3:Fire TV Stickを使っていた

*4:帯に「稼ぐ」「お金持ち」という文言や芸能人の写真が印刷されている本は避ける

壁アドベントカレンダーの壁

壁アドベントカレンダー2021、最終日の記事。

adventar.org

本記事をもって今回も無事完走を迎えることができた。よかった。2015年から隔年開催しており、今回で4回目となった。毎回最終日は私がまとめ記事みたいなものを書いていたのだが、面倒なわりにだれにも読まれていない気がするので、今年はやめておく。かわりに、壁ACに関するツイートを見つけた範囲でまとめておいた。

togetter.com

そしたらなんかイチオシにまとめられていた。

素敵らしい。よかった。

同僚らから「壁アドベントカレンダーって、あれ何?」と聞かれることがたびたびあるが、答えられたためしがない。何かという問いに対して答えがない。undefinedな存在を許容し、時にはその壁を超えてみるのも人生の一興である。

特にこれ以上は書くことがない。次回があるとするなら2023年、第5回にして10周年となる。今回執筆した各位および関心を寄せつつもエントリに間に合わなかった各位は、再来年に向けて各々の壁を究めておいてほしい。

f:id:kyabatalian:20211220230404p:plain

『データ指向アプリケーションデザイン』を読んだ

すでにほぼ出社しなくなっていた数ヶ月前、久しぶりにオフィスで会った同僚たちと雑談していて、本書の話題になった。「おもしろかった」「かばたが好きそう」と言われたので、気になって即購入即積ん読だった。読もうと思っても積ん読にマンガがスタックされていくのでなかなか着手できずにいたが、このたび無事に表紙を開くに至った。

www.oreilly.co.jp

3部構成、12章構成。各章ともに、まず全体像を示した上でそれぞれの原理的な説明からはじまり、そのあとにユースケースや固有のソフトウェアを紹介する流れになっている。また、全体としてもひとつの大きな流れに沿って展開されていく。例示もケースごとに独立してミニマムに示されており、たいへん読みやすくおもしろい。が、ボリュームがすごく、自分が分散システムの知識、とりわけ合意など分散システム自身の実装を経験していないため、途中から理解が追いつかず意識が途切れた。悲しい。一気に理解しようとするものでもないとおもうので、また関心が湧いたら戻ってきたい。

例によってメモしながら読んだが、ボリュームが膨大になってしまった。これを載せると著作権的にもアウトな気がするし人間が読める状態ではないため、部ごとの感想を書いておく。それぞれの部が独立した一冊の技術書になってもいいレベルの濃度だった。

第Ⅰ部 データシステムの基礎

サブタイトルをみればわかるが、本書のメイントピックは「分散データベースシステム」とされている。第Ⅰ部ではその前段として、個別のデータベースシステムがどういう原理で動いているかを取り上げている。データベースというソフトウェアに求められる特性からはじまり、データモデルやクエリの概要、またストレージ・メモリにおける物理構造、それらの挙動について、本部がメインでもいいのではというレベルできれいに説明されている。

信頼性、スケーラビリティ、メンテナンス性に焦点を当て、それぞれどのような要求なのかを述べている。本筋とは違うが、メンテナンス性の低いシステムを「巨大な泥の玉」と表現しており、辛辣すぎるとは思いつつ決して大げさではないし、はじめてきいた表現でおもしろかった。

www.laputan.org

データモデルについては、階層モデル、リレーショナルモデル、ドキュメントモデルを挙げている。後者2つは互いに競合かのように謳われることがある*1が、本質的にはスキーマオンライトかスキーマオンリードの違いでしかなく、いわば静的型つき言語と動的型つき言語の違いのようなものと説明されている。この領域についていろいろな書籍や記事を読んだが、この説明がもっとも端的で実態を説明できているとかんじた。また、実際にはインターフェイスとしてリレーショナルモデルとドキュメントモデルは互いにサポートし合うような状態になってきている*2。さらに、多対多の表現としてプロパティグラフモデルとトリプルストアモデルについて、CypherやRDF、Datalogといった実装を挙げながら説明されている。表現としてはシンプルなだけに、その意義や解決したい課題を理解するのが難しいことが多いが、本書ではそこが冗長にならず必要十分に説明されていると感じた。

ストレージの章もおもしろかった。「情報を記録する」仕事のもっとも原始的な形式のひとつとしてlog-structuredなデータ構造があり、SSTableを用いたLSMツリーが一般的にある。他方でBツリーが普及し一般に利用されてきている中で、メモリ容量の拡大とSSDの普及に伴い、LSMツリーが再び脚光を浴びているっぽい。これは多くのSSDがファームウェア的にlog-structured相当のアルゴリズムを使っており相性がいいためらしい*3。このあたりのレイヤは勉強不足で理解しきれなかったが、おもしろそうなので別の機会に調べてみる。

The flash translation layer in a modern, full-featured SSD resembles a log-structured file system in several important ways.

第4章では、データのエンコーディングとそれに伴うアプリケーション観点での課題について説明されている。データのフォーマットとしてどのような表現があるかが実用によりつつ広く紹介されていて、このあたりは本書のバランスが非常によいところとおもった。現在のアプリケーションはほとんどがデータ指向であり、暗黙的にデータの表現に束縛されていることは体感としてもあるし、データのモデル化と設計がアプリケーションの進化にいかに重要かが伺い知れる。

第Ⅱ部 分散データ

データシステムを複数のマシンに分散させたい欲求がある。高負荷に対するスケーリングを考えたとき、垂直スケーリングと水平スケーリングに分類でき、主に後者の水平スケーリングにおいて、シェアドナッシングアーキテクチャを前提としてレプリケーションとパーティショニングを主に掘り下げている。

レプリケーションにおいては、「複数のノードがある中で、意思決定者(=リーダー)はだれか」という基軸で、さまざまなアルゴリズムがある。もっともシンプルには単一のリーダーがいて、レプリカはそれを信じればよい。リーダーの障害時にはレプリカのだれかをリーダーに選出する。この場合においてもさらにレプリケーションの手法がさまざまある*4。ちなみにPostgreSQLはバージョン9.0でWALを送信する物理(ストリーミング)レプリケーションがサポートされ、バージョン10でステートメントを送信する論理レプリケーションがサポートされている。

www.postgresql.org

リーダーレスレプリケーションはクオラムの仕組みを説明しており、関心のあるところだった。この手の説明は何度読んでもわかったようなわからないようなダメな状態になる。実装するしかないのかもしれない。平行書き込みを検出する必要があるが、平行とは何かを突き詰めると特殊相対性理論に行き着くらしい。怖い。

パーティショニングも関心のある章だった。パーティショニングの目的はデータとクエリの負荷をノード間で均等に分散させることであり、不均等な状態をスキュー(skew)と呼ぶ。これをなんとかしたい。データを投入するときの分割の方法、データ投入後のリバランス、リクエストのルーティングと、バランスをとる戦略が紹介されている。分散したパーティションへの書き込みをどう保証するかという問題が、次章へと繋がっている。こういった流れが本書では明示的に説明されていていい。

トランザクションの章では、一般的に知られるACIDや分離レベルについて本書の文脈を踏まえつつ改めて説明されている。トランザクションの実装に触れられている書籍はなくはないが、本書は歴史を踏まえてその必要性と価値から書かれている。例えば、SQL標準は1975年のSystem Rに基づいており、スナップショット分離という概念がなく、実装依存になっている*5。理論と実装の橋渡しが丁寧にされており、初学書を読んで混乱した人にも必要十分な情報が提供されている。SSIのところはどこかでちゃんと理解したい。

okachimachiorz.hatenablog.com

第8章と第9章はここまで積み上げてきた説明の集大成であり、本書のメイントピックであるようにかんじた。第8章では分散システムの問題にフォーカスし、1章をかけて問題定義をしている。レプリケーションや、パーティショニングや、トランザクションといった問題は、相互のコミュニケーションが絶対の信頼性を持たない実世界において、どのように単一の状態に収束するかという命題であり、つまりは「合意」という等価な目的を目指すものである。論文をはじめとして合意アルゴリズムそのものの説明や実装ケースの紹介は世に溢れているが、本書がもつ価値のひとつは、この問題の導出に至るまでの精緻な積み上げにある。とおもう。合意アルゴリズムさえあれば、それがアトミックなブロードキャストを提供し、それによって耐障害性を持ちながら線形化可能な操作を実装できる。

第Ⅲ部 導出データ

ここまでは主にOLTPを前提としてきたが、バッチ処理とストリーム処理にも触れている。バッチ処理に関しては、Unixツールによる分析処理からMapReduceによる分散分析環境を説明している。ストリーム処理に関してはもなんか書いてある。このあたりになると集中力が完全に切れ、各章の冒頭くらいしか読んでない。仕事でもプライベートでもこれまで必要とすることがなかったから、関心が持てない。また関心を持つことがあったら読みにくる。

最後の章では、データベースの将来について著者の見解を述べている。ここまでくると目が滑って限界。お腹すいた。いまを生きるに精一杯な自分にとってあまり関心がないのだが、倫理的な側面にも触れられていて、面白そう。いま必要なことからやっていきましょう。

*1:NoSQLがでてきて、NewSQLがでてきて、など

*2:リレーショナルモデルのPostgreSQLやMySQLはXML/JSONをサポートしているし、ドキュメントモデルであるRethinkDBはリレーショナル的な結合をクエリ言語でサポートしている

*3:https://lwn.net/Articles/353411

*4:ステートメントベース、ログベース、行ベース、トリガベース

*5:PostgreSQLではリピータブルリード、OracleではSERIALIZABLEと呼ばれている