· 9分で読了

僕の2019年振り返り

この記事は中国語から自動翻訳されたものです。翻訳によりニュアンスが失われている場合があります。

2019年、1月の最初の5日間、僕はまだ兵営で指折り日数を数えていた。なんとか4ヶ月の兵役生活を乗り越えて就職活動を開始した。上半期はほぼ面接の準備と自分を見つめ直す時間に費やし、下半期に日本へ移住してからは生活が徐々に軌道に乗っていった。

上半期

2019年の上半期は、無職だったこともあり、少し焦りを感じつつも、実際はかなり暇だった。この期間は、兵役の4ヶ月間で抜けていたフロントエンド領域の知識をキャッチアップしたほか、Reactのこの4ヶ月の変化(Hooksのことだ!)もインプットした。

またこの期間を利用して、自分のブログをすべてGatsbyで書き直し(フロントエンドエンジニアの職業病だ笑)、.devドメインを購入した。

他に特筆すべき点としては、当時ブラウザのAudio Contextにかなり興味を持っていたため、面白そうな小さな個人プロジェクトをいくつか作ったことだ。形にする機会があれば、また共有したいと思う。

面接を待つ合間には、主にLeetCodeを解いたり、練習用のフロントエンドの小さなプロジェクトを作ったりしつつ、フロントエンドに関する一連の記事の執筆計画も立て始めた。この時期、僕は日本人講師が中心の日本語教室にも通い直し、その後の日本生活に備えるとともに、定期的に日本語を復習し、規則正しい生活リズムを作ることを目指した。

この期間にもいくつか面接が動き出し、詳細は数ヶ月前に書いた就活の振り返り記事を参照してほしい。

こうして時間は下半期に入り、僕は6月下旬に日本へ渡った。生活の基盤を整えるのに少し時間を費やした後、7月から仕事を始めた。

僕がここ数年日本語を学んでから日本で働くまでの体験談を一連の記事にまとめたので、興味があれば見てほしい。

我與日本的距離

下半期、日本での生活と仕事開始

ここでのフロントエンド開発は以前の手法とは大きく異なるが、大企業で働くことで、潤沢なリソースがキャリアにどれほど大きなプラスになるかを実感できた。ただ、その一方で、それらをうまく活用できなければ「ぬるま湯」になってしまい、いつの間にかただ居座るだけの余剰人員になってしまう恐れもある。

そんな中、強力なバックエンドチームと共に、僕もより深いバックエンドの知識やインフラの研究を始め、バックエンドの仕組みをより深く理解しようと試みた。具体的には以下の通りだ:

  • 堅牢なメッセージキューの仕組みをどう設計するか。チームの歩みに合わせる中で、Kafkaという万能なスイスアーミーナイフのような存在を発見した
  • 迅速かつ効率的なサーバー構築。チーム内にansibleの経験を持つ人がいたのを機に、基本的な設定やチューニング方法の基礎を理解した。以前のように素朴にSSHでサーバーに入り、一つ間違えたら最初からやり直し、という状況ではなくなり、わからない点があれば教えてくれる人がいた。社内にも多くのPlaybookが参考資料として存在していた
  • さまざまなユースケースに対応でき、スクリプトで容易にカスタマイズ可能な汎用Slackボットを自作した
  • フロントエンド共通のCIおよび自動デプロイの仕組み(Slack連携)を構築した
  • PromethuesやKibanaといったパフォーマンス指標の監視ツールも自分で一通り構築し、これらのツールの重要性をより深く理解できた
  • ElasticSearchを自前で立ち上げ、データベース(Postgres)とElasticsearchを連携させて、より洗練された全文検索の仕組み作りに挑戦した
  • DBの仕組みについての理解。Postgresは僕と5年間歩みを共にしてきたが、今でも頼もしく使い勝手の良いパートナーだ

バックエンド以外にも、モバイル開発(iOS)やSwiftという言語の研究にも少し時間を費やした。フロントエンドとアプリ開発の本質は実は同じであり、どちらもUIとそれに対応するデータフローや状態管理を扱っていると感じる。言語や開発プラットフォームが異なるだけで、違ったシンタックスから異なる領域がUIや状態をどう扱っているかを見るのはとても面白く、常に相互に学び合える。例えば最近登場したSwiftUIやCombineは、フロントエンドにとっても非常に参考になる状態管理の手法だと思う。

もう一つ最も大きな変化だったのは、テストを書くことだろう。以前は専任のQA期間がなかったため、テストもあまり綿密には書いていなかった。しかし今はQA専用の期間がしっかりと設けられているため、テストコードを書くことの重要性が格段に増した。そうしなければ、結局最後に大量のQAバグが報告されて自分を苦しめることになるだけだ。

僕はテスト容易性や保守性を手に入れるためなら、少々のパフォーマンスを犠牲にしても構わないと考えている。バグやそれに伴う回避策(ワークアラウンド)こそが、コードベース全体を混乱させる最大の原因になることが多いからだ。また、Reactでのテスト作成が本当に簡単であることにも気づいた。実際のユーザー行動をシミュレートするのも非常にやりやすい。

以前はenzyme(強力なReactテストラッパー)を好んで使っていたが、今ではあのように強力すぎるツールを使うと、振る舞いのテストではなく細かすぎる実装の詳細のテストに囚われてしまうと感じるようになった。そのため、最近はreact-testing-libraryのような軽量でシンプルなやり方でテストを行う方を好んでいる。

