Yuki Watanabe's Blog

Yuki Watanabe's Blog

エンジニアリングと子育てについて

個人のメモ帳をNotionからObsidianへ移行しました

個人のメモ帳をNotionからObsidianへ移行しました。本記事では移行の背景や感想を記載します。

個人のメモ帳の用途と、私が求める要件

用途

  • タスク管理
  • 技術調査やブログ下書きなどの「書き捨てメモ」

要件

  • マークダウン記法が使えること
  • WYSIWYGに近い操作感であること
  • MaciPhoneで同期できること
  • 月額は1000円程度まで

2013年にエンジニアになって以降の個人メモの変遷は Evernote → Boost Note → Notion → Obsidian(New) という流れで、1〜2年に一度は乗り換えてきました。Notionはこれまで最長の約3年ほど使っていました。

その他の雑多なメモ(「スーパーでの買い物リスト」「子どもの物運動会の持ち物リスト」など)は速記性を重視して、いまもApple純正のNotesを使っています。

NotionからObsidianへ移行した理由

Notionに不満があったわけではないことを前提としつつ、「ファイルが素のマークダウンで保存できる」というObsidianの特性に魅力を感じました。マークダウンファイルが存在するということは、他エディタとの連携や生成AIの利用がとてもやりやすいと考えたためです。 以下の記事を読み、Obsidianと生成AIの親和性が高そうだと感じ、自身でもやってみたいと思ったことも移行理由の1つとなります。

Obsidianへ移行した感想

総評としてはNotionからObsidianへ移行して良かったです。ただし気になる点もいくつか存在するため、それぞれ記載します。

良かったこと

  • マークダウンファイルとしての扱いやすさが圧倒的
    • 途中までObsidianで書き、複雑な置換や編集はVS Codeで仕上げる、この往復がほぼシームレスになりました。以前は、Notion <-> VS Code 間でコピペを繰り返しており、その分の手間がごっそり削減できています。
  • コミュニティプラグインにより体験が想定以上に向上
    • コアプラグインはシンプルなものが多いですが、コミュニティプラグインを利用することで、自身の環境に適したカスタマイズができるため、こうした柔軟性の高さが気に入っています(私の構成は後述します)。

気になったこと(課題)

  • コミュニティプラグインのメンテ状況は玉石混交
    • OSS由来のため、長期間更新されないものもあります。たとえば私が使っているKanbanプラグインは、現時点では更新がしばらく止まっています。
  • Notionの子ページ作成の速さはやはり優秀
    • Notionではスラッシュコマンドで子ページ作成がとてもスムーズでした。Obsidianでもホットキーにより新規ノートは作成できますが、目的のディレクトリへ移す操作は手動になりがちで、ここは少しストレスです。ショートカットの工夫等で緩和できないか、今後の課題です。

現在使用しているプラグイン

  • Auto Link Title
    • URLをペーストするとページタイトルを自動取得してくれます。Notionの「メンションとして貼り付け」に近い体験です。
  • Git
    • 自動でGitとGitHubを使い履歴を管理できます。メインのバックアップはiCloudですが、差分の比較や第2のバックアップ先として非常に便利です。
  • Kanban
    • 自身のタスク管理に必須です。(前述のとおりメンテ状況は注意が必要)。
  • Kindle Highlights Kindleのハイライトを取り込むことができます。まだ実用的な活用はできていませんが、読書メモを要約し復習用のノートを作成したり、読書感想用の記事のドラフトづくりに使用したりできると感じています。使い方の参考として、こちらの記事がわかりやすいです。

まとめ

Obsidianへ移行して、執筆や編集、整形にかけるコストが大きく下がりました。結果として、本ブログやZennへの投稿も捗りそうです。引き続き運用を改善最しつつ、記事の量産と質の両立を目指していきたいです。

『達人が教えるWebパフォーマンスチューニング』を読みました

『達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践』(以下、ISUCON本)を読み終えました。書籍ではアプリケーションコードは Ruby 実装を中心にパフォーマンスチューニングを解説していますが、私は書籍を片手に Go のアプリケーションコードを対象に、一通りチューニングを試しました。その際のコードは以下ににあります。書籍のハンズオンを通して非常に得るものが多かったので、本書の魅力と学びについてまとめます。

github.com

読み始めの動機

