2021の振り返り・2022の目標

2021の振り返りと2022の目標を書いていく。

2021の振り返り

2021年の前半は休暇中にDeFiにハマってbot職人をしていた。
社会との関わりが薄くてヤバさを感じたため復職(2回)した。
Next.js, GraphQL, Pythonを触れてとても幸せ。

仕事

今年は2社で働いた。

1社目

まとめると下記3点の学びがあった。

  • 要件定義・合意を取るフェーズ、開発フェーズは分けたほうが心理的安全に開発できる
    1社目は技術スタックはとても魅力的だったが、要件定義と並行して開発するスタイルが合わなかった。
    もともと要件定義自体に抵抗はないが、アジャイル・スクラムにしても事前に合意を取るフェーズ・開発フェーズは分かれている方が心理的に安全で成果も出やすいという学びがあった。(確信できた)
  • スタートアップでも初期設計・コーディング規約・サンプルコードは大切
    メンバーの構成(専門スキルや経験値)によってコードの秩序が保ちにくい状況では、初期設計(サンプルコード)・コーディングルール整備は大切だと痛感した案件だった。
  • ローコードツールに限界を感じた
    また、Amplifyでの開発だったが、ある程度複雑なアプリケーションを作る場合はFWを利用して作ったほうが後々困らないという知見も得られた。
    (e.g. DynamoDBにロックインしているため、フルスキャンをさけるためにページングの実装も一工夫が必要だったりトランザクションを書くときにVTLを書く必要があったりなど、通常のWAFに比べて学習コストが高いイメージ)
    Amplifyを含めてローコードツール自体は将来性があると感じているが、現時点では学習コストと見合わない感覚を持った。

2社目

