Rails関連のことを調べてみた2022年12月07日

Rails関連のことを調べてみた2022年12月07日
目次

【Rails7で遊んでみた】画像つき投稿をSPAっぽく投稿する・ブロードキャストを使ってリアルタイム通信する

### はじめに
この記事は簡単なCRUDアプリをSPA(Single Page Application)っぽくしたり、ブロードキャストを使ってリアルタイム通信したりと、ちょっとRails7に触ってみての感想になります。

Railsの5系・6系を使ったことはあるけれど、7系はまだ触れていない人向けに、この記事を読んでRails7系に興味をもってもらえると嬉しいです。

■ 開発環境
・Ruby:3.1.2
・Rails:7.0.4

## イメージの共有
今回試したことをパッと見で分かりやすく伝わるようにと動画を用意しました。試してみた中で今日は以下の2つについて書いていきます。
– 画像つき投稿をSPAっぽく投稿する
– ブロードキャストを使ってリアルタイム通信する

【 画像つき投稿をSPAっぽく投稿する動画 】
[![Image from Gyazo](https://t.gyazo.com/teams/startup-technology/6936b8fb17cd56ce18f3887235f3a065.gif)](https://startup-technology.gya

元記事を表示

DDDで変化をしていくサービスを開発できるようにする

私が開発に参加しているラストワンマイル配送支援システムのCREW ExpressではRailsでDDDをしながら開発しています。

私達のプロジェクトではDDDを取り入れたRailsでシステム開発をしていますが、DDDを導入したことによる開発効率があがった面が多くありそのことについて解説をしたいと思います。・

DDDを導入したことのメリット

– ドメインモデルを活用することでサービスの規模が大きくなってもActiveRecordの肥大化を防ぐことと凝集度の高い開発ができる
– 重要な機能に投資をすることで優先度の高い機能開発をすることができる
– ビジネスモデルをアップデートし続けるプロダクト開発に柔軟に対応をしていくことができる

# ドメインモデルを活用することでサービスの規模が大きくなってもActiveRecordの肥大化と凝集度の低くなる開発ができる

サービスの規模が大きくなるにつれてサービスの中心的なテーブルのActiveRecordがいろんなドメイン(機能)で使用されるため、特定のドメインだけしか使用しない実装が含まれてしまうことになってしまい、それが積み重なっていき

元記事を表示

開発環境の構築で疲弊してる?VSCode DevContainersで開発しよう!

本記事は、[エムスリーキャリア Advent Calendar 2022](https://qiita.com/advent-calendar/2022/m3c)の7日目の記事です。

2022年ということで「x86/ARM混成チームで辛いならDevContainers使おうぜ」という切り口で執筆していますが、x86の方々もDevContainersはメリットいっぱいですので是非お試しください!

# 2022年の開発環境事情
エムスリーキャリアのWebエンジニアは支給される開発マシンをWindowsノートPCかMacBook Proから選択することができます。
また本番環境で動くRailsやSpringBoot等はLinuxがインストールされたサーバーにデプロイしています。

つまり各環境で動いているOSの種類がWindows・macOS・Linuxとバラバラで、この差を埋めるために各チームで工夫を凝らしてきました。
とはいえコンピュータアーキテクチャはインテルとAMDが採用しているx86 64bit(以下、`x86_64`)で統一されており、環境差で開発が出来ないというような致命的

元記事を表示

Rails module

## はじめに
これまで個人開発をしていて、Railsでmoduleを使うことはほとんど使うことはありませんでした。
実際にインターンをしてみると、moduleってかなり使われているなという印象です(特に名前空間としての役割)。
moduleがclassとどう違うのかや、どんな使われ方をするのかなどをまとめたいと思います。

## moduleとclassの違いについて
moduleとclassの違いは以下の記事がとてもわかりやすいです。

https://qiita.com/fukumone/items/2dd4d2d1ce6ed05928de

– moduleはインスタンスを生成できないが、classはできる
– moduleは他のmoduleやclassを継承することはできないが、classは継承することができる

## 主な使い方
– 名前空間として使う
– メソッドを格納する場所として使う

#### 名前空間としての使い方
特にこの使い方が多いのかなと思います。
moduleを使ってネストさせることによって名前空間を作ることができます。
小さなプロジェクトであれば名前の衝

元記事を表示

Turbo 6: Turboアプリケーションの構築

:::note
この記事は[Google翻訳](https://translate.google.co.jp/)の結果を編集したものです。
:::

https://turbo.hotwired.dev/handbook/building

Turboはリンクをたどったりフォームを送信したりするときにページ全体がリロードされるのを防ぐため高速です。アプリケーションはブラウザ内で永続的で長時間実行されるプロセスになります。これによりJavaScriptの構造を再考する必要があります。

特にナビゲートするたびに環境をリセットするために、ページ全体の読み込みに依存することはできなくなりました。JavaScriptの`window`と`document`オブジェクトはページが変更されても状態を保持し、メモリに残した他のオブジェクトはメモリに残ります。

このことを認識し少し注意を払うことで、Turboと密接に結合することなく、この制約を適切に処理するようにアプリケーションを設計できます。

# スクリプト要素の操作

ブラウザーは最初のページ読み込み時に存在するすべての`