ISUCON本を読み始めたきっかけは二つあります。1点目は、日々の業務でパフォーマンス改善を担当しているものの知識が断片的で、体系的に幅広く学びたいと考えたこと。2点目は、過去に知人と ISUCON に参加したものの 0 点という悔しい結果で終わった経験から、ISUCON で高得点を得るためのノウハウを得たいと感じていたことでした。

感想

本書は ISUCON を題材としたハンズオン形式で、パフォーマンスのボトルネックを探し出し出し改善するための幅広い手法を学べます。APM を使わずに top、mysqldumpslow、alp、pt-query-digest といったコマンドベースのモニタリングを行う点は私が担っている業務とは異なりますが、出力された情報を読み取りボトルネックを探し出す点は実務さながらでした。最初は 1000 点にも届かなかったスコアが最終的に 25 万点へ伸びていき、この過程はとても刺激的で楽しむことができました。私はMacとDocker Composeの環境で実行しており、スコアはマシン性能やマシンの使用状況に左右されるため絶対的な値ではありませんが、数値が可視化される面白さは大いにありました。負荷試験には ab コマンドと k6 を使い、特に k6 は業務利用のイメージが湧いたため今後積極的に導入したいと感じました。

書籍では ISUCON 向けの最適化を解説しながら、実務とのギャップが生まれる部分にはコラムで補足を入れてくれる点も親切だと感じます。たとえば負荷試験の適切な実行時間など、実務での運用に直結する話題が丁寧に述べられています。

苦労した点

書籍は AWS EC2 環境を前提にしているため、Mac 上の Docker Compose 環境へ読み替えるには多少の調整が必要でしたが、本文やダウンロードしたリポジトリの内容を手がかりにすることで大きく詰まることはありませんでした。また、書籍のコードとリポジトリのコードに差分があり、そのままでは動かない箇所がありました。

あと、これは個人的な失敗談ですが、 Docker Compose で開発している場合、アプリケーションコードを変更するたびに build が必要な点に遅れて気付き、変更した修正が反映されずスコアが伸びずに悩んだこともありました。

Go 実装をチューニングしていく過程では、以下のブログを参考にさせていただきました。(感謝)

blog.stenyan.jp

最後に

本書を通じて、アプリケーションやミドルウェアのパフォーマンス問題のボトルネックを探し出し解決する基礎力を養えたと思います。今後は低レイヤーの知識を広げるために、『詳解 システム・パフォーマンス 第2版』などの関連書籍を継続的に読み進めていくつもりです。

統計検定準1級に成績優秀賞で合格しました

先日、統計検定準1級に合格しました。得点がある程度高かったため成績優秀賞を受賞する事ができました。 本記事では、私の学習方法や試験の感想を共有します。準1級は2級に比べ情報が少なく対策に苦労しましたので、同じ悩みを持つ方の参考になれば幸いです。

前回の2級の合格体験記はこちら。

yuki0920.hatenablog.jp

受験前のバックグラウンド

  • 大学時代は経済学部に所属していたため、必修科目として統計学を履修しました。当時は単位を取ることのみに注力していたため、学習した内容は全く覚えていませんでした
  • 高校時代は数学IAⅡBを一通り学習し、少なくとも苦手意識はありませんでした
  • 数ⅢCは未履修だったため、この範囲の微積分や行列については学習経験がありませんでした
  • 本業ではソフトウェアエンジニアをしており、統計や機械学習を用いた業務の経験はありません
  • 2025年3月に統計検定2級に合格しました

統計検定準1級を受験した理由

統計や数学の知識を深め、AI領域への理解を高めたいと考えたためです。準1級では多変量解析など2級にはない手法が扱われる点にも魅力を感じました。また、試験範囲に微分積分線形代数が含まれており、以前から強化したかったこれらの分野に取り組む良い機会になると考えました。

学習時間

2級合格(2025/03/23)後の4〜6月に毎日3時間程度学習し、計300時間ほどを費やし、初回受験で75点を取得し合格しました。

準1級のために学習したこと

学習内容は大きく次の3つに分類できます。

  1. ワークブックの理解・暗記
  2. 問題演習
  3. トピック別の補強学習

1. ワークブックの理解・暗記

【書籍】統計学実践ワークブック

ワークブックの例と例題を中心に3回解きました。本文中の抽象的な説明や記号が多い箇所は理解が難しかったため、後述のチートシートで要点を暗記する方針を取りました。特に難しかった章は以下のとおりです。

  • 7章 極限定理,漸近理論
  • 8章 統計的推定の基礎
  • 19章 回帰分析その他
  • 23章 判別分析
  • 26章 その他の多変量解析手法
  • 32章 シミュレーション

