2023年の振り返り

ビールを飲みながら今年の振り返りを書きます。

家族

今年の4月から2人の娘達がちょい地方の大学に入学することになり一人暮らしを始めた。それに先立って3月半ばに家族で現地に行ってアパート・マンションを探しに行ったのだけど、ちょい地方なので物件が少なめで主だった物件は既に契約済みで「熱心なご家庭だと合格発表前日に現地入りして、合格だったら朝から良い物件を契約してくんですよー」と不動産屋さんのトークを聞きながら「熱心じゃなくてすまん…投機的現地入りが出来ずにすまん…」と心の中で泣いていたりした。諦めかけていたところ、3月という時期もあり急遽空き物件が発生してギリギリ路上生活大学生という面白そうなスタートを回避できたのだけど、単純に運が良かっただけなので地方一人暮らしチャレンジ難易度高い…と実感していた。

今まで一緒に暮らしていた子供達が目の届かないところで離れて暮らす、という状況になかなか慣れなくて特に初期の頃は「事故にあうんじゃないか…」みたいな心配が多くて割と疲れていた。後半は慣れてきた(日常生活が送れる程度には)ので、まぁ人間色々慣れるものですね、という。

中学生長男氏は既にプログラマの三大美徳であるところの一つLazinessを100%体現していて、ある意味将来有望そうな雰囲気をかもしだしつつやはり内申点的には明らかにヤバそうなので、高校受験的にどうしたものかと。個人的には、懸念と提案を伝えておきつつ「自分の人生なので選択は任せるよ」というスタンスなのだけど、まだ中学生だしもう少し口出しをすべきか…みたいな悩みはちょこちょこ発生している。何が正解かわからないことだらけで人生は面白い。

仕事

11月で www.scalar-labs.com 二年目に入っていてあっという間の一年間だった。Scalarでは "rigorous" さを会社(特にプロダクト開発かな)において重視していて、僕の「design/code reviewで改善点や懸念(特にコーナーケース)を共有/議論しておきたい」という性格にも合っていて相変わらず快適に過ごしている。自分の開発としては、割とchallengingな楽しいタスクを貰っているのだけども、技術的な検証の連続で(主に性能面)PoCが続いており実質進捗0とも言えるので、来年はなんとか価値を出せるように頑張りたい所存。

また、12月には会社で
scalar.connpass.com
というmeetupを開催した。発表内容の充実っぷりはさることながら、元同僚や久しぶりの方々と議論・懇親ができたので非常に有意義であった。専任スタッフや登壇者の皆様ありがとうございます。

趣味プログラミング

今年の前半に、OCamlで書いたtoy Raftのlog entry管理をSQLiteベースに書き換えて、整合性を改善したり実装をシンプルにしたりした。未だにlog entryのcompactionが実装されておらず、これが無いと長時間使うのは難しいのだけど、まぁtoyということで気が向いたら実装することにする。

それ以外はほとんど何も書いていなくて、やったことといえば最近 Fluencyの潜在的なdata loss問題を修正 くらい。ちなみにこれに先立ってFluent Bitを使ってベンチマーク取るようにしたら(以前はFluentd)異常に性能が上がっているようで驚いた記憶がある。

あまり開発していない代わりに何をやっていたのかというと、以前から気になっていたTLA+ (と PlusCal) で遊んでいた。具体的に言うと、お仕事でやや複雑なものを設計・開発していてその正しさを確認しておきたいという気持ちが高まっていたので、遂に手を出したという感じ。個人的には言語仕様的にはイマイチな気がしていて過去tweetを見ると苦労していたっぽい。

その後、
Spin - Formal Verification を試したもののCのsubsetな気がしておりやはり厳しさがあり、現在P言語をちまちまとやっている。

書きやすさ的には上記の2つに比べるとかなり洗練されていて使いやすい。module操作が割と強力な気がするので、ライブラリさえ揃えば普通の開発向けにも選択肢としてありそう。

