見出し画像

「Qiita Night~Rails~」に参加してきました

2023年11月20日(月)19:00~20:00に開催された「Qiita Night~Rails~」に参加してきたのでその内容を共有します。


Qiita Nightについて

本イベントは、日本最大級*のエンジニアコミュニティ「Qiita(キータ)」を運営する当社が実施するエンジニア向けオンラインLTイベントです。
Qiita Nightはイベントごとにテーマを設け、エンジニアにまつわる知見を共有し合う場です。
Qiitaユーザーを中心に、テーマについて深い知見を持っている方にご登壇いただき、LTを行っていただきます。
インプット・アウトプットの場を創出することで、エンジニア業界の知識の流動性を高める目的で実施しております!
イベント中の質問やご意見も大歓迎!関心のあるテーマの知見を深めるきっかけとしていただければ何よりです。
※注釈:「最大級」は、エンジニアが集うオンラインコミュニティを市場として、IT人材白書(2020年版)と当社登録会員数・UU数の比較をもとに表現しています。

connpassページのイベント説明

今回のLTテーマは「Ruby on Rails」でした。

LT

LT①:Railsとハードウェアをつなぐ

Railsシステムとタブレット連携(key station)に、MacroDroid - Device Automationを使っているお話でした

メモ

  • ハードウェア要因でサービスが止まることがあり、調査や対応に時間がかかっていた

    • 電池切れ

    • 他アプリ起動による起動失敗

    • 固まる

  • ハードウェアをカスタマイズするという選択肢もあったが、コストパフォーマンスを考慮して、端末でのトリガーで実行するアプリケーションMacroDroid - Device Automationを導入し、監視の役割を果たすことで解決できた

    • 充電が○○%になったら、メールで通知する

    • 起動に失敗したら特定のSMSメッセージを送り、アプリ再起動を実行する

  • ハードウェア連携ではいろいろ苦労することがある

    • APIがない場合は自作でハードウェアを開発する必要があるが、電流管理など注意が必要

    • ログがない時もあったり、あっても現地しか確認できない場合があるため、事前に設定する必要がある

所感
ハードウェア連携のお話はあまり聞いたことなかったので、おもしろいなと感じました。

LT②:新規事業でRailsを使うメリット

メモ

  • 新規事業とRailsの相性が良い

    • 新規事業の特性 ⇒ 素早く仮説検証を繰り返すことが重要

      • 不確実性が高い

      • 予算/リソースが小さい

      • 仮説検証/実行/修正を重視する

    • Railsの特性 ⇒ シンプルで直ぐに実装することができる

      • ドキュメントが豊富で、経験者も多い

      • MVCアーキテクチャというシンプルなフレームワークがあり、Railsに載っていれば簡単に開発できる

      • DRYやCoCで少ない記述で実装可能

  • 事業が大きくなったときに躓くところとその対策

    • ビジネスロジックをどこに書くべきか分からない

      • Railsから逸れる場合は、事前にチームで認識合わせが必要(いろんなところに散財しにくくなる)

    • バージョンアップがつらい

      • テストコードはこまめに書いておく

      • 細かくバージョンアップをする

        • 機能開発を優先せざるを得ない場合も対応時期は握っておく

    • コードの書き方が統一されていない

      • あらかじめrubocopを導入しておく

    • Active Recordのcallbackがつらい

      • 可能な限り使わない

    • システムが大きくなりすぎてつらい

      • 必要に応じて、別フレームワークが必要

      • システムの分割を検討することが大事

      • 1つのシステムに責務を持ちすぎないようにするらしい

所感
Railsアプリが大きくなると必ずぶち当たる壁なんだなと感じました。
コールバックはあまり使ったことなかったので、なぜダメなのかは調べてみたいと思います。

LT③:Railsで大規模Webアプリケーションを開発するときに知っておきたいテクニック

Railsで大規模アプリを開発する上で遭遇するつらいポイントとその対策についてお話していただきました。

メモ

  • 大規模アプリ開発で遭遇するつらいポイント

    • MVCだけでは収まらなくなる

      • ModelかControllerかで実装に迷う

          • 複雑な条件のコレクション作成(いろんなパターンの表示をしたい)

          • フロントエンドに渡すさまざまなデータ(メインメニューにさまざまなデータを表示したい)

      • 対応案

        • 迷うパターンに対して、実装方法を決めておくことで、書き方が統一され、肥大化しない

          • 複雑な条件のコレクション作成 ⇒ Iteratorパターンを使う

          • フロントエンドに渡すさまざまなデータ ⇒ GraphQLを使う

          • 他にも、DDD、クリーンアーキテクチャ、Formオブジェクトパターンなどがある

    • コード品質の担保

      • リファクタリング作業は直接売上につながらないため、後回しになりやすいが、ほっておくと技術負債が溜まっていき、リプレイスが発生する場合がある

      • 一括ですべて解決する物はなく、1つずつ地道に改善活動していくしかない

        • 静的解析ツールの導入、テスト実装、定期的なアップデート、コーディング規約等のドキュメント作成

所感
まだまだデザインパターンについては、あまり知らないため、もっと勉強していこうと感じました。

LT④:みんなに聞いた実はよく知らずに使っているRailsの機能

Active Job、GlobalID、Springについて、コードやRails Guideをもとに説明していただきました

メモ

  • Active Job、GlobalID、Springについて説明していただきました

    • Active Jobはバックグランドワーカーを抽象的に扱う仕組み

      • ActionMailer等が当たる

    • ActiveJobはsidekiqをすべて網羅していない

      • Rails Guideに載っている

  • GlobalIDとは

    • ActiveRecordのエンティティをグローバルに一意なURIとして文字列で表現する

    • 利点

      • 署名(SGID)

      • 有効期限

      • Loaderで直接エンティティが引ける

    • ActiveJobと紐づける

  • Springのしくみ

    • これはRails Guideに載っていないため、コードを読んで理解

      • SpringはRailsアリケーションの起動時間を短縮するもの

      • rails s Springの対象外

      • bin/rails bin/rakeのbinstub経由しないとSpringは動かない

        • めっちゃゾンビプロセス発生しまくる

    • Springはデフォルトに入らない

所感
なんとなくでSpringやActiveJobを使用していたので、もう少しRailsガイドなどを読んで理解しようと思いました。

LT会に参加した感想

短い時間で、いろいろなお話が聞けて勉強になりました。
またRailsのことを何も分かっていないなと改めて感じたため、もっと学習を進めていきたいと思います。

補足

Connpassグループについて


この記事が参加している募集

イベントレポ

この記事が気に入ったらサポートをしてみませんか?