12月、今年も最後の月になった。出会った人たちとはいつの間にか離れ離れになり、Q4のOKRも固まった。何もかも淡々としていて、暇で退屈なので、少し早めに年末の振り返りを書こうと思う。2000年生まれで、あと1か月もすれば25歳。一人で杭州に来てからも、もう3年以上になる。毎日、時間があるときに少しずつ書いている。土曜日になって、深夜1時まで書き、そのあとは配信を見たり麻雀を打ったりして、寝たのは朝5時。去年も2023年の振り返り:少しずつ見えてきたこと、得るものも失うものも気負わずにを書いた。//TODO 締め切りは月の半ばくらいかな。
仕事
ざっと思い返すと、今年は仕事でこんなことをやったはず。
自分からプロジェクトチームの異動を希望し、新製品アプリの日常的な保守とバージョン更新を担当。2週間に1回のリリースで、複数のアプリを並行して進めた。
全アプリのAppleサーバーAPIをStoreKit 2に更新し、本番にリリースした。
Google決済・サブスクリプションSDKのネイティブAPI呼び出し部分をリファクタリングした。
RocketMQを使って、複数のデータセンター間のユーザーデータ同期、Webhook、プッシュ通知を最適化した。
RocketMQ-Exporterを構築し、関連する性能指標を監視した。
SSEとサーバー側のgRPCストリーミングによるメッセージ配信を実装した。
USのマシンのメモリを最適化し、メモリアロケータをjemallocに切り替えた。
Q4のタスクとして、RocketMQを単一インスタンスからDLedgerのクラスタ構成に移行した。
2022年3月に卒業してから今まで、あと1四半期も過ごせば、この会社に入って3年になる。「3年の約束」だ。ずっとレベルを上げながら敵を倒していくような感覚で、人が入れ替わるのを見てきた。一緒に働いていた人が辞め、また別の人が入ってくる。四半期ごとに繰り返しの仕事をこなし、技術スタックも相変わらずSpring Boot + gRPC。1年かけて慣れてしまうと、もう新鮮味はなくなった。ユーザー数がそれほど多くない一般消費者向けアプリでは、基本的に重視されるのはクライアントのUIや操作体験。バックエンドはデータを保存する場所にすぎない。読み書きのどこが難しいのか、そんなの誰でもできる。四半期ごとの仕事は、基本的なバージョン更新とサーバー内部のちょっとした最適化だ。高い評価をもらいたいなら、それだけでは全然足りない。基本ルールは、アラートを出さずにリリースをこなしつつ、チームに大きく貢献できる価値あることをして、A評価や四半期の優秀社員を取ること。
この3年間で小さな昇格は2回あった。P5-1 -> P5-2 -> P5-3。それでもまだジュニア開発者だ。今年もたぶん厳しい。A評価が2回ないと、次の等級帯に上がるチャンスはないし、プロジェクトのオーナーを務めたこともない。周りの友人や同級生の仕事や昇進と比べると、自分は役立たずだな、としか思えない。あまりにもぬるま湯につかりすぎた。毎日9時から18時、週5日勤務。たまにリリースで残業する以外は、みんな残業しない。そもそも残業してまでやる仕事も、それほどない。
要求された機能を実装する難しさについて言えば、ChatGPTに渡せば技術案もデータベースのテーブルも生成してくれるので、コードを少し直すだけでいい。GoやPythonの各種データ処理スクリプトにもAIを使っている。主な難しさは、やはり要件レビュー、要件の理解、そしてプロダクト・テスト・開発間のコミュニケーションだと思う。チームのシニアやベテラン開発者のOKRも見てみたけれど、特別なことは書いておらず、自分の参考にもならなかった。去年はまだコードレビューがあったが、今年はPRを出してリーダーに一言伝えれば、中身を見ずにそのままマージされる。他のメンバーも同じだ。その人たちのコードを見ることはできるけれど、見る頃にはたいていマージ済み。もう一つ、チーム内の情報共有がかなり悪い。誰かに聞いて初めて、「ああ、あのプロジェクトでやったことがあるんだ」と分かる。
2022年、2023年はクライアント側とのやり取りが本当にしんどくて、自分の立場を必要以上に低く置いていた。話してもかみ合わず、こちらの考えを理解してもらえないし、提案も聞いてもらえない。今年は別のプロジェクトチームに移って、連携がかなりスムーズになった。自分の考えを受け入れてくれるし、改善案まで出してくれる。全体的にはいい経験だった。
仕事では技術力だけでなく、人との付き合い方も試される。 情報を得る力、人とうまくやり取りする力。ここは自分にはどうにもできない。会社には同年代がおらず、みんなだいたい家庭を持っている。一緒にたばこを吸う相手すらいない。今年は昼食も一緒に食べていない。今も会社の隣のマンションに住んでいるけれど、昼休みは一瞬たりとも会社にいたくなくて、家で座っているほうがずっと楽だ。今は基本的に仕事の話しかしない。生活の話はしない。みんなにはそれぞれの仲間やグループチャットがあるのかもしれない。正直、もう辞めたいと思うことも多い。毎日決まった時間に出勤して退勤する生活は、本当につまらなくて疲れる。一日中そこに座って、一言も出てこない。誰だっておかしくなるだろう。でも自分の実力を考えると、今の9時から18時、週5日より満足できる仕事を見つけるのも難しい。お金💰は杭州で暮らせるくらいにはもらえているし、ひとまず🐶おとなしくやり過ごそう。基本給が上がるか見て、年末のボーナスをもらおう。
個人の成長という点では、実はQ2とQ3が一番収穫が大きかった。バージョン更新は、本当に胸を張れる実績にはならない。
(Q2)RocketMQの業務への組み込みを最適化。2024 Q2 OKR完了:RocketMQでWebhook処理などの業務を最適化(本番公開済み)。最近、MQを使って関連業務を改善する必要があった — 掘金
(Q1/Q2)AppleサブスクリプションのStoreKit 2への更新。ドキュメントを読み、資料を集めて理解し、公式ライブラリを読んで小さな貢献もした。Apple StoreKit 2サーバーAPIの更新(Appleのオープンソースアプリ内課金ライブラリ)(本番公開済み)。Q1のチーム内サーバー技術の取り組み — 掘金
(Q3)メモリ問題の調査。Javaサービスのヒープ内 -> ヒープ外 -> glibcメモリの異常調査:ベストプラクティスと自分なりの方法論💥。本番環境の一時対応はまず再起動から — 掘金
(Q2)Googleの決済・サブスクリプション。越境決済:Google Payの購入・サブスクリプションSDK、ネイティブAPI V1/V2コードの最適化とリファクタリング(本番公開済み)。最近、新製品チームへ異動した — 掘金
生活
去年立てた目標も、気合いだけは十分だった。
ソフトウェア資格試験のシステムアーキテクトに合格し、ソフトウェア著作権登録も取得して、杭州のE類人材認定を受ける。
筋トレ・ダイエット。
自転車Vlog。杭州の観光スポットを全部走る。Insta360 Ace Proを使う。
Canon RPでの写真撮影と動画編集の勉強。
日本語・英語の勉強。
LeetCodeでKnightになる。
D種免許を取って、スポーツタイプのオートバイに乗る。
日本式麻雀の雀荘を体験し、いろいろなオンライン大会に参加する。
ClickHouse杭州オフライン勉強会。
掘金ブログの更新、日々の技術メモ。
千島湖。
たばこ、お酒。
Bilibiliで日本式麻雀の配信。
システムアーキテクト試験+ソフトウェア著作権登録で杭州のE類人材認定を取得
システムアーキテクト試験は、かなり運がよかった。去年の初受験では落ちたけれど、今年5月の2回目で合格ラインぎりぎり、52・46・45点で受かった。E類認定が通ったあと、新卒向けの家賃補助である半年ごとに5,000元から、毎月2,500元の補助に切り替えた。毎月の家賃が実質無料になったようなものだ。共有持分型の住宅は考えていない。杭州に戸籍を移して定住するつもりはないから。細かいことはここでは書かない。このブログ記事にまとめてある。手続きについて知りたければ、個別に連絡してくれれば答えます。(杭州E類人材) システムアーキテクト試験(52/46/45)—浙江樹人学院・浙江工業大学、2024年5月25日 — 掘金
img
自転車Vlog:杭州の観光スポットを全部走る、Insta360 Ace Pro
一人で走っては立ち止まり、いろいろな場所へ行った。一番よく走ったのは、銭塘江沿いの彭浦大橋から復興大橋までのルート。何回走ったか分からない。西湖、湘湖、九渓にも行った。自転車はオンライン限定販売の青春モデルで、あとになって不具合がたくさん出た。チェーンがチェーンリングにこすれたり、ブレーキが効かなかったり。自分で何度修理したか分からない。ここ2か月はあまり乗っておらず、地下室に置きっぱなしでかびが生えている。いずれ売るつもりだ。自転車用品もあんなに買ったのになあ。
3,000元以上で買ったInsta360 Ace Proは、今や2,000元くらいまで値下がりした。当時はDJIとInsta360のどちらにするか、ずいぶん悩んだのに、結局失敗した。実店舗でDJI Actionを試してみたら、画質がInsta360よりずっとよかった。DJI Action 5をもう1台買うことも考えたほうがよさそうだ。一人で自転車に乗る日々も、そろそろ終わりにして、新しいおもちゃ、スポーツタイプのオートバイへ。よっしゃ、飛び出そう。
imgimg
imgimg
筋トレ・ダイエット
何と言えばいいか、三日坊主の繰り返しだった。体脂肪もあまり変わらず、食事管理なんてなおさらできない。毎日デリバリー、デリバリー、デリバリー。Q1とQ2はわりと積極的で、平日の夜は時間があればジムへ行き、週末も昼間に行っていた。ジムにいる時間は気持ちも楽になった。このマンションの地下には市民向けのジムがあって、24時間営業、顔認証で入れて、設備も一通りそろっていて、人も少ない。料金は1四半期300元。後半は、短期間で効果が見えなかったことと、生きているだけで疲れる感じが重なったのか、しばらく行かなくなった。たまにたばこを吸いに下へ降りたついでに、のぞくくらい。結局、得られたのは自分へのちょっとした慰めだけだった。きちんとした計画も、続ける気持ちもなかった。今はもう、腕時計すら着けないほど面倒くさがっている。
imgimgimgimg
Canon RPでの写真撮影と動画編集の勉強
何というか、週末や休みは家に引きこもっているので、カメラはもうほこりをかぶっている。9月1日に無料チケットをもらい、彼岸花を撮るために杭州植物園へわざわざ行った以外は、出番がない。動画編集もひどいものだ。今は剪映で、雀魂のキャラクターガチャを回す動画を少し作るくらい。いずれは本格的な編集ツールも勉強したいけれど、そこは必要になったらかな。
img
D種免許を取って、スポーツタイプのオートバイに乗る
なぜバイクに乗ろうと思ったのか。きっかけは、中秋節に実家へ帰ったとき、隣の家の人がバイクを買っていたことだった。そのとき「乗ってみる?」と言われたけれど、乗らなかった。そのあとずっとバイクが気になって、抖音でも関連動画ばかり流れてくるようになった。それでD種免許を取ることにした。週末に半日練習し、平日に半日試験を受ければ終わり。4科目をまとめて受けられて、C1の自動車免許より取得までの期間が短く、早い。
免許を取ったあとは、週末に一番近いレンタルサービスを探して、まずは試してみた。蕭山の之江路・美女壩のルートをホンダ500で走った。振動で手がしびれた。1時間で100km走り、結局1時間半で返却して、走行距離は150km。全体的にはとてもよかった。乗りに行く道中も、乗っている間も、生活や仕事の嫌なことを忘れられた。一番恥ずかしかったのは、信号待ちからの発進でエンストしたこと。これからも週末はレンタルして出かけたいし、縁があれば一緒に走る人も見つけたい。
imgimgimg
日本式麻雀のオンライン大会と雀荘体験
毎日仕事が終わると、出前を頼んで麻雀開始。いろいろな日本式麻雀のグループチャットでだらだら話し、友人戦や団体戦を打って、毎晩2時、3時まで。下手なくせに、とにかく打ちたい。グループの人たちと大会で対戦して、自分の実力も見えてきた。他の人の打ち方を学び、猪のように突っ込むだけだったところから、少しずつ放銃率も気にするようになった。前日にオンライン大会を打ったばかりだったけれど、今月の日曜日には、ある兄貴分について杭州の湖浜牌浪屋へ行き、リアルの日本式麻雀も体験した。今年一番やったことは麻雀だ。仕事が終われば、麻雀、また麻雀。
imgimgimg
LeetCodeでKnightになる
基本的に一歩も進んでいない。コンテストにも一度も出ていない。なぜ問題を解くのか。何のために。自分にどんな見返りがあるのか。居心地のいい場所に長くいすぎて、外へ出たくなくなった。アルゴリズムにもまったく興味が湧かない。たぶん次に触れるのは、転職活動を始める直前だろう。実際、霊神の問題リストを解く計画も立てたのに、結局自分が怠け者なんだと思う。動き出せない。あと1か月、本気を出してみるか? いや、やめよう。麻雀しよう。
img
その他
今年はClickHouse杭州オフライン勉強会に参加した。ClickHouseというDBを使ったことはないけれど、他の会社がどう導入しているのかを聞きに行き、アリババのキャンパスも少し歩いた。
掘金ブログの更新や日々の技術記事は、主にクリエイター養成キャンプへの参加を通じて、文章で伝える力を少し鍛えるためにやっていた。まとめる過程で、問題の本質は何か、どういう手順や方法で解決するのか、他の人はどう解決したのかも分かる。収穫はあった。
五一の連休に同級生と千島湖へ行った。最後はあまりよくなかったけれど、道中の体験はよかった。
日本語・英語の学習に費やした時間は、日常業務での英語の使用や、さまざまなドキュメントを読む力として、プロジェクトを見て回ったり論文を読んだりするときに効いてくる。
日本語への興味は、純粋に日本式麻雀を打つこと、周りの麻雀グループの人たちの影響、そしてアニメから来ている。毎日Duolingoの課題をこなし、『標準日本語』と『みんなの日本語』を合わせて4冊買った。Bilibiliでは円円姐の動画講座を見ている。【京都大学博士と日本語を学ぼう】新標準日本語・初級上巻の新講座!必ず身につく!とても詳しい解説で日本語学習を楽に!(教科書の内容は完結)— Bilibili
たばことお酒は、もう日常茶飯事になった。 上半期は憂さを晴らすために酒にのめり込み、下半期はたばこで時間をつぶしていた。毎日仕事が終わっても何をしていいか分からず、暇つぶしの楽しみを探す。毎晩遅くまで配信を見たり麻雀を打ったりして、2時、3時に寝るのが当たり前になった。夜に陳伯や劉劉江の配信を見るのが楽しみだ。平日はだいたい8時50分のアラームにたたき起こされ、死体のような体を引きずって出勤する。週末は昼や午後まで自然に目が覚めるまで寝る。ただし上下の部屋で工事をしていると、その振動で直接起こされる。
こうして振り返ると、2024年も意味のないことをたくさんやったなと思う。
記事は15本しか書いていないけれど、閲覧数は3万くらいあった。正直、数字はどうでもいい。主には、あとで自分が思い返せるようにするためだ。公開しておけば、同じ問題にぶつかった誰かに、解決の糸口を渡せるかもしれない。来年も書き続けるのか、それとも別のことに時間を使うのか。まだ何も分からない。
imgimgimg
個人的な技術学習
AIの知識を広げる。
部署内での発表。
レコメンドシステムとRAG。
フロントエンド。
外部サービスの決済・サブスクリプション。
分散システムの論文を読み、まとめる。
『コンピュータネットワーク:トップダウンアプローチ』第7版。
『コンピュータシステム:プログラマの視点から(CSAPP)』第3版。
『データ指向アプリケーションデザイン』。
技術の幅を広げ、深掘りする。RocketMQ、go-redis、Netty、Mycat2のソースコード。
勉強なんてやってられるか。そんな気分になれず、下半期は毎日麻雀を打っていた。
AIについては、主に周りの環境に影響されている。 自分のプロジェクトチームはずっとAIを業務に使っていて、会社も2023年からOpenAIのチャット機能を組み込んでいる。社内ではAI関連のコンテストも開かれた。業務側では独自のナレッジベースとRAG検索を作りたいという話があり、主にAWS上のRedrockが提供するナレッジベース機能を使っている。チームのいくつかのアプリでは、MicrosoftのTTSを使ってテキストを音声に変換してきた。部署、チーム、プロジェクトチームで、みんながAI関連の知識を社内で共有し続けている。プロダクト担当者がCursorを使って、要件に沿った実装を先に書き上げ、そのまま自分でデプロイして公開することもある。
プロジェクトチームの業務に合わせて、最近は決済関連の機能を変更した。Web上での消耗型商品や継続課金商品の購入は、主にStripeのクレジットカード・Visa決済とPayPal決済に接続している。App Store決済については、最近チーム内のStoreKit 2サーバーAPIの更新とコードのリファクタリングを担当し、公式のオープンソースライブラリを使った。github.com/apple/app-s…
AlipayとWeChatは、中国のユーザー向けに提供している決済方法だ。コードはかなり粗く、関連する機能更新も長いことない。Google決済は、入社してからの2年間で触れた業務がまだ少ない。決済全体の流れはApp Storeと同じなので、時間があるときにコードのロジックと公式ドキュメントを勉強し、まとめておきたい。
今はバックエンドしかできないのでは、全然足りない。 代わりがいくらでもいる。中堅・大手のように職種や業務が細かく分かれている会社なら別だけれど。自分のアイデアがあって、今後自分のプロダクトを作ったり、個人開発者として一人で会社を回したりするなら、フルスタックこそ最強への道だ。
自分のフロントエンド学習も断片的で、大きなプロジェクトを丸ごと作ったことはない。github.com/lobehub/lob…というReactのオープンソースプロジェクトを見て、TSX + TSに衝撃を受けた。フロントエンドはもうここまで進化していたのか。HTML + CSSが別々にあるわけではなく、全部がまとめられている。社内のデータプラットフォームは、今も素のHTML + Djangoで作られている。機能を追加するたびにAIでコードを生成し、動けばそれでよしとしている。
下半期には、基礎知識が大事だと思うようになった。技術は業務についてくるものだし、新技術を追いすぎる必要はない。コンピュータの基礎知識、アルゴリズム、基礎となる論文に時間を使おう。
途中のある時期には、『コンピュータネットワーク:トップダウンアプローチ』第7版(語雀のノート)と、『コンピュータシステム:プログラマの視点から(CSAPP)』第3版(語雀のCSAPPノート)をじっくり一通り読んだ。本はたくさん買ったけれど、どれもほこりをかぶっている。去年のようなやる気はもうない。
論文を読めば、技術の理論的な土台を学べる。 もう一つ大事なのは、英語の勉強にもなること。主には、ある投稿者がこの分野を勉強しているのを見て、しばらく一緒に追いかけていた。Googleの三本柱、GFS、MapReduce、Bigtable。論文を読むのに分散システムの論文を読まないなんて、四大名著で『紅楼夢』を読まない、唐詩で李白や杜甫を読まない、インスタントラーメンにスープの素を入れないようなものだ。RaftやPaxosのあたりは、一度読み始めると本当に何日も入り込んでしまう。いつも硬核課堂の記事を読んでいる。Raft論文の読み解きとetcdソースコード解説
オープンソースプロジェクトに参加する目標も達成できなかった。 かけた時間が少なすぎた。結局、勤務中や仕事のあとに時間があっても、業務で使っているコンポーネントのソースコードを深く学ぶことはなかった。最近はRocketMQのDLedgerクラスタ構築と、MQを使った業務の最適化を担当し、RocketMQ-Exporter + Herzbeat + Prometheusでメトリクスを監視している。遭遇するエラーがあまりにも多くて、毎回ネットで事例を探して解決している。勤務中にAIを使いながら、RocketMQのソースコードをもう少し深く読んでみよう。読みながらまとめる。
RocketMQ 5.2.0ソースコード:Producer
あれこれ学んだことの雑記。
途中でまた機械学習や深層学習を少し調べ、ビッグデータ開発のSparkやFlinkといったコンポーネントも見た。フロントエンドではReact + TSの知識やデモ、Flutterのオープンソースプロジェクトを見た。単語を覚えているときに、墨墨背単詞がNode + TSで書かれていることを知った。ソフトウェア資格試験の問題演習アプリにはFlutter製のものもあり、作者は個人開発者だった。最近は会社のクライアントチームもFlutterで新しいアプリを作っている。自分にもそのコードを見る権限があるので、技術スタックを少し調べた。
別の時期にはAmazon販売の運営業務も少し調べた。AIGC、エージェント、画像、音声、ベクトルデータベースのMilvusなど、RAGによるナレッジベースの検索拡張についても見た。レコメンドシステムの分野では、推薦、広告、検索について、しばらく調べたり勉強したりした。こちらにはアルゴリズムエンジニアがおらず、推薦機能はかなり粗く、ユーザープロファイルという考え方もないからだ。一時期はCloudWeGoコミュニティのKitexやHertzにひかれ、上海のオフライン勉強会へ行きたいと思ったけれど、残念ながらちょうどその週が資格試験だった。麻雀の牌譜ツールがRustで書かれていたので、Rustも少し調べた。github.com/Equim-chan/…
システム設計や業務シナリオを考えることに時間を使った時期もあったと思う。IM、フィード、ローカルメッセージテーブル、分散レート制限など。どれも表面をかじっただけだった。
Q2のサーバーのメモリ問題は、毎日、勤務中も退勤後も考えていた。ネットの記事を読み尽くす勢いで、ヒープ内からヒープ外、そしてglibcまで調べ、いろいろな技術に詳しい人に状況や異常について聞いた。チームのメンバーは何も助けてくれず、全部自力だった。こうしたことも、実質的な収穫にはならず、プロジェクトで使うこともなかった。しばらくすると、ほとんど全部忘れてしまった。ノートもまとめも書いていなかったから。
今振り返ると、技術の勉強にかける時間が少なすぎた。技術への探究心もなく、何でも少しは知っているけれど、何一つ得意なものがない。結局何も身についていない。JavaやSpringを離れたら、自分には何ができるのか。自分にできることなら、AIを使える人を連れてくれば誰でもできる。毎晩夜更かしして、何のために起きているのかも分からず、何も成し遂げられない。この1年はコードもあまり書いていない。基本的にAIに生成してもらい、少し直したり設計したりする程度で、自分が書いたものすら分からなくなってきた。生活にも仕事にも迷っていて、今はただ一日一日をやり過ごしている。実家に帰りたい。
これからの計画 — 上半期分に更新済み
2025年7月、浙江大学で日本語N2を受験。
英語のTOEIC試験の準備。N2に受かってから考える。
オープンソースコミュニティのプロジェクトで、技術の視野と理解を広げる。
AIと自分の技術知識の蓄積。
アルゴリズムのレベルアップ。
エレキギター。アニメ・漫画・ゲーム系の曲。
雀魂・アークナイツ。
運動して体脂肪を落とす。
麻雀しに行こうっと。雀魂で一緒に遊ぶ人はWeChatに追加してください:hakusai22。
初出は掘金:2024年の振り返り:迷いの中で、抜け出す道を探して。