2020年にやったこと

去年同様、主にプログラミング関係のアクティビティを見直してみる。GitHubのActivityはこういうときとても便利だ。Starしたレポジトリの一覧にも日付が出てくれたらいいのにな。

読んだ本や論文とかのメモもひとところに纏めておいたらよいのだろうけど、テーマごとに散らばっていて日付も書いてないから何もわからない。毎年これくらいの時期になってから自分のズボラさを再確認する羽目になるのに改善する意志を持てていない。去年も同じこと言ってた気がする。

今年は割と本業の研究の方でデータ取りなどに苦労していたためにプログラミング関係の(公開するまでに至ったレベルの)アクティビティが去年に比べると少ない。余裕を持って生きていきたいですね。

1月

toml11の細かな修正をしたり、-Wall -Wextra -Wpedanticで検証されない多数の警告フラグで警告が出ないように変更している。これはたしかIssueで要望があったからだったと思う。今もそこそこの量のWarningフラグが-Werrorとともに立てられて、CIでチェックされている。なので今もtoml11のWarning数はかなり少ない方だと思う。

SDL2を使ってWireworldGUIでシミュレーションするやつを書いて回路をポチポチ描いたりしていたようだ。少しルールを変更してもっと便利にならないか試した跡があるが成功してない。

github.com

NVIDIAのthrustを触っているときに見つけたバグを直したりもしていたようだ。こんなことあったな。thrustはドキュメントが長いことアップデートされていなくて、リリースノートを見て初めて「こんな機能が入ったのか!」と思って触ってみていたんだった。thrustの関数がfutureとかを返せるようになったらしいので、それを使ってみていたときのものだ。

github.com

あと、Boost.containerに何か送っている。ドキュメントにミスがあったらしい。

github.com

しかし前回の年末年始は皆でモツ鍋とか火鍋とかを食べながら「中国でヤバそうなウイルスが見つかったらしいじゃない」「あーなんか凄いことなってるな、SARSのときみたいに」「まあ見つかって隔離とかされてるし、既存の医薬品とかを流用できないか調べてたり、ゲノムも構造も解いたりしてるし、今あれだけ研究に予算と人を注ぎ込んでる中国だからまあなんとかなるでしょ」みたいな話をしていたな。今ではそもそも複数人で鍋はつつけない。不穏な影がそこまで来ていたものの、まだ平和だったように思う。

あと、ここで論文が一本出版された。今見直すと流れがクソで計算結果をもう少し足して文章をリファクタリングしたい気持ちでいっぱいだが、そう思うのも成長してる印だと思うことにしよう……。

2月

主にコントリビュータのおかげでtoml11のCMake関係が少し整理されたようだ。他に、いくつかのエッジケースに対する修正などを入れている。

自作の粗視化分子動力学シミュレータに途中結果から状態をロードして再起動できるような機能を追加している。そのためにMsgPackのフォーマットを調べていた。そのままの勢いでシリアライズ用のライブラリを作ってみたようだ。見直すと全く使いやすいインターフェースではないが、作ってみることでシリアライズにどういうことが必要か結構よくわかったので面白かった。

github.com

3月

toml11にいくつかのリファクタリングを入れている。主に色々なライブラリのリファクタリング作業をしていたらしい。協力している細胞シミュレーターにもそういうプルリクエストを送っている。あと研究のテーマの一つが加速しはじめてあまり他のことができなくなっていった時期だ。

思えばこのあたりでだいぶ例のウイルスの状況が悪くなっていたな。海外のラボに行く予定だった先輩がかなり困っていたりした。

4月

TOMLのv1-rc1が出ていたようだ。それ関係の作業をtoml11でも少しだけしている。

本業の忙しさが一段階上がったからか、このあたりから解析用のツールの更新が活発になっている。

とはいえ既に持っている・管理しているレポジトリのリファクタリングは大いにやっているようだ。新機能の追加や新規プロジェクトよりも気が楽だからか。

5月

個人Webサイトを作った。ここでhugoの使い方を学んでいた。

toruniina.github.io

その他は概ね4月と同じで、解析用のツールを整理しつつ、基本的にリファクタリングを続けている。細々とした追加や変更を粗視化分子動力学シミュレータに入れているが、これは毎月の話で、かつそこまで込み入ったことはしていない、と思う。研究に直接関係する(まだ固まっていない)部分はプライベートレポジトリに入れているし。

あと、長いことレビュアーと格闘していたco-1stの論文が出版された。当時は長引きすぎてつらくなっていたが、これで少し肩の荷が降りた。

6月

