koheitakahashiのブログ

2020.07.01にプログラマーとして生を受けた私が学んだことや、日常について徒然に書いていきます。

2021年のふりかえりと2022年の抱負

はじめに

正月三が日も終わり、大分出遅れてしまった感がありますが、2021年のふりかえりと2022年の抱負を書きます。

2021年の動向

仕事

  • 1月~3月 開発チームのリーダー的役割を担う
    • 2020年から引き続いての案件でしたが、小さいチームのリーダー的役割を担いました
    • 自分にとっては大分チャレンジングなことでしたが、社内の方々に助けられ、なんとかやっていくことができました
    • 技術的には、JRuby・Rails・Vue.js などを使って開発しました
  • 4月〜9月 新しい案件に参画
    • 新しい案件に参画しました
    • 技術的には Ruby・Rails・jQuery・OpenAPI などを使って開発しました
  • 10月〜12月 チームビルディングを学ぶ
    • 4月〜9月の案件を引き続き同じ案件でしたが、メンバーや開発体制、開発手法が変わりました
    • その中で、チームビルディングを率先する役割になりました
    • 難しかったものの、チームメンバーの協力のもと開発がしやすいように色々整備することができました
    • SQL を読み書きする機会が多かったです

プライベート

  • 1月〜 今まで作りかけていたアプリの開発を再開
    • 主に CSS と Vue3 に触れていました
  • 2月 引っ越し
  • 4月〜 Ruby・Rails 強化期間
  • 7月 個人開発していたアプリの ver0.1 をリリース
  • 8月〜 個人開発アプリの ver1.0 開発を進める
    • AWS、デザイン、Docker などを学びました
  • 10月〜 コミュニケーション・スクラム・SQLなどを学ぶ
  • 12月 個人開発アプリの ver1.0.0 をリリース

2021年の目標を達成できたかどうか

2020年の振り返り の記事では、2021年の抱負を以下のように書いていました。

Ruby・Rails 力を高めたい

Docker を理解したい

フロントエンド力を高めたい

今作成しているアプリをリリースする

チームでの自分の振る舞いを客観的に見られるようになりたい

これらの目標を達成できたのかをふりかえります。

Ruby・Rails 力を高めたい

これは書籍やgemを読むことで、コードの書き方について自分の引き出しを増せたと思います

一方で、設計力や開発速度はまだまだだです。設計力についてはコードリーディングしても、設計パターンをインプットすることができませんでした。開発速度については、コードを書く量がまだまだだと思うので、意識的にコードを書いて早さを上げていきたいです。

総じて、抱負としていた目標は達成できましたが、インプットをアウトプットに繋げる力を磨いていきたいと考えました。

Docker を理解したい

書籍を読み、Docker tutorial に取り組みました。また、個人開発したアプリでも Dockerfile を書きました。そのため、Docker の基本のキは把握できたと思います。抱負としていた目標は達成できました。

フロントエンド力を高めたい

抱負としたのは以下です。

  • CSS の苦手意識をなくす
  • Vue3 を少し扱えるようにする
  • React の勉強をする

個人開発したアプリでは、CSSフレームワークを使わずにデザインを当てたことで、CSSに対する苦手意識がなくなりました。また、Vue3 を導入して動くものが作れたため、こちらも目標は達成できたと思います。

React については、勉強できなかったため目標未達成です。

今作成しているアプリをリリースする

12月に以下のリリースブログを書いて、アプリをリリースできたため目標達成です。

音楽をシェアしやすくするアプリ SoundLinks をリリースしました

チームでの自分の振る舞いを客観的に見られるようになりたい

「自分の振る舞いはチームの役に立っているか、チームにとって建設的なものかどうか」を判断して、チームの役に立ちたいという目標でした。

仕事ではチームビルディングを考えて、実践していました。その結果、色々整備できてチーム開発がしやすくなったように思えます。

もちろん私一人の力ではないですが、チームの役に立つことを考えて、アクションを起こせたことから目標は達成できたと思います。

学んだこと

技術的なこと

Tomcat・IISの基本を学ぶ

Tomcat・IIS の環境に Rails アプリをデプロイするための手順を学びました。また、IISの仮想ディレクトリを使って認証の設定方法についても学びました。

CSSへの苦手意識克服

CSS について苦手意識がありました。そこで、CSS設計完全ガイド を読み、個人開発したサービスでCSSを書いたことで、苦手意識が少なくなりました。

Ruby・Railsの引き出しを増やす

Ruby で綺麗なコードを書くために最近勉強していたこと で書いたことに取り組み、良いコードの引き出しを増やすことを意識しました。

特に、gem のコードリーディング会を同僚と始め、SinatraSorceryPunditOctkitActiveSupport を読みました。知らないメソッド、テクニックを知ることができ、メタプログラミングへの理解が深まりました。

