バックエンド
皆さんこんにちは。 今更ながら、OpenAIのJSONモードを使い始めました。 その際公式ドキュメントを読みながらいろいろ試していたのですが、response_formatやらFunction Callingやらいろいろと出てきて困惑したので備忘録的に調べたことをまとめていきたいと…
弊社が提供しているSaaS「Re:lation」の顧客情報や契約内容を管理する社内システムをRails7から導入されたHotwireで構築し直した話を書きます。 なぜ移行しようと思ったか? 移行前の下準備 Hotwireを採用した理由 Hotwireへの移行は画面毎に 移行と合わせて…
こんにちは kk8511 です。 マテリアライズドビューを使ったのでその備忘録です。 scenic gem を導入している前提です。 github.com コマンドでファイルを生成する。 $ rails generate scenic:model materialized_view_samples --materialized invoke active_…
こんにちは。新卒エンジニアのhansprocsです! この度2024年8月に行われた大阪Ruby会議04に参加してきました。 とても面白いテーマが多かったですね...業務では触れることのできなかったものも多くRubyのポテンシャルはまだまだあると感じました。 大阪Ruby…
こんにちは、tsuka05です。putsデバッグしてますか? puts_debuggererはputsデバッグを少し便利にしてくれるライブラリです。 require 'pd' することによって、pd メソッドが使えるようになります。 # /Users/User/trivia_app.rb # line 1 require 'pd' # li…
階層構造のデータをSQLだけでツリー構造に整形出力するマニアックなテクニックについてご紹介します。
こんにちは、ryohei515です。 弊社が提供している Re:lation では LINE 等のチャットの CSV エクスポート機能があります。 そこで CSV::MalformedCSVError というエラーが発生することがありました。 結論、掲題の通りの原因だったのですが、エラー調査時に…
こんにちは、tsuka05です。 synvert-ruby はRubyのコードを構文解析して、自動的に書き換えを行なってくれるツールです。 様々なsnippetが用意されていて、決まりきったコード書き換えが簡単にできます。 synvert-ruby -l で、snippetを一覧することができま…
ウィンドウ関数っていいよね!データ分析には欠かせない!
完璧なソースコードなどといったものは存在しない、完璧な絶望が存在しないようにね。 こんにちは!ご無沙汰の hikaru-kimi です! みなさまは Ruby でどのように文字列置換を行っていますでしょうか? 最初に一致したもののみ置換する String#sub や、該当…
こんにちは、ryohei515です。 Ruby on Rails で、ActiveRecord::QueryMethods の select メソッドがありますが、使ってますか? 私はあまり使ってませんでした。 というのも、大抵のケースで pluck を使うほうがパフォーマンス的にメリットが大きいと思い、…
has_manyの関係性にあるデータを特定の条件で一意に絞り込みたいケースがあると思います。 今回はhas_oneを使って1対多のデータを1対1に関連付けする内容について書きます。 扱うデータ 本の貸出を題材に、著者(Author)、図書(Book)、貸出履歴(Rental)…
何階層もある組織図をSQL 1回で取得する方法をご紹介します。再帰クエリー便利すぎ。
こんにちは ryohei515 です。 ORDER BY で項目を並び替えられることは皆さんご存知かと思いますが、この並び替えの順序を指定したいこともあるかと思います。 例えば、検索のテキストボックスで部分一致検索を実現したいとき、完全一致したものを最初に持っ…
こんにちは!HaraShoです。 今回は Railsの url_for()が個人的に便利だった話について書きます。 url_for | Railsドキュメント どう便利だったかというと、任意のメソッドを共通でもつControllerが複数ある場合、Controllerを意識せずにURLを生成できる点が…
みなさんこんにちは!バックエンドが嫌になるとすぐにフロントエンドに逃げようとする hikaru-kimi です! 私はバックエンド・フロントエンド双方を業務で日常的に実装しているのですが、バックエンドとフロントエンドとで文法や記法がごちゃまぜになってし…
皆さんこんにちは!来年入社の新卒メンバーのメンターを任され日々奮闘中の hikaru-kimi です! 本日はちょっと毛色を変えて、PostgreSQL の出力結果を見やすくする方法について書きたいと思います! 弊社インゲージのサービス「Re:lation」では、DB に Post…
id:kizashi1122 です。お久しぶりです。 前提 弊社では Rails 製のサービスを運用しています。非同期ジョブの処理には Sidekiq を使っています。 そしてそのジョブを処理するワーカは AWS ECS で Fargate で動かしています。 ワーカは役割ごとにいくつかのEC…
こんにちは、masm11 です! みなさんは、Ruby で集合を表現する時に、何を使いますか? Set を使いますか? Set って内部的には Hash を使ってますよね。そう、Hash でも実現できます。 今回は、Set を Hash で置き換えた話をします。 Set とは Set とは、よ…
どうも @shutooike です! インゲージには "内部品質の担保/向上" をミッションとしたQAチーム *1 があります。 今回は Ruby や Rails のバージョンアップ対応で大事な Deprecation Warning を Slack に通知するようにした話です。 こんな感じで Slack に飛…
みなさんこんにちは! サーバとフロントと、いずれが本職か分からなくなってきた hikaru-kimi です! 最近 JavaScript 関連の記事が続きましたので、原点回帰ということで Rails についての記事を書くことにいたしました! 好評シリーズ「Rails のソースコー…
こんにちは @shutooike です。 GitHub Actions は実行時間の従量課金です。 コスト削減のため Pull Requet の差分ファイルのみ RuboCop を実行するようにしました。 完成版 on: - pull_request env: GH_TOKEN: ${{ github.token }} GH_REPO: ${{ github.repo…
どうも @shutooike です。 結論はタイトルのままです。 --force-exclusion とは Force excluding files specified in the configuration Exclude even if they are explicitly passed as arguments. Basic Usage :: RuboCop Docs 引数として明示的に渡された…
こんにちは!趣味と実益を兼ねてプログラマをしている hikaru-kimi です!! 普段、皆さんはどのようにプログラミング学習をされてますか? ご自身でアプリケーションを作成されたり、本を読んで知識を身に着けたり、人それぞれだと思います! かく言う私は…
はじめまして!サーバサイドエンジニアと見せかけてフロントエンドエンジニアと思いきや、やっぱりサーバサイドエンジニアの hikaru-kimi です! 技術ブログ初投稿です!どうぞお見知りおきください! 今回のテーマは、Ruby on Rails の ActiveRecord::Batch…
こんにちは!odaです! Rubyを使っていると、よく次のようなコードを見かけます。 foo ||= 10 これは「nilガード」と呼ばれるイディオムで、私自身は「fooにnilが入って欲しくないときは、こう書くと初期値が設定できるんだなー」ぐらいの認識で使っていまし…
数秘術の誕生数を題材にSQLで統計を取ってみます(後編)。各誕生数の割合を算出するのがゴールです。せっかくなので年代別に統計を出しましょう。
こんにちは!oda@エンジニア1年目です! 先日、Ruby2.7からRuby3.0での変更点について調べていました。 今回は、その中でもバージョンアップ時にエラーを引き起こす原因となる「キーワード引数と通常の引数の分離」をテーマにしたいと思います。 バージョン…
こんにちは!oda@エンジニア1年目です! 先日、FactoryBotでテストデータを作成する際にDBに保存されているデータを使いたかったのですが、方法がすぐにはわかりませんでした。 今回は、その方法について調べた内容を具体例とともにまとめました。 事前準備 …
数秘術の誕生数を題材にSQLで統計を取ってみます。各誕生数の割合を算出するのがゴールです。せっかくなので年代別に統計を出しましょう。