2022年技術の振り返り

触った技術

言語

  • TypeScript(JavaScript)
    • 今までKotlin/Javaを1年半ほど書き続けていたので初めてTypeScriptをがっつり書くことになった。
    • 型があるのでミスに気づきやすい
    • ただ、型に関する機能が多すぎる(?)と個人的に感じていて、なかなか使いこなせていない
  • Kotlin
    • 今年は少しだけ書いた
    • 書きやすい、好き
    • Sever-Side-Kotlinをやめるという企業も目にしたので、これからKotlin開発が業界的にどういった立ち位置になっていくかが気になっている

フレームワーク・ツール

  • AWS SAM
    • サーバレスなリソース構成を行った
    • SAM CLIを使ってCLIコマンドで内部でCloudFormationが動いてリソースの作成・削除を自動化できる
    • AWSコンソールでポチポチするのではとても効率が悪かったり、抜け漏れが発生してしまうような大規模環境ではとても有用に感じた。
  • Serverless Framework
    • SAMと同様のサーバレスフレームワーク。プラグインが豊富
    • SAMかServerlessFrameworkどっちを使ったら良いかの判別ができるようになるのが今後の目標
  • AWS Lambda
    • サーバー管理を意識しなくていい、サーバレス筆頭のAWSのサービス
    • API Gatewayと組み合わせることでスケーラブルなAPIを構築できる
    • Lambdaのメモリ・コールドスタート・時刻の扱いなどハマリポイントもあった
  • API Gateway
    • RESTやHTTP、WebSocketなどの種類でAPIを構築できるサービス
    • 開発・検証・本番環境を、stageで別々に管理できる
    • コンソールからAPIを叩くことができる
    • キャッシュを効かせることができる
    • マッピングテンプレートというデータを簡単に加工できる独自の言語?を使ってAPI Gateway内で値を加工してレスポンスを返すことができるが、特殊な書き方なのでなかなかうまく書けなかった
  • CloudFormation
    • AWS SAMの内部で動いているIaaSのサービス
    • スタックを作成してリソースの作成・更新・削除を自動化できる
    • コンソールを触ってリソースを管理することが本当に少なくなった(実経験としてそれで良いのか?というところもある)
  • DynamoDB
    • サーバレスなkey-valueストア(NoSQL)
    • 今までRDBMSしか触ったことなかったので、初めてkey-valueストアを触った。
    • リレーションとかあまり意識しない(できないようなサービス)
    • DynamoDBのイベントで処理を発火させるStream(RDBMSでいうトリガーのようなもの)を使った。これもIaasを使うことでトリガーよりもコードにシステムの流れが乗るので良い
  • DataPipeline
    • 大規模データのデータ処理ワークロードを構築できる
    • なかなかコンソールのUIが分かりづらいし、来年コンソールが廃止されると発表された(CLIはアクセス可)
  • Cognito
    • AWSの認証・認可のサービス
    • あまり理解できていない
  • SQS
    • サービス間を疎結合にするキューイングシステム
    • SQSを間に挟むとシステム構築の幅や選択肢が一気に広がるのを感じた
    • キューが溜まったり、削除されないときにLambdaが永遠にポーリングする罠にハマりかけた
  • SNS
    • トピックを送信する
    • SQSと同様に便利ツール
  • Compute Optimizer
    • EC2やLambdaのリソース稼働をモニタリングして、メモリ最適サイズなどを教えてくれる
    • 不要なリソースを削除したり、設定変更によって節約するなど、リファクタリングする意識が今年は根付いたので良かったと思う。
  • Step Functions
    • LambdaやS3・DynamoDBなど、AWSリソースで構成されたワークフロージョブを構築できる
    • GUIでジョブの流れをドラックアンド・ドロップで視覚的に簡単に構築でき、コード生成できる
    • システムをGUIで作れるのはとても楽しい(語弊を恐れないで言うとただ遊んでる感じ)
  • swagger / OpenAPI
    • swaggerをひたすら書いた
    • 非推奨を表すdeprecatedタグを使うなど、少し見た目を工夫できるよう幅が広がった気がする。良いシステムは必ずわかりやすいAPIとそのAPIドキュメントが前提であることを感じた
  • Postman
    • 使いこなせてない
    • pre-scriptやEnvironmentなど便利機能を使いたい
  • VSCode
    • 今までKotlin/Javaをメインで触っていたこともあって、久しぶりにVSCodeを使い始めた。
    • 機能拡張がいっぱいある
    • 書き心地はIntelliJのほうが好きかも
  • Jest
    • Testのフレームワークとして取り入れた
    • 基本的なところはわかっているつもり
  • GitHub Actions
    • GitHub Actionsを使ってデプロイワークフローを自動化した
    • 今年一番できるようになったという自信があるエリア
  • GitHub Environments
    • GitHub Actionsと組み合わせて、システム環境の設定ができる
    • 環境変数で本番・検証などの環境ごとに動的にGitHub Actionsを動かすことができる

資格

  • AWS CloudPractitioner
    • いきなりSolution Architect Associateを受けるのは怖かったので一番最初に受けた
    • 幅広いAWSサービスについて知るきっかけにできた
  • AWS Solution Architect Associate
    • CloudPractitioner後に受けた
    • 1年半くらい受けよう受けようとして先延ばしにしていたので受かってよかった
  • AWS Developer Associate
    • DynamoDB・Lambda・API Gatewayなど出題範囲が今一番扱っているエリアだったこともあり、受けた
    • 比較的簡単だった

感想

  • 今年はAWSのコンソールを見て触ったり、コードでインフラを記述することにどっぷり使った1年だった。
  • 来年はCDKなど触ったことのないインフラ構築ツールを触って、他ツール(SAM等)と比較選定ができる状態になりたい
  • 触発されてAWSに目が向き、今年秋〜冬にかけてAWS資格を3つ合格することができた。
  • リファクタリング的な考えが自分の中にかなり浸透したので来年も意識したい。
  • デプロイなどDevOps作業をガッツリやってとても楽しかったし、大事な領域だと認識できた。DevOps領域でキャリアの高みを目指していくような進路も考えてみたい。
  • ソフト的な話だと、1on1や評価なども行うようになった。まだ手探りでやっている状態なので、そのあたりの知見や勘所なども今後得ていきたい。