2022年に触った技術の振り返り
概要
今年は友達と一緒にスタートアップして、うまく行かず解散してフリーランスになって、また企業の正社員になるという怒涛の 1 年でした。
2021 年に続き今年も振り返りアウトプットしていきます。
昨年の振り返り ↓
なお、この記事は昨年に引き続き moga さんの記事を参考にしています。
関わった開発
メイン
- 金融系のサービス開発
- ファンクラブ系のサービス開発
- 論文管理 SNS の個人開発
サブ
- スクレイピング
- LINEBOT 開発
- 個人で依頼された細かな仕事
触った技術の一覧
言語
引き続き Go, TypeScript(React) を利用していました。
新しく Python をデータスクレイピングで利用しました。2年ぶりくらいに触りましたが相変わらず書きやすく便利でした。パッケージ管理がいまだに慣れない…
フレームワーク・ツール
-
GraphQL
- 2022 年のやりたいことに入っていた GraphQL。触れてよかったです。
- REST の概念を一旦捨てないとよくわからないということに気が付き、アンラーニングができました。
- 組み込み型 Swagger UI みたいや役割を担う GraphQL Playground はとっても便利。
- すべてのレスポンスを 200 で返すのはあんまり気に入っていない仕様の1つ。
- 結局 API モデルなので思ったより深みはなかったです。
-
OpenAPI
- OpenAPI ベースのスキーマ駆動開発のプロジェクトに入って開発していました。慣れたら楽でしたね。Go は chi でラップして、React では restful-react でラップしていました。API がフロントとバックエンドで共通定義できる便利さを知りました。欠点を上げるとすれば生成コードはブラックボックス化してしまうのでそこは生成ツールに依存した必要以上のコードになってしまうという点です。
-
React
-
Grommet
- 必要以上にラップされていたりして正直使いにくかったです。MUI や Chakra UI などの有名で利用者が多いライブラリある中で特別な理由がなかったら採用しないかなと思いました。
-
restful-react
- OpenAPI の自動生成に使った。duplicated の警告が出ていて ReactQuery に移行推奨されてた。
-
Grommet
-
Selenium(Python)
- 自動操作ツールを作ったり、データをスクレイピングして BigQuery に詰めるファンクションを作ったりしました。やはりちょっと重め。
プラットフォーム・サービス
-
AWS
- 深くは触っていませんが、権限周りが GCP に比べてめんどくさいかったですね。
-
Elemental MediaConvert
- 動画のサムネや圧縮、エンコードをかなり楽にできるやつ。
- 動画を扱うサービスを作ってたときは自前で Cloud Functions に ffmpeg していたのでこんな便利なものがあるとは思わなかった
- Job Template の IaC にはまだ対応していないのが辛い所(PRはでてるらしい)
-
GCP
- CloudRun Jobs
- CloudRun は Google Cloud の推しだけあってどんどん便利になっていく
- terraform に対応していないところが玉に瑕だったけど、ちょうど最近対応したっぽい。
- Firestore
- 去年に引き続き利用していましたが今年はコンサル的な役割での仕事も多くまた学びが増えました。
- クエリが進化してた
- Cloud Spanner
- 新しい形の SQL DB で、スケーラブル・分散アーキテクチャなど、過去の RDBMS にはない特徴を持ち、NewSQL と呼ばれている。
- 特有の概念が多くて非常に学び街があるしいまもよく壁にぶち当たる。
- スケーリングの運用に関してほぼ放置でいいという点はとても良さそうです。
- 特に国内でもメルカリなどのテック企業が採用してアウトプットしていることが多く、たり全体的に盛り上がっている印象。
-
Pub/Sub BigQuery Subscription
- 要するに Pub/Sub to BigQuery を直接実現するサブスクリプション。Dataflow とかが不要になるじゃんって思って興味持って触ってみた。
- プレビュー版のせいか、説明がよくわからなかったり、謎のエラーにかなり苦しめられてりと、現状使い勝手悪かったです。
- CloudRun Jobs
-
PayPal
- まだ少し触った程度です。開発者としての PayPal のメモです。Stripe と比べて結構辛いです。端的にいうと開発者体験が良くないです。
- 辛いポイント
- Go の SDK がない
- 開発ドキュメントが Stripe に比べて親切さに欠ける
- 管理画面が重い
- 再試行設定だとか返金詳細とか細かい設定が Stripe よりも劣っている。
-
LINE BOT API
- Cloud Function と Scheduler を設定するだけでかなり楽に作れることがわかり、デプロイスクリプトを作ってポンポン作っていました。
- なにかと直接収益化するようにするのはまだ難しそうで、広告にするかがんばって Stripe への API をつなぐかと言うような感じでした
- 個人で作ったものでは、麻雀のスコアを記録する BOT や飲食店のページにアクセスして定期的に待ち時間を取得する BOT などを作りました。
アーキテクチャ
-
DDD
- DDD リプレイス計画に携わることができて勉強会しながら、議論して質問して壁にぶつかってとトライアルアンドエラーの中で知ることができた。とてもいい環境だった。
- Go でやっていたけれどもともとオブジェクト指向の言語ではないため、これは Java でよくね?という側面もあった。どこまでの境界を DDD にするかは重要だと思った。軽量 DDD という言葉もあるように、Go ではそこまでガチガチにやらなくてもいいかなと思った。
-
Clean Archtecture
- 昨年に続いてあいかわらずよくやりました
- 本も二週目を腰入れて読んだが一回目と印象は全然違った。
- 本のイメージ的にはコアな部分ではないのだけど SOLID の原則とかどこが詳細なのかの話とか、この本が伝えたがっていることはあの円の図のことが先行してるけどそうじゃないんだなって思った。
- まだ勉強しなければいけない
README にきれいに設計を書いているリポジトリがあって感動したので、真似して figma でアーキテクチャ図を書けるようなテンプレートを作っちゃった。(触りたい方いたら連絡ください。)
figma テンプレート | サンプル |
良かった技術本 3 選
特に良かった3冊をピックアップ。
-
Python クローリング&スクレイピング[増補改訂版] -データ収集・解析のための実践開発ガイド
- 人並みのエンジニアならこれ読んだらある程度のクローリング・スクレイピングができます。退屈なことは Python にやらせよう。
-
実用 Go 言語 ―システム開発の現場で知っておきたいアドバイス
- Go の学習に参考になった資料集の記事でも何回も紹介してたけど今まで読んだ Go の本では1番面白い本でした。
-
ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本
- DDD の本はヘビーなものが多く読むのが大変なのですが、こちらの本は比較的ライトだし要点は抑えてるし入門に良かったです。
感想
2022 年は開発で手を動かすだけでなく、クライアントと相談して要件定義して開発とかアドバイスするというような場面も多かったです。
中でも「教える」というのは非常に難しいことを実感しました。
教えるなら自分で書くより楽だからと半分くらいに工数を見積もっていたら自分で手を動かすよりも 3 倍くらいかかったりしました(結局自分で書いたり)
素人ながら上流の難しさや重要度を実感できました。
技術的な面では昨年よりベースがある状態でのチャレンジが多かったので、低コストで色々なことにチャレンジできたと思います。逆にいうと0から学ぶハングリーでハードな挑戦はなかったです。
エンジニアとしての成長フェーズが変わってきたのかもしれない、そう思った振り返りでした。
2023 年は技術は深ぼるようにさわりつつ、それ以外で事業にコミットできるようなアクションを学んでいけるようにしていきたいと思っています。
新しい技術では Flutter あたりをやりたいな。
Discussion