この年末は、ブログ記事をしたためながら、大阪の新オフィスで受領したM1 MacBook Proをセットアップ([[20211229 M1 Macセットアップ]])しながら過ごしている。京都では寒波が厳しく、底冷えするような寒さがあり、天気予報で予報されている気温よりも寒く感じる。大晦日に実家に帰り、年始に祖父の家に顔を出す。
**研究** ソフトウェアエンジニアから研究者に転向して3年目が終わろうとしている。2020年は論文の構成スキルが向上したことを実感したし、国内ではあるけど、いくつかの賞を受賞した。その一方で、2021年は1年目で立ち上げた研究を完成度を高めるフェーズになった。顕著な出来事はないが、地道な積み重ねをやっている堅実な年だったように思う。論文の文章を書くとかサーベイをするといった時間よりも、とにかく評価実験にかかる時間が支配的になっている。もっと素人発想力の高い野心的なテーマに取り組んだほうがいいのでは、と迷わないでもない。しかし、この記事を書きながら、今月投稿された[難関国際会議の壁](https://kanojikajino.github.io/2021-12-01/wall)の記事を読み、僕は難関国際会議に挑戦しているわけではないことはさておくとして、今は玄人実行力を向上させるべく鍛錬しているのだと、自分に言い聞かせるようにした。実際、研究室のボスにも、あくまで博士課程は大学で教壇に立つためのトレーニングの場であると伝えられた覚えもある。難関国際会議を通す裏側の話を見聞きする限り、本気で難関国際会議を目指すのであれば、その道のエキスパートから指導を受けて、何度もリジェクトを経験して通すというプロセスを経ないと厳しいかなと思うようになった。
論文は[[Obsidian]]の記録からするとおそらく100+本ぐらい読んでいる。読んでいるといっても、全文精読した論文はほとんどなく、下読み段階でノートに記録しているものも多い。
**博士課程** 博士課程の2年目に入った。[中間発表で研究の途中経過をまとめた。](https://speakerdeck.com/yuukit/a-study-on-operation-technology-for-high-reliability-of-distributed-applications)。地味ではあるもの実績も順調に増えつつあるため、来年の秋ぐらいから博士論文の執筆に取り掛かるだろう。博士課程全体で一つのプロジェクトとして進めていくのが常道だと思うが、 思いつきのままにサブプロジェクトを進めてきているので、1本の博士論文として各サブプロジェクトを密に構成できるか多少不安になってきてはいる。
[https://twitter.com/yuuk1t/status/1447413170901946378:embed]
**技術** 今年の前半は、[[eBPF]]トレーシングのツール実装にひたすら取り組んでいた。 以前からeBPFを習得したいと思っていたので、よい機会になった。今年のうちにひさびさの[大作ブログ記事](https://blog.yuuk.io/entry/2021/ebpf-tracing) [[Linux eBPFトレーシング技術の概論と実装]]としてまとめらたのはよかった。本当は研究室の来月の進捗報告がヤバいんだよなと思いながら記事を書いていたが、やっぱりブログは生の反応をもらえるのが心地よい。
eBPFとは別の文脈で、2020年よりITシステムの運用をAIでサポートする[[AIOps]]に取り組みはじめている。AIOpsは統計や[[機械学習]]といったデータ科学の手法を扱うため、当たり前だが、データがないと話にならない。そこで、AIOps向けのデータを作成するための基盤を整えたり、その基盤そのものを論文にまとめたりした。この基盤を開発するために、[[Kubernetes]]、[[Argo Workflows]]、[[Prometheus]]/[[Grafana]]、[[Chaos Engineering]]フレームワークの[[LitmusChaos]]などのクラウドネイティブ技術を学ぶ必要があった。
- [AIOpsの研究動向とAIOps向けデータセットの動的生成の研究 - Speaker Deck](https://speakerdeck.com/yuukit/introducing-aiops-and-a-dynamic-datasets-generating-system)
- [Meltria: マイクロサービスにおける異常検知・原因分析のためのデータセットの動的生成システム - Speaker Deck](https://speakerdeck.com/yuukit/meltria-in-iots2021)
- [GitHub - ai4sre/meltria: AIOps Experimental Infrastructure.](https://github.com/ai4sre/meltria)
**Topotalテクノロジアドバイザー** 以前からのソフトウェアエンジニア仲間であった[@nari_ex](https://twitter.com/nari_ex)さんと[@rrreeeyyy](https://twitter.com/rrreeeyyy)くんを含めた4名で創業されたスタートアップ企業[Topoal](https://topotal.com/)に副業にお声がけいただいた。[[notes/sre/SRE]]におけるインシデントレスポンス(いわゆる障害対応、インシデント管理とも呼ばれる)をテーマに毎週ディスカッションを進めているのだけど、これが毎回おもしろい。[2019年SRE考](https://blog.yuuk.io/entry/2019/thinking-sre)で挙げたSREの信頼性ピラミッドのうち、モニタリングの直上の階層にインシデントレスポンスがある。これまで僕は最下層のモニタリングか、あるいはインシデントレスポンスの一部のプロセスであるインシデントの原因の発見にばかり注力してきていて、インシデントレスポンス全体を深く掘り下げることがなかったので、SREの新しい切り口を見つけた思いがある。
[https://twitter.com/rrreeeyyy/status/1423528569032962048:embed]
**プロダクティビティ** 今年の4月ぐらいから、研究の成果を増すには、個人のプロダクティビティ(生産性)を向上するしかないと思い立ち、まずは生産性の計測をして現状を確認しはじめた。計測のために、ポモドーロテクニック(25分集中5分休憩を1ポモドーロ単位としてそれを繰り返す)を採用していて、1日の合計ポモドーロ数をタスクの分類ごとに記録している。この計測により、集中して研究を進められているかそうでないかが定量的に確認できるようになった。
生産性向上の一貫として、Markdown型のノートアプリ[Obsidian](https://obsidian.md/)を母艦として日々のノートテイキングにも工夫を凝らすようになった。以前から、調査したり考えたことなど個人の「知」の格納先にが脳のメモリだけだったことに問題意識を感じていた。それを解決するために、Notionを使っていたのだが、Notionはあるノートを構造的に記録しようと思ったときに、どの階層にどういう構造で配置するかを先に考えなければならず、さっとメモしようとするとまごついた。またSaaSである以上仕方がないのが、ローカルのエディタ操作に比べると動作が重たい。
そこでObsidianはSecond Brainを標榜していることからもわかるように、ノートをとる・探すまでの速さを脳の思考スピードにより近づけているような設計になっている。一日の研究はObsidianをまず起動してDaily noteをつけるところから始まっていて、なくてはならないツールとなった。今は1296ノートある。Obsidianの活用についてまたどこかに書きたい。
[https://twitter.com/yuuk1t/status/1463101242645704706:embed]
**生活** 研究者になった1年目は、締め切りを大量につくったり、あちこちに出張に行ったりして慌ただしかったが、コロナ禍の影響もあって年々ゆっくりするようになってきた。 SNSでの論争からも以前にもまして距離をとるようになった。[「喜嶋先生の静かな世界」](https://www.amazon.co.jp/dp/4062776812)でいうところの静かな世界で過ごしたいと願うようになってきた。
今年は珈琲のドリップが新しい趣味になった。焙煎した豆を買ってきて、ハンドミルで挽いて、ほぼ毎日ドリップしている。このドリップの所作が自分でやるのも観るのも好きになった。夜中にポッドからドリッパーにお湯を細く注ぐ練習をなぜかしていることもある。その他、マンガは今年700+冊読んでいて、ここ数年の平均程度。だいたい異世界系を読んでいる。
## 時系列の振り返り
### 年始から春先
年末年始はほぼ毎日eBPFを勉強してはコードに落とし込んでいた。実験のために、負荷生成ツール[yuuki/connperf](https://github.com/yuuki/connperf) をつくったり、[実験の自動化コード](https://github.com/yuuki/shawk-experiments)を書いていたりした。
2月の途中からNotionで[週間報](https://yuuk1.notion.site/b6351f431db641e5b2cc341ea6371563?v=682b4c7434e648368846b78c288d24ff)をはじめた。週間報は5月一杯ぐらいまで続けたけど、毎週のオーバヘッドを計測するようになったら、それなりに時間を割いてしまっていたので、やめてしまった。Obsidianでノートをとるようになったという事情もある。週間報のようなものはまた復活させたいと思っている。
### 春
4月にポッドキャスト番組[e34.fm](https://e34.fm)に[eBPFをテーマに出演](https://e34.fm/2/)させてもらった。第2回と早い段階で声をかけてもらえたのはうれしかった。eBPFのコードは書いていたものの、あまり包括的に学んでいなかったので、慌てて書籍を読んだりしていた。Shure MV7 買った。ひさしぶりに[rebuild](https://rebuild.fm/)
Rebuildを聴いているとhigeponさんの会でプロダクティビティの話題が流れてきたことをきっかけに、自分のプロダクティビティを見直そうと考えた。前述したように、Obsidianによるノートテイキングをはじめたり、[そして何度目かのポモドーロテクニックを始めたり、スケジュールとタスク管理を工夫しはじめた](https://yuuk1.notion.site/2021-eBPF-Summit-2020-day2-Shure-MV7-c3e1af7c4e1a4758b2f269c6a038790e)。
GWに自分でポッドキャストをやってみようと、あとはゲストに声をかけて収録するだけの状態まで準備したのだけど、実家でトラブルがあって気勢が削がれてしまった。実家との連絡用にディスプレイ付きのスマートスピーカーAmazon Echo Showを実家に送ってセットアップしたりしていた。なぜか、法学部のテキストを買って、民法の家族法周辺を勉強していたりしていた。特にこの知識を使うことはなかったが、法律と分散システムって相似箇所があるなと思ったりした。
5月はeBPFを活用した研究を英語のジャーナル論文にまとめながら、追加実験したりしていた。[第8回WebSystemArchitecture研究会](https://wsa.connpass.com/event/207143/)を主催して、ちょうどこの研究の内容を発表した。
[https://blog.yuuk.io/entry/2021/wsa08:embed]
### 夏
6月から7月前半まで、2019年末で研究がとまっていた時系列データの次元削減の研究を再開していたところ、データをもっと増やさなければならないとなり、AIOps用データ生成基盤を開発していた。
7月後半は博士課程の中間発表の準備をしていた。ひさびさに現地での発表だった。現地でネットワークトラブルに見舞われて大慌てだった。
Topotalさんから副業のお誘いをいただいてすぐにokした。
8月は実験基盤の自分の論文と共著の論文をIOTS2021に投稿する準備に追われていた。COVID-19のワクチン接種2回目の副反応で発熱しながら論文を書いていた。熱は最大39.5ぐらいあった気がするが、さすがにそのときは寝ていた。
緊急事態宣言で近所の美味しい珈琲のお店が一時的に閉まってしまったので、自分で淹れるしかないとなり、珈琲器具一式そろえて、豆を買ってきてドリップしはじめた。
### 秋から年末
論文を投稿し終えると、5月に投稿した論文の査読コメントに対応した。無事採録されて、実際に本腰をいれて回答するのは1個の条件だけだった。
その後は、2週間休みをいれた。テイルズオブアライズが発売されたので、クリアした。休み後は、査読が溜まっていて1週間査読だけをやっていた。
IOTS2021の査読スコアは共著論文をあわせてとてもよかった。国内のシンポジウムのスコアで喜んでいても仕方ないかもしれないが、よかったものはよかった。
10月から生産性の計測値が目に見えて低調になった。この低調は12月の中頃まで続く。今年の頭から夏まであまり休まなかったので、バーンアウトしてしまったのかもしれない。
データ科学の実験の記録管理を効率化するために、[[MLOps]]のSaaSである[[Neptune.ai]][Neptune.ai](https://neptune.ai/)や[[WandB]][Wandb](https://wandb.ai/site)を試して導入した。データ科学をあまり勉強せずに、[[Pandas]]の操作や実験管理を勉強していた。
11月末にIOTS2021の発表をした。この発表でもスライドが移動しないトラブルに見舞われた。今年は3年連続の論文優秀賞の受賞を逃してしまった。
12月の頭にさくらインターネット研究所での合宿に参加した。合宿は福岡のオフィスで開催された。[[Interactive AIOps]]と呼んでいる新しいITシステムの運用コンセプトを発表した。その他、オンラインホワイトボードサービスのMiroを試験導入して、振り返りなどをやってみた。
[https://speakerdeck.com/yuukit/interactive-aiops:embed]
ちょうど研究所合宿で、みんなでビジョンの話をしていたので、[未来は予測するものではなく創造するものである ――考える自由を取り戻すための〈SF思考〉](https://www.amazon.co.jp/dp/B098SSK9XC/)を読んで、マイSFブームが来た。研究所でみんなが鑑賞したSF作品テーブルをつくって共有して楽しんでいた。
Topotalさんのオフィスへ出張させてもらった。一昨年のIOTS2019やSRE NEXTぶりだねと話していた。3時まで飲む体験とか本当にひさびさだった。2軒目を1時間ででるぞと宣言して、1時間たってもまるで店をでる気配がなかったのはおもしろかった。Topotalさんのオフィスでは、サービス開発をやっている空気感をひさびさに肌で感じた。
コロナ禍が落ち着いたタイミングで、前職の同僚を含めたソフトウェアエンジニア仲間にと何回か飲み会をやった。声をかけてもらえるのは素直にうれしい。
年末は、滑り込みでブログを書くことに成功した。今年は週報以外は全然書いてなかった。
[https://blog.yuuk.io/entry/2021/ebpf-tracing:embed]
## 2022年の展望
まずは博士論文の審査のための条件が最後1つ残っているので、その研究を完遂させる。できれば、クラウド系の国際会議にだしたい。
[5年前のビジョン](https://blog.yuuk.io/entry/ipsjone2017)にしたがって、AIOpsの研究をどんどん進めていきたいのだけど、データの作成に手をとられて、データ科学の基礎の勉強があまり進んでいない。既存のAIOps手法をいろいろ実装してみて、手を動かしたからこそわかる現実の観察を踏まえた問題を発見していきたい。
博士号を取得したあとにどうするかもぼちぼち考えつつある。具体的にこれというものはまだない。
もともと前職では、会社の様々なプロジェクト、同僚やエンジニアの友人など、複数の関連するコンテキストをうまく繋ぎ合わせて、相乗効果を重ねて、自分の成果につなげていくことが得意だったことを最近思い出している。
## 2021年の研究成果リスト
### 論文誌
1. Yuuki Tsubouchi, Masayoshi Furukawa, Ryosuke Matsumoto, **[Low Overhead TCP/UDP Socket-based Tracing for Discovering Network Services Dependencies]()**, [Journal of Information Processing](https://www.ipsj.or.jp/english/jip/index.html), Vol. 30, 2022. [ [code] ](https://github.com/yuuki/go-conntracer-bpf).
### 国内会議録(査読付き)
1. 林友佳, 松原克弥, 鷲北賢, <u>坪内佑樹</u>,(ポスター)[Situation Awarenessと認知心理学にもとづいたマイクロサービス型システム向け監視ダッシュボードの設計](http://id.nii.ac.jp/1001/00213784/), [インターネットと運用技術シンポジウム論文集, 2021](https://www.iot.ipsj.or.jp/symposium/iots2021-program/), 97-98 (2021-11-18), 2021年12月.
1. <u>坪内佑樹</u>, 青山真也, **[Meltria:マイクロサービスにおける異常検知・原因分析のためのデータセットの動的生成システム](http://id.nii.ac.jp/1001/00213770/), [インターネットと運用技術シンポジウム論文集, 2021, 63-70 (2021-11-18)](https://www.iot.ipsj.or.jp/symposium/iots2021-program/)**, 2021年11月. [ [論文] ](https://yuuk.io/papers/meltria_iots2021.pdf) [ [発表資料] ](https://speakerdeck.com/yuukit/meltria-in-iots2021) [ [code] ](https://github.com/ai4sre/meltria)
1. 鶴田博文, <u>坪内佑樹</u>, [分散システムの性能異常に対する機械学習の解釈性に基づく原因診断手法](http://id.nii.ac.jp/1001/00213765/), [インターネットと運用技術シンポジウム論文集, 2021, 24-31 (2021-11-18)](https://www.iot.ipsj.or.jp/symposium/iots2021-program/)**, 2021年11月. [ [論文] ](https://yuuk.io/papers/xai-rca_iots2021.pdf)
### 国内口頭発表
1. 坪内佑樹,古川雅大,松本亮介 **[ネットワークサービスの依存発見に向いたTCP/UDP通信の低負荷なトレース手法](https://speakerdeck.com/yuukit/low-overhead-tcp-udp-tracing-in-kernel)**, [第8回WebSystemArchitecture研究会](https://wsa.connpass.com/event/207143/), 2021年06月05日.
### OSS
- [Meltria](https://github.com/ai4sre/meltria): A Dynamic Datasets Generating System for Anomaly Detection and Root Cause Analysis in Microservices.
- [go-conntracer-bpf](https://github.com/yuuki/go-conntracer-bpf)
- [connperf](https://github.com/yuuki/connperf)
### ブログ
本当は年末にもう1記事用意していたのだけど、間に合わなかった。
- [分散アプリケーションの依存発見に向いたTCP/UDPソケットに基づく低負荷トレーシング - ゆううきブログ](https://blog.yuuk.io/entry/2021/wsa08)
- [Linux eBPFトレーシング技術の概論とツール実装 - ゆううきブログ](https://blog.yuuk.io/entry/2021/ebpf-tracing)
## これまでの振り返り記事
どうでもいいけど、だんだん振り返りのタイトル付けが落ち着いてきている。
- [2020年の研究振り返り - ゆううきブログ](https://blog.yuuk.io/entry/2020/review)
- [2019年振り返り - エンジニアから研究者へ - ゆううきブログ](https://blog.yuuk.io/entry/2020/reviewing-2019)
- [2019年の展望 - ゆううきブログ](https://blog.yuuk.io/entry/2019/vision)
- [2017年のエンジニアリング振り返り - ゆううきブログ](https://blog.yuuk.io/entry/2017/review)
- [2016年のエンジニアリング振り返り - ゆううきブログ](https://blog.yuuk.io/entry/looking-back-2016)
- [2015年も技術しかしてない - ゆううきブログ](https://blog.yuuk.io/entry/looking-back-2015)
- [2014年、技術しかしてない - ゆううきブログ](https://blog.yuuk.io/entry/looking-back-2014)
- [2013年をとにかく忘年したい - ゆううきブログ](https://blog.yuuk.io/entry/2013/12/31/204602)
- [忘年した2012年の記憶を掘り起こして忘年意味ないみたいな感じになった - ゆううきブログ](https://blog.yuuk.io/entry/think-back-to-2012)
来年もよろしくおねがいします。