Developers Summit 2025(2025.02.13-14) - 翔泳社イベント 1日目 13-E-9 あなたのプロダクトが見たい!個人開発リレーセッション で話したときの資料です。 https://event.shoeisha.jp/devsumi/20250213/session/5551

Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 今やっているバイトでRails APIを作成しています。 APIを作成する際に、以下のような問題点が出てきました。 APIのdocumentがないとフロントエンドの開発者が開発しづらい documentを書くのにopenapiを採用するが、文法を覚えるのに一苦労するし、見づらいので書き忘れが生じる。 API responseの構造に開発者間で違いが出てしまう。 実際のAPIとdocumentの挙動が違うのに修正を忘れてしまう 結論 結論から言うと、これらの問題を解決するために以下のようにしました。 APIのPRを出す時にopenapiで
概要 GraphQLでクエリをしたときにそのクエリの複雑度がどの程度だったのかを把握したくなることがあります。 この問題を解決する手段として複雑度をHTTPレスポンスヘッダで応答できるようにしてみます。 このAPIデザインがどの程度一般的なのかはちゃんとわかっていないのですが、Contentful の GraphQL Content API にはレスポンスヘッダで複雑度を応答するデザインが含まれていましたので特別に異常なことではないでしょう。 コード 複雑度の計算をするアナライザとして GraphQL::Analysis::AST::QueryComplexity が標準で提供されていますので、これを継承してアナライザーを実装します。 OverseQueryComplexityComplexityAnalyzer をクラスを作り、#result メソッドをオーバーライドし 、ここではGra
Ruby on Railsを使った開発をしていると「システムのER図が欲しい」といったお願いされることがあります。 Railsを使っているのであれば、rails-erd というRubyGemを使うことで簡単にER図を出力できます。 rails-erdで出力されるER図はEntityもAttributeも全て英語です。 提出先がエンジニアである場合や、普段からモデル名を使ったコミュニケーションをしている場合であればこのままでもなんとかなるかもしれません。 一方、相手がビジネスサイドのメンバーである場合や、普段はモデルを日本語変換してコミュニケーションしている相手の場合はこのER図をそのまま出しても困惑されてしまいます。 そこで、今回はなんとかしてEntity・Attributeを日本語化できないか検討しました。結論とそこに至った過程をメモしておきます。 結論 結論としては、rails-erd
あるWebアプリケーションの Ruby on Rails のバージョンを7.1.3に上げました。 Ruby のバージョンを3.3.0に上げました。 ついでにYJITを有効にしました。 Enable YJIT · pubannotation/pubannotation@f9284cd 次のファイルを追加しました。 運用中に何かの理由で無効にしたくなったら、コメントアウトするかファイルごと削除します。 この方法は、最新のRuby on Railsに取り込まれているそのままです。 YJITとは Rubyを高速に実行する機能です。Ruby 3.3 から Ruby on Rails に適用するのも実用的になったそうです。次の記事で詳しく説明されています。 Ruby 3.3 YJITのメモリ管理とRJIT 〜すべてが新しくなった2つのJITを使いこなす | gihyo.jp RubyはJust-In-
Rails, RSpec でブラウザテストというと System Spec, Feature Spec などが挙げられます。バックエンド、フロンテエンド両方を End-to-End でテストするには便利ですが、複雑さ故に、たまに落ちるテストになってしまったり、落ちたときのデバッグが大変という難しさがあります。 Qiita でも主要な機能 (エディタ、記事ページなど) をテストするのに使っているのですが、CI で時折よくわからない理由で落ち、 更に何故落ちたかの再現や調査が難しい というのが結構つらいポイントでした 今回 Qiita で RSpec で利用するブラウザ自動化ツールを Selenium から Playwright を使うように置き換えたら、かなりデバッグが行いやすくなりました 移行自体も Cabybara 用の Driver を使うことで、大きく書き換えることなく移行することが
こんにちは。フリーランスで、主にRailsを使った開発の仕事をしている ymstshinichiro と申します。 直近約3年GraphQLの現場で仕事をしつつ、今年4月からはOpenAPIの現場でも並行で稼働しているのですが、両方を使ってみて個人的にGraphQLのここが良いなと思ったポイントをまとめてみました。 おことわり: 「これからGraphQLを使っていくべきか迷っている」という方へ向けた記事になったので、既にGraphQLをガンガン使いこなしている人には当たり前のことしか書いてないかもです あくまで僕の 好み・主観・経験 に基づく記事なので、その辺考慮の上で読んでいただけると助かります 記事中のサンプルコードはRailsで書かれています GraphQLを使うと自然にCQSに近づく 先日、YOUTRUSTさんが主催する実際のproductionコードを見ながら会話する勉強会 に参
cancancanを使った際、テストに学びがあったので投稿します。 前提:cancancanとは 権限による制御が簡単にできるgemです。 cancancan Rails|CanCanCanの使い方解説 ↓私も1つ記事を書きました。 cancancanでモデル名に紐づかない制御をする方法 cancancanのテスト requestスペックなどで特定の権限が各アクションを実行できるかどうかをテストする方法もあると思いますが、今回はcancancanが用意しているmatcherを使ってテストする方法を紹介します。 参考 https://github.com/CanCanCommunity/cancancan/blob/develop/docs/testing.md require "cancan/matchers" describe "User" do describe "abilities"
はじめに 先日、LTイベント「Qiita Night~Rails~」にて登壇させていただきました。 そこで、Railsで大規模Webアプリケーションを 開発するときに知っておきたいテクニックを Qiita の Rails を例にいくつか紹介しました。発表資料はこちらです。 アーカイブ動画もあります。 これまで大規模 Rails で役立つテクニックをそれぞれ記事として紹介しました。 この記事は、LT で話した残りの部分、「Qiita が Rails のコード品質を担保するためにやっていること」を紹介します。 Qiita が Rails のコード品質を担保するためにやっていること それぞれ簡単に紹介していきます! RuboCop Qiita の Rails では RuboCop を導入しています。RuboCop は Ruby のコードを静的解析し、よくない書き方があると指摘してくれます。 実行
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 今回はRSpecによるRailsテスト入門という本を読んだので、そちらの感想を書いていこうと思います! 今回読んだ本はこちらです。 良かったところ RailsやRubyの書籍はたくさん存在していますが、自動テスト(RSpec)についての日本語の書籍はなかなか見たことがありませんでした。よくRailsの書籍の最後の方に少しだけのっていたり、動画の中で少し触れていたりというものはありますが、ガッツリテストの本って見かけないのでテストの学習をしたい方にはとても良いと思いました。 悪かったところ テストって結構簡単に書けると思われてい
はじめに FactoryBotでテストデータを作成するに当たってtraitを押さえるのは必須かなと思います。 RSpecをこれから始める方向けにこの記事を書きます。 traitを使ってみる 一例としてTaskのファクトリを作成する場面を想定してtraitを使ってみます。 # spec/factories/tasks.rb FactoryBot.define do factory :task do title { 'Task' } status { :todo } from = Date.parse("2019/08/01") to = Date.parse("2019/12/31") deadline { Random.rand(from..to) } trait :done do status { :done } completion_date { Time.current.yester
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 対象者 Cypressを使ったテストを書いたことがある人 RailsのRSpecを使ったテストを書いたことがある人 手動テスト辛い 私が担当している案件の中には、1年以上運用しているwebサービスがあります。 フロントエンド・バックエンド共に存在します。 課題は色々あるのですが、一番課題に感じているのがテストです。 そのサービスの前回の機能追加リリース時は、画面操作系のテストは手動で行いました。 そうなってしまった理由は大きく分けて以下3点です。 画面操作系の自動テストを書く時間がない 手動テストした方が早いという考えがある 今の画面操
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに Factorybotのコード内に transient という定義を見かけました。 初めて見かけた属性だったので調べてみました。 transient属性とは? factory_bot gemのGETTING_STARTEDドキュメントには以下のように定義されていた。 Transient attributes are attributes only available within the factory definition, and not set on the object being built. This allows
Rails7を使った管理画面を業務で、2件ほど進めているのですが、 Rails7から搭載されたHotwireによるSPAっぽい開発が良すぎたので紹介します。 特に今回はRansack、Kaminariをつかった検索一覧画面の実装を紹介します。 これを例えば、Rails API + Vue.jsとかでやろうものなら、なかなか大変ですね。(っていうかめんどくないのでやらない) 事前準備 今回使うプロジェクトはこちら 情報 ruby2.7 Rails7.0 css: tailwind css 使用するデータ シンプルに食べ物を管理するアプリを作りたいと思います # 食べ物をカテゴライズする種別データ create_table :kinds do |t| t.string :name t.timestamps end # 食べ物データ create_table :foods do |t| t.st
@z_ohnamiです。こんにちは。 railsの7から導入されたHotwireを使って、JavaScriptをできる限り書かずに正規表現チェッカーを作ってみました。 正規表現チェッカーといえば、Rublarというサイトが以前から存在していて私は日頃からお世話になっていたのですが、見た目はそちらを参考にして作りました。 名前は「RegExpress」にしました。 https://tools.bigwave.biz/regular_expressions 以下のように、正規表現のパターンとテスト用の文字列を入力した時点で結果が返ってきます。 Hotwireを使わずにrailsで作った場合はformのsubmitをしてもらわないと結果を返すことができません。 また、テキストエリアをポンポンと追加していますが、これもRailsのみで実現しています。 こうした動的かつ部分的な画面の変更自体は特に珍
Rails7 でデフォルトとなったHotwireを使って、検索機能を作ってみようと思います。 今回の完成形はこんな感じです。jsは使いません! Hotwireとは モダンなWebアプリケーションを構築するための代替アプローチです。 シングルページアプリケーション(以下SPA)を作る時に React や Vue が選択肢に上がると思いますが、それとは別のアプローチを取ります。 以下のような特徴があります。 Hotwire は複数のライブラリから構成されている HotwireはHTML OVER THE WIREの略称で、以下の複数のライブラリをまとめた概念になります。 Turbo Hotwire の核となるライブラリ Turbolinks の後継者で3つの技術で構成されている Turbo Drive Turbo Frames Turbo Streams 今回は各々の技術の違いを意識しないで機
はじめに この記事は簡単なCRUDアプリをSPA(Single Page Application)っぽくしたり、ブロードキャストを使ってリアルタイム通信したりと、ちょっとRails7に触ってみての感想になります。 Railsの5系・6系を使ったことはあるけれど、7系はまだ触れていない人向けに、この記事を読んでRails7系に興味をもってもらえると嬉しいです。 ■ 開発環境 ・Ruby:3.1.2 ・Rails:7.0.4 イメージの共有 今回試したことをパッと見で分かりやすく伝わるようにと動画を用意しました。試してみた中で今日は以下の2つについて書いていきます。 画像つき投稿をSPAっぽく投稿する ブロードキャストを使ってリアルタイム通信する 【 画像つき投稿をSPAっぽく投稿する動画 】 【 ブロードキャストを使ってリアルタイム通信する動画 】 画像つき投稿をSPAっぽく投稿する これを
はじめに Ateam Finergy Inc.× Ateam CommerceTech Inc.× Ateam Wellness Inc. Advent Calendar 2022の21日目の記事です。 本日はエイチームコマーステックの@hibiheionが担当します。 HotwireはJavaScriptを使わずにSPA(Single Page Application)を作成することができる仕組みです。Rails 7では標準機能になっています。業務でRailsを使っている身としては無視できない技術だったので作ろうと考えていた個人開発のWebアプリに導入してみました。 選曲アプリの概要 カタログ情報を見ながら選曲するためのWebアプリです。ジャズをよく聴くのですが、その目線で見るとSpotify(に限らず私が知っている音楽ストリーミングサービス)が持っている情報が物足りないと感じていたこと
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く