(ビール二本目を開封

それ以外

小説

今年もあまり読んでいないけど、前々から積んであったプロジェクト・メイル・ヘアリーを読んだ。ガツンと来る感じはなかったけど、全体的に面白かった。個人的にはストラット推し。彼女にフォーカスしたスピンオフ作品とかあったら即買う。あとはカササギ殺人事件読んだ。なかなか大胆な構成でほぇーってなってた。

アニメ

葬送のフリーレンのアニメ化はどうなるかと思っていたが、個人的には原作よりも楽しめるものになっている気がする。

後は ぼっち・ざ・ろっく! もとても良くてアジカンを聞き直したりしていた。呪術廻戦も良かった。特に前半(後半は真人が騒がしくて辛かったので…)

映画

とか Zero Dark Thirty は面白かった。「君たちはどう生きるか」は観に行ったけど「この混沌とした展開から俺の表現したかったことを読み取れ!」的な作品はあまり好きではないなぁという感じ(でも家族は楽しんでたので良かったものとする)

ゲーム

ティアキンは思ったよりボリュームがあって時間が溶けてた。よく出来てると思うけど、もう一周するかというと迷う。

Slay the SpireはSilentでA19挑戦中。ピラミッドが無いときのクリア率が激低なので悲しい。同僚氏が全キャラでA20Hをクリアして自慢してくるので、来年こそはA20Hをクリアしたい。


全体的には、平和な一年だった。来年も、適当に頑張っていきたい。

2022年のふりかえり

【億万長者の挑戦】正体隠して1億円稼げ!無一文からの90日間ビジネスサバイバル | Ep1. 起業チャレンジ!覆面ビリオネア - YouTube のBBQフェス回を観た後でこれを書いています。面白かった。大変だなぁと思って観てたけど、割と問題点が明確(個人の能力や振る舞いに起因している)で意外と対応しやすいかもとボーっと考えてました。

お仕事

> 「TDのサービス開発・運用を全体的にみたときに頑張ったほうが良さそうなところ」をサポートする

今年前半は、去年の振り返りで書いてたこれに取り組んでました。上手く改善できた点もあれば、力不足で至らなかった点もあったなぁという感想。色々と現場で情報収集してみるとlow-hanging fruitが転がっていて、その辺の優先順位と依存関係を整理して着手してもらう、というのは割と効果的だったような気がするし、あとは技術的な問題を整理して道筋を立てるのもある程度上手くいった感はある。逆に、組織間の異なる価値観や優先順位のなかで落としどころを探りつつ大きな方向性を調整、みたいなのはまだまだ自分のレベルが低いなぁと反省。Senior Principal Software Engineerという大層なtitleと、この辺の能力のギャップで悩んでいた気もします(多分 "Senior" がつく前から)。あと、ふと気が付くとTreasure Dataで9年半弱過ごしてました。TD、初期のころは「技術的な正論(と自分が信じるもの)で殴りあう」「システムの安定性改善よりも機能追加の速度が劇的に速い」というスリリングな環境(個人的には非常に楽しめた)でしたが、現在は組織的・システム的に成熟してきていて色々サポートも厚く、かなり働きやすい環境になってきました(エンジニアにはお勧め)。ただ、自分の年齢的な残り時間も踏まえるとこの辺で次の挑戦をすべきかなとも考え始めました。

で、今年後半(10, 11月辺り)、某分散DB勉強会で以前御一緒していた山田さんがCTOをされているスタートアップ 株式会社Scalar | Making Data Management More Reliable に移籍しました。開発内容(OLTPなDB transactionまわり)・会社の雰囲気・仕事の進め方は僕と非常に相性が良いと感じていて、もう半年か一年位在籍しているかのような感覚です(実はまだ試用期間中…) 一日の過ごし方は、10am過ぎに10分弱のdaily standup meetingがあり、その後は開発に専念、で相談事があるときは必要に応じて都度ミーティングを入れる感じです。二週間に一度、DB/分散系/Byzantine fault系の論文読み会があり、アカデミックな経歴を持つメンバーに質問できるので非常に有難い。


また、二週間のスプリント単位で進めていて、最終日に成果報告的なデモ(あれば)と振り返りをしています。 皆さん謙虚さと穏やかさが凄いので、僕のような雑なエンジニアでもなんとか快適にやっていけてる。

趣味プログラミング

新規物は作っておらず、GitHub - komamitsu/fluency: High throughput data ingestion logger to Fluentd, AWS S3 and Treasure DataUNIX domain socket対応入れたり、OCamlで書いたRaftを盆栽的手入れしたりしてました。特に今年後半はデータベーストランサクションまわりのお勉強で時間が解けがち。来年も前半はしばらくそんな感じかなぁ。でも来年は、自作Raftにgroup commit入れたり、missing logのキャッチアップの最適化

If desired, the protocol can be optimized to reduce the number of rejected AppendEntries RPCs. For example, when rejecting an AppendEntries request, the follower can include the term of the conflicting entry and the first index it stores for that term. With this information, the leader can decrement nextIndex to bypass all of the conflicting entries in that term; one AppendEntries RPC will be required for each term with conflicting entries, rather than one RPC per entry

は入れておきたいです(chaos test的にノード落とした後、ここで時間食うので)。ちなみに、現在EPaxosの論文読んでるけどconflict多めなときに性能でなさそうな印象がある…

ゲーム

スプラトゥーン2と3はなんとなくだらだらとやってました。あまり長くプレイしてるとストレスが溜まったり、惰性でプレイするようになって面白くないまま時間が溶けることがあるので、早めに切り上げるようにしてます。Slay the Spireも細々とアセンション上げを続けてるけど、サイレントで手数多めな構成でタイムイーター戦でボコられる、という負け筋を何とかしたい… Into the BreachとInscryptionはほぼ積読状態で来年はちゃんとプレイしたいなぁ。現在はDeath Strandingをプレイ中で、最近のゲームプレイしてないマンとしては「最近のゲーム凄い…」という感想(浅い…)。

古本屋で見つけた宮部みゆきの1990年代あたりの作品(火車・魔術はささやく、等)をなんとなく数冊買って読み直したり、森博嗣の初期作品に手を出したり。チームトポロジー読んだけど、用語集・事例集的な資料としてはアリ、でも心には響かなかった。他にも適当に活字を読んだ気がするけど全体的にあまり覚えてないですね…

マンガ

アフターゴッド、日本三國、血と灰の女王、は相変わらずWeb連載を読んでます。良い。あと、葬送のフリーレンは引き続き購入中。紛争でしたら八田まで、は地政学的な読み物として買ってはいる…が物語としては個人的にはしっくりこない(ので、それ系の専門書籍に切り替えたほうが良いのかも)。あと、ベルセルクゴールデンカムイNEW GAME!は無料期間があったので一気に読み返しましたがベルセルクはやはり蝕の後あたりまではやはり凄い。

アニメ

幾つかメジャーどころはリアルタイムで観てました。リコリス・リコイル、SPY×FAMILY、チェンソーマン(評判悪い情報をたまに目にするけど、緩急の緩な場面はよくできてると思う。戦闘シーンは騒がしくて辛いけど)とか?あと、8-9月で初コロナでダウン・自宅待機してたときに今更ながら、輪るピングドラムを観ました。凄い。ぼっちざろっく、もとても良かった。バンド活動欲が刺激される。

映画

基本、アマプラのもうすぐ見放題終了カテゴリに出てきた作品をたまに観る、という消極的姿勢でした。裏切りのサーカスゼロ・ダーク・サーティ女神の見えざる手、マネー・ショート、J.エドガー、とかは面白かった。話題作・最新作も幾つか観たけどあまり印象に残ってない…(呪術廻戦 0 は良かった)

と、今年について思い浮かぶことを適当に書き出してみました。来年もがんばるぞー

2021年のふりかえり

今年も完全にリモートワークで引きこもってて同僚とのランチや勉強会の懇親会での雑談が無いので、去年に引き続き生存確認的な意味合いも込めて雑に今年の振り返りをしたいと思います。

お仕事

Treasure Data 9年目です。

去年から Digdag – Open Source Workflow Engine for the Multi-Cloud Era ベースで開発・運用されているWorkflowサービスのチームに移ってました。
Digdagはタスク間の依存関係や個々のタスクの状態の更新、スケジュールされたタスクのキューイングなどをPostgreSQLでがっつり管理しており、排他制御や楽観的ロックがにぎやかで処理性能や潜在的な性能面でのボトルネックが把握しづらい感がありました。特に、どこまでならスケールアウトできるか?という点はサービスを運用する以上把握しておきたい。で、今まで取得できていなかった遅延測定のためのメトリクスを足したり、指定された時間範囲で実行されたワークフロー群の遅延情報のサマリを取得するツールを書いたり、各種設定&クラスターサイズごとのベンチマークを自動的にとるツールを書いたり、ということを細々とやらせてもらってた。最終的には、開発側で気づいていなかった遅延がある程度存在していて(Digdag単体での性能限界の指標になる)その遅延を劇的に減らせたし、どこまでスケールアウトで対応できるか把握できたので良かった気がする。
あとは割と自由に安定化やバグ潰し、改善系のタスクに取り組ませてもらいました。

で、今年の9月辺りにWorkflowチームから移動してレポートラインがCTOのNahiさんに代わり「TDのサービス開発・運用を全体的にみたときに頑張ったほうが良さそうなところ」をサポートすることになりました。前VPoEと話してた時に「お前はPrincipal Engineerなんだから特定のサービスだけ見てないで、TD全体を見て技術的な問題点見つけて飛び込んでいけ」(実際はもっと丁寧で穏やか)的な提案をされてて、確かにそのほうが貢献できるっちゃあできるなぁと思っていたので、Workflowチームのタスクが一区切りしたタイミングで移動。今回はUKのチームをサポートしつつAWSのCDK、Redshift、Aurora、Lambdaあたりと格闘してました。来年はどうなるのか楽しみ。

先月、太田さん・古橋さんが日本にいるタイミングで社内BBQがあって参加したけど、みんな元気そうで良かった。ビール取りに行く際に誰かとすれ違うたび近況報告会が始まるので非常に楽しいものの肉を食べる時間が無かったのはちょっと残念。

趣味のプログラミング

既存のプロジェクトのメンテナンスをしていたくらいで特に新しいことしてない… 古いRailsで書かれてた親類向けのWebアプリをKotlin + Ktor + Exposedで書き直して、すべての運用をAnsible上にのせたけど、技術的には粛々とやってただけな感じ。去年つくったNES emulatorが開発体験的にはかなりアツかったので、来年はOSやろうかなぁ。もしくは以前作った自作Raftが論文読みつつ書いてて今見直すと設計的にかなりイケてないので、一から書き直したい気持ちもある… まぁ来年適当にやるでしょう。

ゲーム

Outer Wilds

不親切度が高くて万人受けしなさそうですが、個人的には良かった。エンディングまでたどり着けたときはかなり感慨深かった。攻略サイトはガンガン見ました。

Slay the Spire

積んであったのに気が付いて始めてみたら、面白かった。アイアンクラッドとサイレントでアセンション 0の心臓を倒して、いまディフェクトで挑戦しているけど、ディフェクトでの勝ちパターンというか軸がまだつかめてない。来年はアセンション20を目指したい。ただ、時間が溶けるのがやばい…

スプラトゥーン2

引き続きスプラトゥーン2をボケ防止的にちょこちょこやっててSとAを行ったり来たりしてます。勝ち負けで一喜一憂しなくなって味方の面白ムーブで逆転負けしてもそれを楽しむ境地に達しつつあるので、かなり精神面で成長した気がする。

World of Tanks (Blitz)

スプラで心折れたときに少しやってみた。復活しない点は生存重視な自分としては相性が良いものの、スピード感があまりないので最近はやってない。あと戦車愛が無いのでそれほど刺さらなかった。

漫画

漫画アプリで少しづつ読んで読み終えたのはファブル、東京スワン、センゴクオールラウンダー廻BECKホーリーランドクレイモア辺り。ファブルは頭一つ抜けて面白かった。連載中のだと、葬送のフリーレン、血と灰の女王、アフターゴッド、日本三國、SPY×FAMILY、腹腹先生、推しの子、働かないふたり、マイホームヒーロー、ハコヅメ、等は購入したりWebで読んだり。怪獣8号は最近メリハリが無い感あるので、読み続けるか迷い中。マイホームヒーロー、ハコヅメは漫画アプリで読んでるけど後で購入しそう。

あと、
www.amazon.co.jp
は本好きとしてはとても良かった。

アニメ

去年ほど観てない。Vivy -Fluorite Eye's Song- は結構よかった。あと、ODDTAXIも。最近は、攻殻機動隊 STAND ALONE COMPLEX を見返してるけど素晴らしい。

健康

健康診断で悪玉コレステロールの数値が基準値超えてることが分かったので、休日に一時間半程度の散歩をするようにして、室内で本読みながらだらだらエアロバイク漕ぐようにしてます。コレステロールは血液検査が必要でこまめに測定できないので、代わりに自宅で測定できつつ何かしらの関連がありそう(期待)な内臓脂肪レベルを見てますが、7.0から5.0まで下がったので何かしらの効果はありそう。まぁ来年の健康診断で勝負。

と、今年について思い浮かぶことを適当に書き出してみました。来年もがんばるぞー

2020年の振り返り

普段、年末の振り返りブログを書いてない勢なのですが、今年は同僚とのランチや勉強会の懇親会での雑談が無くなってしまったので、生存確認的な意味合いも込めて今年の振り返りをしたいと思います。

お仕事

Treasure Data 八年目です。前前職であるNaver Japan(→NHN Japan→現LINE)が在籍期間一年半、前職であるDwangoが一年だったのでこうしてみるとTD長いですね…

仕事内容としては去年から続いていたdata ingestion pipelineの開発・運用を今年三月くらいまで続けてました。割と大量のingested dataをKinesis Stream二層使いでaggregationして、AWS Aurora, S3, Bloom filterを使ってdeduplicationするもので、skewed dataについても考慮してあるのでなかなか面白いものだったと思います。

その後、他チームで既に立ち上がってたプロジェクトを手伝うのかなと思ったら、いつの間にかがっつりmanagementをすることになって驚いていたのですが、これはこれでTDでは今までにない経験だったのである意味面白かったです。大枠の設計が決定済みのプロジェクトを引き受けるのはあまり得意ではないのだなぁと自覚できました。もっと精進しないといかんですね。

で、九月辺りから正式に Digdag – Open Source Workflow Engine for the Multi-Cloud Era をベースとしたworkflowサービスのチームに移りました。TDではかなり重要な役割を担っているところですが、将来的なscalabilityやstabilityの面で興味があったので参加しました。

会社的にはArmがNvidiaに買収されることとなり来年は色々変化がありそうな予感がしていますが、基本的に変化大好き人間なので楽しんでいきたいと思います。

プログラミング

こっちは個人的なprojectですが、今年頭にdistributed consensus algorithmの一つであるRaftをOCamlで実装して GitHub - komamitsu/oraft: Library of Raft consensus algorithm implemented in OCaml(開発メモ:What I learned from implementing Raft consensus algorithm in OCaml | by Mitsunori Komatsu | Medium)、今年末にNESファミコン)のemulatorをKotlinで実装してみました(開発メモ:
Development of NES (Famicon) emulator from scratch is fun, and tough | by Mitsunori Komatsu | Dec, 2020 | Medium)。いずれも「原理は理解しているけど実装してみたことがない」もので、まぁ実際に作ってみると意外な発見が多くて非常に面白かったです。他のネタも溜まってるので来年も何か作ってみると思います。