非型テンプレート引数を使ってLispのようだがLispではない謎のコンパイル時何かを書いていた。一応それなりに言語っぽい動きをしているようで、関数が宣言できたり条件分岐やループが書けたりするようだが、実用向けではまったくない。それで先行研究を調べていたら継続をサポートしているコンパイル時Lispが見つかって驚いたりしていた。

github.com

github.com

常にやっているリファクタリングと小規模な機能追加の他には、研究で使うために論文に書かれていた方法の実装をしたりしていた。オリジナルの実装にはなかったが論文中では言及されていた変更を試したかったからだ。

7月

5月に得たHugoの知識を使って、自作の粗視化分子動力学シミュレータのドキュメントをgitbookからhugoにエイヤッと入れ替えた。手間は結構かかったが、これは良い判断だったと思っている。数式部分はmathjaxからkatexになって描画の遅延がなくなったし(KaTeXは自分でfastestと言うだけあって速い、というかmathjaxは何故あんなにレンダリングに時間がかかるのだろう?)、そもそもgitbookはCLIのサポートが切れていたので、いつかはやらないといけないことだった。HugoはGo製なので結構サクサク動くし、拡張性も高い。リンクを貼るのが少し面倒だが……まあ、その程度は頑張ろう。

他に、粗視化分子動力学シミュレータで入力のTOMLファイルを分割してincludeできるようにしたりしている。これはサンプル集みたいなのを用意して別に公開してもいいのかもしれない。あるいはtoml11で公式にサポートしてもいいのかも。流石にそれはやりすぎかな。

8月

忙しすぎて頭がおかしくなり、Separoという昔友人が作って皆で遊んだボードゲームの対戦相手を古典的な方法で実装した。といってもコードはRust/WASMで書いたので、古典的なのはアルゴリズムだけだ。これに関しては別にまとめた。ディープなやつ以前のアルゴリズムで対戦相手を作っていることの言い訳に1パラグラフ使っていて面白い。趣味なんだからそんなこと気にしなくていいのにな。

toruniina.github.io

これのためにモンテカルロ囲碁サーベイをして、RustをWasmにコンパイルしてWebページに置く方法を調べた。とりあえずプレイできればいいやくらいの気持ちで、普段はほぼ書くことのないJSとHTMLを書いたので見た目はよく言うとシンプル、悪く言うと雑な状態になっている。が、まあいい。これは結構楽しかったし、意外とすぐ出来てよかった。

あと、TOML仕様を読みながら、v0.5.0のときの日本語訳に追加したり、少し表現を改めたりしてTOML公式サイトにプルリクエストを送った。

github.com

とはいえ、判断に迷うところは全て原文を辿ったので、私の書いた部分はそんなに多くはない。サイトの造りの都合上、私がものすごい行数のコミットをしたことになってしまっているが、これはどうしたらよかったのだろうか。一応、toml.ioのメンテナ的には複数人のネイティブによる相互レビューが推奨されるとのことだったので、v0.5.0までの日本語訳を書いてくださっていた方にレビューをお願いした。特に何の繋がりもない人だったので、急にお願いして少し迷惑だったかもしれない。しかもどデカいファイル一つだけみたいなdiffだったのもよくなかっただろう。もう少し事前に聞いてみるとか説明をしっかりすればよかったなと思っている。最終的にはレビューしてもらえたが。ありがたい限りだ。

8月は学会発表の準備で死にそうになっていたことを覚えている。趣味にあんまり多く時間を割いてるから死にそうになるんだよ。反省はしてない。でもしたほうがいいと思う。

9月

GitHubに自分の名前のレポジトリを作るとトップに表示できると聞いてリンク集と当時流行っていたカードを置いたようだ。これの"Contributed to"ってたまに減ってるんだけど最近1年とかにコミットがあったレポジトリだけカウントしてるとかなのかな。

あと、toml11でコメントが二重に表示されるというバグが報告されて対応している。これは面白かったので記事にした

in-neuro.hatenablog.com

このときにTOML公式サイトを見に行ったところ、リンクがおかしくなっていたので修正した。こちらはレビューが必要なかったのですぐにマージされた。

github.com

それに、cpprefjpを見ていてハイライトがされていないことに気づいて修正を送っていたらしい。

github.com

もうちょっとドラフトやプロポーザルを読んだりしてガッツリ貢献できればいいのだが、ちゃんと目を通す暇がない。……。時間の使い方を最適化していきたいですね。「忙しい」を言い訳にしたくない。だらけず自分をコントロールしていきましょう。

どんどん新しいプロジェクトなどを立ち上げる余裕がなくなっていっている。このあたりから研究で挑戦していたことが全然うまく行かなくてかなり精神的にも厳しくなっていく。今もちゃんと解決はしてないのだが。

