並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 146件

新着順 人気順

activerecordの検索結果1 - 40 件 / 146件

  • クックパッドを退職しました - 昼メシ物語

    2024年1月末まで在籍していますが昨年12月に業務は終えていて、いまは有休消化期間中です。2010年から約14年間勤めてきた、自分の生き様そのものとも言えるクックパッドを離れるのには、表現しきれないほど大きく、複雑な思いがあります。 僕がこの14年間でやってきたことを振り返ってみます。 入社 クックパッドに入社した時は新卒3年目相当で、26歳でした。もともと料理と Ruby が好きで、当時まだ珍しかった Ruby on Rails でサービス開発をしているらしいという点や、当時からネットウォッチしていた @ryo_katsuma さんが所属していること、直属の上司の井原さんが転職したことが決め手になり、体当たりで飛び込みました。当時の僕はほとんど実績もなく、入れてもらえるかギリギリのところだったと思いますが、おそらく井原さんが頑張って交渉してくれたのだと思います。本当に感謝しています。こ

      クックパッドを退職しました - 昼メシ物語
    • データベースの値をちょっとだけ書き換えたら検索に数十分かかる様になって障害になった裏話 - STORES Product Blog

      はじめに 2024年1月にリテール(ネットショップ・レジ)部門からサービス(予約)部門に異動になった @ucks です。 異動してからはスマートリストという機能の開発を行っていて、5月6日に無事リリースできたのと、開発途中で障害に至ってしまった部分があるので、裏側を少し紹介しようかなと思います。 はじめに スマートリストとは スマートリストの設計 検索の仕様変更 高負荷時のハンドリング そして障害へ 見逃した点 DBの実行計画確認時の見逃し 動作確認時の漏れ 監視先の漏れ ログの損失 おわりに スマートリストとは スマートリストの開発についての話を行う前に、まずはスマートリストについて簡単に説明しておきます。 スマートリストとは、特定の条件の顧客をラベリングする機能です。 早い話、最終予約日がいつ、予約回数が何回以上等の顧客の検索条件を保存しておいて、閲覧時にラベリングして、視認しやすくし

        データベースの値をちょっとだけ書き換えたら検索に数十分かかる様になって障害になった裏話 - STORES Product Blog
      • (翻訳) GitLab 社で働くのはどのようなものだったか - forest book

        本稿は Yorick Peterse 氏によって書かれた次の記事の日本語翻訳です。著者に翻訳の許可を得て公開しています。 yorickpeterse.com また本稿は DeepL Pro を使って下訳したものに手を加えています。日本語翻訳の不具合または誤訳については Yorick Peterse 氏ではなく、本稿のコメント欄にお願いします。 ここから本文です。 GitLab 社で働くのはどのようなものだったか 私は2015年10月に GitLab 社に入社し、6年あまり働いて2021年12月に退社しました。 前に GitLab 社を辞めて Inko に取り組んでいることは書きましたが、2015年から2021年までの間、GitLab 社で働いていたことがどのようなものであったのかについては触れませんでした。理由は2つあります。 燃え尽き症候群に苦しんでいて、(当時は) 自分の人生の最後の6

          (翻訳) GitLab 社で働くのはどのようなものだったか - forest book
        • 【バックエンド】駆け出しエンジニアが目指すジュニアレベルのエンジニアとは【2024年版】 - Qiita

          はじめに こんにちは。 普段はフロントエンドの開発をメインでやっておりますmamiと申します。 最近バックエンドの方の勉強や、少しずつですがDB設計やAPI作成などの業務もやらせてもらえるようになったので、自分のエンジニアとしてのレベル感や、この先目指すべき道筋を明確にしたいな〜という思いでこの記事を書いております。 これは自分のための記事であると同時に、同じように駆け出し中のエンジニアさんや、ミドル層を目指す手前のエンジニアさんにも刺さる内容になっているかと思います。 今、自分がどのようにキャリアアップしていくべきなのか、どのような道筋でスキルを磨いていけばいいのか。そんなふうに悩んでいる方は是非読んでみてください。 ※内容はバックエンドエンジニアが対象になりますが、フロントエンドの方もなにか通じるものがある…かもしれません。 ちなみにですがフロントエンドの方の記事は下記で執筆しています

            【バックエンド】駆け出しエンジニアが目指すジュニアレベルのエンジニアとは【2024年版】 - Qiita
          • 「キャッシュは麻薬」という標語からの脱却 - id:onk のはてなブログ

            これは はてなエンジニア Advent Calendar 2023 の 18 日目の記事です。昨日は id:gurrium による private-isuで70万点取るためにやったこと - ぜのぜ でした。私は 50 万点ぐらいで満足してしまっていたので、しっかり詰めていて凄いなと思う。 developer.hatenastaff.com Web アプリケーション開発において、「キャッシュは麻薬」という言葉がインターネット上をよく飛び交っています。YAPC::Kansai OSAKA 2017 の id:moznion のトークでよく知られるようになったワードじゃないかな。 初出はちゃんとは分からないんですが、少なくとも 2011 年には言われていますね。 「キャッシュは麻薬」とはよく言ったものだ。— TOYAMA Nao (@nanto_vi) November 5, 2011 キャッシ

              「キャッシュは麻薬」という標語からの脱却 - id:onk のはてなブログ
            • GraphQLはいつ使うか、RESTとの比較

              さぼです、沖縄でWebと設計について考えてます。2023/09/23 に沖縄で行われたTechBaseOkinawa2023 にて上記のタイトルで登壇しました。 今回の内容は GraphQLを設計の観点から考えてみる GraphQLの目的や用途を整理する GraphQLを使う時、または使わない時のヒントを持ち帰ってもらう 最近、GraphQLじゃなくてRESTで良くないと思うケースがなんとなくわかってきたのでそれを共有する という感じで話しました。話した内容を文字に起こし少し改修してZennでも共有することとします。 まえおき 最近はクライアントAppとサーバーAppを分けて実装する事が増えてきた クライアントの環境はますます複雑になっている クライアントとサーバーはWebAPIで通信を行う クライアントが複雑になるのと同時にWebAPIの要求が更に増して来ている APIの要求・応答を効率

                GraphQLはいつ使うか、RESTとの比較
              • 安全なウェブサイトの作り方~失敗例~ - goruchan’s blog

                安全なウェブサイトの作り方を読んだので、理解した内容を自分なりにまとめておきます。資料 上記は3章構成になっていてそれぞれ長めの内容なので、ここでは3章の『失敗例』について、Ruby on Rails ではどうするかについてをまとめます。 SQL インジェクション OS コマンドインジェクション パス名パラメータの未チェック例(ディレクトリトラバーサル) 不適切なセッション管理例(セッション ID の推測) クロスサイト・スクリプティングの例(エスケープ処理) CSRFの例 HTTP ヘッダ・インジェクションの例 メールヘッダ・インジェクションの例 参考 SQL インジェクション 参考資料内の SQL インジェクション例を見て、Ruby on Rails ではどのように対策できるかを確認しました。 例えば、下記ような $uid, $pass をユーザ入力とし、SQL 文を動的に生成する場合

                  安全なウェブサイトの作り方~失敗例~ - goruchan’s blog
                • スタディサプリ最大のRailsアプリケーションにYJIT+pitchforkを導入してメモリ使用量を劇的に削減するまで - スタディサプリ Product Team Blog

                  こんにちは。SREのkyontanです。Rubyが大好きなのでRubyの話をします。ちなみにリクルートはRubyKaigi 2024へGold Sponsorとして協賛しています! *1。ぜひ沖縄でお会いしましょう。 これはあるアプリケーションのメモリ消費量を示すグラフなのですが、まさかgemを入れ替えるだけでこんなに嬉しい変化が見られるとは思っていませんでした。今日はそんなgemの話をします。 話は遡って2023年4月のある日、インターネットを眺めていたところ、ShopifyがpitchforkというOSSを公開したという情報が目に留まりました。 調べてみると、どうやら著名なRackサーバー実装の1つであるunicornの派生版であり、メモリ使用量の削減に特化しているらしいのです。 github.com これはスタディサプリ小中高のあのリソースドカ食いマイクロサービス第一位である api

                    スタディサプリ最大のRailsアプリケーションにYJIT+pitchforkを導入してメモリ使用量を劇的に削減するまで - スタディサプリ Product Team Blog
                  • テストコードを書く上で個人的に気をつけている5つのこと - Qiita

                    はじめに エンジニアの皆様、テストコードはちゃんと書けておりますでしょうか?(挨拶) どんな開発言語や開発手法を導入していたとしても、アプリケーションの機能実装とテストは表裏一体であると言えます。場合によっては機能の作り込みよりも時間をかけるべきケースが多いくらい重要である(・・・と信じたい)反面、デッドラインが近づくにつれて真っ先に工数が削られやすく軽視されがちな工程でもあります。 時間に追われてテストコードを書いた結果、テストの体をなしていないコードになっていたり後で見返したときに記述が煩雑すぎてメンテ不能になっていたり・・・といった苦い経験は誰しもがあるかと思います。かくいう自分もそんなことは多々ありました。 そんな今までの経験則を基に「自分がテストコードを書くにあたってどんなことを意識しているのか?」をいくつかピックアップして備忘録も兼ねて紹介したいと思います。 一応注意なのですが

                      テストコードを書く上で個人的に気をつけている5つのこと - Qiita
                    • MySQL 8.0アップグレード後に性能劣化したクエリ: セミジョイン編 - inSmartBank

                      データベースアップグレード後の性能劣化、イヤですよね。 去る2023年某日、弊社ではAmazon Aurora MySQL 互換エディション 2 (MySQL 5.7 互換) から Aurora MySQL 互換エディション 3 (MySQL 8.0 互換) にアップグレードしました。当時の背景やアップグレードに関する知見は以下の記事をぜひ読んでみてください。 blog.smartbank.co.jp ソフトウェアバージョンアップをするとき、旧バージョンが抱えていた問題の解決などの恩恵を我々は期待します。しかし時には予期せぬデグレーションに遭遇することもあります。我々のMySQL 8.0へのアップグレード前後においてもいくつかの問題に遭遇しました。 本記事ではそんな問題の一つ、MySQL 8.0のオプティマイザが選択したセミジョイン最適化が性能劣化を引き起こした事例と解決方法について紹介し

                        MySQL 8.0アップグレード後に性能劣化したクエリ: セミジョイン編 - inSmartBank
                      • PostgreSQL Row Level Security (RLS) を使って顧客データ保護の安全性を高めている件 - Techouse Developers Blog

                        はじめに 初めまして、株式会社Techouseエンジニアインターンの sakaidubz と申します。本日は私の携わっているプロダクトであるクラウドハウス労務で利用している RLS (Row Level Security) の技術について紹介します。 Techouse では、重要技術として RLS を多用しています。 通常 PostgreSQL の運用時には利用しないものであるため Techouse の開発メンバーとしてジョインしたみなさんが手慣れるまでに少し苦労をされているようです。 そこでこの場を借りて解説してみようと思い立ちました。 クラウドハウス労務について RLS について紹介する前に、私が開発しているクラウドハウス労務について紹介します。 クラウドハウス労務は人事労務における複雑な業務の電子化を推進するセミオーダー型・クラウド業務支援サービスです。各種手続きや年末調整といった法

                          PostgreSQL Row Level Security (RLS) を使って顧客データ保護の安全性を高めている件 - Techouse Developers Blog
                        • やさしいActiveRecordのDB接続のしくみ

                          https://kaigionrails.org/2023/talks/kubo/

                            やさしいActiveRecordのDB接続のしくみ
                          • RailsライクなRustのWebフレームワーク 「Loco」 | DevelopersIO

                            Introcusion つい先日、「Rust版のRails」ともいわれている、 Locoというフレームワークを教えてもらいました。 Railsは昔ちょっとさわった程度なのですが、 Rustで手軽にRailsライクなアプリ開発はおもしろそうなので、 試してみました。 Loco? Locoについて簡単に説明します。 このblog記事で、Locoって何? なんでRustなの?とか誰のためのフレームワーク?みたいなことが書いてあります。 軽く説明すると、↓です。 Locoって何? Loco は、Rails からインスピレーションを得た Rust用のWebフレームワーク ほぼすべての Rails 機能が含まれている Controllerとaxum経由のルーティング ActiveRecordライクにSeaORMでモデル操作 rrgenでコード生成 その他いろいろ。詳しくは元記事で RubyでいいならR

                              RailsライクなRustのWebフレームワーク 「Loco」 | DevelopersIO
                            • Vimの操作感を愛おしむ人たちへ: Zedで広がる新たな可能性 - ROUTE06 Tech Blog

                              ソフトウェア開発の世界は日々進化していますね。その中で、私たち開発者が使うツールは、まさに職人の道具のように大切なもの。常により良い方法を探し求めているのは、皆さん同じではないでしょうか。 そんな私たちの前に現れたのが、Zedです。このエディタ、一見するとただの新顔に思えるかもしれません。でも、その中身は、私のようなVimmerの心をしっかりと掴みました。なぜならZedは、Vimの精神や操作感を大切にしながら、現代のテクノロジーを駆使して作られているからです。 私は1年ほど前からZedを使い始め、すぐにルックやデザイン、全ての動作が期待通りかつ、速く完了する様子に魅了され、使い続けています。 筆者のZedのキャプチャ 機能的にはVSCodeが優れているし、AI Code EditorのCursorも盛り上がっていますが、もっと速く、たくさんコードを書きたい開発者の方にはZedという選択肢が

                                Vimの操作感を愛おしむ人たちへ: Zedで広がる新たな可能性 - ROUTE06 Tech Blog
                              • What it was like working for GitLab

                                February 8, 2024 I joined GitLab in October 2015, and left in December 2021 after working there for a little more than six years. While I previously wrote about leaving GitLab to work on Inko, I never discussed what it was like working for GitLab between 2015 and 2021. There are two reasons for this: I was suffering from burnout, and didn't have the energy to revisit the last six years of my life

                                • freee人事労務の給与計算ロジックにLocal Write Forwardingを導入した話 - freee Developers Hub

                                  読まなくても良い漫才パート ボケ「いきなりですけどね、freee人事労務の給与計算ロジックでいつも使ってる DB instance があるらしいんやけど」 ツッコミ「あっ、そーなんや」 ボケ「うちのオカンがね、reader instance なのか writer instance なのかをちょっと忘れたらしくてね」 ツッコミ「どうなってんねそれ」 ボケ「でまあ色々聞くんやけどな、全然分からへんねんな」 ツッコミ「分からへんの?いや、ほな俺がね、どっちの instance なのか、ちょっと一緒に考えてあげるから。詳しく教えてみてよ」 ボケ「オカンが言うには、どちらかというと CPU 利用率がいつも低い方らしいねん」 ツッコミ「おー reader instance やないかい。freee人事労務 の DB で CPU 利用率が低い方は reader instance や。黄色の折れ線の方や。r

                                    freee人事労務の給与計算ロジックにLocal Write Forwardingを導入した話 - freee Developers Hub
                                  • 『設計ナイト2024』に行ってきたよメモ - コード日進月歩

                                    『設計ナイト2024【オフライン】 - connpass』に参加してきたのでそのメモです。 各発表の感想 ※資料スライドは見つけたら貼ります。 ロジックから状態を分離する技術 今日の登壇資料です。 ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyhttps://t.co/XxBNAYiKXS #sekkeinight— わいとん (@ytnobody) 2024年6月14日 感想 純粋関数の話を基軸にいかに容易にしていくのか、という話 入力から必然的に出力が決まるロジック類をDomainとしておこうという発想はよかった 純粋関数の構成デザインパターンの分け方すごくいいなぁと思ったのと、このあたりの話を提唱している人いないのがびっくり 関連リンク 純粋関数とは - 意味をわかりやすく - IT用語辞典 e-Words Flux パターンが解決した課題 -

                                      『設計ナイト2024』に行ってきたよメモ - コード日進月歩
                                    • newmoのnewなひと 〜ソフトウェアエンジニア・kamipo〜|newmo株式会社|"移動で地域をカラフルに"

                                      newmoに新しくジョインしたメンバーを紹介する「newmoのnewなひと」。newmoという会社や働く人のことを、より深く知っていただければ嬉しいです。今回取り上げるnewなひとは、ソフトウェアエンジニアの@kamipoさんです!それではどうぞ。 経歴 2024年7月にnewmo株式会社にソフトウェアエンジニアとして入社。日本人唯一のRails CoreコミッターでRailsコミッター四皇のひとり。 ニックネームの「kamipo」は、昔のあだ名から本名は、上薗 竜太です。ニックネームで使っているkamipoの由来は、元カノが呼んでいたあだ名です。笑 エンジニア→フルタイムRailsコミッター→エンジニアというキャリア2007年に新卒でアドウェイズに入社し、アドウェイズ時代に麻雀で知り合った社長の片桐さんに誘われて、2008年にピクシブに転職して自作サーバーのベニヤ化などインフラエンジニア

                                        newmoのnewなひと 〜ソフトウェアエンジニア・kamipo〜|newmo株式会社|"移動で地域をカラフルに"
                                      • いかにして動的型付けのRubyに静的な型検査を持ち込むか? SteepとRBSが目指すもの - Findy Engineer Lab

                                        Rubyをはじめとする「動的型付け」のプログラミング言語は、ソースコード中に型に関する記述が陽に出てこないことが特徴で、プログラムの実行前に(静的に)型検査をすることはありません。しかし、このようなプログラミング言語においても、大規模な開発における品質の向上や開発体験の改善、実行の高速化のために、静的な解析を活用しようという試みは多くなされてきました。この記事では、動的型付けの言語のための型検査の歴史を簡単に振り返って、現在私が開発しているRuby向けの型検査器Steepとその基盤となっている型記述言語RBSについて説明し、今後の展望を議論します。 著者:松本宗太郎さん(@soutaro) Rubyコミッター。大学院でRubyプログラムの型検査の研究に取り組み、修了後はスタートアップでWebアプリケーションの開発に従事。2017年から型検査ツールSteepの開発を始め、2019年からはRu

                                          いかにして動的型付けのRubyに静的な型検査を持ち込むか? SteepとRBSが目指すもの - Findy Engineer Lab
                                        • ActiveRecord::Base.transaction(joinable: false)を使ってはいけない - SmartHR Tech Blog

                                          注意喚起の記事になります。タイトルが結論です。 既にこの問題に言及している記事はいくつかあるのですが*1、私は気付かずに踏んでしまったので、タイトルで「おっと、うちは大丈夫かな」と思ってもらえるようにこの記事を書いています。 joinableとは何か 問題として挙げているjoinableオプションですが、これはネストしたトランザクションの挙動に影響を与えます。少しややこしいので、サンプルコードを見せながら説明します。 # frozen_string_literal: true require "bundler/inline" gemfile(true) do source "https://rubygems.org" git_source(:github) { |repo| "https://github.com/#{repo}.git" } gem "activerecord", "7.

                                            ActiveRecord::Base.transaction(joinable: false)を使ってはいけない - SmartHR Tech Blog
                                          • activerecord-originator をリリースしました - pockestrap

                                            こんにちは。 id:Pocke です。 今日は activerecord-originator という gem を作ったので紹介します。 github.com なにこれ Active Record が発行するSQLの各部分に、それがどこで作られたものかをコメントとして入れ込む gem です。 理解するには実例を見るのが早いでしょう。次のログはArticlesController#indexで実行されるクエリの例です。 Article Load (0.1ms) SELECT "articles".* FROM "articles" WHERE "articles"."status" = ? /* app/models/article.rb:3:in `published' */ AND "articles"."category_id" = ? /* app/controllers/artic

                                              activerecord-originator をリリースしました - pockestrap
                                            • Ruby: メモ化のイディオムが現代のRubyパフォーマンスに与える影響(翻訳)|TechRacho by BPS株式会社

                                              概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Performance impact of the memoization idiom on modern Ruby | Rails at Scale 原文公開日: 2024/02/14 原著者: Jean Boussier(byroot) CC BY-NC-SA 4.0 Deed | 表示 - 非営利 - 継承 4.0 国際 | Creative Commons Ruby 3.2における主要な内部変更のひとつに、オブジェクトシェイプ(object shape)の導入があります。 本記事では、オブジェクトシェイプが導入された理由、仕組み、制限事項について解説します。 🔗 オブジェクトのインスタンス変数はどのように保存されるのか Rubyは非常に動的な言語なので、インスタンス変数へのアクセスという単純な操作でも多くの作業を伴います

                                                Ruby: メモ化のイディオムが現代のRubyパフォーマンスに与える影響(翻訳)|TechRacho by BPS株式会社
                                              • カヤック発OSSカタログ - KAYAC Engineers' Blog

                                                SREチームの長田です。 今回は、カヤックのメンバーが業務で使うために開発・公開しているOSSなプロダクトをまとめて紹介しようという企画です。 KAYAC organization以下にあるものだけでなく、在籍中のメンバーが作ったものもひっくるめて、実際に業務で使用しているものを中心に 紹介しています。 以下の3つのカテゴリに分けて記載しています。 各カテゴリ内はアルファベット順です。 ツール編 人間が手動で実行するもの アプリケーション編 どこかに常駐して、イベントを受け取ると動作するもの ライブラリ編 ツールやアプリケーションから参照されるもの 集めてみたらそこそこの量になったので、本記事では詳細な説明は省いています。 GitHubリポジトリのURLや関連記事のリンクを併記していますので、より詳しく知りたい場合はそちらを参照ください。 (...) 内はそのプロダクトで使用している主なプ

                                                  カヤック発OSSカタログ - KAYAC Engineers' Blog
                                                • 業務システムのモダナイズを始めました〜RoRからFastAPI × next.jsへ

                                                  はじめに この記事では、詳細な技術の話は割愛しています。 「なぜモダナイズをやろうと思ったのか?」 「どんな課題意識があったのか?」 「具体的にどうプロジェクトを進めてきたのか?」 といった、課題設定・意思決定のプロセスに重点を置くことで、同じような境遇にあるチームの意思決定の材料になればと思っております。 RoRの限界...? ダイレクト出版の業務システムはRoR(v6.1)で動いてきました。リリースから6年ほど経っているでしょうか。このシステムは何をするものかというと、例えば、 商品を管理する 顧客を管理する 注文内容を設定する 一斉配信メールを送信する マーケティングオートメーションを設定する 各種分析を行う など、業務に関わるありとあらゆることを行っています。ソースコードは10万行程度で、中堅システムといった具合でしょうか。 実はこのシステム、そこまでレガシーというわけではなく、テ

                                                    業務システムのモダナイズを始めました〜RoRからFastAPI × next.jsへ
                                                  • 分散トレーシングを使ってパフォーマンス改善をやってみたら、レスポンスタイムを2割近く改善できたお話 - Tabelog Tech Blog

                                                    目次 目次 はじめに そもそもシステム運用改善チームとは何か? なぜアプリAPIのパフォーマンス改善が必要になったのか? どうやって改善箇所を見つけるのか? 分散トレーシングを使って、店舗詳細APIを細かく分析する 計測結果の見方 計測結果から分かったこと 計測結果から見つけたポイントに改善を実施していく コースに紐づくクーポンの取得 口コミを取得する処理と公開画像数のカウント ユーザーごとの公開口コミ投稿数の合計数カウント 全体での改善効果はどうだったか? パフォーマンス改善の影響 ユーザー体験が向上した 今後の食べログ成長に備えたシステム上の余裕ができた 食べログの分散トレーシングを使って改善を実施してみてよかったこと おわりに はじめに こんにちは。食べログ開発本部 ウェブ開発1部 システム運用改善チームの @4palace です。 今回は、私の所属するシステム運用改善チームが食べロ

                                                      分散トレーシングを使ってパフォーマンス改善をやってみたら、レスポンスタイムを2割近く改善できたお話 - Tabelog Tech Blog
                                                    • Aurora 3.04.2 での DDL の予期しない挙動と Rails での対策 - freee Developers Hub

                                                      こんにちは、DBRE (Database Reliability Engineer) の shinta です。 今回は、Aurora 3.04.2 に存在する DDL の予期しない挙動について紹介したいと思います。 発見のきっかけ きっかけは、Aurora 3.04.1 に存在した以下の事象の検証でした。(CyberAgent 様の記事で事象の存在を知り、検証するに至りました。ありがとうございます!) ca-srg.dev これがどんな事象かというと、「ALGORITHM=INPLACE で特定の online DDL を実行している間、そのテーブルに reader からアクセスできなくなる」というものでした。 writer で DDL を実行している間、reader からそのテーブルにクエリを投げると以下のエラーが出ます。 Table 'db_name.tbl_name' doesn't

                                                        Aurora 3.04.2 での DDL の予期しない挙動と Rails での対策 - freee Developers Hub
                                                      • 請求関連テーブルのスキーマ変更をした話 - Feedforce Developer Blog

                                                        以前に アプリケーションを停止させずにRDBのスキーマ変更する話 を書きました。 developer.feedforce.jp 今日は、その実践編というか、実例として EC Booster というサービスで請求関連テーブルのスキーマを変更した話をしようと思います。 はじまりのテーブル 元々、 EC Booster の請求を管理するテーブルは、このような形でした。 create_table "monthly_charges", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "shop_id", null: false t.integer "year", null: false t.integer "month", null: false t.datetime "created_at"

                                                          請求関連テーブルのスキーマ変更をした話 - Feedforce Developer Blog
                                                        • Railsガイドにきちんと目を通して新しい知識を得る - Active Support コア拡張機能編 - - PLAY BALL

                                                          ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。 今回は、Active Support コア拡張の章です。 railsguides.jp deep_dup リンクはこちら dupでは、コピーした配列の中身がgsub!などで変化する場合、コピー元の配列の中身まで影響しますが、deep_dupでは影響を受けないようにできます。 このあたりは意図せぬバグを混入させてしまわないよう、きちんと理解しておく必要があるなと思いました。 try リンクはこちら &.とtryは似ていますが、存在しないメソッドを指定した際に、前者はNoMethodErrorを返し、後者はnilを返します。 &.とtry!は挙動自体は同じようです。 ただし、try!は&.と比べる

                                                            Railsガイドにきちんと目を通して新しい知識を得る - Active Support コア拡張機能編 - - PLAY BALL
                                                          • 【Kaigi on Rails 2023】発表資料まとめ - Qiita

                                                            2023/10/27, 28 に行われた Kaigi on Rails の資料まとめです。 資料が公開され次第、内容を更新します。公開済みのURLがあれば教えてください。 10/27 スケーラブルActive Jobs with Sidekiq Enterprise (スポンサーLT) Rails アプリの 5,000 件の N+1 問題と戦っている話 HTTPリクエストを手で書いて学ぶ ファイルアップロードの仕組み 生きた Rails アプリケーションへの delegated types の導入 Async Gem で始める ruby 非同期プログラミング Exceptional Rails やさしいActiveRecordのDB接続のしくみ Update Billion Records 初めてのパフォーマンス改善〜君たちはどう計測す(はか)るか〜 Simplicity on Rails

                                                              【Kaigi on Rails 2023】発表資料まとめ - Qiita
                                                            • SolidQueue解体新書 - メドピア開発者ブログ

                                                              こんにちは。サーバーサイドエンジニアの三村(@t_mimura39)です。 さて、Railsエンジニアの皆さんは非同期処理にどのようなライブラリを利用していますか? ちなみに弊社では Sidekiq を利用するプロジェクトが多いです。 tech.medpeer.co.jp 今回はRailsでの非同期処理ライブラリの新たな選択肢として誕生した「SolidQueue」について解説します。 github.com 目次 🙋 はじめに 🙋 📝 SolidQueueとは 📝 🚀 SolidQueueの特徴 🚀 🔓 「FOR UPDATE SKIP LOCKED」 とは 🔓 🍡 3種類のアクターについて 🍡 起動方法 (おまけ)二つの起動モードについて 🚶 SolidQueue実装の歩き方 🚶 モデル アクター 🥞 SolidQueueのモデル(テーブル)🥞 Jobの状態遷移

                                                                SolidQueue解体新書 - メドピア開発者ブログ
                                                              • 「まるで研ぎ澄まされた日本刀のような美しさ」 僕がそれでもJetBrains製のRuby on Rails IDEを使う理由

                                                                ソニックガーデンの執行役員兼プログラマーである遠藤大介氏が、JetBrains製のRuby on Rails IDE「RubyMine」の魅力について語りました。全2回。前回の記事はこちら。 Viewにもブレークポイントが張れる 遠藤大介氏(以下、遠藤):これはたまに、驚かれるんだけど。ControllerやModelにブレークポイントが張れるのは、当たり前じゃん。そんなのができなかったら、とりあえずIDEとしてどうよっていう話だから。 なんだけど、RubyMineはぶっ飛んでいて、Viewにもブレークポイントを張れるの。 植木宏氏(以下、植木):Viewに? Viewにブレークポイント? 遠藤:「どういうこと?」って思うじゃん。 植木:(笑)。 遠藤:ERBファイルってあるじゃん。ERBファイルって、「ここまで来た時、どうなってんのかな? なんか表示おかしいんだけど」とか、たまに、ちょっ

                                                                  「まるで研ぎ澄まされた日本刀のような美しさ」 僕がそれでもJetBrains製のRuby on Rails IDEを使う理由
                                                                • def 保険料 = 算定額 * 保険料率 - SmartHR Tech Blog

                                                                  はじめに SmartHRで届出書類機能を開発しているqwyngと申します。 今回はSmartHRの届書書類機能において、日本語エイリアスを用いた開発を行ったので紹介します。 背景 SmartHRの届出書類機能は、書類の作成から電子申請の送信までを一括で行うことができる機能です。 ユーザーは画面上で書類に記入するような感覚で書類の作成を行うことができます。 SmartHR届出書類機能の書類確認画面 この体験の実現のために書類のどんな項目にどのような値が入力されたかを永続化する必要があります。 DBのカラム名は英語であるため、開発者は日本語の項目名を英語のカラム名に脳内で変換する必要があります。 この変換が煩わしく、プログラムの修正やレビュー時を含めて開発者の負担になっていました。 そのため、日本語の項目名をそのまま実コードに使えるようにすることを検討しました。 日本語化の是非 日本語の項目名

                                                                    def 保険料 = 算定額 * 保険料率 - SmartHR Tech Blog
                                                                  • Railsにおけるマルチテナントの資料まとめ

                                                                    SaaSサービスをRailsで開発するにあたり、マルチテナントに関する情報収集をしたため本ページにまとめとして記録いたします。 DBのマルチテナント DBのマルチテナントにあたっては、セキュリティーの確保と保守性が方式の選定ポイントとなります。 ただし、SaaSサービスとして成功するほど保守のコストが増大するためプール型に移行していくようです。 ブリッジ型でマルチテナントを実現可能なGem「apartment」 データーベースのインスタンスは全テナントで共有するものの、テナントごとにスキーマ(テーブル、インデックス、ビュー、ストアドプロシージャ)を分ける方式です。 この実装にはGem「apartment」の使用が有名です。 SmartHR社も創業当初はセキュリティーを高めるためにapartmentを利用していたようです。 ただし、後述するように、サービスの特性上カラム数が多く契約社数の伸び

                                                                    • HTTP API Clientライブラリの自作を手助けするGemを公開しました - メドピア開発者ブログ

                                                                      こんにちは。サーバーサイドエンジニアの三村(@t_mimura39)です。 育休明け早々猛暑の熱気にやられ部屋に閉じこもっています。 今回はとあるGemを作成したので、そちらの紹介をさせていただきます。 目次 前フリ Gemの概要 カスタマイズ性について まとめ おまけ 前フリ Webアプリケーションを開発されている皆さん。 外部のHTTP APIを呼び出すような要件が発生したらどのように実装されますか? まずはHTTP Clientライブラリ(Gem)の選定からですよね。 無難なところでfaraday、最近?だとhttpなんかも選択肢にありますし、Gemを利用せずにRuby標準の Net::HTTP を直接使うなんてこともありますよね。 これらのいずれかを採用した後はどのような実装をされますか? お行儀が良い方は以下のような形で、専用のHTTP API Clientクラスを作成しその中に

                                                                        HTTP API Clientライブラリの自作を手助けするGemを公開しました - メドピア開発者ブログ
                                                                      • RubyKaigi 2024 のサイネージについて

                                                                        今月中旬に沖縄県那覇市で RubyKaigi 2024 を開催した。COVID-19 対応をしていた RubyKaigi Takeout 2020, RubyKaigi Takeout 2021, RubyKaigi 2022, RubyKaigi 2023 とは異なり、今回は配信を伴わないオフラインのみの開催だった。 わたしは Organizer の一人として Sponsor Relations 業などをしつつ、Wi-Fi の支度をしたり、サイネージの支度をしたりしていた。Wi-Fi の話はこれまでもいくつか書いている のでまた今度として、今回はサイネージの話をかきます。 RubyKaigi ではいくつかのサイネージの映像を用意して会場のあちこちに表示している。各セッション会場の横に添えて字幕やチャット, LT タイマーを流すサブスクリーン、お知らせやセッション案内を廊下に設置したモニタ

                                                                        • Rust on Rails!? Rust 版の Rails と呼ばれる "Loco" を試す!

                                                                          Rust 版 Rails "Loco" Loco は Rails にインスパイアされた Rust の比較的新しい Web フレームワークです。 2024 年 9 月 1 日時点でバージョン 0.8.0 がリリースされています。 Loco の特徴 タイトルにもある通り、Loco is Rust on Rails. [1] を謳っており、 Ruby on Rails の開発体験の良さを Rust でも再現しようとしています。 また、小さいサービスや個人開発に適したフルスタックフレームワークとして開発されているようです。 内部実装では、コントローラーやルーティングは Axum で実装されていたり、 ActiveRecord は SeaORM で実装されていたりするそうです。[2] Axum や SeaORM については、別の記事で触れているので良ければご覧ください! Rust | Axum と

                                                                            Rust on Rails!? Rust 版の Rails と呼ばれる "Loco" を試す!
                                                                          • Rails 7.1にバージョンアップしました - inSmartBank

                                                                            こんにちは、サーバーサイドエンジニアのmitaniです。先月、B/43を構成するシステムのうち、3つのRailsリポジトリの7.1バージョンアップが完了しました! 大きな躓きポイントはなかったのですが、参考までに手順やRails 7.1の内容を紹介しようと思います。 B/43のアーキテクチャ https://smartbank.co.jp/recruit/engineer-summary B/43は、上の図のように複数のサービスから構成されています。そのうちRailsで作られているサービスが3つあります(core-api / auth-api / aml-api)。バージョンアップする際には3つまとめて行う運用をとっているため、今回も3つバージョンアップしました。 各リポジトリは全てDocker化されています。各リポジトリのDockerfileは、共通してruby等をインストールしているベ

                                                                              Rails 7.1にバージョンアップしました - inSmartBank
                                                                            • 型を意識した Ruby on Rails 上のモデル - freee Developers Hub

                                                                              こんにちは。freee販売を大阪で開発しております、bucyou (ぶちょー) というものです。 この記事は、freee Developers Advent Calendar 2023 の10日目です。 例によって普段は Ruby on Rails で開発をしておりますが、ここでのアーキテクチャや、モデリングに関する話題は、先日 freee技術の本 に書かせていただきました。 また、先日は TechNight にて、freee販売での取り組みを紹介させていただきました。 この本や、イベントの中で伝えたかったメッセージとしては、以下のようなものでした。 実現したいビジネスを、より適切に表現するためにモデリングを重視していく。 ActiveRecord によって作られたモデルと、ビジネスを表現するためのモデルをしっかり分けていく。 しかし、本はみんなで書いているものだったのでページ数はある程度

                                                                                型を意識した Ruby on Rails 上のモデル - freee Developers Hub
                                                                              • N+1 問題を解決すりゃいいってもんでもないらしい

                                                                                こんにちは! ラブグラフ開発インターンの arawi です。 今日は Rails (ActiveRecord) を使っていると発生してしまいがちな N+1 問題についての記事です! TL;DR preload は SQL でデータを取得したあとインスタンス化するので、大量のレコードを prelaod するととても重くなる 想定する読者 N+1 問題を理解している Rails/ActiveRecord の経験がある 特に、preload を使ったことがある 発端 サービス上のとあるページの高速化を図るため、ページの SQL クエリを見直していました。 このページではカメラマン(Photographer)とカメラマンが1回の撮影で取った写真集(Album)、そして撮影された写真(Photograph)を表示していたのですが、アルバムや写真が preload や eager_load で事前読み

                                                                                  N+1 問題を解決すりゃいいってもんでもないらしい
                                                                                • Railsのアップグレードを成功させるための知見リスト(翻訳)|TechRacho by BPS株式会社

                                                                                  概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Smooth Ruby and Rails upgrades | Arkency Blog 原文公開日: 2024/07/01 原著者: Posts by Piotr Jurewicz 日本語タイトルは内容に即したものにしました。 参考: Rails アップグレードガイド - Railsガイド 最近、私たちは年季の入ったさまざまなプロジェクトでコンサルティングやアップデート作業を行っていました。どのプロジェクトもproductionで運用されていてビジネスを回していますが、長年アップグレードされないまま放置されていました。 こうしたプロジェクトでの経験を活かして、アップグレード作業をスムーズにするための知見を本記事でいくつか共有したいと思います。 🔗 アップグレード前にやるべき作業 🔗 依存関係をできるだけ減らしておく 作業

                                                                                    Railsのアップグレードを成功させるための知見リスト(翻訳)|TechRacho by BPS株式会社