はじめに
2022年はこういう年にしたいな〜というのは年初にいろいろ考えてたんですが、いろいろ状況が変わってドタバタしたのでほぼ未達成でした。
抱負とかいうやつ、1年に1回だけ目標たててその目標を微調整する機会もないロックンロールな立て付けなので、新年の抱負で具体的なことに言及しすぎるのは僕には向いてないかもしれないと思い知った1年だった...
当初の予定とはだいぶ違ったけど、いろいろやったことはあったのでいい年だったとは思うよ
去年たてた抱負の振り返り
去年の振り返り & 抱負はこれ
去年のぼくはこういう主張をしていたようです
やりたいこと箇条書きで書いておくので頑張れよ来年のぼく 多分全部やるのは無理だからうまいことかいつまんでやってくれ - RSAのAdventCalendarおわらす - 整数論的FFTによる多倍長整数の掛け算 - Newton-Raphson Division による多倍長整数の割り算 - 素因数分解アルゴリズムの数体ふるい法を理解する - むずそうだから無理かも - 楕円曲線暗号についてRSAくらいの解像度で理解する - いまよんでる [群論の本](https://www.nippyo.co.jp/shop/book/5462.html) を読む - ガロア体について理解する - AESを理解する - AES-GCMについて理解する - TLS 1.3 で使われるHKDFについて理解する - 準同型暗号について、なにかしら1個くらい理解したい - 秘密計算あたりをキャッチアップしたい - 量子コンピュータの仕組みをある程度把握したい - 耐量子暗号なにかしらやりたい - WASMキャッチアップしたい、簡易的なruntimeとか書けばある程度わかりそう - CPUつくりたい、コンピュータへの理解を掘り下げるぞ
去年は暗号にお熱だったのでそれ関連の話題が多いですね。ほとんど暗号の話だ。
結論をいうと今年はあんまり達成できてません。理由は結局別のことやってたからです。
新年の抱負くん、1年に一回しかフィードバック機会のない目標設定なので、その年の前提が変わった場合にメタメタになるなというのが今年の学びです。
なので来年は具体的な目標設定ではなく、その1年の行動変容を促せるような企業のvalue的なやつを決めようかなと考えています。
抱負の振り返りとしては、達成できんかったよ、でもほかにもいろいろやったのでそれは別で言及するねという感じです。
仕事の振り返り
去年停止したprjが再開して、リードの役割としてprjに貢献して無事完了させられた!
システム的な制約条件がおおい中、各所と相談したりpros/consを整理してよい設計方針の整理ができたな〜という手応えがあって、いい仕事が出来た気がする。
もちろん同prjではめっちゃ手も動かしたので、いい感じに貢献できたと思っています。
あとはgoogle sign inの追加のときに、過去認証文脈いっちょ噛みしてたこともあり 公式mobile client SDK使うとnonce渡せねーじゃん問題 に気づいて有識者から意見を集められてよかった。
(ちなみにこの問題についてはAndroidはより新しい auth.api.identity
をつかえばよさそうで、iOSについては回避不可ということでSDKをforkしてnonceを渡せるようにする対応を行いました。該当の問題は当時は困ってる人はいそうだったんですが fork先で操作ミスって出しちゃったPR しか出てなくてあんまり対応されなさそうだったのでforkしつつupstreamに取り込んでもらえるように頑張るぞいという作戦を立ててました。prj終盤で このチケットに動きがあり その流れで PRもでた ので結局はそれに任せることにしました。なんで対応されてないんだろーとおもってましたが、チケットのやり取りをみるに、client側の自動発行 & 検証で十分だと思ってたっぽい。たしかにserver側でtoken検証したいです!という話題がなければそれでよいはずだから想定ユースケースを超えて使われてたのかな。とはいえ公式docでこのSDKつかってserverでtoken検証するやつ紹介されてたからちゃんと内部で連携してよと思いますが)
あとは採用広報みたいなこともちょっとずつやりだして、 podcast喋ってみたり、社で開催したmeetupで発表したり、次のmeetupの企画、運営、実施をやったり といろいろなことに手を出してみた感じでした。実際成果もでてて採用のときに少なからず候補者さまから話題にだしていただけるようでとても嬉しいです。
技術面
今年はいろいろtryできて面白かったと個人的には思っています。
とりあえず今年は18本の技術っぽい記事を投稿していたようです!去年は 完走失敗した一人advent calendar の影響で30本くらい技術記事書いてたので結構減ったように見えるけど、12月以外は今年のほうが書いてるので習慣っぽい感じにはなってきた雰囲気がありますね。
せっかくなので書いた技術記事を並べると以下のかんじ!
- karatsuba法 - ちりもつもればミルキーウェイ
- Goのbuiltin/unsafe関数の実装追いかけ方メモ - ちりもつもればミルキーウェイ
- go build せずにバイナリをつくって linkname を理解する - ちりもつもればミルキーウェイ
- バイナリのbit表現を得られるencodingパッケージ作った - ちりもつもればミルキーウェイ
- gobのモチベとか、現代的な観点からのメリットとか - ちりもつもればミルキーウェイ
- グローバルなid生成器(UUID v4とか)の比較 - ちりもつもればミルキーウェイ
- CVE-2021-3538 をちゃんと読む - ちりもつもればミルキーウェイ
- gofrs/uuid にパッチをだした - ちりもつもればミルキーウェイ
- Genericsをつかってcomparableなpointerの値が等価かどうか判定したいよ〜 - ちりもつもればミルキーウェイ
- Go1.19のcrypto/randではunix環境のReadで内部バッファがなくなるので色々しらべた - ちりもつもればミルキーウェイ
- picoCTFでMod 26といた - ちりもつもればミルキーウェイ
- picoCTF Transformation writeup - ちりもつもればミルキーウェイ
- gobエンコーディング頑張って調べる回 - ちりもつもればミルキーウェイ
- google sign inでiOS/Androidのclient SDKを使うとnonce指定できなくねという話 - ちりもつもればミルキーウェイ
- gofrs/uuidに出してたパッチがマージされたよ(そしてあとから気づいた細かいパッチをまた出したよ) - ちりもつもればミルキーウェイ
- limaつかってdocker環境作るぞ - ちりもつもればミルキーウェイ
- Goの最近のおもしろCVEとその対応を眺める - ちりもつもればミルキーウェイ
- json/protobuf(wire)/gobをバイナリ効率とかの観点から比べてみる - ちりもつもればミルキーウェイ
並べるとわりと書いてますね。
あとはOSSにいくつかのパッチも投げてますね。しょうもないtypo修正から頑張った機能追加もありますが今年は3件投げたっぽい
- update UUIDv7 implementation with RFC Draft Rev 03 spec by convto · Pull Request #99 · gofrs/uuid · GitHub
- stop using UnixMill() to make legacy versions compatible by convto · Pull Request #104 · gofrs/uuid · GitHub
- fix typo in README.md sample code by convto · Pull Request #43 · planetscale/vtprotobuf · GitHub
引き続き来年も使ってるソフトウェアには(全ては不可能にせよ)なにかしらの形で貢献したいなと思います。
あとはコミュニティのイベントにもちょいちょい登壇しました。
- GoCon 2022 Spring LT Go runtimeの歩き方 speakerdeck.com
- golang.tokyo #32 byte列のbit表現を得るencodingライブラリ作った speakerdeck.com
今年はLTしかやらなかったので、来年は20minの発表できるといいなー
あとは raftの論文 を読んでみたり、並行プログラミング入門みておもしれーとなったり、そんな雰囲気で日々を過ごしておりました。
プライベート
去年入籍したんですが、今年の年明けくらいに福岡に新婚旅行にいってうまいイカをたべたりしてきました。とにかく体験がよかったので福岡にはまた行きたいです。
嫁さんとはお互いキャリアのこととか中長期的にどういう仕事したいかとか、そういう話をする機会が多かった年のように思います。
あとはいろいろお金の面でドタバタした一年でもありました。ここ数年は引っ越しやったり車買ったり新婚旅行したりで貯金がすこしづつ目減りしてたんですが、うちは僕も嫁さんもどっちもソフトウェア開発者として仕事していて二馬力だったのでまあすぐ貯金も貯まるだろガッハッハくらいに思ってました。
でも今年は嫁さんが仕事をしばらくおやすみしたり勤務へらしたりすることになり、急に1.3馬力くらいになりました。
いままではほっといても貯金溜まったんですが、状況かわって目先の現金があまり増えなくなったので、今年はずっとドキドキしてました。
幸いにも年内無事に走りきれたし、来年以降は(嫁さんの所得税も下がるしその他の要因もあり)随分余裕がありそうな目処も見えているので安心しています。
今年はそんなこんなで自分は家庭の大黒柱なんだなというのを強く意識する一年でした。
仕事や成果を通じて関わる人たちと信頼関係を積み重ねて、役割を期待されてそれに応えるサイクルをどんどん繰り返して大きいチャレンジにつなげて、その結果給料もあげる!ということと真剣に向き合わねばなと痛感していろいろ努力した一年でしたね...
あと今年も引き続き家事が出来なかったです。より正確にはちょっとコストかかる定期的に発生するタスクを意識しつづけるのが(脳のメモリあふれとかコンテキストスイッチコストとかの観点で)めっちゃ苦手です。仕事ならこういう内容は自動化したりそもそもの問題を解決してタスクを消したりするんですが、家事はそれができないのでぐえーとなっています。
将来的にはパンピーくらいの家事はできるようにならないと嫁さんの負担が増えてしまうので来年は頑張りたいと思います。
来年のスローガン
去年の抱負設計はめちゃめちゃ失敗しました。全然抱負と関係ないことばっかやってましたね。
楽しかったし仕事にもいい影響あったしこの方向で良かったと思ってますが、一方で抱負として掲げた目標が僕の行動を変容させれなくてアクセル掛けれなかったので、せっかく目標たてたのにもったいないなーとも思ってます。
この結果を踏まえて、そもそも1年の抱負とかいうやつは年間で1度しかフィードバック機会がないので、あんまり具体的なことを整理するには(すくなくとも僕にとっては)向かないのでは?みたいなことをいまは思っています。
なので今年は抱負っていうか一年のスローガン的なのを決めて来年の行動変容を促していこうとおもいます!
というわけで今年のスローガンはこれです!
収束させる
よ〜しパパ頑張ってまとめちゃうぞ〜
スローガンの理由
収束させる
のスローガンにどういう思いが込められてるかというと、ひとことでいうとそろそろ明確な専門性の形成を意識し始めたいという話です。いまのところ胸を張って専門性がある!といえるトピックが存在しないので、長い目線でちゃんと専門性の形成に向けた努力をせねばな、ということです。
いままでは興味を感じたことはとりあえずやってみる方針で戦ってきました。技術的な分野できらいなものも特になかったし、必要に応じて価値提供のためにはなんでも楽しくやれたとおもいます。なんというかソフトスキルも合わせた総合格闘技で手段を選ばず価値のデリバリーに貢献していた感があります。もちろんそれで培ったものは今後も大事にしていきますし色々投げ出すみたいな話ではありません。
専門性を育てる活動としては、興味駆動でより深いトピックへの入門みたいなのもやってきました。encodingに関する調査をしたり、TAOCPの気になる章をちゃんと読んでみたり、いくつかのアルゴリズム実装したり、マルチスレッドプログラミングや分散コンピューティング文脈の本や論文をいくつかみたり。RSAについて証明したり論文みたりもしましたね。そのなかでもちょぴっとくらいは業務にも還元されたりしました。これらの知識を生かしてよい進め方ができたprjもあったように思います。(もちろん周りの方にも多くのサポートをいただきました〜というのは大前提です!)
知的好奇心に駆動されて行った学習を通して、遠回りですが貢献できることが増えてきている手応えはあります。
ぼくはキャリアのなかでいろいろなよい縁があり、一定の知識が獲得できましたし、その能力を通じて一定は世の中に価値提供できた実感があります。(明記しておきますがこれは大半が良縁と運によるもので再現性はありません)
来年から20代も後半に入っていくので、自身の人生のテーマにより深く向き合いたいなというのがこのスローガンの理由です。僕の人生でいま向き合いたいと思っているテーマは「確かな専門性の確立とその専門性から自身が提供できる価値と社会の需要の接点を探すこと」です。
30歳になるくらいまでに胸を張れる専門性を形成したいなーとおもっていて、それを見越して少しづつ獲得したい専門性への収束を意識してうごきだそうかなーという。
この「確かな専門性の確立とその専門性から自身が提供できる価値と社会の需要の接点を探すこと」というテーマについては、以下の2つの観点で現在の状況が評価できます。
- どのくらいの専門領域を持てているか
- どのくらい価値提供できたか
(余談ですが、こういうのを意識してるから自然と問題を解決したときに影響が大きくてレバレッジの効きやすいレイヤの低い技術に関心がむきがちなんだなーみたいなのを書いてて思いました)
で、やっぱり確かな専門性みたいなものの形成をそろそろ意識していきたいんですよね。いまの僕もできることやわかること、提供できる価値は昔と比べて随分増えましたが、胸を張って専門性があると言える分野はほぼ無いです。いままではとっかえひっかえ興味のでたものに手を出しまくっていましたが、それを収束させてより深い専門性の形成を始めようというのが 収束させる
のスローガンに込めた思いです。
まあ変わらず興味の出たものはとっかえひっかえして手は出すと思うし、貢献できる余地があることはあんまり選り好みせずにやると思います。なんというか大きい軸としてこういう技術の専門家になりたい!みたいなのをいまからやんわり意識し始めようかな〜という程度の話です。
なにに収束させるかは決めてないけど、いま興味があることと提供できる価値の接点を探すと
- データベース
- コンテナ技術
- (上記に必要なので英語)
あたりが専門性の形成を意識しつつ価値提供のバランスを取りながら取り組めそうな課題だなと感じてます。投資みたいになりすぎるとモチベーションの持続が難しいので、あくまで普段の仕事と隣り合わせの領域のほうがよいかなといまは考えています。
ぼくはserversideの仕事のなかでは以下の内容に特に関心があります
- 要件に基づいた性質(tx isolation level, スループット, レイテンシ, 分断耐性, 他)を提供しながら、想定される手段のうちもっとも有効な手段で状態やメッセージを管理すること
- コンピューティングリソースを適切に扱うこと
このへんの知識は価値提供によい影響をあたえるため、データベース知識の掘り下げやコンテナ技術の掘り下げを今の所考えています。でもあくまで 収束させる
というスローガンだけ意識してまだ具体的になにやるかは決めてません。全然関係ないことをやるかも。なにやるにせよとにかく収束を意識するぞ。
ひきつづきおもしろそうなものはなんでもやるし選り好みはしませんが、専門性の形成を意識して中長期的に知識を合流させるイメージで今年はやっていきたいと思います。