2020年やったこと

created at 2020/12/27

振り返りOSS
ToC## TL;DR
## 参加したプロジェクト
### 大手メガネメーカー店舗向けサービス
### 大手ハウスメーカー顧客管理サービス
### 宿泊者管理サービス
### 認証認可基盤システム
### ゴミ箱監視サービス
### その他
## 社内
### 採用
### 教育
## OSS
### souki
### terraform-modules

今年担当したプロジェクトの振り返りをします。

担当プロジェクトごとに使用技術、ポジション、期間、概要を書きました。
全ての担当プロジェクトを記載するとかなりの量になってしまうため、一部省略しています。
使用技術についても適宜省略しています。
なお、個人でいくつか OSS を公開したので最後にその紹介もします。

TL;DR

様々なプロジェクト・プラットフォームに参画しました。(Android、サーバー、インフラ、Web フロント)
決済機能のベース実装、GraphQL サーバー/クライアントの構築、Terraform/Ansible での IaC、LDAP 認証等を担当して様々な経験を積むことができました。
様々なプラットフォームに参画することで、より全体の構成やデータフローを俯瞰して見れるようになりました。
個人的にも様々なプラットフォームや言語、ライブラリを必要に応じて学習し使用するような働き方が向いているような気もしました。

OSS については試験的に作成したものが多くありました。
来年以降は実際にプロダクションで使えるレベルのものを作っていきたいと考えてます。
あと普段使用してる OSS にも貢献していきたい気持ちがあります。

参加したプロジェクト

大手メガネメーカー店舗向けサービス

概要
モバイルアプリに提供する API をメインに開発してました。
その中で総合決済サービスを使用した決済機能のベース実装をしました。
その後レビュワーとして参画してコード品質の向上を頑張りました。
Android についても数種類の決済機能の実装を担当しました。

大手ハウスメーカー顧客管理サービス

概要
主に React を使用して Web クライアントの実装を行っていました。
react-pdf を使用したクライアント側での PDF 生成、複数ファイルのアップロード機能等を実装しました。
API サーバーについてもいくつか API を実装しており、各区分ごとにソートを行う処理やパフォーマンスの最適化などを行いました。

宿泊者管理サービス

概要
技術選定からアーキテクト、実装まで一通りの工程を担当しました。
Rails を使用した GraphQL サーバー構築、Next.js を使用した Web クライアント構築、terraform でのインフラ構築を担当しました。
Next.js での認証/認可機能や GraphQL サーバー のページネーション独自拡張、Terraform/Ansible での IaC 等のモダンなアプリケーションを実現する上で必要な知識を身に付けることができました。
設計についてもクライアント側は Atomic Design を少し拡張したものと Flux(Redux)、サーバー側は Layered Architecture を採用し、変更容易性を担保できるよう意識した設計としました。

認証認可基盤システム

概要
技術選定からアーキテクト、実装まで一通りの工程を担当しました。
弊社として実績の少ない Node.js での実装で、私自身もあまり触ったことがなかったのですが、参画後にキャッチアップし遅れることなく実装を進めています。
この辺りから新しい技術をキャッチアップしながら実装する楽しさを感じ始めました。
ここでは LDAP 認証や CSV データを stream API を使用して読み込む処理、sequelize を使用した DB 操作をメインで実装しました。
ここで stream API や async/await、Promise に関する知見を深めることができました。

ゴミ箱監視サービス

概要
Webiot というセンサーを使用して取得したデータを定期的に DynamoDB にインサートし、そのデータをアプリ側で整形/確認するサービスになります。
お客さんが社内に知見を貯めたいということだったので、必要な際にサポートするようなアドバイザー的立ち位置を担当しました。
主に全体のアーキテクト、 DynamoDB の設計をサポートしました。

その他

その他プロジェクトですが、Android の ExoPlayer を使用した 360 度動画の実装、Brightcove を使用した動画プレイヤーの組み込み、Ansible でのプロビジョニング等を担当していました。

社内

プロジェクト以外の活動についてもまとめておきたいと思います。

採用

面接のメンバーとして参画しています。
役割としては技術力の評価がメインです。

教育

9 月からエンジニアの教育に関わるグループのリーダーを担当しています。
こちらのグループには各プラットフォームのテックリードが参加しており、会社レベルでの教育に関する施策の立案や実行を担当しています。
今まで行った施策はテックリードによる塾形式の勉強会、一人前エンジニア制度、研修制度のプラッシュアップとかがあります。

OSS

souki

https://github.com/HiroyukiYagihashi/souki
個人で作成していた状態管理ライブラリです。
既存の状態管理ライブラリに不満があった訳ではなく(Redux or MobX or Recoil で現状満足している)、npm ライブラリに対する知見を深めるために作成しました。
このライブラリを作成していく中で既存のライブラリを読むことが多かったのですが、その中で様々な発見がありました。

terraform-modules

https://github.com/HiroyukiYagihashi/terraform-modules
こちらも Terraform Registry 学習用に作成しました。
元々コンテナ基盤を作成する予定だったのですが、いつの間にかモチベが下がってしまっていました。

History