【note】統計検定準1級講座

とけたろうさんという方が作成されている、統計検定準1級用のnoteの有料講座を購入しました。ワークブックの不足箇所を丁寧に補完しており、理解の底上げに大きく貢献しました。記事執筆時点(2025/07)で23本の講座があり、各章が解説+演習問題の構成です。

note.com

私は記事をすべて印刷し、1行ずつ精読しながら不明点をメモして活用しました。準1級に向けた学習方法としては、専門書を多読する方法もありますが、ワークブックと記号体系が異なる場合が多く必ずしも効率的とは言えません。この講座はワークブックとの乖離がなく、必要な知識を集中的に吸収できました。

【ブログ】統計検定準1級チートシート

ワークブックの章ごとに要点が整理されたチートシートを使い倒しました。こちらも、とけたろうさん作です。ワークブックや過去問で得た気づきを書き込み、試験に必要な知識を一元化しました。試験直前はこのシートを繰り返し読み込み、短期間で総復習できました。

toketarou.com

準1級では2級範囲も出題されるため、2級用チートシートも同様に活用しました。

【完全網羅】統計検定2級チートシート | とけたろうブログ

【Udemy】独学者のための統計学応用講座

統計検定準1級の重要トピックについて、非常に平易にわかりやすく説明されているKawaguchiさん作の動画教材です。2級合格後、準1級受験を迷っていた時期に受講し、多変量解析へ興味を持つきっかけになりました。「これなら自分にもできそう」と感じられたことが受験決定の後押しとなりました。

www.udemy.com

YouTube / Udemy】 「統計学実践ワークブック」解説講座

ワークブックの例題について解説されている動画教材です。こちらもKawaguchiさん作です。大半がYouTubeの無料動画として公開され、一部が有料教材としてUdemyで販売されています。ワークブックの例題の解説は計算過程に飛躍があるため、そうした行間を補ってくれる本教材は有益でした。

www.youtube.com

www.udemy.com

さらに、計算プロセスを詳細に示した以下のZennの記事も参考にしました。

統計学実践ワークブック 例題ノート

2. 問題演習

【書籍】統計検定 準1級 公式問題集

ワークブックを 2 周した後に取り組み、選択問題と部分記述問題を3周しました。体感としてはワークブック例題より解きやすい問題が多かった印象です。初見で正答率 6〜7割だったため、準1級合格への自信につながりました。論述問題は難易度が高く、時間の都合で未着手ですが、不合格だった場合は全問取り組む計画でした。CBT の形式に近く実戦的なため、ワークブック1周後から並行して解くのも有効だと思います。

【書籍】統計検定 2級 公式問題集

2級範囲を確実に得点源にするため、問題集を解き直しました。

3. トピック別の補強学習

苦手分野は別途書籍で補強し、興味に応じて専門書も読破しました。

【書籍】ゼロから学ぶ微分積分、ゼロから学ぶ線形代数

準1級に必要な数学を補うため、以下の内容を重点的に学習。

これらの数学知識がないままワークブックに取り掛かったところ序盤でつまづくことが非常に多かったです。ワークブック着手前に学んでおけば、序盤のつまずきを減らせたと痛感しています。

【書籍】確率・統計キャンパスゼミ

ワークブックの以下のトピックに苦手意識があったので、別途書籍を使って学習しました。

理論面を微積分を交えて丁寧に解説しており、苦手意識を払拭できました。ただ残念だったのは、演習書として『演習 確率統計キャンパス・ゼミ』も追加で購入したのですが、『確率統計キャンパス・ゼミ』に収録されている問題の数値改変問題がメインであり、ほぼ使わずに終わってしまったことです。

【書籍】数学大百科辞典

準1級に必要な数学の知識のメインは微分積分線形代数なのですが、他にも指数・対数や数列の知識(等比数列の和...確率母関数の導出の際に使う)なども必要になるため、全体的な数学の知識の補強のために購入しました。全て読み通すことはなく、周辺知識を調べる際の辞書的ツールとして利用しました。

その他使用した教材

以下の 2 冊は合格必須ではありませんが、試験範囲を網羅しつつ読み物としても面白かったです。

  • 『道具としてのベイズ統計』
  • 『多変量解析がわかる』

有用だったツール

ChatGPT