2社目は在籍中の案件で、1人目の開発メンバーだったためフロント・バックエンドの初期構築から担当させていただいた。

  • フロント: Next.js(SSG + CSR), TypeScript, GraphQLというキラキラのナウい構成

  • バックエンド: Python, Django, Graphene-DjangoでGraphQLのAPIサーバーという構成

  • GraphQLによるAPIの型安全

    graphql-codegen というツールを利用して、スキーマ・レスポンスの型などを生成できるため、フロントが型安全に開発できる。 例えば、データ構造に大きな変更があった際にAPIが修正されていれば、フロントは型エラーが出ている箇所を重点的に修正すればよいため、開発体験がとても上がった。
  • pythonのtype hint
    python側でも型チェックは行っているが、mypyはvscodeでの設定が複雑になちがちなため、
    pyrightというmicrosoft謹製のツールに変えたいという話が出ている。
    (djangoやミドルウェアのstaubが上手く動かなく、ほぼ # type: ignore しているが、これも解消できるとの噂)
  • pythonのパッケージ管理
    パッケージ管理はpipenvを利用しているが、新興のpoetryに変更したいという話が出ている。
    (installが遅い、デフォルトで依存パッケージの更新がされないなど)
    poetryに変えたところで問題はありそうだが、poetry推しの記事が増えてきている様子。
  • 型とテストについて
    フロント・バックを通じて型制約を強めにしたのと、フロントの統合中心のテストを導入したのが、
    3ヶ月位たって、効果が出始めた気がしている。
いままでのキャリアではしっかり型やテストを書いてこなかったので不安もあったが、
型は強めにして最低限のテストケースを用意しているだけでも、
リードタイムが削減でき・精神衛生的にも良い開発体験になってきたのでよかった。
(静的補完も素晴らしい)

初期フェーズのプロダクトにおいても、アジャイル的にコード変更が頻発するようなケースでは導入したほうがよいと思った。

  • 開発フロー
    スクラムで運用しているため、各イベントで合意・開発フェーズが分かれていてやりやすい。
    個人的にはプランニングに掛ける時間を意図的に短くしていることもあり、見積もりの正確性・ベロシティに信頼性が出ていない部分は改善ポイントだと思う。
    また、コードレビューではコメントすべきこと・すべきでないことの境界が曖昧なため、
    ワンチャン、ガイドラインを作成して心理的安全性が高くPRをだせる文化を提案したいと思っている。

スキルの振り返り

今年の収穫スキル

目標としていたものは、ほぼ学習できた

  • Amplify
    DevOpsまで構築してくれる体験はRails以上の衝撃だった
    複雑なアプリケーションでは学習コストのメリットが上回りそう
  • ReactNative
    機能やパフォーマンス要件の実現が難しくなる場合があるため、flutterが良さそうだった
    Reactコードを流用できるかと思っていたが、想像以上に流用性が低かった
    Reactスキルでアプリを作れるのがメリットだと思う
  • Redux-toolkit
    定型文が少なくなり、非同期も簡単に使える
    Redux使うとき機会があれば利用すると思う
  • TypeScript
    strict=trueで頑張っている
    typescript challengeで型パズルを学習する
  • python
    肩周りのエコシステムが弱いが、頑張って覚える
  • mypy
    strict=trueで頑張っている
    typescriptに比べて実現できる機能が少ない
    pyrightに乗り換えてみる
  • go言語
    基本文法とECHO/GINによるCRUD、100本のノック(20本くらい)しかできなかった
  • Next.js
    zero configのすごいやつ
    vercelにロックインしないと使えない機能が多いのが難点
    フロントの概念を刷新するレベルのFWなので今後もキャッチアップ頑張る
  • GraphQL (apollo-client)
    学習コストは掛かったが、型・リクエストをまとめる・ディレクティブ・キャッシュ周りの機能が強力
    GraphQL自体の仕組みも開発者体験を高めてくれ、上記機能によってユーザ体験も高くなると思った。
    複雑度・深さ制限などセキュリティ周りの学習を頑張る

ライフスタイルの振り返り

  • 筋トレ
    ジムに通わなくなり、自宅で筋トレしているが気合が入らない。
    朝起きてからtabata式トレーニングをしていたが、朝起きるのが辛くて週1-2になってしまった。
  • 食事
    プロテインもストロベリー->ブルーベリー味に変えてから飲む頻度が下がった。
    休日は昼や夜に起きるので、3食たべなくなり痩けた
  • ペット
    猫かマイクロブタを買いたいと思っていたが、マンションがペット禁止だった
  • カメラ、キャンプ
    友達を誘うタイミングを見失っていってない
  • DeFi bot, OSS開発
    復職時にやめてしまった。
    改良ポイントが山積み

2022の目標

QOL高めたい年にしたい。
スキルはserver side typescript, go言語の勉強に集中する

仕事の目標

本職

  • まずは、リリースできることを目標に頑張る。
  • フロントのパフォーマンスチューニングと共通化、単体テスト追加
  • strybookのカタログ、インタラクションテスト、vrt、 autify導入を頑張る
  • 心理的安全性を高める施策を提案してきたい (コードレビューガイドラインなど)

副業

  • 友人の不動産サービスのプランニング
  • DeFi botの改良、Udemyでラーニング動画販売

スキルの目標

型月言語を学習しつつ、TypeScriptをサバクラで触れるようにする。

  • typescript challengeで型パズルを学習する
  • server side typescript (Blits.js Nest.js, prisma)
  • go言語 (go道場)
  • rust (基本文法 + CRUD)
  • python力、scraping力を高める
  • flutter (余裕があれば触る)

ライフスタイルの目標

  • 友達をキャンプとカメラに誘う
  • 引っ越してペット買う
  • 都内近郊でワーケーションしながら物件を探してみる
  • ヘルス・メンタルケアは習慣化して健康に暮らす
    • 週2回の筋トレ
    • 日課のtabata式
    • プロテイン + 3食しっかり摂る
    • 朝・昼・晩のマインドフル瞑想
    • コンパッション系の本を読む