ゲーム

今年はついにSwitchを買ってしまいました。長男がSuper Mario Maker 2をやりたくて限界っぽく、またCOVID-19で自宅での娯楽を増やそうかと思ったのがきっかけです。で、六月辺りにSplatoon2を買ってしまいました。現状A帯にいて新しいブキに手を出してはB帯に落ちてるんですが、これはゲームというよりも精神修行に近い気がします。初動のホコ割りで味方二人が吹っ飛んでもう一人も溶ける試合が数試合続くと「仕事の方が楽しい…仕事したい…」となるので、Splatoon2逃避的に仕事に打ち込めるという利点もあります。ちなみによく使うブキは、96ガロン・スシベッチュー・わかば、辺りです。あと最近ゼルダBotWを始めました。これも「もうSlpatoon2やりたくない…ゼルダBotWの世界でパラセールしてたい…」というモチベーションで頑張ってます。他にはSteamでMindustryを買ってやってました。採掘や資源移動を頑張って効率化して余裕こいてると予想外のボス敵が壊滅的な打撃を与えてくる、というのは安定運用中のサービスでヤバイ障害が発生して死にかけるのに似ていて良いと思います。

漫画

いろいろ読みましたが「働かないふたり」は久しぶりに全巻揃え中の漫画です。Splatoon2で打ちのめされ殺伐とした心を癒してくれます。あと最近Amazon Unlimitedで「大東京トイボックス」を一気読みしたのですがアツくて良かったです。「New Game」よりもリアルで無駄に可愛くなく良いのですが、根底を流れるテーマが意外と重めなのでもうちょっと軽い開発話を読みたいところ。