ChatGPT Plusに課金して、わからない内容を質問しまくりました。数理系に強いと言われている「o3」のモデルを使用し、以下のようなリクエストをたくさんしました。

  • 問題解説: ワークブックや問題集の該当ページをスマホで撮影してアップロードし、詳細に解説を依頼
  • 計算支援: 例) 指数分布のモーメント母関数を導出して
  • 用語比較: 例) 無向独立グラフとモラルグラフの違いを教えて
  • グラフ作成: 例) AR過程とMA過程のスペクトル密度関数を可視化して

ググるよりもピンポイントに知りたい情報を得られるので、ChatGPTは資格試験の良きお供だと感じました。

電卓のメモリー機能

私は経理職員だった時に電卓を多用しており、メモリー機能についてもある程度習熟していました。メモリー機能は素早く正確に計算するためには必須の機能であるため、これらの機能への習熟は統計検定受験時に大いに役立ちました。

試験の感想

  • 問題数: 大問21問(各1〜2小問)で実質30問前後
  • 難易度: 『公式問題集』(論述除く)と同程
  • 時間配分: 1〜2 分考えて不明なら解答を仮決定して次へ。見直しを含め20分余りました
  • 手応え: 6割は自信を持って解ける、2割は2択まで絞れる、残りの2割の問題はほぼ勘。合否は5分5分くらいで、結果は75点のため上振れ

合格することで得られたこと

統計検定準1級に合格したことで、当初の目的だった統計学と数学の基礎を体系的に身に付けられました。これは今後、AI関連の書籍やドキュメントを読む際の土台になるでしょう。 加えて、抽象的な概念を粘り強く学ぶマインドも養われました。準1級対策の参考書は抽象度が高く、1行ずつ丁寧に読み解く必要があります。理解が曖昧な箇所では必ず立ち止まり、調べ直しながら概念を一つずつ確認した結果、抽象的な概念への理解力が向上しましたと感じます。これはソフトウェアエンジニアとして技術文書を読む際にも大いに役立つでしょう。たとえば公式ドキュメントは前提知識を省略していることが多いものの、知識のギャップを感じたときに基礎から学び直す習慣があれば、内容を確実にキャッチアップできると思います。

最後に

2月から統計の学習を開始し早5ヶ月が経ちました。学習自体は非常に楽しいのですが、いったん資格の学習はここで終えようと考えています。 今後は、『ゼロから作るDeep Learning』シリーズの本を読んだり、Kaggleをやってみたり、やりたいことの候補がいくつかあるので少しの休息を経て次の目標を立ててやっていきたいと思います。

統計検定2級に合格しました

はじめに

先日統計検定2級を受験し合格しました。本記事では学習方法や感想を記載します。

統計検定2級を受験した理由

第2子の育休期間のスキマ時間を使ってスキルアップをしたいと考えていました。日常のソフトウェア開発業務では応用的なスキルを身につけて課題解決をすることが多いですが、育休中のため業務とは直接的には関係のない、何かしらの学問など少し抽象的な内容を腰を据えて学習しようと思っていました。

以前機械学習のキャッチアップを目的に『ゼロから作るDeep Learning』という書籍を写経していたのですが、統計学や数学の知識不足により冒頭数十ページで挫折してしまった経験がありました。この経験から、いつかは統計学や数学について基礎から学習してみたいと考えていました。また、ソフトウェア開発におけるAIの重要度が激増しているため、そのベースとなる統計学の素養は中長期的にキャリアに効いてきそうだとも感じ、統計学の学習を開始することにしました。

後述の入門書を2冊ほど読んだどころ統計学の面白さを感じ、より深く学習を進めていきたいと考えるようになりました。適切な難易度の試験に合格することを短期の目標とすることで、その過程で問題演習を通じて知識の定着を図れるだろうと考え、「大学基礎課程(1・2年次学部共通)レベル」である統計検定2級の受験を決めました。

受験前の知識

  • 大学時代は経済学部に所属していたため、必修科目として統計学を履修しました
    • 当時は単位を取ることのみに注力していたため、学習した内容は全く覚えていませんでした
  • 高校時代は数学IAⅡBを一通り学習し、少なくとも苦手意識はありませんでした

学習方法

学習スケジュール

おおまかな学習スケジュールはこんな感じです。

  • 1~3週目: 入門書を読む
  • 4~5週目: 問題を解く

試験に合格することを目的に学習を始めるならば先に過去問を見るのが王道でしょうが、先述の通り私の場合は純粋に統計学に興味があったので、まずは入門書をじっくり読み、その後問題演習に入りました。

入門書を読む

