log.mh4gf.dev

2022年の振り返り 技術と仕事と生活

2022年ももうすぐ終わりですね。毎度のことながら今年も振り返りブログを残します。昨年はこちら。

2021年 ソフトウェアエンジニアとしてできたことと振り返り|miya|note

昨年に引き続き、備忘録として今年も振り返りを残そうと思う。前回の記事はこちら。 独立 今年起きた最も大きな変化として、3年お世話になったタイミーを退職しフリーランスとして独立したことがある。2021年の前半はかなりの時間悩んでいた。当時の経緯としてはこちらにまとめた。 現在4社で色々な立場で関わらせてもらっている。独立にあたった目的は何点かあるが、概ね満たすことができ楽しくやれていて、このトピックだけで結構書けそうなので別で記事にしようと思っている。この記事では技術的な取り組みについて記載していく。 触った技術 言語:TypeScript, Ruby, Go フレームワー

2021年 ソフトウェアエンジニアとしてできたことと振り返り|miya|note

今年は技術的なことがらだけでなく、仕事や生活についても触れます。

雑感

今年も良い一年でした。技術者として成長を感じることができましたし、また健康的に働けており無理をしているとも感じていません。

Webエンジニアとしての自分の頭打ちがいつ来るのかについて考えることはたまにありますが、勉強したいことは山ほどありますし、軸足は違うものの近い領域、例えばモバイルアプリ・コーポレートエンジニアリング・エンジニアマネジメントなどにも興味はあるので、何かあってもそちらに挑戦するのも良さそうと思っています。うまく自分の興味関心と市場が求めるポジションを合わせていきつつ、楽しく仕事をしていきたいですね。

ワーカホリック気味な生活をここ数年は送っていましたが、2022年は一旦落ち着いて、自身のアウトプットを一定に保つことに注力していました。意図的に散歩の時間を増やしたり、無理が必要になるような仕事を断ったり。結果的にメンタルの不調もなく、技術的な研鑽にも良い影響があったように思います。

フリーランスとしての仕事

自分はフリーランスとしての働き方を「キャリアの試行錯誤のために、自身の責任範囲内で自由に仮説検証できる場」として捉えていて、意図的に複数社並行して稼働していました。そのあたりはこの記事に書きました。

フリーランスエンジニアになって半年が経った|miya|note

フリーランスとして独立してから半年が過ぎた。ちょうどいい節目でもあるので、ここで自分が今考えていることをまとめておきたい。 半年間何をしていたか 並行で稼働する期間がそれぞれありつつ、結果的に4社と関わらせてもらった。基本的には機能開発をメインの業務とするポジションで、内訳は以下の通り。 週32h、Rails/React、Findy Freelanceからの紹介 現在も稼働中で、途中から週24hにさせてもらっている 週16h、Go/Nuxt.js、Laprasからのスカウト 週16h、Go/Next.js、リファラル経由 時間は決めずSlackに常

フリーランスエンジニアになって半年が経った|miya|note

上記の記事ではフリーランスという働き方の良さを以下のように捉えています。

  • 時間的・金銭的余裕を作れる
  • 複数のチームに参加することにより幅広く浅く技術を学びやすい

今でもその感覚は変わっておらず、ある程度この働き方を楽しみました。しかしそのトレードオフとして一つのプロダクトを長く保守することで得られる知見やシステム全体のアーキテクティング能力などは得づらいと考えており、少しずつこちら側にチャレンジしたいと感じ始めています。並行で稼働していた会社さんに少しずつ契約を解除させてもらい、いまは週4稼働で1社で働いています。

今年触った技術

毎年の差分を確認するためにその年触った技術を振り返っていて、今年も列挙してみます。特に思い入れのあるトピックについては取り上げます。

  • フロントエンド: TypeScript, React, Next.js, Zod, emotion, Chakra UI, vanilla-extract, testing-library, StoryBook, reg-suit, jest, msw, graphql-codgen, Apollo Client, urql, ProseMirror
  • バックエンド: Ruby, Rails, graphql-ruby, Go
  • そのほか: GraphQL, Cognito, Auth0, mermaid.js

昨年はフロントエンド : バックエンド : インフラが 4 : 5 : 1 程度でしたが、今年はインフラをほぼ触らず、フロントエンド : バックエンド = 7 : 3 ほどになりました。 業務委託で請けている仕事の性質というのもありますが、毎年大きく変わっていくのが面白いです。

TypeScript

昨年に引き続き、TypeScriptは今年最も書いた言語となりました。現在の稼働先ではフロントエンド専任のポジションで稼働することになったのも大きいです。このブログも今年勉強目的で作り、Next.jsとNotion APIを使って書きました。

プロジェクトのモジュール化に強い興味があり、PRの差分ファイルの依存関係を可視化しコメントとして表示するdependency-cruiser-report-actionを作りました。レビュー時にPRの影響範囲をザッと確認するのにも便利です。

GraphQL

GraphQLは今年最も学んでよかった技術でした。フロントエンドもバックエンドも依存の方向がスキーマという規約に向くことになるのが良いです。その中でもCustom ScalarやCustom Directiveはスキーマの表現力を高め、活用することで仕様やドメインをmachine readableに表現でき、これは静的解析やコード生成の適用範囲を広げ開発者体験を向上させられます。来年はもっとスキーマ設計に取り組んでいきたいです。

