RubyによるWebアプリケーションフレームワーク
コアとなる五つのライブラリと一つのユーティリティライブラリ(railities)から構成されている。
この記事は、 PLEX Advent Calendar 2024の24日目の記事です。 はじめに 2024年に株式会社プレックスにエンジニアとして新卒入社した佐藤祐飛(@yuhi_junior)と申します。 業務でGem Punditを利用する機会があり、その内部実装を読んで学びが多くあったため本ブログではそちらを共有したいと思います。 Punditとは PunditはRuby on Railsのための認可ライブラリで、Policy Objectデザインパターンを簡単に実装することができます。 Punditの使用例 class ApplicationController < ActionCon…
この記事は、 Techouse Advent Calendar 2024 22日目の記事です。 昨日は Niranabe さんによる 「ドキュメントでなくコードで語れ ~RuboCopのカスタムルールで規約を記述する~」でした。 まえがき はじめまして、 codingalone です。 Techouse ではクラウドハウス労務チームで開発を担当しています。 Techouse では AWS をフル活用してサービスを提供していますが、利用しているサービスの1つに Amazon Neptune があります。 Amazon Neptune 、ご存知でしょうか? Amazon Neptune は高速かつ…
この記事は、Techouse Advent Calendar 2024 21日目です。 昨日は nodematerial さんによる 「テスト技法勉強会」で、学生エンジニアが大幅にレベルアップした件 でした。 こんにちは、株式会社Techouseでバックエンドエンジニアをしている本澤(Niranabe)と申します。私は普段クラウドハウス労務の開発に携わっています。今回はクラウドハウス労務のメンテナンス中に起きた事件と、今後同じ事件が起きないようにするために講じた対策について紹介します。 事件 ある日私たちはデータベースのメンテナンスを行いました。来たる新機能のために必要な新規テーブルを追加した…
これは Livesense Advent Calendar 2024 DAY 21 の記事です。 転職会議の池田です。MySQL を 8.0.19 以上のバージョンにアップグレードした際に時間差で発生した Rails アプリケーションの不具合とその対応について書きます。 TL;DR なにがおきたか MySQL 8.0.19 と ActiveRecord の Boolean キャスト 実際に問題となるタイミング どのように対応したか 再発防止のために おわりに TL;DR MySQL 8.0.19 から 整数型の表示幅が表示されなくなることで、 ActiveRecord が tinyint(1)…
データベースのJSON型をRailsらしく扱う方法の提案 この記事はSTORES Advent Calendar 2024の13日目の記事です。 はじめに STORES 予約のエンジニアの@ucksです。 なぜかブログはDBネタばかり書いていますが、今回もDBネタになります。 多くのRailsアプリケーションで利用されているActive RecordはRDB用のORMです。 RDBは正規化したテーブル設計を行うことが基本ですが、昨今のRDBでは非正規化データを扱えるJSON型のサポートも増えてきており、Active Recordでもサポートされています。 JSON型を活用する事で、正規化の必要…
はじめに こんにちは、Techouseにインターンとして入社し、クラウドハウス労務にてエンジニアをしている谷本宙矢です。 弊社では、数万件におよぶ自動テストをGitHub Actionsを利用してランダム実行しています。並列実行されるテストにおいて、特定の順序で実行されると一部のテストが失敗するケースがありました。私がその原因を調査し、修正に取り組むことになったのですが、この失敗は、STI(Single Table Inheritance)を使用したデータベース設計と関連していることがわかりました。本記事では、その問題の詳細と解決に至るまでのプロセスを紹介します。 テストケースの順序依存性につ…
[Rails] Gem bulletのアラート「Need Counter Cache」の対処法 初めに こんにちは。ユニファのバックエンドエンジニア、シュウです。 N+1問題を検出するために、多くのRailsアプリケーションでgem bulletが導入されていると思います。弊社のRailsアプリケーションでもgem bulletを利用しています。そんな中、ある日bulletから見慣れない「Need Counter Cache」のアラートに遭遇しました。 今回は最小限の修正でこの「Need Counter Cache」を解消し、効率的にクエリを発行できるようにした方法を紹介したいと思います。 結…
はじめまして、広告事業本部でアプリケーションエンジニアをしている24新卒の龍溪です。 入社してから早くも9か月が経ち、時の流れの速さを痛感しています。 本記事では、Ruby on Railsで使われていないコードを発見するためにCoverbandというGemを入れた話について紹介しようと思います。 背景 Coverband とは Coverband の設定 Tips Web UI に認証をかける 計測結果の収集頻度 計測対象のディレクトリの追加 Coverband と Amazon ElastiCache 実際に運用してみて おわりに 背景 私たちのチームでは、Ruby on Railsを使っ…
はじめに フィヨルドブートキャンプでプログラミングの学習をしています、もとひろ(@motohiromm)と申します。 献立の相談と献立表の共有ができるアプリ「ごはんサミット」をリリースしました! 本記事では「ごはんサミット」の使い方や開発の振り返りなどを書きたいと思います。 はじめに ごはんサミットについて 概要 作った経緯 使い方 家族を招待する 献立会議をする 献立を登録する 会議で提案した料理をそのまま献立表に登録する 会議をせずに直接献立表に登録する 献立表を見る 技術スタック 工夫したところ サービスに関して 献立の登録方法を2パターン設けた 会議室をリアルタイム通信にした ユーザー…
こちらは Timee Product Advent Calendar 2024 の9日目の記事です。前日は平岡の スクラムマスターが常に意識するべき重要なこと でした。 タイミーでテックリードをしている @euglena1215 です。 最近、Majestic Monolith と Citadel というアーキテクチャ・考え方を知ったのですが、あまり国内では認知度が高くないように感じたので紹介してみたいと思います。 自分が見つけた日本語での記事は モノリス亜種のアーキテクチャ(Modular MonolithとかMajestic MonolithとかCitadel Architectureとか…
●取り組んだ課題一覧Progate 学習レッスン Ruby on Rails5 IX 完了 ●わかったこと投稿とユーザーを紐づける方法投稿詳細ページに投稿ユーザーの画像と名前を表示する方法モデル内にインスタンスメソッドを定義する方法ユーザー詳細ページにそのユーザーの投稿全てを表示する方法whereメソッドについて投稿者にのみその投稿の編集・削除の制限をかける方法
2024年総括とシステム思考 年の瀬ご多端の折、皆様におかれましては本年も大変お世話になりました。プロダクト開発部部長の塚本 @hihatsです。 本記事はクラウドワークスグループAdvent Calendar 2024 シリーズ4の25日目の記事です。 昨年に引き続き、プロダクト開発部として今年取り組んできたことと、全社におけるプロダクト開発の動きから整理していきますが、 3ヶ月ほど前に書いた自社の開発組織の強みを定義するという記事の中でも軽く触れたシステム思考の話を中心軸に置きつつ進めていきます。 *1 engineer.crowdworks.jp また今年はアドベントカレンダーの数も昨年…
プロと読み解くRuby 3.4 NEWS テクノロジー部門技術基盤グループの笹田(ko1)と遠藤(mame)です。Ruby (MRI: Matz Ruby Implementation、いわゆる ruby コマンド) の開発をしています。お金をもらって Ruby を開発しているのでプロの Ruby コミッタです。 本日 12/25 に、恒例のクリスマスリリースとして、Ruby 3.4.0 がリリースされました(Ruby 3.4.0 リリース )。今年も STORES Product Blog にて Ruby 3.4 の NEWS.md ファイルの解説をします(ちなみに、STORES Adven…
こんにちは、Androidアプリエンジニアの奥田です。この記事では当社のAndroidアプリエンジニアの業務内容や、目指していること、メンバーの雰囲気や、研修内容などを紹介します。 業務内容 当社ではAndroid端末向けのプロダクトとして、CLOMO MDM Agentというデバイス管理アプリと、CLOMO SECURED APPs という5つのビジネスアプリを提供しています。主力製品であるCLOMOのAndroid端末向け機能を担う CLOMO MDM Agent は、デバイス管理権限とAndroid Enterpriseの機能を使って、デバイスとアプリの制御を行う特徴的なアプリです。 当…
●Progate 道場レッスン Ruby on Rails5 IIIログイン機能を仕上げよう11. ヘッダーにユーザー名を表示しよう12. ログインしていない場合のアクセス制限13. ログインしている場合のアクセス制限14. 自分の情報のみ編集できるようにしよう完了
目次 目次 はじめに RBS について rbs-inline と Steep について RBS に出会ってからの Ruby への向き合い方 単一の型を返す意識がついた メソッドの戻り値の型だけを見て実装する機会が増えた Ruby で型を書くのも良いなと思った はじめに こちらは Timee Product Advent Calendar 2024 の24日目の記事です。 前日は @beryu の iOSの職能チームが存在しない組織で、WWDCハッカソンを企画・開催しました でした。 こんにちは。バックエンドエンジニアの @dak2 です。 タイミーではバックエンドの Ruby on Rails…
この記事はHappiness Chain Advent Calender 2024 23日目の記事です。 https://adventar.org/calendars/10341 前回の記事 https://tohru-f.hatenablog.com/entry/2023/12/22/202945 1、入校してから1年半でどう変わったか? 前回の振り返りから1年が経過しています。1年前はRubyのチェリー本を読み進めていました。その後の学習内容ではRuby on Railsを使ったアウトプット課題を2個クリアすることでCRUD操作から始まり、モデルのアソシエーション、Herokuへのデプロイ…
はじめに Shibuya.rbとは なぜ発表しようと思ったか 発表準備 テーマ決め 発表内容あらすじ スライド作り GitHub に再現用レポジトリを作成 発表当日 会場へ 発表 発表後 振り返りと今後の展望 We're hiring! はじめに こんにちは、DIGGLEでWebエンジニアをしている fujita です。 気がつけば2024年も残すところあとわずかとなりました。私は2月にDIGGLEに入社し、非常に充実した、あっという間の1年を過ごしました。今年を振り返り、特に思い出に残っている8月のShibuya.rbで行ったLTの発表について記事にしたいと思います。「うまく発表を行うには」…
STORES でバックエンドエンジニアをしている片桐です。 みなさんはGraphQLの@oneOfというディレクティブをご存知でしょうか? このディレクティブは、GraphQLの標準仕様においてBuilt-in Directivesへの追加が検討されている新しいディレクティブです。 RFC: https://github.com/graphql/graphql-spec/pull/825 今回 STORES のプロダクトで実際に導入してみたので、このディレクティブの具体的な使用例と使用してみて気づいたことを紹介します。 @oneOf ディレクティブとは? @oneOf は input に対して…
この記事は、Fediverse (2) Advent Calendar 2024の23日目の記事です。 はじめに 皆さんこんにちは。 @sublimer です。 あすてろいどんという汎用のMastodonサーバーの鯖缶をしています。 本業は、インフラからプログラミングまでなんでもやるソフトウェアエンジニアなので、技術の素振りのためにサーバー運用をしています。 今年の2月ごろにFediverseで発生した某事案についていい感じの仕組みでいい感じに対処できたので、鯖缶をやると勉強になることが多いなーと感じています。 今回は、そんなサーバー運用の際に役立つ機能であるMastodonのOpenTele…
●Ruby on Rails5 道場レッスン IIIログイン・ログアウト機能を作ろう8. ユーザーが存在しない場合の処理9. ユーザー登録時にログイン状態にしよう10. ログアウト機能を作ろう完了 ●気付いたこと・link_toでpostメソッドにルーティングしたいときは引数に {method: "post"} をつけることを忘れないこと!<%= link_to("ログアウト", "/logout", {method: "post"})
はじめに CRM の開発・運用状況 「システムリプレイスにおける複数DBアクセスの課題と解決策」の振り返り 既存システムのアーキテクチャと技術スタック アーキテクチャ 技術スタックの比較 データの整合性における課題と対策 データ不整合を未然に防ぐための対策 データ不整合が発生した場合の対策 トランザクション管理や排他制御における課題と対策 トランザクション管理における課題と対策 排他制御における課題と対策 最後に はじめに こちらはバイセルテクノロジーズ Advent Calendar 2024の23日目の記事です。 昨日は千棒さんによる2024年情シスの業務改善とセキュリティ強化の成果を振り…
株式会社Voicyでフルスタックエンジニアをしています!うおくんです! 今回はVoicyアドベントカレンダー22日目ということで個人的開発しやすさ言語ランキングを発表しようと思います! 自分自身Voicyだけではなく他の会社でも様々な言語を用いて開発しており、使用した言語は多岐に渡ります。そんな中で個人的に開発のしやすかった言語またはフレームワークや開発領域を今回は発表していきます! ※あくまで個人的見解です Vue.js(TypeScript) ★☆☆☆☆ 自分が最初に着手したという理由もありますが、1つ目はVue.jsです。自分が実務で実装をしていた時は2系だったので3系に上がり現在は少し…