まずは、『完全独習 統計学入門』を読みました。今までなんとなく聞いたことのあった「標準偏差」について完全に理解でき、統計学の面白さに気づきました。本書は口語体であり読みやすく、本の触れ込みにもあるとおり中学数学のみしか使われていないという点からすんなり読破できました。入門書ではありますが1冊の書籍を読破できたことで、統計学の苦手意識がなくなり自信に繋がりました。

『完全独習 統計学入門』を読み終えたあたりから少し統計検定2級の受験を意識し始めていたため、次に2級の試験範囲をある程度カバーしている『入門 統計学(第2版)』を読むことにしました。こちらも口語体で読みやすい上に、さまざまな統計手法が載っており面白かったです。全体の3分の2程度を読んだ後、これ以降は演習を通して知識を定着させることにしました。

ちなみに、2冊目の入門書の選定にあたり以下の記事を参考にしました。

toketarou.com

問題を解く

統計検定のCBT用の問題集を購入し、演習を行いました。演習を通して理解が曖昧だった点については『入門 統計学(第2版)』やWeb記事を確認しながら定着をさせていきました。問題集については間違いやすい問題を中心に3回解き直しました。

試験数日前に時間を計測して問題集に付属の模擬問題を解いたところ合格ギリギリの点数でした。意外と試験時間に余裕がないことに気づき、より効率的に問題を解く必要があることがわかりました。そこで、知っている問題のレパートリーを増やすことを目的に、PBTの過去問を購入し、理解が浅い問題を中心に2回ほど解きました。

使用した教材

入門書

『完全独習 統計学入門』は分散や標準偏差といった基本的な概念や正規分布、χ2乗分布、t分布といった確率分布の性質を理解するのに非常に役立ちました。「使うのは中学数学だけ」との触れ込み通りΣ記号すら出てこないため、数学にブランクのある自分でも読み通せたと思います。とはいえ、χ2乗分布を扱う第16講からは理解が難しくなり、数度読み直してやっと理解できた感じでした。

『入門 統計学(第2版)』は統計検定2級で頻出の各種の検定、推定を理解するのに役立ちました。こちらも数式が少なめであるため、比較的つまりどころがなく読むことができました。

特に2級の試験範囲である以下の章について読み込みました。

  • 第1章~第7章
  • 第8章の一元配置分散分析
  • 第10章のフィッシャーの3原則
  • 第11章のχ2検定
  • 第12章

問題集

問題集はCBT用のものと2011~2013年のPBT用の過去問の2冊を購入しました。

(余裕があればこちらもやりたかったですが、できませんでした。)

以下3冊はKindleで読めるので、寝ながら問題を解く用に購入しました。

ブログ

問題を解いていてわからない内容については、とけたろうさんのブログやYouTubeをよく見ていました。特にチートシートの記事は試験直前に総復習するのに非常に役立ちました。

toketarou.com

www.youtube.com

受験してよかったこと

統計検定2級の学習を通じて、機械学習の理論を理解するためのスタート地点にやっと立てた気がしています。

また、エビデンスに基づいて意思決定することの重要さを知れたことも統計学を学習して良かったことの1つです。ソフトウェア開発をしていると意思決定をする機会が非常に多いですが、定性的な判断を下してしまったがゆえに招いた失敗がいくつもあったなと気づきました。もちろん定性的な判断が必要な局面があることは理解しつつも、今後はよりエビデンスに基づいた判断をしていきたいと感じています。

最後に

まだ育休期間は続くので、次に注力する分野を決めていきたいと思っています。CouseraのAndrew先生のMachine Learningコースの受講や統計検定準1級の受験などやりたいことを上げだすときりがないのですが、少し時間を置いてまた何かに挑戦していく所存です。

2024年買ってよかったもの

昨年に引き続き、2024年に買ってよかったものを紹介します。

デスク用品

Audio Technica Bluetooth スピーカー

中古で購入して使っていたスピーカーに不具合が出てきたため、PC用スピーカーを新調しました。モニター横に配置し、モニターとアナログ接続しています。PCからはNetflixYouTubeの音声を出力したり、Switchのゲーム音声を出力しています。

アナログ接続だけでなくBluetooth接続もできるため、スマホを接続してサクッと音楽を流せるのもグッドです。昔から音に少しこだわるところがあり、日々の音がちょっと良くなるだけで幸せです。

Anker ドッキングステーション