仕事としてはクライアントサイドが7割、バックエンドが3割程度でやっていました。古巣であるタイミーでGraphQLの初期導入を手伝ってほしいと誘われ、実装をしつつ社内共有のためのブログを大量に書く仕事をしていました。それらを外部向け記事としてもまとめました。

Rails+Next.jsでGraphQLを導入する時に考えたこと - Timee Product Team Blog

こんにちは、タイミー開発プラットフォームチームで業務委託として働いている宮城です。 タイミーはリリースから4年が経過したプロダクトで、2022年の前半から一部領域でGraphQLを利用し始め現在導入を進めています。 本記事では、GraphQLをプロダクトに導入する上で判断に迷った箇所や課題に対して、タイミーでの意思決定とその理由を紹介します。参考にしていただければ幸いです。 GraphQLの選定理由についてはこの記事では触れませんが、CTOの@kameike が以下のイベントで詳しく紹介する予定です。まだ参加申し込みは可能ですので、興味がある方はぜひ合わせてご覧ください。 timeedev.c…

Rails+Next.jsでGraphQLを導入する時に考えたこと - Timee Product Team Blog

公開後それなりにはてぶもついたので嬉しかったですが、今思うとクライアントサイドはもう少し書きたいことがあります。来年少しずつ世に出していきたいです。

ProseMirror

株式会社ビットジャーニーさんのKibelaの開発チームに参加しており、そこでリッチテキストエディタを実装するために利用しているProseMirrorを今年はよく触りました。エディタの開発はとてもエキサイティングで、ブラウザのAPIをうまく活用しつつ、文章を書く道具としての心地よさを追求するのは楽しい経験でした。特に日本語はIMEを使った変換(composition)があるため、他言語圏では踏まないようなバグを何度か踏み、報告したりもしました。

またProseMirrorは日本語の資料も少なく(というかほぼなく)、インデックス操作に特化した独自の木構造のドキュメントモデルを扱うなど少々初見だと理解まで時間がかかると感じます。自身の理解を深めるためにもガイドの日本語訳に取り組みました。

ProseMirror Guide(日本語訳)

ProseMirror Guide(日本語訳)

コミュニティへの貢献にもなり、チームメンバーへの概念の共有にも役立ったのでこれは良い取り組みだったと思います。

Kaigi on Rails

今年達成できたことの一つとして、Kaigi on RailsのCFPがacceptされ初の登壇ができました。来年も1回くらいは登壇できるように頑張りたいです。トピックを用意せねば。

Kaigi on Rails 2022に参加・登壇しました

Logs by Hirotaka Miyagi

Kaigi on Rails 2022に参加・登壇しました

OSS活動

今年は少しずつOSS活動の幅を広げられた一年でした。バグレポートやドキュメントの修正などは以前からもできていましたが、機能の改善や追加が複数できたのがよかったです。

  • feature(plugin): add alternative implementation for mermaid.js reporter plugin · sverweij/dependency-cruiser
    • JS/TSプロジェクトの依存関係のビジュアライズツールであるdependency-cruiserに、mermaid.jsシンタックスで出力するプラグインを追加しました。上述のdependency-cruiser-report-actionで必要になったため実装しました
    • 最初はサードパーティプラグインという位置付けでしたが、バグの修正や出力サイズの圧縮などのいくつかの改善を経て、公式オプションとして導入されることとなりました。感慨深いです。

オープンソース活動は、利用するライブラリへの感謝と理解を深めたいのと、自身よりレベルの高い人と関わることができ技術的研鑽に繋がるため可能な限り取り組みたいです。しかし今年もまだまだ足りないなと感じているので、来年は何か一つのOSSに継続的にコントリビュートできたら良いなと思います。

生活

気胸になって入院した

11月ごろに気胸になってしまいました。息を吸うと軽く胸が痛いので内科に行くと、肺に穴が開き通常の40%ほどの大きさしかない状態だったとのことでその場で入院となりました。原因はわからないらしいです。手術で塞いだので現在は痛みも何もなく、ジョギングのように肺に負荷をかけても特に問題ないほどまで落ち着きました。

突然2週間稼働が止まってしまったのでチームには迷惑をかけてしまいましたが、問題なくカバーしてくれる頼もしいチームで本当にありがたかったです。突然何が起こるかわからないので常に引き継ぎが不要な状態を保つのは大事ですね…。こういう話はあと5年は先かなと思ってたんだけど…

引っ越しをした

都内で引っ越しをしました。フルリモートワークかつ部屋で過ごす時間は好きなので少し課金しても良いかなと思い、リビングがちょっと広めの1LDKを選びました。作業中横を向くと飼ってるうさぎの様子が眺められるのはとても良いです。

少しずつ家具を買い揃えていくのが楽しいですね。今はペンダントライトを探す旅の途中です。

自動車教習所を卒業した

今年は仕事の合間に教習所に通っていて、つい先日卒業試験に合格しました。まだ学科試験が残っているので免許は取得できていないけど!年明けの早い段階で試験を受けにいきたいです。

まったり通っており仮免許の期限ギリギリになってしまったので、今思えば免許合宿で一気に取ってしまった方がよかったなーとも思います。

終わり

関わったみなさんは本当にお世話になりました。来年も何卒よろしくお願いします。

良いお年を!