仕事面では、2019年はマネジメント(対人)に関する本にも幅広く目を通すようにした。特に印象深かったのはこの2冊だ:

  • Driving Technical Change
  • 横のリーダーシップ(橫向管理)

まだ未熟ではあるが、少なくとも第一歩は踏み出せた。

壁を越える

僕にとって、フロントエンドという領域においては一種の壁(停滞期)に直面していたかもしれない。インタラクション性の高いもの、動画処理、画像処理、テキストエディタ、音楽など、毛色の異なる領域に触れてみたいという思いに加え、さらに低レイヤーの技術にも足を踏み入れたいと考えている。

もう一つ最近考えているのは、優秀なチームを率いて、共により良いプロダクトを作っていきたいという思いが芽生えてきたことだ。25歳という年齢は、リーダーとしては強みというよりむしろ壁になることが多いかもしれないが、もしそうした機会があるなら、ぜひしっかりと掴み取りたい。

生活

2019年は僕にとって、これまでで最もワークライフバランスが取れた1年だった。自炊の頻度が増えただけでなく、調理器具(オーブン、電子レンジ)が増え、キッチンも広くなったことで、挑戦できる料理のレパートリーもますます広がった。

作った中で少し珍しい料理としては:

  • 東坡肉(アレンジ版)
  • パエリア
  • 失敗した手作りパン
  • クッキー
  • 焼きプリン
  • 焼き魚(内臓処理やウロコ取りも自力で)
  • 自家製ハンバーグ

料理の腕前も一段と上がった。今年も引き続きいろんな料理に挑戦したいし、より上質な肉の仕入れ先を見つけたい。日本には台湾のようにあちこちに昔ながらの精肉店があるわけではないのが悲しいところだ(泣)。

日本に来てから体重も大幅に増えてしまったため、ジムに入会し、食事制限や飲酒頻度のコントロールに努めている。それにしても日本の飲み会の頻度は恐ろしいほど高い!

旅行に関しては、特に大きな旅行を計画したわけではないが、連休に特段の用事がなければ、大抵は近場へ出かけた:

  • 糸島
  • 西新
  • 能古島
  • 由布院
  • 軽井沢
  • 福岡近郊

今後について

先ほどの「壁を越える」の項目でも触れたように、今後も技術領域をさらに深掘りしていきたいと考えている。ただしWebフロントエンドの知識だけに囚われるのではなく、可能な限り様々な領域へと歩みを進めたい。

2020年は、フロントエンド領域の深掘りを続けつつ、コンピュータサイエンス全般へと裾野を広げたい。特に触れてみたいのは、WebGL、低レイヤー言語(C++、C、アセンブリ)、OS、プログラミング言語処理系などだ。これらの仕組みを理解することは、僕にとって非常に興味深い。

特に触れておきたいのは、2019年の年末にセールを利用してPS4と『DEATH STRANDING(デス・ストランディング)』を購入したことだ。デス・ストランディングのストーリーは僕の人生観や考え方を根底から変え、小島秀夫という人物についてもっと知りたいと思わせてくれた。2020年は、ゲーム領域に関する知識にももっと触れていきたい。

感謝

どの会社でも、自分の周囲には学ぶべき優秀な人々がたくさんいて、そうした人々との巡り合わせがあってこそ今の僕がある。以下、思い浮かんだ順に挙げてみる:

  • weak self:iOS系のPodcastだが、実は共通する概念がたくさんある。僕がジムに行くタイミングがちょうどweak selfの配信時間で、異国の地で聞き慣れた声を聞けるのはやっぱり感動する(まあ台湾人の同僚はたくさんいるけれど笑)。
  • koji:日本人並みに日本語が上手い(全く訛りがない!)だけでなく、マネージャーとして普段からみんなの状況を気にかけてくれて、会社で安心して仕事ができる環境を作ってくれている。
  • 平山:現在の上司。やりたいことをやるための大きな裁量を与えてくれ、チームにプラスになることなら常に後押ししてくれる。良い上司に出会えることは、キャリアを順調に進める上で本当に重要な要素だと感じる!
  • Huang:職場の頼れる大先輩のような存在。社会人経験が長く、社内事情や企業文化にも精通していて、悩みがあるときにはいつも迷いを晴らすヒントをくれる。
  • denny:今考えると実に不思議な縁だ。昔の同僚から、異国の地で再び一緒に働くことになった。たまに見かけるおなじみの「sudo」パーカーを見ると、昔みんなで50嵐(タピオカ店)を注文したり、RDチームでご飯を食べたり、オフィスで一緒に『MR. ROBOT』を見た思い出が蘇る。
  • Thomas:僕がこれまで見てきた中で最も仕事熱心な同僚。カバーしている技術領域が非常に広く、力になれることならフロントエンド・バックエンド問わずいつでも一肌脱いでくれる。技術への情熱も人一倍で、LinuxやOSといった低レイヤーの話をよく交わす。彼からは多くのことを学んでおり、今まで出会った中で最強のエンジニアだ。
  • Jimmy:議論に積極的に参加するだけでなく、チーム内の細々とした課題もいつも率先して改善してくれる。特に印象深いのは一連のDevOps整備で、開発プロセス全体を格段にスムーズにしてくれた。
  • Peter:時々ふらっと現れては新しいデザインやロゴを共有してくれたり、ウェブサイトの改善案をアドバイスしてくれたりする。ただただ感謝しかない!

関連記事

他のトピックを探索