Yuki Watanabe's Blog

Yuki Watanabe's Blog

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

統計検定準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点のため上振れ

最後に

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冊目だったが非常に良い内容だった。 マーティン・ファウラーさんの書籍はどれも学びが多いため、他にも読んでいきたい。とはいえ日本語訳されている書籍は多くはないため、いずれは原著を読む必要があるため少し腰が重い。

エンジニア4年目 2023年振り返り

33歳になりエンジニア4年目を終えた。 例年通り1年の締めくくりとして、2023年の振り返り記事を書いていく。

過去の振り返り

開発

本業

1年前にプロダクトをリードできるエンジニアになりたいという目標を立てたのだけど、この1年間で近づけて来たように思う。 7月からシニアメンバーが異動したため、その後の自分の役割や担当領域が広がっている最中であり、必死にキャッチアップしている。 技術的にはバックエンドを中心に、アプリケーション領域からSRE領域まで少しずつ広げてきた。

今年の新たなチャレンジとして、インターン生のメンターをした。 インターン中は毎日の1on1に加えて、振り返りやペアプロを交えて、なるべく効率よくエンジニアリングスキルややコミュニケーションスキルを伝達できるように努めた。

あと、テックブログを書けたのも良かった。バズったりしたわけではないけど、エンジニアの知り合いから「あの記事見たよ!/良かったよ!」といってもらえて嬉しかった。

engineering.mercari.com

それ以外にも新たなチャレンジをたくさんさせてもらった。特にGCPのコスト削減は1年がかりのプロジェクトであり、完遂できたことは大きな自信となった。結果としてHDの月間表彰に選んでもらうことまでできた。

今年やった主なことは下記。

  • GCPのコスト削減
  • Cloud FunctionsのランタイムをNode.jsからGoへ移行
  • GitHub Actionsを利用したマニュアルDBクエリの効率化
  • Dependabot Grouped Updatedを利用したDependency Updateの効率化
  • 監視からの様々な改善提案(適切なアラートの閾値の再設計等)
  • 採用、メンター

副業

エンジニアになった頃から副業をやってみたいと思っていたのだけど、ついに9月から副業を開始した。 Goを使えることを必須要件にして、追加の条件としてGCPKubernetesも加えて案件を探し、結果として4社様からお声掛けいただいた。 その内一番事業領域として興味のある会計SaaSを提供する会社で業務委託として働かせてもらっている。

懸念だった時間の捻出も意外と余裕であり、平日の夜や土日の朝を活用して月におよそ40時間くらいの稼働をしている。

4ヶ月を終えた現在での感想としては、良い経験をさせて頂いている。 副業先の使用技術は本業と非常に近く、Go,GCP,Kubernetes,Terraformを採用しているため、本業と副業のシナジーが高い。 加えて、自分の知見がそこまで深く無い領域の課題についても設計から担当させてもらっているため、かなりのスキルアップが出来ている。

OpenTelemetryの導入をした際には、当時考えたことを記事に書いたりした。

zenn.dev

今のところ担当した業務はこんなところ。

  • golangci-lintの導入
  • Dependabot Grouped Updatedを利用したDependency Updateの効率化
  • bufを利用したprotoのLint, コード生成環境の導入
  • OpenTelemetryを利用したログの改善

個人サービス

個人で開発している企業情報サイトの技術スタックをリプレースした。 元々はサーバーをRuby、フロントエンドをNuxt.jsにしていたのだけど、仕事で使用機会の多いGoとNext.jsへ移行した。ついでに多言語対応(日+英)もした。

移行とはいえゼロから作るのは大変だったけど、その分学びも多くて楽しかった。

総仕上げとして書いた記事はそこそこ読んでもらえてよかった。

zenn.dev

OSS Contribution

今年は初めてOSSにContributionできた。

golangci-lintやOpenTelemetryのリポジトリに3つのPRを送り、すべてマージしてもらえた。

github.com github.com github.com

ドキュメント修正や簡単なソースコードの修正ではあるのだけど、マージされて全世界の人の目に触れると思うとちょっと嬉しくなる。

英語

今年1番の成長は英語かもしれない。 昨年の11月に学習を開始し、現在まで継続している。

まず、昨年末から発音を中心とした英語学習を開始したら、短期間でリスニング力の向上を実感できた。 それならばと、今まで大の苦手意識があったTOEICも克服できるのではないかと考え早速申し込み、2月に受験した。

前回2020年11月受験時は530点(L225/R305)だったが、今回は740点(L365/R375)まで伸ばすことができた。 長年苦手としていたことを克服できたので、大きな自信に繋がった。

yuki0920.hatenablog.jp

テスト以降は、ビジネス英会話を中心にスピーキングを中心とした学習スタイルに移行している。

7月からは、会社の言語学習プログラムの一環として半年間の英語のコーチングサービスを受講させてもらった。 毎日英文を作成し、音声を録音してコーチに送付し、フィードバックをもらう形式だったが、これによって英文作成力とスピーキング力が底上げされた。

