2021年振り返り

created at 2022/01/10

振り返りOSS
ToC## 仕事
### 社内向け認証認可基盤(2021/01~現在)
### 工事現場での無傷事故報告アプリ(2021/06~現在)
### オンライン診療アプリ(2021/11~現在)
### その他
## 個人
### 執筆関連
### OSS活動関連
### 勉強会関連
## 最後に

大きく仕事と個人に分けています。

仕事

立ち回りとしては、基本設計、DB設計、API設計、ベースコードの作成、会社単位で導入事例のない技術の検証と実装を行い、他の部分は困ったら適宜サポートするというのが多かったように思います。
必要に応じて要件定義に立ち返ることもありました。
上記を通じて、設計がアプリに対してどのような影響が出るのか、どの技術を採用するとどういった影響が出るのか、というシステム全体の勘所のようなものが分かるようになってきたと感じています。
あと業務委託の方の面談も行っているのですが、どの技術を採用するとどういった傾向の方が集まりやすいのか、その場合にどういった部分を確認するべきか、といった部分も感覚として分かるようになってきました。
よりシステム全体を俯瞰して意思決定が出来るようになってきていると感じています。
他には、設計やレビューを担当することが多くなり、薄い関わりのサービスが増えました。

社内向け認証認可基盤(2021/01~現在)

去年の11月辺りから継続して新機能開発と保守をしていました。
主に管理画面とAPI開発がメインでした。(APIは15本あります。)
管理画面がセキュリテイ要件を満たすためにEC2ホスティング、API側はAPI Gateway + Lambdaのマイクロサービス構成です。DBはRDSです。(コネクション管理はRDS Proxyを使用しています。)
最初は取引会社さんの方でもAWSWebコンソールでインフラを変更する可能性があるということだったので、API全体の管理ライブラリは導入せず、デプロイや環境変数の切り替えはシェルスクリプトを使用していました。
Serverless FrameworkやAWS SAMはインフラの設定に意図しない変更が出てしまうことを懸念して導入を見送っていました。
ですが、取引会社さんの方で変更する部分が大体分かってきたというのもあり、大きな機能追加開発が入るタイミングでServerless Frameworkを導入しました。
導入によって基盤全体の見通しが良くなっただけではなく、属人化の排除、インフラ設定の共通化、テスト環境と開発環境での実行が容易に出来るようになりました。
2021年の中で導入して良かった技術の1つだと思います。
ちなみに、Lambdaはnodejs14.xのRuntimeを使用しています。(開発言語はTypeScriptです。)

工事現場での無傷事故報告アプリ(2021/06~現在)

今まで会社で使用していたサーバーサイドの言語はRubyとTypeScriptでしたが、この案件で初めてGoを導入しました。
ただ、社内でGoを書ける人が少なかったので、アプリケーションレイヤをマイクロサービス化し部分的かつ段階的にGoを導入していきました。
具体的にはゲートウェイサーバーはGo、他のサーバーは書けるメンバーが多く社内に知見がたまっているという点でRubyを採用しました。
サービス間の通信はgRPCを使用しています。
grpc-gatewayを使用して各クライアント(Webフロント、iOS、Android)にはREST APIを提供する形を取りました。
このことによってgRPCを導入した影響を最小限にしつつ、スキーマファーストな開発を導入することに成功しました。
インフラについても、今まではAWS EC2にAnsibleでプロビジョニングする形でしたが、サーバーレスかつコンテナ化を実現したいという理由で、ECS on Fargate上に構築しました。
サーバーレスかつコンテナ化することで、インフラ管理コストの大幅な軽減、AutoScalingの容易化及び高速化、ベンダーロックインの回避を実現できました。

オンライン診療アプリ(2021/11~現在)

gqlgenとentを採用しています。
このサービスは全てGoで実装する予定なのですが、今後のスケールを見据えて柔軟なインフラ構成、言語選定が出来るマイクロサービスを導入する予定です。
この案件はこれから本格的な開発フェーズに入るので詳細は未定ですが、GraphQL subscriptionやTwilioを使用する予定です。

その他

上記サービスは実装者として入っているのですが、DB設計、API設計、レビューのみの薄い関わりだったサービスは5つほどありました。
あるチームだと上手く回った取り組みや技術が別のチームに入れても上手く回らなかったり等、様々なサービスを見ることでチームや技術を俯瞰して意思決定ができるようになったのは、意思決定の質を上げるという点でかなり良い経験ができたと感じています。

個人

執筆関連

ブログを7記事書きました。

4月までは1ヶ月に1記事書いていたのですが、6月から仕事で新規開発(工事現場での無傷事故報告アプリ)が入ったので、そちらに注力していました。
本は書けませんでしたが、コツコツ進めていつか出せるようにしたいと思います。

OSS活動関連

nodejs/nodeDroidKaigi/conference-app-2021kubernetes-sigs/contributor-playgroundにコントリビュートすることができました。

自作OSSとしてmaintidx(maintainability indexを計測する静的解析ツール)、chameleon editor(マークダウンエディタ)を作成しました。

去年より積極的にOSS活動できたと思います。
マークダウンエディタは前から作ってみたいと思っていたので、作れて良かったです。
静的解析ツールは初めて作ったのですが、ASTをいじるのが楽しく、また何か作りたいと思いました。
自作OSSはいずれも3~5日程度の期間で集中して作っており、長く継続してものを作るというよりは思いつきでガッと作る方が性に合っているのでは、という発見がありました。

勉強会関連

JSConfJPと技育祭に登壇しました。

社外での登壇は初めてだったのですが、スタッフさんのおかげで大きなミスなく終えられました。ありがとうございました。
登壇する過程で多くのものを得ることができ、登壇後にフィードバックも得ることができて良いことづくめでした。

最後に

2022年も仕事で一定以上の成果を出しつつ、ブログやOSS活動、登壇をやっていきたいと思っています。
OSS活動がブログや登壇に繋がっているということに気づいたので、特にOSS活動は注力したいと思っています。

History