入社後半年で触れた技術とスキル管理の話
こんにちは!Webエンジニアの小幡です。
最近になってテラハの東京編2019-2020を見はじめました。出演者が美男美女すぎて同じ人間とは思えず、自分にとっては彼らがしているのは恋愛ではなく神々の遊びといった感じです。
さて、入社してちょうど半年経ちましたので、バックエンド領域で開発している自分が今まで業務でどんな技術に触れることができたのかご紹介したいと思います。
言語・フレームワーク
Ruby on Rails
弊社のプロダクト立ち上げフェーズではそのリリースまでの実装スピードが早いRailsが採用されています。最近は後述するNode.jsへの移行が進んでいるものの、弊社プロダクトを理解する上でRailsは外せないと思っています。
自分はLaravelを少しやっていたので、同じMVCアーキテクチャのRailsは理解がしやすかったのがありがたく、EloquentからActiveRecordへの知識の移行も比較的スムーズに感じました。
Node.js / Typescript
自分は最近検索システム周りを担当することが多いのですが、そこで使われているのがNode.js / Typescriptでした。
当たり前かもしれませんが、VS Code上でほぼリアルタイムにデバッグできるのが個人的にとても衝撃を受けてます。(ちなみに社内ではVS Code利用者が多数派です)
Python
スペースマーケットでは、業務時間のうち10%をメインの施策以外に当てることができるワーキンググループ活動があります。
その中の機械学習プロジェクトで、Amazon SageMakerのJupyterLabでメンバーと学習結果を共有したのですが、ビジュアライズも簡単にできるような仕組みが多く用意されているPythonはやっぱり大好きです。
GraphQL
多少REST APIが残っているものの、今ではほとんどAPIがGraphQLとなっており、フロントエンドのエンジニアと開発するときはほとんどスキーマファースト開発と呼ばれるフロントエンドとバックエンドでの結合時に比較的問題が起こりにくい効率的な手法で進めています。
ちなみにGraphQLクライアントは社内でも利用者が多いInsomniaを使っています。
インフラ
社内ではAWSに触れる機会が多く、使用しているサービスも数え切れないくらいあります。
自分はEC2やRDS、S3などは正直入社するまで聞いたことはあっても触ってきませんでしたが、入社前にGCPのCompute Engine、Cloud SQL、Cloud Storageを使って開発していたので、だいたいの仕組みが似ていて助かりました。
最近は以下のようなサービスを頻繁に使っています。
AWS Batch
特に検索系を中心に数多くのバッチがAWS Batchで動いています。
検索系のDBマイグレーションやキャッシュデータ作成など数多くのバッチジョブが登録されているので、どのジョブがどんな処理をするのか少しずつ理解を進めています。
ただ、コンソールが見づらいというウィークポイントがあり、登録されているジョブが多いと操作もしづらくちょっと不便なところがあります。
AWS Glue / Amazon Personalize
最近機械学習系の施策で触る機会があったサービスです。
AWS Glueについては、RDSに格納されたデータを取得し、加工、CSV化してS3に格納するといったことが簡単にできてしまうことに感動しました。なお、処理するための言語としてはPythonを利用しています。
Amazon Personalizeは比較的最近出たサービスで、巨大ECサイトAmazonで使われているようなレコメンド機能を機械学習の経験がそこまでない開発者でも実装できてしまうサービスです。
使い方としては、Glueで作成したCSVを学習データとして、モデルをトレーニングし、推論API作成などがGUIでぽちぽちするだけで出来てしまうのでとても楽です。ただ、モデルの実装などはもちろん隠蔽されているので、細かいチューニングなどが行えず、APIのレスポンスが細かく制御できないなどのデメリットも感じました。
その他
ドメイン駆動設計/オニオンアーキテクチャ
検索関連のコードがオニオンアーキテクチャで実装されており、自分はその改修をする機会が最近多いのですが、プロダクトレベルでクリーンアーキテクチャが実装されているコードを見て書けることはとても良い経験であり、刺激になります。
Datadog
最近導入されたサーバ監視ツールで、全てのリソース状況が一元的に管理できているのはとてもありがたいです。SQLもGraphQLもどのようなクエリが重いのかが一目でわかるため、社内のパフォーマンス改善の取り組みでも大いに活用されていました。
ちなみに、、、スキル管理のお話
社内の全エンジニアは月に一回スキルの棚卸しをしています。
スキルといっても多くの種類があり、それぞれについて自分はどのくらい理解しているのか、将来的にどのスキルを伸ばしていきたいのかをスプレッドシートで細かく管理しています。
・ドメイン知識(決済、検索、予約、etc..)
・言語(Ruby、Python、etc...)
・ツール(Datadog、Figma、etc...)
・コンピューティング(EC2、RDS、etc...)
・アーキテクチャ(DDD、マイクロサービス、etc...)
これらのスキルそれぞれに対して以下のレベルでどれに当たるのかを確認していきます。
・will (将来的に伸ばしていきたい)
・△(助けがあれば理解・実装できる)
・◯(一人で理解・実装できる)
・◎(人に教えられる)
・☆(スペシャリスト)
この棚卸しを月一回で実施することによってもっと勉強しなくてはいけないと定期的に意識できます。
また、世の中の新しい技術もシート上で項目として追加されていくので「これどんな技術ですか?」「社外でもこのスキルって需要としてどれくらいあるんですか?」など意見交換ができて勉強になるなどメリットを多く感じました。
スキル表を見るたびに社内にはつよつよエンジニアがたくさんいることに改めて気づかされてありがたい環境だなと思ってます!
最後に
最後になりますが、スペースマーケットで一緒にサービスを育てたい!作りたい!と思っていただけた方は下記の採用サイトから詳細をご覧ください!
この記事が気に入ったらサポートをしてみませんか?