アニメ

かくしごと」、「波よ聞いてくれ」、「放課後ていぼう日誌」辺りは普通に面白かったです。「鬼滅の刃」は我妻善逸が出た辺りからギブアップしてしまいました。「ハイキュー」は全シリーズ観ました。基本的には良かったのですが最新シリーズの作画が急に面白くなってしまったので驚きました。あとなんとなく「ID: INVADED」を観てましたが意外と良かったです。「呪術廻戦」は安定して面白く観ています。特に「じゅじゅさんぽ」が良い。

健康

毎日最低1Kmちょい走っているのですが、どうやらじわじわと体脂肪率が上がってる気がします。家族がやってるリングフィット アドベンチャーを僕もやるべき時なのかもしれません。

酒量は明らかに減った気がします。社内外のイベントで飲む機会が無くなったし、オフィスで仕事上がりに同僚とビール飲みながら雑談する機会が無くなったのもありますし、家での晩酌もその後のSplatoon2に影響が出てしまうので少なめになってると思います。まぁ飲まなければ飲まないで全然問題ないので良さげです。


と、今年について思い浮かぶことを適当に書き出してみました。来年もがんばるぞー

サーロインステーキの焼き方メモ

試行錯誤の末、最近焼き方が安定してきたのでまとめておく(下記はレア向けになっているので、ちゃんと焼きたい場合は時間を倍にしてもok)。

  1. 肉は出来るだけ厚めなもの
  2. 調理の一時間前には冷蔵庫から出す
  3. 肉の両面に塩胡椒を振り擦り込む。塩は肉の重さの1%弱
  4. 片面から筋の部分を2cm程度おきに切っておく
  5. そのまま放置
  6. フライパンを熱し、サラダ油を適当にひく
  7. 肉の片面を蓋をして強火で1分間焼く
  8. 反対側を蓋をして45秒焼く
  9. 肉をアルミホイルで包み、フライパンの上に乗せた蓋の上に3分間乗せる
  10. フライパンを強火で熱し、肉の両面をそれぞれ30秒ずつ計1分間焼く