USBハブを兼ねるモニターを利用しているのですが、PCと接続する際に給電不足でキーボードやカメラが利用できないことがあり、その解決策としてドッキングステーションを購入しました。完全解決には至らないものの、給電不足の頻度は低下しました。結果的に配線周りをすっきり整理できたため、購入して良かったです。

Anker HDMI スイッチャー

PC⇔モニターの接続とNintendo Switch⇔モニターの接続を切り替えるために購入しました。HDMIケーブルの抜き差しが不要になり、ボタン1つで映像出力を切り替えられて便利です。

Anker モバイルバッテリー

PC用のバッテリーとスマホ用のモバイルバッテリー、さらにはUSB Type-Cケーブルと1台3役を兼ねているタイプのモバイルバッテリーです。バッテリー類の持ち運びが劇的に楽になりました。忘れ物が多い私にはとてもありがたいです。

Apple iPad mini

iPad miniを旧モデル(6)から新モデル(A17 Pro)に買い替えました。旧モデルに不満はありませんでしたが、新モデルは価格据え置きで容量が64GBから128GBになり、チップも新しくなっていることから買い替えました。

使用感はそこまで変わりませんが、WebブラウジングKindle閲覧用端末として引き続き毎日愛用しています。

Apple iPhone 16

iPhone 12 miniからiPhone 16に買い替えました。バッテリーの持ちが良くなったため、特に外出時に大きな恩恵を受けられています。 買ってみて気付いたことですが、画面上のDynamic Islandは何かと便利です。モバイルSuicaを使用したときに残高が表示されたり、Spotifyで流している音楽のカバー画像が表示されたり、アプリを開くまでもないちょっとした情報が表示されるのは便利です。

山善 本棚

物理本を読むことが多くなってきたため、大きめの本棚を購入しました。まだ半分以上空いているので、収納スペースを気にせずたくさん本を読んでいきたいです。

その他

シャープ ホットクック

個人的に、2024年の最大のヒット商品はホットクックです。料理スキルの低い自分でも、食材を入れておくだけでそこそこ美味しい料理ができるので重宝しています。10~30分の準備時間で、夫婦2人分の夕飯を2日分作れたり、3歳児の食事を十数食作り置きできたり、家事の時短に大きく貢献しています。いろいろなレシピを作って楽しんでいますが、特にお気に入りは、カレー、ローストポーク、サラダチキンです。ホットクックで作るサラダチキンは市販のレベルを遥かに凌駕するクオリティで、初めて作ったときは感動しました。

これまで我が家では料理は妻、食器洗いは私が担当していましたが、ホットクックを導入してからは私の料理の頻度が上がり妻の負担の軽減につながっています。

余談ですが、ホットクックが便利すぎてレシピ検索用のLINE Botも作りました。(レシピが固定化してきたため最近は使っていません)

パナソニック 電動自転車

こちらも2024年のベストヒットです。子どもが大きくなってきて、抱っこ紐やベビーカーに乗せづらくなってきたため、保育園の送迎用に購入しました。当初の想定通り送迎用に活躍しているのはもちろんのこと、(我が家は夫婦ともに車を運転する習慣がないというのも相まって、)日常の行動範囲が劇的に広がりました。休日に子どもと近くのショッピングモールに出かけたり、一人でスーパーへ買い出しに行ったりとほぼ毎日利用しています。

アイリスオーヤマ 冷凍庫

食材の収納スペース確保を目的に、セカンド冷凍庫を購入しました。 調べてみると、冷凍庫には直冷式とファン式の2つのタイプがあることがわかったのですが、直冷式は安価である一方放置すると霜がビッシリと発生するためメンテナンスの手間がかかることを知り、迷わずファン式を選びました。

冷凍庫には、ふるさと納税の返礼品の食材(主に肉)や野菜、冷凍食品を大量にストックしています。自宅に食材が潤沢にあると、買い物に行かずとも冷凍庫の中から食材を取り出してホットクックで一瞬で料理できるので、土日など外出したくないときに、とても便利です。

集英社のマンガ

IT界隈ではプレゼン時のスライドなどで有名マンガのネタがミーム的に使われることが多いですが、私はこれまでほとんどマンガを読んだことがないため、ネタ元がわからないことが多々ありました。有名なマンガは最低限キャッチアップしておきたいいと考えていた矢先、集英社Kindle版のマンガがセール対象になっていることを知り、有名どころのマンガ(ドラゴンボールジョジョハンターハンターゴールデンカムイ幽遊白書)をまとめ買いしました。