最近は英語の技術ドキュメントや翻訳ツールを使わずに読めるようになり、英語の技術書も4-5冊読めた。英語学習によって技術のインプット効率も上げられたのは良い誤算だった。

yuki0920.hatenablog.jp

英語学習のざっくりとしたタイムスケジュール。

  • 1-2月: オンライン英会話、TOEIC対策
  • 3-6月: オンライン英会話、シャドウウィング
  • 7-12月: 英語コーチン

プライベート

育児

子供が2歳になり、やっと歩けるようになった。(少し成長遅め) これによって、行動範囲が広がり旅行にも何度か行けて、新たな楽しみを見出している。

こちらは11月の横浜旅行の時のアンパンミュージアムの写真。

ゲーム

昨年から変わらずスプラトゥーン3を毎日やっている。 恐ろしいことに、昨年9月に発売されたにも関わらず総プレイ時間が700時間を超えている。

どうやら自分は1回5分程度で終わるスプラトゥーンのようなゲームが好きらしい。 来年はこうした短時間で完結するアクションゲームを他にも試してみたいな。

まとめ

今年は開発や英語において多くの新しいチャレンジができた。 来年も楽しみながら色々な技術を学んでいきたい。

2023年買ってよかったもの

2023年に買ってよかったもの、使ってよかったサービスを書く。

デスク用品

FILCO 分割キーボード

元々使っていた分割キーボード「Mistel BAROCCO MD770」からFILCOの新作分割キーボードの「FILCO Majestouch Xacro M10SP」に乗り換えた。 前のキーボードはかなり気に入っていてそこまで不安はなかったのだけど、他のも試してみたいという理由で買い替えた。 感想としては、生産性に変わりはほぼ無いが、打鍵感が良くなった気はする。

今回は、Functionキーや矢印キーが省略されている70%のキーボードであり、FNキーと組み合わせることでフルサイズのキーボードと同等の入力を可能にしている。そのため打鍵になれるのに3日程度かかあったが、今ではなんてこともなくタイピングできている。

BenQ スクリーンライト

読書時に手元が暗いのが気になっていて、モニターにつけられるライトをほしいと思っていた。 できるだけ配線はなくしたかったので、スイッチが無線タイプのBenQのライトを購入した。

スクリーンを中心に手元まで明るくなるため、作業の快適度が非常に上がった。 特に、自分は43インチと大きめのモニターを使っていて、四隅の暗さが気になることがあったが、このライトによって隅まで照らされていていい感じ。

M1 Macbook Air

個人用PCとしてメルカリでMacbook Airを購入した。

  • 13 inch
  • メモリ: 16G
  • SSD: 512G

16GBのメモリだと、43インチディスプレイに接続時にメモリ不足とならないか不安だったけど、なんとかなった。 同じメモリ容量のIntelMacを使っていた際はディスプレイに接続すると露骨に動作が遅くなっていたことを考えると、さすがM1といった所。

Dockerを起動してのフロントエンド、バックエンド開発も卒なくこなせていい感じ。欲を言えば、M2のメモリ24GBのMacbook Airが欲しかったが、今のところは満足している。

Xiser Pro ステッパー

知人の勧めで、ハイグレードなステッパーを購入した。 負荷を調整できたり、なめらかにステップを踏めたりと効率的かつ快適に使用することができている。

こういったトレーニンググッズはお蔵入りになる可能性が高いが、購入後半年経っても未だに週に2回以上は使用している。 仕事の合間のリフレッシュしたい時や休日運動不足のときなどに、英語を聞きながらステップを踏むのが日課となっている。

その他

パナソニック食洗機

今年ダントツで一番買ってよかったのは食洗機だった。 食洗機を購入したことで、1日30分以上の時間が生み出されている。 食器洗いは毎日2回行っているけど、食器を洗う時間、乾かす時間がが激減した。

ちなみに、電源はキッチンにはないため、(業者いわくグレーではあるが)延長ケーブルを使用している。 購入したモデルはスリムモデルであるため賃貸の我が家の手ざまなキッチンにもなんとか収まった。

ヒゲ脱毛

ヒゲが似合わないため毎朝剃っていたが、この頻度を減らすためにヒゲ脱毛へ通い始めた。 初回から大きな効果を感じており、6回通った現在はヒゲ剃りの頻度が3~4日に1度まで減っている。 5回通った後は3ヶ月に1度の頻度で3年間通えるコースに入会したため、まだ10回程度は行く予定。

ちなみに、口コミや立地を調べ上げた上でメンズエミナルというところに通っている。 知人紹介キャンペーンのクーポンがあるので、気になる方は連絡ください。

エクスプロージョン プロテイン

プロテインは毎日飲んでいて、もともとMyProteinを愛飲していた。ただ、MyProteinの価格が高騰していることと梱包が雑であることを理由に、別のプロテインへの乗り換えを検討していた。 Amazonのセールの際に比較的安価で高評価のエクスプロージョンのプロテインを購入してみたら最高だった。溶け残りが無いし、味も良い。