Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

週刊Railsウォッチ: Rails 7.1で「Apple でサインイン」を実装、JetBrains AIほか(20231215後編)

こんにちは、hachi8833です。

週刊Railsウォッチについて

  • 各記事冒頭には🔗でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ
  • 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄
  • お気づきの点がありましたら@hachi8833までメンションをいただければ確認・対応いたします🙏

TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ)

🔗Rails

🔗 rage: Rails互換の高速APIフレームワーク(Ruby Weeklyより)

rage-rb/rage - GitHub


つっつきボイス:「Railsっぽく書ける軽量かつ高速なAPIサーバーということのようですね、なかなか面白そう」

# 同リポジトリより
require "net/http"

class PagesController < RageController::API
  rescue_from SocketError do |_|
    render json: { message: "error" }, status: 500
  end

  before_action :set_metadata

  def show
    page = Net::HTTP.get(URI("https://httpbin.org/json"))
    render json: { page: page, metadata: @metadata }
  end

  private

  def set_metadata
    @metadata = { format: "json", time: Time.now.to_i }
  end
end

「こういうフレームワークは、Cloudflare WorkersのようなサービスがRubyをサポートしたら普及するかもしれませんね: JavaScriptで書かれたフレームワークはそうしたFaaS系サービスで動かせますけど、Rubyで書かれたフレームワークはAWS Lambdaで動かす方法もあるけど、それならLambdaでなくても他の方法で動かせばいいよねという気持ちになるかな」「なるほど」「シンプルなマイクロサービス的な機能ならこのrageのようなものでいけるかも」

参考: Cloudflare Workers | サーバーレスアプリケーションを構築 | Cloudflare
参考: FaaSを利用する利点と欠点 | サービスとしての活用法 | Cloudflare

🔗 8分で動かすTurbo 8(Ruby Weeklyより)


つっつきボイス:「fly.ioの技術ブログです」「以下の記事でも言及されているTurbo 8のベータ版を試してみたんですね」

Rails: フルスタックRailsの未来(1)Turbo Morph Drive(翻訳)

「本来アプリケーションロジックではないbroadcasts_refreshesをこうやってモデルに書く↓あたりが、いかにもフルスタックフレームワークとしてのRailsらしい発想ですね」「言われてみればbroadcasts_refreshesはモデルの責務ではない感じですね」「見ようによってはモデルの責務がフロントエンドにややはみ出しているとも言えそう: 実際はどこまでそうなのかわかりませんがRailsの発想的にはそうなのかもという気持ちですね」

# 同記事より
class Post
  # Touch will update the timestamp on the blog when
  # a post is created, updated, or destroyed.
  belongs_to :blog, touch: true

  # When the model is changed, a message will sent over ActionCable.
  broadcasts_refreshes
end

🔗 Rails 7.1で「Apple でサインイン」を実装する(Ruby Weeklyより)


つっつきボイス:「お、Railsで"Appleでサインイン"できるのか」「omniauthにそれ用のストラテジーがあるんですね↓」

nhosoya/omniauth-apple - GitHub

# 同記事より
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :apple,
    Rails.application.credentials.apple[:bundle_id],
    "",
    {
      scope: "email name",
      team_id: Rails.application.credentials.apple[:app_id_prefix],
      key_id: Rails.application.credentials.apple[:key_id],
      pem: Rails.application.credentials.apple[:private_key]
    }
end

参考: 「Apple でサインイン」について - Apple サポート (日本)

;🔗 その他Rails


つっつきボイス:「この間のKaigi on Railsの会場で実際に使われたアプリにRBSで型付けしていく記事です」「やっていくうちに見つかったSteepのバグも修正したんですね」「rbs prototype rbコマンドでプロトタイプを生成する、なるほど」「運用中のアプリだとダウンタイムを伴う大規模な改修はなかなかやりにくいものですけど、カンファレンス用アプリのように会期にのみ運用するアプリは実験的なことをやりやすそうでいいですね👍」

kaigionrails/conference-app - GitHub

🔗Ruby

🔗 Rubyで作るMiniRubyコンパイラ


つっつきボイス:「minrubyc.rbでレジスタ周りの操作を行う形でArch64アセンブリを出力して、最終的にgccでコンパイルして実行バイナリを生成しているのか、すごい」「M1版に加えてx86-64版も作ったんですね」


同記事より

thata/minrubyc-m1 - GitHub
thata/minrubyc-x86_64 - GitHub

🔗 僕が考える「よいコード」


つっつきボイス:「jnchitoさんの記事はいつものように基本を押さえた内容かつ他の記事のリンク集にもなっていますね」「こういうスキルは1人でコードを書いているだけでは鍛えられないので、現場でコードレビューをしたりされたりしながら身につけていくことになりますね」

🔗 Prism作者によるアドベント記事とセッション


つっつきボイス:「Kevin Newtonさんは、Ruby 3.3で入るPrismの主要な作者ですね(ウォッチ20231011)」「アドベント記事の他に、KevinさんとPrismをハックするセッションが日本時間12/16(土)の04:00に開催されるそうです」

ruby/prism - GitHub

🔗 その他Ruby


つっつきボイス:「複数言語で動くコードを書くというジャンルありますね: RubyKaigiのTRICKでおなじみのmameさんが好きそうな企画」

# 同記事より
print ("Python"or 0 and"Ruby\n")

「IRBの機能拡張に加えてコントリビュータが4人も増えた🎉」「近年のIRBはマジ強力になってきていて嬉しい」「新規プロジェクトでpryを使うこともめっきりなくなりましたね」

🔗 設計・セキュリティ

🔗 書籍『サイバーセキュリティの教科書』


つっつきボイス:「徳丸先生がここまで推しているので買って読みました: エンジニアに限らず企業のセキュリティ担当者や人事・法務も対象にしているようです」「5章のタイトルにもあるようなソーシャルエンジニアリングはITエンジニアリングと別物なので、この本で取り上げているからには人事・法務も当然対象になりますね」

参考: ソーシャル・エンジニアリング - Wikipedia

🔗言語/ツール/OS/CPU

🔗 JetBrains AI Assistant


つっつきボイス:「BPS社内Slackで話題になっていたので取り上げました」「まだ使い始めたばかりですが、無料枠だと多少制限はあってもGitHub Copilotとだいたい似た機能が使える感じかな: IDEに統合される分何か強力な機能があるかも」「年間契約すると月1000円なんですね」

その後も社内Slackで以下の記事などが話題になっていました。

参考: 開発者体験(DX)を進化させるJetBrainsのAIアシスタント機能の紹介 | 豆蔵デベロッパーサイト


後編は以上です。

バックナンバー(2023年度第4四半期)

週刊Railsウォッチ: 非推奨化済み機能をRails 7.2に向けて多数削除ほか(20231213前編)

ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSやruby-jp SlackやRedditなど)です。

Ruby Weekly


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。