まだドラゴンボールゴールデンカムイしか読み終えられていませんが、ストーリーを楽しめましたのはもちろんのこと、IT界隈で多用されるマンガ発祥のミームも理解できるようになり、嬉しい限りです。

余談ですが、自分はマンガを読む際に登場キャラの判別がつかなくなり読み続けるモチベーションが低下してしまうことがわかりました。マンガのタイトルによってはカラー版があるため、そちらを読むとキャラの判別が容易になりスムーズに読み進められることがわかったので、今後は多少値が張ってもカラー版を購入することにしました。

エンジニア5年目 2024年振り返り

エンジニア5年目を終えました。年末恒例、2024年のエンジニアとしての振り返り記事を書きます。

過去の振り返り記事

本業

サマリ

  • Materialized Viewを利用したバッチのパフォーマンス改善
  • Spanner Data Boostを活用したバッチの不具合の解消
  • 新規機能の設計
  • 新規メンバーのオンボーディング、メンター
  • 担当プロダクトのドキュメントの整理
  • LLMを活用したハッカソンへの参加(優勝!)

振り返り

本業の開発案件としては、バッチの改善に多くの時間を割きました。BigQueryを参照するバッチが様々な問題によりパフォーマンス問題や誤検知問題を抱えており、Materialized ViewやSpanner Data Boostの導入により、これらの問題を解決しました。行ったことの一部を切り出して、人生初のAdvent Calendarの記事を書いたのでよろしければ見てみてください。

engineering.mercari.com

他にも、チームのために必要なことは何でもやるというスタンスで、組織運営に関することにも積極的に取り組みました。9~10月ごろに業務委託を含む3名の新メンバーがジョインしたのですが、メンターやオンボーディング用資料作成、ナレッジ共有会の開催などを行い、早期に業務にキャッチアップできるようサポートしました。

新メンバー向けの取り組みとして意外と効果を感じたのは、「自チーム用のオンボーディング用Slack Channelの開設」です。元々自チーム用のSlack Channelはチーム外の人も参加し、数百人が参加していたのですが、新メンバーの視点に立ってみると「初歩的な質問を数百人の前でするのは気が引けて」質問できないケースがあるようだったので、新規Channelの開設に至りました。結果としては開設後4ヶ月たった現在もほぼ毎日投稿がなされるほど活況のChannelとなっており、オンボーディングへの効果を感じています。

これまでのエンジニア経験では個人としての成果を最大化することに全力を尽くしてきましたが、今年は個人としての成果を出しつつも、少し目線を上げて組織としての成果を最大化できるような取り組みも行えたことが良かったかなと思っています。

副業

サマリ

  • Google CloudのインフラのIaC化とCI/CDの整備
  • Cloud SQLからAlloyDBへの移行
  • Row Level Securityの導入
  • データベースのクエリのパフォーマンス改善

振り返り

昨年から業務委託として携わっている会計SaaSを提供する会社様にて、今年も1年間お世話になりました。主にSRE・バックエンドエンジニア的な関わりをしているのですが、「業務委託にここまで任せてくれるのか」というくらい大胆なアサインをしてくださり、難易度が高いタスクをいくつも担当しました。

年始早々から既存のGoogle CloudのインフラのTerraform化を担当し、既存のリソースをimportしてコード化し、合わせてGitHub ActionsによるCI/CDを整備しました。記事を書いたのでよかったらご確認ください。1つ補足をすると、Terraformのimport blockは超便利、です。 zenn.dev

zenn.dev

他にも、Cloud SQLからAlloyDBへの移行や、Row Level Securityの導入など、DBに関する重めのタスクも完遂することが出来ました。業務委託の身ではありますが、会社のTech Blogにも記事を寄稿させてもらっています。

zenn.dev

個人的に成長を感じたことは、クエリのパフォーマンス改善です。パフォーマンス改善は職人芸のように感じてしまい敷居の高さを感じていたのですが、いずれ挑戦したいと考えていました。そこで、業務時間外に勉強がてらAlloyDBのQuery Insight(クエリの実行時間や負荷がわかるやつ)を見ていたのですが、実行時間が5分ほどかかっているクエリを見つけ、なんとか改善できないかと考えました。EXPLAINによりクエリの実行計画を確認し、ボトルネックになっている点が確認できたため、現状の課題感とラフなソリューションをMTGで共有し、業務として任せていただくことになりました。結論としては、WHERE句に絞り込みを追加することで処理行数を大幅に削減し、実行時間は5分から30秒と1/10まで高速化することが出来ました。

