並び順

ブックマーク数

期間指定

  • から
  • まで

121 - 160 件 / 785件

新着順 人気順

railsの検索結果121 - 160 件 / 785件

  • Railsの設計に迷ったのでGitLabの設計ドキュメントを読んでみた | DevelopersIO

    Railsのプロジェクトがそこそこ大きくなり、ServiceやSerializerなどのカスタムレイヤーを追加してコードを細分化しているものの、レイヤーの役割やインターフェイスのルールが明確に決まっておらずふわふわとしていることを課題と感じていました。課題を解決するヒントを探すため、Railsの超巨大OSSプロジェクトであるGitLabの設計ドキュメントを読んでみました。 ガイドラインの必要性 まず初めにガイドラインの必要性が語られています。レイヤーの抽象化ができたとしても、それを正しく使えないと、あっという間にメンテナンスしにくいコードができてしまうということが説明されています。 例として、あるFinder(Finderはデータベースからデータを検索する抽象)の中で別のFinderを呼び出してはいけないということが挙げられています。もしそうしたなら、Finderにどんどんオプションが追加

      Railsの設計に迷ったのでGitLabの設計ドキュメントを読んでみた | DevelopersIO
    • RubyVM を PHP で実装する 〜Hello World を出力するまで〜

      PHP Conference 2023 English Title: How to implement RubyVM written in PHP - Until to output Hello World -

        RubyVM を PHP で実装する 〜Hello World を出力するまで〜
      • 150万レコードを持つ画像テーブルの移行 - spacelyのブログ

        株式会社スペースリー Railsエンジニアの大津です。 弊社サービスでは物件画像データの管理機能を提供しており、サーバーサイドのフレームワークにはRuby on Railsを、データベース管理にはMySQLを採用しております。これまで物件画像は用途ごとにテーブルを分けて管理していましたが、 アップロードした後に用途を変更できないため画像テーブルを1つに統合しました。 今回は統合する際に実施した旧テーブルから新テーブルへのレコード移行の手順をご紹介します。 統合前後の画像テーブルの構成 まず、統合前の物件画像の管理方法について説明します。 統合前は物件画像テーブルは部屋の写真を管理する内観画像テーブルと建物の写真を管理する外観画像テーブルの2つに分かれていました。 画像ファイルは各テーブルのimageカラムに格納され、Rails GemのCarrierWaveによりAWS S3バケットにアッ

          150万レコードを持つ画像テーブルの移行 - spacelyのブログ
        • 10年もののRailsアプリの持続可能性を求めて -なぜ初手でCoffeeScript廃止を選んだのか- - Money Forward Developers Blog

          シニアソフトウェアエンジニアのusadamasaです。 マネーフォワード クラウド会計とそれに関連するマイクロサービス群の開発運用を担当しています。 本記事では、クラウド会計という10年もののRailsアプリの持続可能性をいかにして確保していくかの取り組みをご紹介します。 TL;DR 私が所属するチームでは、クラウド会計の開発運用における課題を整理し、それぞれの課題に対して解決策を検討し、実行するための取り組みを進めています。 最初にクラウド会計の全体の構造を明らかにし、課題を可視化、組織の共通認識としました。 その上で銀の弾丸を求めるのではなく、有期かつ漸進的な改善のプロジェクトとして計画することが成果に繋がります。 クラウド会計の現状 クラウド会計はマネーフォワード クラウドの代表的なプロダクトの一つです。 2013年にリリースされてから10年、多くの機能追加や改善を重ね、現在では沢山

            10年もののRailsアプリの持続可能性を求めて -なぜ初手でCoffeeScript廃止を選んだのか- - Money Forward Developers Blog
          • Ruby のバージョンを 3.1 系から 3.2 系にアップデートしたら Ruby on Rails アプリの動きが変わったのを解決した話 - DIGGLE開発者ブログ

            私たちは Ruby on Rails の主要なマルチテナントライブラリ apartment を使ってサービスを提供しています。 Ruby のバージョンを 3.1 系から 3.2 系に上げたときに CSV ファイルを処理する部分でこのテナントの切り替えが意図通りに動作しませんでした。 この事象が興味深かったので共有します。 現在はこの事象に対応済で、私たちの環境は Ruby3.2 系で動作しています。 apartment ではマルチテナント対応部分をほとんど吸収してくれるので、アプリケーションのコードのほうにはあまりマルチテナント特有の処理が出てこず、個別処理のコードに集中できるメリットがあります。 事象が発生したコードは以下のような形式でした。 CSV.parse(filename, headers: true, header_converters: ->(header) { curren

              Ruby のバージョンを 3.1 系から 3.2 系にアップデートしたら Ruby on Rails アプリの動きが変わったのを解決した話 - DIGGLE開発者ブログ
            • 最終出社日でした - @watson1978 の日記

              今日はReproでの最終出社日。思い返せば 30 歳も過ぎてから Ruby とどう関わっていくかという人生だった。 MacRuby (2010年~) 暇つぶしに Mac OS X のアプリを作ってみようかと思い立った時に出会ったプロジェクトだった。 今のように Swift や clang というコンパイラもなく、 Objective-C 言語というとにかく [] を書きまくらないとならずどうにもなじめなかった。もともと趣味で Ruby はさわっていたのでそれでアプリが作れたら良いのにと思っていたところで、渡りに船的にさわり始めたのがきっかけだった。 私がさわり始めたころはちょっとしたコードを書いてもすぐにクラッシュするような感じで、ちまちま「こういうコードを書くとクラッシュするんだけど何でだろう?」とプロジェクトの issue に書き連ね、気がついたら「こういう風に直すと動くようになるんだ

                最終出社日でした - @watson1978 の日記
              • RailsプロダクトへのWebAuthn導入に向けての取り組み - 虎の穴開発室ブログ

                皆さんこんにちは、とらのあなラボのY.Fです。 先日、弊社エンジニアが開発で関わっているCreatiaで、以下のお知らせが投稿されました。 【新機能のご案内】#クリエイティア にて、『パスワードレスログイン』機能をリリースいたしました。 パスワードの代わりに指紋や顔認証、PINコードを使って、スムーズかつ安全にクリエイティアにログインできるようになりました! ▶詳細は下記記事をご参照くださいhttps://t.co/FzsVIAl7Sp— クリエイティア[Creatia]@ファンクラブ開設費無料! (@creatia_cc) 2023年6月8日 弊社のサービスは、とらのあな通販やサークルポータル除いて、ほぼRuby on Railsを利用しています。 speakerdeck.com 今回の記事では、Ruby on Rails + WebAuthnについて、調べたことなどをまとめてみたいと思

                  RailsプロダクトへのWebAuthn導入に向けての取り組み - 虎の穴開発室ブログ
                • 「エンジニアDB」というサービスを開発しました!【Next.js / Rails / AWS / Terraform / Docker / GitHub Actions】 - Qiita

                  3.インフラ(全体構成)について ここから技術的なことについて話していきます。 まず大前提として、プロジェクトの全体構成は、Happiness Chain の卒業課題の条件に基づいて決めれらていました。これらの条件には以下が含まれます Rails APIモード / Reactで完全SPAのポートフォリオを作る。 本番環境と開発環境にDockerを使う。 本番環境にはECS Fargateを使う。 GitHub Actionsを使ってAWSに自動デプロイする。 Terraformでインフラをコード化する。 なので、これに倣って実装しています。 アーキテクチャの全体像 フロントエンドはVercelにデプロイして、バックエンドはAWSのECSにデプロイしています。 ブランチ運用は、GitHub flowを採用しています。 プルリク時にテストが走り、mainブランチにマージされるとデプロイされる感

                    「エンジニアDB」というサービスを開発しました!【Next.js / Rails / AWS / Terraform / Docker / GitHub Actions】 - Qiita
                  • 単純すぎて流行らなかった「FORTH」、複雑すぎてうまくいかなかった「PL/I」 まつもとゆきひろ氏が過去から学んだ、プログラミング言語のあるべき姿

                    プログラミング言語「Ruby」の国内最大のビジネスカンファレンス「RubyWorld Conference」。Rubyの先進的な利用事例や最新の技術動向、開発者教育の状況などの情報を発信することで、「Rubyのエコシステム(生態系)」を知ることができる場として開催します。ここで登壇したのは、Rubyアソシエーション 理事長のまつもとゆきひろ氏。プログラミング言語の過去、歴史から学ぶ教訓について発表しました。全4回。2回目は、「単純さはいつも最高ではない」と「大きいことはいつもいいことではない」について。前回はこちら。 単純さはいつも最高ではない まつもとゆきひろ氏:「最も単純なプログラミング言語は何ですか?」という質問をするとですね……文法的にという意味なんですけども。 初期の言語として、Lisp、FORTH、APLなど、みんな1960年代ぐらいに作られた言語ですが、こういうものが挙げられ

                      単純すぎて流行らなかった「FORTH」、複雑すぎてうまくいかなかった「PL/I」 まつもとゆきひろ氏が過去から学んだ、プログラミング言語のあるべき姿
                    • RubyKaigiでJITコンパイラの書き方について発表した - k0kubun's blog

                      RubyKaigi 2023でRuby JIT Hacking Guideというタイトルで発表してきた。 speakerdeck.com JITコンパイラを書くチュートリアル 今回の発表ではJITコンパイラが書ける人間を増やすことをゴールにしていたが、 30分という短い発表枠内では雰囲気を知ってもらうことにフォーカスし、 実際に手を動かしたい人たちにはそれ用のチュートリアルを触ってもらう形を取った。 github.com JITコンパイラは実は初心者向き 独学でコンパイラの作り方を学ぶ人は、Cコンパイラなどを実装することが多いように思う。 C言語は実装対象として一見シンプルそうに見えて実は結構機能が多いので、C11をゴールに始めてもC89の範囲すら実装しきらないままエターなる人も多いのではないか。 そんな僕みたいな堕落した人間にお勧めなのがJITコンパイラ。 インタプリタと併走する特性上、

                        RubyKaigiでJITコンパイラの書き方について発表した - k0kubun's blog
                      • AWS Lambda でも Rails で Web 開発 - エムスリーテックブログ

                        本日はコンシューマチームのブログリレー2日目です。 エムスリーエンジニアリングG コンシューマチームの松原(@ma2ge)です。 今回は以前筆者が M3 Tech Talk で話した AWS Lambda での Web アプリ開発に Rails を使う内容について、 若干内容を変えつつ Tech Blog の方でも紹介をしたいと思います。 最近使っているキーボードの様子 現在のチームで担当している主要なアプリは Rails で書かれていて、ほとんどがコンテナ化され Amazon ECS(ECS) と Fargate を使って運用されています。 そんな中今年の初めに AWS Lambda(Lambda) に適したプロジェクトが話にあがりました。ただ Rails で Lambda しかも Web アプリとなるとあまり採用事例を耳にしません。 とはいえ使い慣れている Rails をそのまま生かし

                          AWS Lambda でも Rails で Web 開発 - エムスリーテックブログ
                        • [Ruby]うるう日の午前0時から9時までに起動したプロセスでのみ再現するサーバー障害

                          原因調査 エラーの発生箇所の特定 このエラーIncorrect datetime valueはデータベースのdatetime columnに対して不正な値を書き込もうとしたことが原因で発生しています。通常のINSERT statementを使って、過去の時刻を書き込むことはほとんどありませんが、MySQLなどに用意されているINSERT … ON DUPLICATE KEY UPDATE statementを使って複数の行を更新するときには、過去の時間を使ったクエリが生成されます。 例えば、複数の消耗品を所持しており、1つのクエリで複数の所持数を変更するときは、下記のようになります。 // PK(user_id, item_id) SELECT * FROM items WHERE user_id = 123; user_id | item_id | quantity | created_

                            [Ruby]うるう日の午前0時から9時までに起動したプロセスでのみ再現するサーバー障害
                          • あなたのキャリアに影響を与えた本は何ですか? 著名エンジニアの方々に聞いてみた【第二弾】 - Findy Engineer Lab

                            書籍には、特定領域の専門家たちが習得してきた知識のエッセンスが詰まっています。だからこそ「本を読むこと」は、ITエンジニアがスキルを向上させるうえで効果的な取り組みといえます。では、著名エンジニアたちはこれまでどのような書籍を読み、そこから何を学んできたのでしょうか。今回は8人の著名なエンジニアのキャリアに影響を与えた“珠玉の書籍”を、ご本人にまつわるエピソードとともに紹介してもらいました。 *…人名の50音順に掲載。回答者は敬称略。 岡野真也が紹介『こんにちはマイコン』 すがやみつる先生の『こんにちはマイコン』は、私が小学生だった約30年前に図書室で出会った書籍です。本書はコンピューターの基本的な知識を漫画による解説でわかりやすく伝えており、子どもたちにコンピューターの世界への入り口を提供しています。 出版された時期が1980年代なので、今読むと当時の時代を懐かしむことができるかもしれま

                              あなたのキャリアに影響を与えた本は何ですか? 著名エンジニアの方々に聞いてみた【第二弾】 - Findy Engineer Lab
                            • Ruby 3.3’s YJIT Runs Shopify’s Production Code 15% Faster

                              Ruby 3.2 YJIT is Battle-Tested Shopify deploys YJIT on business-critical services in production, such as Storefront Renderer, the software that powers all online storefronts on Shopify’s platform, and Shopify’s Monolith. As of the Ruby 3.2 release, YJIT sped up our Storefront Renderer by 10% on average. Storefront Renderer is a complex application. Your more reasonable-sized app might get better/w

                                Ruby 3.3’s YJIT Runs Shopify’s Production Code 15% Faster
                              • OSS開発者が自分の人生を犠牲にしなくていい。「フルタイムRubyコミッター」という生き方が与えてくれた恩恵 - Findy Engineer Lab

                                お店のデジタル化を支援するSTORES 株式会社(以下、STORES)は、Rubyコミッターの笹田耕一(@koichisasada)さんと遠藤侑介(@mametter)さんの両名を社員として採用しました。笹田さんと遠藤さんはフルタイムのRubyコミッターとして STORES に入社し、Rubyの機能改善や品質向上のための仕事に専念します。 どのような経緯で、両名は STORES への転職を決めたのでしょうか。そして、今後の具体的な活動内容とは。笹田さんと遠藤さんにお話を伺いました。 「6月は2人で一緒に、フルタイムRubyコミッターとして働く道を探ろう」 笹田さんが取り組む並列並行処理の改善 遠藤さんが取り組む静的型解析 世の中のニーズと本人のモチベーションが合致して生まれる、奇跡的なキャリア 「6月は2人で一緒に、フルタイムRubyコミッターとして働く道を探ろう」 ――転職活動どうもお疲

                                  OSS開発者が自分の人生を犠牲にしなくていい。「フルタイムRubyコミッター」という生き方が与えてくれた恩恵 - Findy Engineer Lab
                                • Open source hooliganism and the TypeScript meltdown

                                  September 7, 2023 Open source hooliganism and the TypeScript meltdown I've seen a lot of true believers argue for virtues of their favorite paradigms and methods over the decades working in software. And mostly, I look at people with a passionate preference and smile. Isn't it great that people care so much about their craft that they volunteer to extol the benefits of their favorite tools! Yes it

                                    Open source hooliganism and the TypeScript meltdown
                                  • SSMって20種類あんねん 〜Run Commandで定期バッチを起動する〜 - NRIネットコムBlog

                                    どうも。小林です。 みなさん、自動化してますか? 私の課では特定の顧客のシステムを多数運用しています。 かなり多くのシステムがあり、顧客側の担当者も異なるため、弊社側でも複数のチームを組んで手分けしてシステムを担当しています。 チームも顧客担当者も異なるとなれば、当然運用のやり方はシステムごとに変わってきます。その一方で統一できる部分は統一しておかないと全体の統制は効きづらくなってしまいます。 そこで「標準化チーム」を発足し、チーム間で共用するシステムのアカウント管理やその申請ルール、顧客報告やメンバーの勤怠管理といったものの標準化を進めています。 標準化の恩恵のひとつとして、「作業が単純化できて自動化しやすくなる」という点が挙げられます。 例えばアカウント発行の申請フォーマットを統一すると、「フォーマットにしたがって記載されたテキストをバッチに読み込ませてアカウントを自動的に発行する」と

                                      SSMって20種類あんねん 〜Run Commandで定期バッチを起動する〜 - NRIネットコム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
                                      • STORES、笹田耕一氏、遠藤侑介氏がフルタイムRubyコミッターとして入社

                                        お店のデジタル化を支援する STORES 株式会社(以下、STORES)は、Rubyコミッターの笹田耕一氏と遠藤侑介氏の両名を採用したことをお知らせいたします。笹田氏、遠藤氏にはフルタイムのRuby開発者として STORES に入社していただき、Rubyの品質向上、ユーザー体験や性能の改善に専念します。 CTO 藤村大介(左)、笹田耕一氏(中央)、遠藤侑介氏(右) ■ フルタイムRubyコミッター採用の背景 1993年に日本で生まれたプログラミング言語Rubyは、Rubyコミッターを中心として多くのエンジニアによって磨き上げられ、世界中で使われてきました。私たちもサービス開発言語の一つとしてRubyを選択し、様々なサービスを提供してきました。 STORES のミッションである”Just for Fun”という言葉は、Linuxの作者であるリーナス・トーバルズの著書※からインスパイアされたも

                                          STORES、笹田耕一氏、遠藤侑介氏がフルタイムRubyコミッターとして入社
                                        • 「目の前の“悪いこと”を結果“良いこと”にする」のは自分自身 プログラミング歴44年の先輩が贈る、知恵と教訓

                                          技育祭は「技術者を育てる」ことを目的としたエンジニアを目指す学生のための日本最大のオンラインカンファレンスです。「技育祭2023【春】」に登壇したのは、Ruby開発者のまつもとゆきひろ氏。プログラミングの体験の中で実感した、ことわざや格言について話しました。全4回。4回目は、「完璧を目指すよりまず完了させろ」と「人間万事塞翁が馬」について。 改善は後からできるから、とりあえず動くものを作ってみる まつもとゆきひろ氏(以下、まつもと):次にいきましょう。「Done is better than perfect」ですね。これは「完璧を目指すよりまず完了させろ」で、Facebook(Meta)ですね。 動かないソフトウェアとか、発表しただけで実際に手に入らないソースコードのことを「ベーパーウェア」、蒸気ウェアといいます。ソフトウェアは、動かないと試せないんですよね。実際に人間は、動かしてみないと

                                            「目の前の“悪いこと”を結果“良いこと”にする」のは自分自身 プログラミング歴44年の先輩が贈る、知恵と教訓
                                          • レガシーフロントエンドをNext.jsにリプレイス 「開発生産性の向上」を感じさせてくれた5つのこと

                                            「Developers Meetup 急成長ベンチャーが向き合う『開発生産性』」は、開発組織や事業フェーズの異なる株式会社Another works・株式会社SmartHR・株式会社スタメンの3社が、開発生産性について語り尽くすイベントです。ここで株式会社スタメンのかみお氏が登壇。フロントエンドのリプレイス前にあった課題と、「生産性が向上した」と感じさせてくれた5つのことについて紹介します。 かみお氏の自己紹介 かみお氏:「レガシーフロントエンドをリプレイスしたら開発生産性が向上しました」というタイトルでお話をします。よろしくお願いします。 まず自己紹介を簡単にさせてください。2021年1月にスタメンに入社して、主にフロントエンドを担当している「かみお」です。現在は、今回お話しするNext.jsへのリプレイスのプロジェクトに参加中です。今回初登壇なのでお手柔らかにお願いします。 今日は、リ

                                              レガシーフロントエンドをNext.jsにリプレイス 「開発生産性の向上」を感じさせてくれた5つのこと
                                            • 「人とAIの“模倣”は本質的に同じ」Rubyの父・まつもとゆきひろに聞く、技術の進化と“模倣”の関係 レバテックラボ(レバテックLAB)

                                              「人とAIの“模倣”は本質的に同じ」Rubyの父・まつもとゆきひろに聞く、技術の進化と“模倣”の関係 2024年5月14日 一般財団法人Rubyアソシエーション 理事長/Ruby開発者 まつもと ゆきひろ(松本行弘) プログラミング言語Rubyの生みの親。株式会社ネットワーク応用通信研究所フェロー、一般財団法人Rubyアソシエーション理事長、NPO団体軽量Rubyフォーラム理事長などを務める。島根県松江市名誉市民。 近年、大量のデータから文章や画像を生み出す生成AIに注目が集まる中、改めて「模倣」が果たす役割を問い直そうという動きが広がっているように見受けられます。実際に、人間はこれまで、既存の技術を「模倣」しながら新しい技術をつくりだし、その繰り返しによって発展を遂げてきました。 世界中のプログラマーから支持を集める「Ruby」も、他のプログラミング言語のさまざまな要素を採り入れて誕生し

                                                「人とAIの“模倣”は本質的に同じ」Rubyの父・まつもとゆきひろに聞く、技術の進化と“模倣”の関係 レバテックラボ(レバテックLAB)
                                              • Ruby Parser開発日誌 (14) - LR parser完全に理解した - かねこにっき

                                                こんにちはかねこです。私はCRuby(ruby/ruby)のコミッタをやっているのですが、最近はCRubyをメインのターゲットとしてLALR parser generator Lramaの開発をしています。 現役のLALR parser generator開発者として、日頃私以上にLR parserのことを考えている人はそうはいないでしょう。 この記事を読んでいる皆さんは構文解析、なかでも特にLR parserを理解するためにいろいろな教科書や記事を読んできたと思います。 一方でどんなに調べてもどこか腑に落ちない部分が残っているのではないでしょうか。 LR構文解析を勉強すると構文解析表に出会うとおもいます。 構文解析表を作る方法そのものは教科書に説明が載っており、その通りに手を動かせばこのような表を作ることはできるでしょう。 また出来上がった構文解析表をもとに実際に構文解析する手順も理解で

                                                  Ruby Parser開発日誌 (14) - LR parser完全に理解した - かねこにっき
                                                • ソフトウェアが“死”を迎えないためにできること Ruby30年を振り返って語る、発展におけるバランスの難しさ

                                                  Qiita Conferenceは、ソフトウェア開発者が集まり、最新の技術や最先端の挑戦・ソフトウェアの未来についての考えや知見を共有し、つながる場を創出する、「Qiita」が開催するオンライン技術カンファレンスです。ここでプログラミング言語Rubyの生みの親であるまつもとゆきひろ氏が登壇。最後に、ソフトウェアが死を迎えないために、それぞれの時期でできることについて話します。前回はこちらから。 なぜソフトウェアは死んでしまうのか まつもとゆきひろ氏(以下、まつもと):今度は横軸、時間軸です。ソフトウェアの寿命って意外と短いんですよね。開発のほうでいうと、毎年新しいWebアプリケーションフレームワークとか、なんとかツールみたいなものがどんどん出てくるんですけど、数年経つと何か違うものに取って代わられるみたいなことが頻繁に起きるんですよね。 物によるんですが、アプリケーションとかだと数年。2年

                                                    ソフトウェアが“死”を迎えないためにできること Ruby30年を振り返って語る、発展におけるバランスの難しさ
                                                  • ただひたすらパズルを解くのが好き。推理小説好きな少女がプログラマーになるまで【Rubyistめぐりvol.2 鳥井雪さん】 - STORES Product Blog

                                                    Rubyist Hotlinksにインスパイアされて始まったイベント『Rubyistめぐり』。第2回は鳥井雪さんをゲストに迎えて、お話を聞きました。こちらは前編です。 hey.connpass.com 推理小説に衝撃を受けた小学校時代 藤村:今日はお集まりいただきありがとうございます。STORES のCTO 藤村と申します。10年ちょっとくらいRubyを使って仕事をしています。Rubyistめぐりは、僕がプログラミングを始めた頃にめちゃくちゃ読んでたのがRubyist Hotlinksで、プログラマーの人はこういう人たちなんだ!と、(Rubyist Hotlinksに載っている人は)外れ値がほとんどなんですが、めちゃくちゃ勉強になったし、励みにもなったんですよね。これをなんか引き継げないものか、新たに話を聞きたい人もいるよなと思い、始めたのがRubyistめぐりです。第2回目のゲストは鳥井

                                                      ただひたすらパズルを解くのが好き。推理小説好きな少女がプログラマーになるまで【Rubyistめぐりvol.2 鳥井雪さん】 - STORES Product Blog
                                                    • 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
                                                      • Ruby on Railsはどのように生まれ、発展してきたのか[後編]。作者DHH氏やコアチームが語る動画「Ruby on Rails: The Documentary」が公開

                                                        Ruby on Railsはどのように生まれ、発展してきたのか[後編]。作者DHH氏やコアチームが語る動画「Ruby on Rails: The Documentary」が公開 最も有名なWebアプリケーションフレームワークの1つである「Ruby on Rails」は、もともと37signals社が社内向けに開発したフレームワークでした。 現在ではGitHubやShopifyなど大規模なWebサービスを支えるRuby on Railsも、登場初期には「スケールしない」という批判にさらされ、また競合となるフレームワークが登場するなどの経緯を経ています。 こうしたRuby on Railsのこれまでを、作者であるDavid Heinemeier Hansson(以下、DHH)氏や関係者が振り返る動画「Ruby on Rails: The Documentaryが、昨年(2023年)11月に公開

                                                          Ruby on Railsはどのように生まれ、発展してきたのか[後編]。作者DHH氏やコアチームが語る動画「Ruby on Rails: The Documentary」が公開
                                                        • Prism:エラートレラントな、まったく新しいRubyパーサ | gihyo.jp

                                                          Ruby 3.3リリース! 新機能解説 Prism⁠⁠:エラートレラントな⁠⁠、まったく新しいRubyパーサ Prismは、Ruby 3.3.0にバンドルされた新しいライブラリで、プログラミング言語Rubyの新しいパーサであるPrismパーサのバインディングです。Prismはエラートレラント、移植性、メンテナンス性、高速性、効率性を考慮して設計されています。この記事では、Prismの歴史、設計、API、そして今後の課題について取り上げます。 使用方法 Rubyバインディングを通してPrismパーサを使うにはrequire "prism"をして、Prismモジュールのparseメソッド、または他のparse_*系のメソッドを呼んでください。次に例を示します。 require "prism" Prism.parse("1 + 2") parseメソッドは、パース結果のオブジェクトを返します。こ

                                                            Prism:エラートレラントな、まったく新しいRubyパーサ | gihyo.jp
                                                          • 事業の試行錯誤を支える コードを捨てやすくして システムをシンプルに保つ設計と工夫

                                                            Kaigi on Rails 2023 での発表資料です。 https://kaigionrails.org/2023/talks/zuckey/

                                                              事業の試行錯誤を支える コードを捨てやすくして システムをシンプルに保つ設計と工夫
                                                            • 2023年にやったこと - k0kubun's blog

                                                              今年で30歳、社会人9年目、在米5年目になった。今年は 趣味でRJITを作り、仕事でYJITを超高速化した 初めて論文を国際会議に投稿し、採択された 子供とプリスクールに行き始めた という感じの一年だった。 仕事 大変ありがたいことに、自分が今一番興味のある仕事であるYJITの高速化に集中できた一年だった。 いろいろやったが、代表作は以下の三つかなと思う。 スタックオペランドのレジスタアロケータ 最適化未対応なメソッド呼び出しのフォールバック 例外ハンドラのコンパイル どれもベンチマークがかなり速くなった。 特に二つ目と三つ目は、自分で発案してかつ主に僕が重要性を訴えていた奴で、 それらで大きな成果が出たときはかなり達成感があった。 単独のPRでRailsベンチが7%速くなった時はこりゃ昇給するわと思ったが、実際めちゃくちゃ昇給した。 ベンチマークも速くしている一方、僕は本番アプリの最適化

                                                                2023年にやったこと - k0kubun's blog
                                                              • お財布に優しいCI改善小ネタ集 - メドピア開発者ブログ

                                                                こんにちは。サーバーサイドエンジニアの三村(@t_mimura)です。 主に保険薬局と患者さまを繋ぐ「かかりつけ薬局」化支援アプリ kakariのサーバーサイド開発(Ruby on Rails)を担当しています。 今回はRailsシステムのCI時間をコスト追加なしで半減した話をします。 目次 前提 対象プロジェクト CIの状況 改善結果 改善内容 前提知識: CIのキャッシュ機能 webpack buildのキャッシュを活用 RuboCopのキャッシュを活用 ESLintのキャッシュを活用 Jestのキャッシュを活用 RSpec Jobをテスト特性ごとに分割 CircleCIのリソースクラスと並列数の最適化 採用しなかった・見送った改善候補 HAML-Lint, Fasterer, Brakemanのキャッシュを活用 Stylelintのキャッシュを活用 bootsnapを活用 Jestの

                                                                  お財布に優しいCI改善小ネタ集 - メドピア開発者ブログ
                                                                • Exceptional Rails

                                                                  kaigi on rails 2023での発表内容です https://kaigionrails.org/2023/talks/willnet/

                                                                    Exceptional Rails
                                                                  • インポート機能を改善し、noteからのインポートの際に画像インポート等も行えるようにしました - はてなブログ開発ブログ

                                                                    はてなブログでは、インポート機能を改善し、noteのエクスポートデータの形式に合わせてインポートできるようにしました。今回変更されたのは、以下の4点です。 noteから画像を取得して、画像のインポートができるようにしました YouTubeとVimeoの動画へのリンクを動画プレーヤーとして変換するようにしました noteのルビ記法を、ルビ表示に関連するHTML要素に変換するようにしました noteからのインポートの場合、文字コードの選択をせずにインポートできるようにしました noteから画像を取得して、画像のインポートができるようにしました これまで、noteのエクスポートファイルをインポートしても、画像をインポートすることはできませんでした。今回の改善により、noteから画像を取得して画像のインポートができるようになりました。 なお、画像インポートが完了する前にnoteを退会した場合、画像

                                                                      インポート機能を改善し、noteからのインポートの際に画像インポート等も行えるようにしました - はてなブログ開発ブログ
                                                                    • Ruby: メモ化のイディオムが現代のRubyパフォーマンスに与える影響(翻訳)|TechRacho by BPS株式会社

                                                                      概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Performance impact of the memoization idiom on modern Ruby | Rails at Scale 原文公開日: 2024/02/14 原著者: Jean Boussier(byroot) Ruby 3.2における主要な内部変更のひとつに、オブジェクトシェイプ(object shape)の導入があります。 本記事では、オブジェクトシェイプが導入された理由、仕組み、制限事項について解説します。 🔗 オブジェクトのインスタンス変数はどのように保存されるのか Rubyは非常に動的な言語なので、インスタンス変数へのアクセスという単純な操作でも多くの作業を伴います。 Rubyオブジェクトは、ほとんどの場合インスタンス変数を「参照の配列」に保存します。 たとえば、インスタンス変数を2個持つ

                                                                        Ruby: メモ化のイディオムが現代のRubyパフォーマンスに与える影響(翻訳)|TechRacho by BPS株式会社
                                                                      • Rails design patterns

                                                                        A design pattern is a repeatable solution to solve common problems in a software design. When building apps with the Ruby on Rails framework, you will often face such issues, especially when working on big legacy applications where the architecture does not follow good software design principles. This article is a high-level overview of design patterns that are commonly used in Ruby on Rails appli

                                                                          Rails design patterns
                                                                        • ウォンテッドリーのバックエンド領域を支える言語の歴史を読み解く | Wantedly Engineer Blog

                                                                          こんにちは、ウォンテッドリー株式会社でインフラエンジニアをやっている @fohte です。 筆者はウォンテッドリーに join して 1 年が経過しようとしており、ようやくウォンテッドリーが採用しているアーキテクチャについて全貌が掴めてきました。そこで改めてウォンテッドリーの技術スタックを考え直してみると、ウォンテッドリーのバックエンド領域において利用している言語はなぜ採用されているのかが気になりました。今回はそれを読み解くべく、過去から現在までに利用されている言語の比率から、その背景と歴史を追っていきます。 ウォンテッドリーで採用している言語とアーキテクチャの歴史まずはじめに、ウォンテッドリーでは下図の技術およびアーキテクチャを選定しています。 (参考: 技術とアーキテクチャ - Wantedly Engineering Handbook) 本記事では、この図での "The System

                                                                            ウォンテッドリーのバックエンド領域を支える言語の歴史を読み解く | Wantedly Engineer Blog
                                                                          • 文書配付機能でPDFレンダリングのライブラリを置き換えた話 - SmartHR Tech Blog

                                                                            こんにちは!SmartHRで文書配付機能の開発を担当している、aanzaiです。 2022年末から2023年2月にかけて、文書配付機能で使用しているPDFのレンダリングライブラリの置き換えを行ったため、具体的にどのように移行したかをご紹介します。 文書配付機能の紹介 文書配付機能(旧:雇用契約)は、SmartHRの最初のオプション機能として開発された機能で、事前に作成した書類テンプレートをもとに、SmartHRに保存された従業員情報を差し込んで書類PDFを作成し、従業員に配付したり、契約書として合意を取ったりすることができる機能です。 書類テンプレートのレイアウトは、ユーザーがWYSIWYGエディタで作成したものがHTMLとして保存されています。書類を配付する際は、このレイアウトHTMLに従業員情報を差し込み、PDFに変換します。 PDFレンダリングライブラリ移行の理由 文書配付機能では、

                                                                              文書配付機能でPDFレンダリングのライブラリを置き換えた話 - SmartHR Tech Blog
                                                                            • Railsの設定をアップグレードしていく技術 - おもしろwebサービス開発日記

                                                                              このエントリは SmartHR Advent Calendar 2023の21日目の記事です。 Railsのバージョンを上げる作業は、単に新しいバージョンのgemをインストールするだけでは終わりません。Railsの新しいバージョンに沿った設定項目を確認し、適宜適用していく必要があります。もちろん必ずしもすべての設定を最新にしなければならないわけではありませんが、Railsの新しい設定というのは基本的にそうすることにメリットがあるから作られているわけで、特別な理由がなければ最新の状態にしておきたいものです。 みなさんのRailsアプリケーションのconfig/application.rb には次のような設定があるはずです。 config.load_defaults 6.1 このコードサンプルは引数が6.1なので、Rails6.1デフォルトの設定を適用していることを示しています。これを7.0に

                                                                                Railsの設定をアップグレードしていく技術 - おもしろwebサービス開発日記
                                                                              • “フルフレックス×フルリモート”でも品質を高めるために Notionを活用したプロジェクト立上げの仕組み化

                                                                                「シニアPMに聞く!3000件の新規事業立上げ経験から学ぶ、プロジェクトの始め方。」は開発プロジェクトの中でも特に「立上げ」「始まり」「キックオフ」に絞ったLTおよび相談会を行うイベントです。ここで株式会社Lboseの小笠原氏が登壇。プロジェクトのスタート時に重要視している3つのことと、この3つを踏まえたNotionの活用について話します。 小笠原氏の自己紹介 小笠原智氏:それではよろしくお願いします。私からは「フルリモート×非同期でのプロジェクト立上げの仕組み化」について話したいと思います。 まずは自己紹介からスタートしていきたいと思います。(スライドを示して)私、小笠原は、経歴はWebデザイナーとしてガラケーサイトのデザインやコーディング、あとはWebサイトやアプリのグラフィックデザイン、WordPressの構築など、今と違ってデザイナーとエンジニアの境がちょっと曖昧なキャリアからスタ

                                                                                  “フルフレックス×フルリモート”でも品質を高めるために Notionを活用したプロジェクト立上げの仕組み化
                                                                                • M:Nスレッドによる軽量な並行処理への挑戦 | gihyo.jp

                                                                                  STORES株式会社でRubyインタプリタ開発をしている笹田です。お正月に新年早々おでんを腐らせてしまったので、今年は作ったらさっさと食べることを目標にしたいと思います。 この記事では、主に私が開発している、Ruby 3.3で導入されたM:Nスレッドについて紹介します。 M:Nスレッドはスレッドの性能向上のために導入されました。M個(大きな数)のRubyスレッドをN個(十分小さい数)のネイティブスレッドだけで実行するというモデルで、スレッド管理のオーバヘッドを抑えられる方法として知られており、ほかにもGo言語などで利用されています。今後、大量のネットワーク接続を処理するといったことをRubyで記述することを検討したい場面が出てくるしれません。そのようなときにRubyでスイスイとプログラムが書ければいいなと思っており、その一貫です。最終的には、Ractorを用いた軽量な並列・並行アプリケーシ

                                                                                    M:Nスレッドによる軽量な並行処理への挑戦 | gihyo.jp