既存の秘密鍵・証明書からJavaのTrustStore & KeyStoreを作る手順メモ

すぐに忘れそうなので、メモメモ。

KeyStore

openssl pkcs12 -inkey server.key -in server.crt -export -out keystore.pkcs12
keytool -importkeystore -srckeystore keystore.pkcs12 -srcstoretype pkcs12 -destkeystore keystore.jks -destkeypass keypassword -deststorepass storepassword
# 内容を確認
keytool -list -v -keystore keystore.jks

TrustStore

keytool -import -file server.crt -alias mytruststore -keystore truststore.jks

# 内容を確認
keytool -list -v -keystore truststore.jks

IntelliJでRobocodeのRobot開発メモ

毎回忘れて色々試しては時間を食っている気がするのでメモ。
1. Robocode自体のインストール (See http://robowiki.net/wiki/Robocode/Download)
2. IntelliJで適当にprojectを作り、`Project Settings` -> `Modules (Dependencies)` に `JARs or directory` として上記1でインストールしたRobocode配下にある `libs/robocode.jar` を追加
3. http://robowiki.net/wiki/Robocode/My_First_Robot 辺りを参考に適当なRobotを作成
4. IntelliJ上で `Build Project` しておき class files を出力させておく
5. Robocodeの `Options` -> `Preferences` -> `Development Options` に上記4の class files が出力されている root directory を指定
6. あとは普通にRobocode上の `New` 以降で作成した Robot が指定できるようになっているはず