こちらの副業先には、私の家庭の事情で12月末で稼働終了を申し入れたのですが、本当はまだまだやりたい気持ちもありました。非常にお世話になりました!

OSS Contribution

副業でTerraformやAlloyDBのドキュメントを読み漁っていたのですが、その過程で感じたドキュメントの改善点をPRにしました。2つ作成し、どちらもマージしてもらえて嬉しかったです。

github.com

github.com

個人サービス

サマリ

  • インフラをHerokuからGoogle CloudとSupabaseへ移行
  • Google CloudのインフラのIaC化

振り返り

個人で開発している上場企業比較サイトのインフラを刷新しました。これまでは、サーバーもDBもHerokuを利用し毎月$12を支払いしていたのですが、収益化していないサービスであるため、毎月そこそこの赤字の状態でした。もちろん勉強代として捉えれば、そこまで高い値段ではないですが、できれば削減したいと考えていました。このようなコスト最適化のための施策については、今までは自身のスキル不足により取り組めていなかったのですが、副業先でGoogle CloudやDBの知見をガッツリ得られたので、現実的な時間で対応できそうだと判断し、対応することに決めました。

Google Cloudでは主に、Cloud Run service, Cloud Run jobs, Cloud Workflow, Cloud Schedulerを利用しています。DBはSupabaseの無料プラン内で利用できています。Herokuからの移行はpg_dumpコマンドととpsqlコマンドを使い、30分程で完了しました。(もっとはやくやっておけばよかった!)

Google CloudとSupabaseへの移行への対応工数は5~10時間ほどでしたが、毎月のコストは$12から$1ほどへ削減でき非常に満足しています。

アーキテクチャ図はこちらです。

まとめ

今年も技術的にチャレンジングな取り組みをいくつもできました。本業と副業でほぼ同じ技術スタックを利用しているためシナジーが非常に大きく、本業と副業の両輪によって倍速で成長している実感があります。 インフラ領域の業務は非常に興味深く、引き続きこの業務領域の広さと深さを追求していきたいと思います。

『データベース・リファクタリング』を読んだ

『データベース・リファクタリング』を読んだ。 最近は書籍の感想をXに投稿することが多いのだけど、本書はあまりにも良い内容だったので感想記事も書くことにした。

読み始めの動機

業務でCloud SpannerやBigQueryのスキーマ設計について検討する過程で、データベース関連の書籍を読み漁っていた。 この過程で読んだ(こちらも良書だったのだが)『失敗から学ぶRDBの正しい歩き方』にて本書『データベース・リファクタリング』が紹介されており、興味を持った。

本書は既に絶版であり売価は定価の2倍ほどで購入するか少し迷ったものの、以前8,800円で購入した『リファクタリング:Rubyエディション』は価格以上の価値をもたらしてくれたことを思い出し、購入に踏み切った。

感想

本書を読んで一番良かった点は、データの移行業務(スキーマの更新、データのマイグレーションどちらも移行業務と表現する)を自信を持って行えるようになったことである。 ソフトウェアエンジニアとして働く上で、データ移行の業務を行うことは誰しもあると思うが、この移行作業は一定のリスクを伴うものでもある。 私はこれまでデータ移行に関して体系だった情報を得たことがなかったため、都度移行方法を調べながら手探りで行っていた。

このデータ移行に関して、『データベース・リファクタリング』はあらゆるパターンとその解法が解説されている。 具体的には、大半のリファクタリングパターンについて以下の構成で記されている。

動機やトレードオフについても記されているため、自分が関わる案件と比較しながらどういった方法がベストかを判断するのに活用できる。少なくとも、本書を読む前と比べると自分の考えに自信が持てるようになった。

一方で私が関わる案件とは親和性が低い技術も多く紹介されていた。トリガーやストアドプロシージャ、計算カラムの利用はそもそもRDMSによって使えなかったりする。使えたとしても、アプリケーション側の責務と捉えることもできるため、使わないケースも多いだろうと想像する。

最後に

リファクタリング系の書籍は、『リファクタリング(第2版)』、『リファクタリング:Rubyエディション』に続いて、『データベース・リファクタリング』が3冊目だったが非常に良い内容だった。 マーティン・ファウラーさんの書籍はどれも学びが多いため、他にも読んでいきたい。とはいえ日本語訳されている書籍は多くはないため、いずれは原著を読む必要があるため少し腰が重い。