便利だったライブラリとか

目的

何かひさしぶりにアウトプットしたくて、書いてみた。

aws-sdk-rails

https://github.com/aws/aws-sdk-rails

SESを利用したメール送信

ActionMailer にSES利用が可能

今まではこんな感じで設定して使っていたが、必要なくなった

  def initialize(settings)
    ...
  end

  def deliver!(mail)
    ...
   end
end

非同期システム

とりあえずQueueに投げて、裏側で処理するシステムがめちゃくちゃ簡単にできた

こんな感じで送って、

YourJob.perform_later(args)

非同期処理がすぐ実現できる

class YourJob < ApplicationJob
  self.queue_adapter = :amazon_sqs

  def perform(*args)
    ...
  end
end

失敗したらリトライももちろんできるし、Lambdaもいいけど、RailsAWSアカウントだけで非同期処理がすぐ構築できるのが感動した...

その他

まだ使ってないけど、DynamoDBをsession storeや、データストアとして簡単に使えるそう!

やっぱり、痒いところに手が届く感がすごくて、AWS & Railsはリソースが限られてる時に非常にいいなーと思う。

CDKを使えば、Schedule TaskもECS Schedule & Rails Runner で簡単に実装できて楽だった。

sentry-ruby, sentry-rails

https://github.com/getsentry/sentry-ruby

というかsentryが良い...Slack通知と組み合わせて検知もめっちゃ楽。

active_support_logger というオプションがあると、詳細まで自動で入れてバグ修正がすぐ完了できる。

ただ、Rails Runner の時は、バッググラウンドタスクが動いてないので、 hint: { background: false } オプションを追加する必要がある。

ちょっとだけ、はまってしまったのでメモ。issueみたらすぐ書いてあった。

prisma

https://github.com/prisma/prisma

本番運用はまだだけど、触った感じめちゃくちゃ良さそう。

TypeORMは結構使ってて、あまり不満はないけど、prismaの方が簡単に思えた。

TypeORMもprismaActiveRecordみたいに経験がないので、今後はこちらに力入れていきたい。

特に、ActiveRecordと比較すると、サジェストがすごく有り難いのと、indexとかもちゃんと考えなきゃいけなくて、経験が少ない新人に触ってもらうには、とても良いと思った。

ベテランばかりの環境なら、Rails最高!書いてて楽しい!こんな書き方があるのか、すごい!とか思うけど、Rubyのようないろんなかっこいい書き方がある言語で、新人にレビューや教えるのが辛い。。。

だから積極的にTSを使っていきたいと思ってる

CDK

GitHub - aws/aws-cdk: The AWS Cloud Development Kit is a framework for defining cloud infrastructure in code

今まではずっとコンソールでポチポチしてたけど、最近先輩が導入したのを参考に、副業先でインフラを担当させてもらった。

ECS入れるだけならCopilotとかいろいろあるけど、特に制限なくなんでもAWS resource をコードで定義できるのはすごくよかった。

RDSを作って、そのIDとpasswordをSecretsManagerに入れるのがサンプルコードにあったり、普段コンソールでみてる設定が改めてドキュメント化されたりしてて、AWSリソースの理解につながった。

あと、やっぱりTSで書けるのはめちゃくちゃよかった。

終わり

最近は副業でしかフロントエンド触らなくなってきて、サーバーサイドとクラウド中心になって知識が少しづつ深まってきた感がある。

やっぱり便利なライブラリはある程度の正解を教えてくれるから、すごく勉強になる。

また、今まではPHPRails中心だったのが、最近はTSも半分くらい触ってるから、型付き言語の良さもわかってきた。

チームメンバーによるけど、WEBサービス系だったら、最初はRails & Reactとかで突っ走って、途中からBFFでTS入れて、マイクロサービス 化をそれぞれで適した言語で作っていくみたいなのが、(採用できるスキルセット的を考えても)最近の風潮なのかなーと思った。

あとは、APM周りの導入があまりできてないから、そこを勉強して、ある程度のパフォーマンス改善もしていきたい。