一方で、gem の全体像を捉えて設計を理解し、設計パターンの引き出しを増やすということはあまりできませんでした。この点はコードリーディングの仕方を工夫して、設計の引き出しを増やすことを意識していきたいです。

また、開発速度はまだまだなので、素早くコードを書けるようにコードを書く時間を増やしたいです。

Web API の設計

Web API の設計や OpenAPI の書き方について学びました。

API設計については、API利用者が達成したいゴールを元にリソースを決めて、レスポンスを構造化するという基本的な設計手順や考え方は理解することができました。

一方で、設計したAPIは利用者が限られるクローズドなものだったため、パブリックなAPIの設計やセキュリティを意識した設計については理解できたとは言えません。

OpenAPIの基本的な書き方

OpenAPI の基本的な書き方については理解できたと思います。一方で、Grapecommittee-rails などの gem やツールは使いませんでした。そのため、OpenAPI を Rails で便利に扱うためのツール・gemの使い方などは習得できていません。

Dockerの基本的な使い方

上述したように書籍を読んで、Docker tutorial に取り組み、個人開発したアプリでDockerfile を作成したため、基本のキは理解できたと思っています。しかし、浅い理解なので、使いこなせるように深く理解していきたいです。

AWSに少し触れる

ECR・ECS・ALB・Route53・RDS などを使用してアプリを開発しました。しかし、体系的に理解できているとはいえず、使いこなせているわけではないため、深く理解していきたいです。

SQL

仕事でSQLを書く機会が多かったため、この際SQLをしっかり読み書きできるようにしようと思い意識的に勉強していました。

書籍を読み、手を動かして、それなりに読み書きはできるようになったと思います。一方で、パフォーマンスを意識したSQLを記述することについては、まだ自信がありません。

非技術的なこと

非技術的なことについて、学んだことが多かったので列挙します。

  • 見積もりについて
  • コミュニケーションについて
    • 議論する際には、聴くことから始める
    • 自分の考え、気持ちをはっきり伝えた上で、してもらいたいことを伝える
    • 簡潔な文章の書き方
    • 相手に何をしてもらいたいのかをはっきり伝えてから、情報を伝える
  • ミーティングの進め方
    • ミーティングの目的、議題をあらかじめ参加者に伝えておく(それかミーティング冒頭で伝える)
    • 参加者に意見を聞く(振る)
  • チームビルディングについて
    • チームの課題を自分1人で解決しようとせずに、チームに共有してチームで解決していくという心構え
    • 課題発見→議論→解決のアクション→ふりかえりの流れを作ることを意識する
  • その他
    • 自分だったらどう設計、実装するかを思い浮かべて仕様を把握する・コードを読む
    • プロジェクトを円滑に進めるためにあった方が良いドキュメントを踏まえた上で、ドキュメントを作成する
    • メリット、デメリットを伝えた提案の仕方
    • 自分の素直な気持ちを伝えること
    • 人に相談すること

2022年の抱負

2022年は「理解したつもりの(あるいは、なんとなく使っている)概念、技術を深く理解する」ことを目標にしたいと思います。

2021年はDocker・AWSなど、扱える技術の幅を広げた1年だったように思います。一方で、それらを使って動くモノはできたけど、それがどんな理屈で動いているのかという根本の仕組みを理解せずになんとなく使っている状態です。それは Docker・AWS に限らず、Ruby・Rails、UNIX・Linux のファイルシステム。REST・オブジェクト指向などの概念なども含みます。

そのような理解したつもりになっている、あるいは、なんとなく使っている技術や概念を深く理解することを目指したいです。そのための取り組みとして、その概念・技術についてのレポートのようなブログ記事を定期的に書くなどの試みを考え中です。

所感

この1年は色々失敗を重ねた1年だったと思います。ただ、社内の方々や懇意にしているエンジニアの方々のおかげで、なんとか生き残ることができました。大変感謝しています。

チームのリーダーを務める、チームビルディングをするなどは、自分にとってはチャレンジでした。その中で大小様々な失敗をしましたが、その分学んだことは多かったです。

また、個人開発したアプリをリリースできたことがとても嬉しかったです。開発期間は長くかかってしまいましたが、0からリリースまでやりきることができて達成感があります。

まだまだできないこと・知らないことばかりです。一方で、できたこと・知ったことも沢山あった1年でした。2022年も引き続きなんとか生き延びていきたいです。

参考: 2021年に読んだ本

上記のことを学ぶために以下の本を読みました。

CSS・デザイン

Ruby

Web API

Docker

AWS

SQL

アジャイル・スクラム

コミュニケーションスキル

その他