10月

昔研究で使うために作ったツールであるlibasdを最近新しく取ったデータに対して(別人が)使っていたところバグが見つかったようで、それを直しつつついでにPyPIにアップロードしていた。バイナリをアップロードするのに少し苦労している形跡が見える。パッチバージョンが凄い速度で上がっている。

github.com

このあたりで別に必要になった研究テーマの準備のようなことをはじめているようだ。こっちはなんとかなった。

来年の話などを少し進めていた頃でもあったと思う。この月は色々な不安で負荷が強かった。

11月

解析用のツールに公開しても構わないと思われる色々なものが足されている。多分このうちのいくらかは、半ば義務感で続いていたGitHubストリーク維持のためのものだろう。去年も書いた気がするが、これにそこまでの意味があるのかというと微妙だし、そこまで頑張らなくても……と思ってはいたのだが、続いてしまっているがゆえの慣性みたいなものにしがみついていた。

確かこのあたりで友人の論文が出て、ちょっと実装してみて遊んだりもしていた。技術的な知見が少し得られて面白かった。研究日誌にはかなり厳しそうなメモが書かれている。

12月

今月だ。

クリスマスイブが博論の提出期限だったので大変なことになっていた。一応論文の本数は足りていたのでまとめるだけではあったのだが……。前日の23時くらいのギリギリまでデータを足したりしていたので本当に地獄みたいだった。まとめたものを提出した後も緩む間もなく、科研費で買った品物が月末ギリギリに届いたせいで慌てふためきながら経費申請をしたり、それが終わったら年明けまでに論文になってない部分を英語で纏めてくれと言われてグエーと言ったりしていた。論文の草稿は昨日まとめた。

このため、ここでGitHubのコミットストリークがちょうど一週間途切れた。コミットを維持することが強迫観念みたいになっていたので、ちょうどいい機会だったのかもしれない。昔のコードのリファクタリングをする推進力になっていたという側面は否めなくもない。が、目先のコミット可能性を追うあまり「あとで意味がないとわかって公開しないことにするかもしれないアイデアを試す」みたいなコードを書く時間よりも「昔のコードの冗長だったり微妙なところを見つけて特に挙動を変えない改善をする」という方に時間が割かれるのはあまり健全ではないだろう。何かしようとして自動的に見つかったものを直すならまだしも。目標を強要されて切羽詰まると人は目先の進捗に追われて挑戦的なアイデアを失う。現代社会みたいだな。1人現代社会。

割と大変だったはずなのだが、cpprefjpを見ていて気になったのであろう部分にプルリクエストを送っている。なんだこいつ。

github.com

あと、一段落ついたあとで、C++のコードをハイライトするのに使っていたvimパッケージでstring_view_literalsがハイライトされないことに気づき、修正するプルリクエストを送った。時差などないかのような素早い応答が素晴らしいと思った。送ったdiffが自明とはいえ。

github.com

概観

誰にとっても、この一年は大変な年だったのではないだろうか。私はそもそも今年はどうあがいても忙しくなる年だったのだが、余計に色々大変だった。単独行動に対する耐性が比較的高いと言われることの多い(自分ではわからない)私にとっても大変だったのだから、多分皆さんもっと大変だったんでしょう。

今年は、ポジティブに見れば、アウトプットに至らずとも勉強したことは結構多かったと言えると思う。型システムの勉強会も内容が佳境に入ったし、電子回路や量子計算の勉強も楽しかった。研究に使ういくつかの方法論やその背景知識の勉強1も捗ったし、関連する論文や関連しない論文も色々読んで、結構面白かったものも見つけた。一応去年書いたとはいえ論文も出たし今もうひとつ書いているので、アウトプットもそれなりにはできたと言ってもいいのかもしれない。やり通したかった研究は重要なパーツが埋まらなくて終わらせられなかったけれど。これのせいで年間の進捗に結構ネガティブな印象を抱いてしまっているな。

時間の使い方もそうだが精神状態をもっと意識的にコントロールしたほうがいいな、と思った一年だった。時間の使い方はある程度意識していたが、孤独になりやすく色々な不安も襲いかかりやすい今日この頃では精神状態は結構簡単に悪化してしまう。もっと効率のいい時間の使い方をするには、そういった点もコントロールしていかないといけない。とりあえず日照時間とうつ病に相関があるという話を聞いたので人工太陽灯でも買おうかな。これは冗談です。

来年もがんばりましょう。


  1. 別に隠しているわけではなく、こういうのは分野が綺麗に定まってなかったり、個別の現象の寄せ集めだったりするので説明がややこしい