- Ruby / Rails関連
週刊Railsウォッチ: Rails 7.1で「Apple でサインイン」を実装、JetBrains AIほか(20231215後編)
こんにちは、hachi8833です。
🔗Rails
🔗 rage: Rails互換の高速APIフレームワーク(Ruby Weeklyより)
つっつきボイス:「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のベータ版を試してみたんですね」
「本来アプリケーションロジックではない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にそれ用のストラテジーがあるんですね↓」
# 同記事より
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 の conference-app に型をつけてみた (前編) | Webシステム開発/教育ソリューションのタイムインターメディア
- 元記事: Kaigi on Rails の conference-app に型をつけてみた (中編) | Webシステム開発/教育ソリューションのタイムインターメディア
つっつきボイス:「この間のKaigi on Railsの会場で実際に使われたアプリにRBSで型付けしていく記事です」「やっていくうちに見つかったSteepのバグも修正したんですね」「rbs prototype rb
コマンドでプロトタイプを生成する、なるほど」「運用中のアプリだとダウンタイムを伴う大規模な改修はなかなかやりにくいものですけど、カンファレンス用アプリのように会期にのみ運用するアプリは実験的なことをやりやすそうでいいですね👍」
🔗Ruby
🔗 Rubyで作るMiniRubyコンパイラ
こんパイラ〜。Rubyでコンパイラを作る記事を会社のブログに書きました。https://t.co/aKppL8dOzR
— はたけやまたかし (@htkymtks) December 3, 2023
つっつきボイス:「minrubyc.rbでレジスタ周りの操作を行う形でArch64アセンブリを出力して、最終的にgccでコンパイルして実行バイナリを生成しているのか、すごい」「M1版に加えてx86-64版も作ったんですね」
同記事より
🔗 僕が考える「よいコード」
ちょっと前に書いたブログです。ひとことでまとめるなら、
パッと見で処理の内容やデータの中身に関する予想が付いて、なおかつその予想を裏切らないコード
が「良いコード」だと思います。
複雑怪奇な超絶技巧コードは仕事では見たくないですね 😅https://t.co/xPbm0hoKuu— Junichi Ito (伊藤淳一) (@jnchito) December 4, 2023
つっつきボイス:「jnchitoさんの記事はいつものように基本を押さえた内容かつ他の記事のリンク集にもなっていますね」「こういうスキルは1人でコードを書いているだけでは鍛えられないので、現場でコードレビューをしたりされたりしながら身につけていくことになりますね」
🔗 Prism作者によるアドベント記事とセッション
- 元記事: Kevin Newton | Advent of Prism
- 元記事: Hacking on Ruby Prism with Kevin Newton · Senior-level skills for experienced developers
つっつきボイス:「Kevin Newtonさんは、Ruby 3.3で入るPrismの主要な作者ですね(ウォッチ20231011)」「アドベント記事の他に、KevinさんとPrismをハックするセッションが日本時間12/16(土)の04:00に開催されるそうです」
🔗 その他Ruby
つっつきボイス:「複数言語で動くコードを書くというジャンルありますね: RubyKaigiのTRICKでおなじみのmameさんが好きそうな企画」
# 同記事より
print ("Python"or 0 and"Ruby\n")
We've just released IRB v1.10.0 with a handful of new enhancements 🎉
And I want to highlight that this release has 4 new contributors!! The highest ever in this year's IRB releases ❤️https://t.co/dBdexo6HUB pic.twitter.com/j814fsu35g
— Stan Lo @st0012@ruby.social (@_st0012) December 3, 2023
「IRBの機能拡張に加えてコントリビュータが4人も増えた🎉」「近年のIRBはマジ強力になってきていて嬉しい」「新規プロジェクトでpryを使うこともめっきりなくなりましたね」
🔗 設計・セキュリティ
🔗 書籍『サイバーセキュリティの教科書』
「サイバーセキュリティの教科書」をちょっと前に買って積読していたのですが、読み始めたら、これ素晴らしい本ですね。サイバーセキュリティの入門書ですが、正統的に広範囲の内容をわかりやすく説明しています。類書はいかがわしい本も多いですが、本書はお勧めしますhttps://t.co/aGipjH3cDy
— 徳丸 浩 (@ockeghem) December 5, 2023
つっつきボイス:「徳丸先生がここまで推しているので買って読みました: エンジニアに限らず企業のセキュリティ担当者や人事・法務も対象にしているようです」「5章のタイトルにもあるようなソーシャルエンジニアリングはITエンジニアリングと別物なので、この本で取り上げているからには人事・法務も当然対象になりますね」
参考: ソーシャル・エンジニアリング - Wikipedia
🔗言語/ツール/OS/CPU
🔗 JetBrains AI Assistant
つっつきボイス:「BPS社内Slackで話題になっていたので取り上げました」「まだ使い始めたばかりですが、無料枠だと多少制限はあってもGitHub Copilotとだいたい似た機能が使える感じかな: IDEに統合される分何か強力な機能があるかも」「年間契約すると月1000円なんですね」
その後も社内Slackで以下の記事などが話題になっていました。
参考: 開発者体験(DX)を進化させるJetBrainsのAIアシスタント機能の紹介 | 豆蔵デベロッパーサイト
後編は以上です。
バックナンバー(2023年度第4四半期)
- 20231127後編 Ruby 3.3.0-preview3リリース、IRBのオートコンプリート強化ほか
- 20231122前編 Rails+Ruby 3.3でYJITがデフォルトでオンにほか
- 20231116後編 RBS 3.3.0とSteep 1.6.0リリース、Ruby Conf Taiwan 2023ほか
- 20231114前編 MariaDBのRETURNINGオプションをサポートほか
- 20231107 Kaigi on Rails発表「Simplicity on Rails」を見るほか
- 20231025後編 ShopifyのWebAssemblyツールチェインRuvyほか
- 20231024前編 7.1アップグレードガイドにActive Record暗号化設定の注意事項が追加ほか
- 20231018後編 Kaigi on Rails 2023関連イベント情報公開、複合主キーのlocality解説記事ほか
- 20231017前編 Active Storageのしくみを詳しく解説するDiscussion投稿ほか
- 20231011 Rails 7.1.0リリース、YARPがprismにリネームほか
- 20131004 Rails 7.1.0.rc1と7.1.0.rc2がリリース、SQLite3コンフィグの最適化ほか
ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSやruby-jp SlackやRedditなど)です。
週刊Railsウォッチについて
TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ)