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

ダウンロードPDF(2MB)本書について『Working with TCP Sockets』の翻訳版を、原著者であるJesse Storimerの許可を得て島田浩二が公開するものです。 翻訳版の書名は、同シリーズの先行書『なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 - 達人出版会』に揃えて『なるほどTCPソケット ― Rubyで学ぶソケットプログラミングの基礎』としました。 翻訳版も原書と同様、無料でお読みいただけます。 翻訳版の原稿は、10年ほど前に刊行を目指して翻訳したものとなっています。もし現在のRubyで動かない箇所や注釈が必要な箇所があれば、snoozer.05@gmail.com まで連絡ください。 公式ハッシュタグ:#naruhotcp 改訂履歴2024-09-23: 公開謝辞Jesse Storimer Original Author@takahashim
SREチームの長田です。 今回はRubyのJITコンパイラであるYJITのはなしです。 カヤックが開発・運用している地域通貨サービス「まちのコイン」は、Ruby on Railsを使用しています。 このまちのコインにてYJITを有効化し、その結果どのような影響があったのかを紹介します。 coin.machino.co YJITとは YJITは RubyのJITコンパイラです。 Ruby 3.1までは実験的な機能という位置づけでしたが、 Ruby 3.2から実用段階となりました。 Basic Block Versioning (BBV)を採用した遅延コンパイルにより、コード実行の高速化を図っているようです。 YJITそのものの話題については、今回は割愛させていただきます。 まちのコインの状況 まちのコインでは昨年6月末頃に Ruby 3.1.x から Ruby 3.2.x にアップデートを行
Ruby 3.3がリリースされた。YJITには非常に多くの改善が含まれたリリースだったが、 NEWS解説記事やリリースパーティーでは 2点しか触れられなかったので、この記事ではRuby 3.3でYJITがどう改善されたかについて解説する。 YJITは既に実用段階 YJITはRuby 3.1で導入されたが、Ruby 3.2の時点でexperimentalのマークが外れ、実用段階となった。 Ruby 3.2では、以下のような企業で性能改善が報告された。 DeNA: 40% 高速化 GMOペバボ: 18% 高速化 STORES: 6.5-7.5% 高速化 Timee: 10% 高速化 メドピア: 2.8% 高速化 BOOK☆WALKER: 20-30% 高速化 Discourse: 15.8-19.6% 高速化 Lobsters: 26% 高速化 CompanyCam: 20-40% 高速化 弊
Railsプロジェクトでbundle installすると以下のエラーになりました。どうやらtherubyracerというgemが依存しているlibv8でエラーが起きているようです。 Fetching libv8 3.16.14.19 Installing libv8 3.16.14.19 with native extensions Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /Users/me/Documents/sample/vendor/gems/ruby/2.4.0/gems/libv8-3.16.14.19/ext/libv8 /Users/me/.rbenv/versions/2.4.0/bin/ruby -r ./siteconf20200126-
概要: Puma 5は当プロジェクトの大きなメジャーリリースであり、実験的な新パフォーマンス機能がいくつも導入されたほか、多数のバグ修正や機能追加も行われました。その中でも最も重要な目玉機能についていくつかお話しいたします(1839 word/7分)。 Puma 5(コードネーム Spoony Bard1)が本日リリースされました(私の誕生日です!)。このリリースにはさまざまなものが盛り込まれていますので、Pumeユーザーの皆さまが自信を持ってアップグレードできるよう、Pumaのさまざまな機能や変更点についてお話しいたします。 ⚓ MRI + クラスタモードでの実験的パフォーマンス機能 今回のリリースの見出しを飾るのはたぶんこれでしょう。メモリ使用量を削減する機能が2つと、レイテンシを削減する機能が1つ加えられました。 Puma 5には以下の3つの実験的パフォーマンス向上機能が含まれていま
Railsアプリの場合、テストは1つのRubyバージョンだけで問題ないが、複数のRubyバージョンをサポートしているGemの場合はテストも複数のバージョンで確認しておきたい 今回、GitHub Actionsで複数のRubyバージョンでテストを実行するようにしたのでそのメモ 手順 Ruby 2.5.7のみでテストが実行されるワークフローファイル Gemを新規作成(bundle gem gem_name)した時に自動で作られたワークフローファイル このファイルを複数バージョンでテストが実行されるように書き換える .github/workflows/main.yml name: Ruby on: [push,pull_request] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: S
Gem in a Boxを使って、Dockerでローカル環境にRubyGemsを構築して、Gemをアップロードするところまで書きます。 github.com Gem in a Boxは公式でも以下の RUNNING GEM IN A BOX の項目で紹介されてます。 Run your own gem server - RubyGems Guides 作業前提 Dockerfile作成 設定ファイル準備(config.ru) 設定ファイル準備(Gemfile) Dockerイメージのビルド Gem in a Boxの起動 テスト用のGemを作成してアップロードしてみる Bundlerでテンプレート出力 テンプレート調整 Gemのビルドとアップロード Gemのアップロード Gemを利用してみる 作業前提 この手順を実行するために必要なのは、DockerとGitだけです。 Docker Git
Ruby on Railsの生みの親、Basecamp(旧 37signals)のファウンダーでCTOのDavid Heinemeier Hanssonさんによる寄稿記事です。著書に、ニューヨーク・タイムズの�ベストセラー「REWORK」と「REMOTE」。「ル・マン24時間レース」のクラス優勝者。Davidさんの活動は、ご本人のWebサイト、またTwitter(@DHH)でフォローできます。本記事は、Mediumに投稿された記事をDavidさんから許可を得て翻訳したものです。元の英語記事もどうぞ。 *記事は、「Web Summit 2015」のDavidさんの講演内容を起こしたものです。 #WEBSUMMIT2015 12年前、僕はBasecampというスタートアップを共同創業した。月額制のシンプルなコラボレーションツールで、チーム間のプロジェクト進行を後押ししてくれる。 それがあること
GraphQLのページネーションは、Relayを用いたカーソル型のページネーションを用いるのが一般的です。しかしページ番号や、総件数などの情報が必要な場合には、Relayを拡張して対応する必要があります。 GraphQLについてGraphQLは、「APIのクエリ言語」です。従来のRESTful APIは複数のエンドポイントを持ちますが、GraphQLは単一のエンドポイントしか持ちません。このエンドポイントに、クライアントが逐次必要な情報を問い合わせることで、効率よくデータの取得が可能になります。 GraphQL Rubyの導入 GraphQL本体をGUI用のgraphiql-railsをGemfileに記載し、bundle installします。 # Gemfile gem 'graphql' group :development do gem 'graphiql-rails' endその
何番煎じか分からないけど、最近やったので。 前提知識 AWS Lambda + Amazon API Gateway で HTTP リクエストを受け付けることができる AWS Lambda ではコンテナイメージを動かせる New for AWS Lambda – Container Image Support | AWS News Blog AWS Lambda で Sinatra アプリを動かすための公式サンプルがある https://github.com/aws-samples/serverless-sinatra-sample つまりコンテナ化した Sinatra アプリを Lambda 上にデプロイして HTTP リクエストを受け付けることができる。 動かす準備はもう全部整っていて、お手軽そうですね。 Ruby アプリを Lambda で動かすコンテナイメージを作る Sinatra
僕はRubyで開発をする時は毎回Pryを使うくらいの熱狂的Pryユーザーだったのだが、PryはGemfileに書いてないと binding.pry できなくて不便。任意のgemをdefault gem化するgem default コマンドも作ったのだが、これをやるのすら面倒だと思っていた。 ある日、nobuさんがRubyに binding.irb という機能をいれた。Pryがdefault gemになるのを待つよりPryで僕が使う機能をIRBに全部移植してしまった方が早いのではないかと思い、4年前からPryの機能の移植活動を始め、今日僕がよく使う機能を全て移植し終えた。 その記念に、この記事ではIRBのPry互換の機能を紹介する。昔 今更聞けないpryの使い方と便利プラグイン集 という記事を書いたんだけど、この中で僕が毎日のように使うコマンドは全てIRBに移植したので、それを紹介する本稿を
ネイト・ベルコペック (@nateberkopec) SpeedShop(詳細),Railsパフォーマンス・コンサルタンシー 要約:Rubyアプリケーションのための”スケーリング”についての情報は、毎秒数百リクエストを処理している企業によって書かれたものがほとんどです。そうではない私たちのためのスケーリングはどのようなものでしょうか? スケーリングは敷居の高いトピックです。Rubyアプリケーションのスケーリングに関するブログやインターネットでの情報のほとんどは、毎分何万ものリクエストへのスケーリングについて書かれたものです。TwitterやShopifyの規模です。興味深いですが...Rubyでどれくらいできるか、上限を知ることはいいことです...1台よりは多いものの、せいぜい100台以下のサーバでアプリケーションを実行している、私たちのような大多数にとってはあまり役に立ちません。スケー
12/23の朝方、DHHが以下のツイートを発信しました。 Hotwire aka NEW MAGIC is finally here: An alternative approach to building modern web applications without using much JavaScript by sending HTML instead of JSON over the wire. This includes our brand-new Turbo framework and pairs with Stimulus 2.0 😍🎉🥂 https://t.co/Pa4EG8Av5E — DHH (@dhh) December 22, 2020 取りあえず様子を知りたかったのでDHHのツイートを追ってみました。お気づきの点がありましたら@hachi8833までお知ら
Rails の問題は Rails のベストプラクティスがフロントエンドのベストプラクティスの邪魔になるどころか全く逆方向で相反してる点です。DHHの思想がフロントエンドと根本的に逆行してる。そういう人が作るフレームワークなのでwebpackerの抽象化を根本的に間違ったりする。 — prev.js (@mizchi) December 1, 2020 昨日もリプライで少し書いたけど、DHH自体が直近のHeyの開発でも明確にJavaScriptというものを触れないようにすることを是としているような主張をしているので、DHH wayが色濃く反映される以上この状態はもう避けられない気がしている — potato4d / Takuma HANATANI (@potato4d) December 1, 2020 Railsがフロントエンドの最先端をゆく人々1から良く思われないのは事実として。 Vie
nested attributes なレコードを削除したい場合、accepts_nested_attributes_for に allow_destroy: true オプションを渡すと削除可能になります。削除するには、対象となる対象に { _destroy: 1 } のようなパラメータを渡します。 これを踏まえて素直にフォームを作ろうとすると、削除用のチェックボックスをつける事になるでしょう。しかし次のようなフォームにチェックボックスをつけると、ユーザにとってわかりづらいUIになってしまいます。単純にテキストフィールドを空にして更新したらレコードが削除されて欲しい。 そこで次のようにします。 class User < ActiveRecord::Base accepts_nested_attributes_for :family_members, reject_if: :reject_f
パッチ会や地域 Ruby コミュニティなどで集めた知見を元に、勤務先の永和システムマネジメントなんかで度々話している表題についてテキスト化しておく。 TL;DR Ruby 2.8.0 の開発が始まっているが、それは 2020 年のどこかで Ruby 3.0 になるらしい Ruby 3.0 ではキーワード引数 (以下 kwargs) の分離という破壊的変更があり、Ruby 2.7 系は事実上の移行パスバージョン的な位置付けになるだろう 2020年1月8日の現時点では、Ruby 2.7 の kwargs の分離警告について対応された安定版の Rails はなく、周辺 Gem も WIP なので OSS エコシステムに参加していくと良い 2.8.0 (tentative; to be 3.0.0) development has started 2019年の ruby/ruby での matz
100万行オーバーのモノリシックRailsアプリをマイクロサービス化したクックパッドの手順 マイクロサービスの導入事例を、中の人が徹底的に語ります。クックパッドでは、100万行オーバーの超巨大なRuby on Railsアプリのマイクロサービス化に挑みました。アプリをいかに分離し、連携できるようにするか、など、同社が採ったマイクロサービス化の戦略を聞きました。 Ruby on Railsのバージョンアップに1年かかっていた 【マイクロサービス化戦略】まずはコードを減らすことから 【マイクロサービス化戦略】アプリ固有のバッドノウハウを減らす 【マイクロサービス化戦略】まずは分離しやすい部分からお試しで 【マイクロサービス化戦略】データベースが切れていればサービスも切りやすい 【マイクロサービス化戦略】インフラ構成を標準化する 【マイクロサービス化戦略】サービスメッシュを入れて通信の課題をクリ
MOONGIFTはオープンソース・ソフトウェアを紹介するブログです。2021年07月16日で更新停止しました Webサービスに限らず、何らかのプロダクトやサービスを提供する際にはサポートが必須になります。無償サービスであればコミュニティベースでのサポートもありますが、有償な場合は一対一のサポートが求められるでしょう。 そこで使ってみたいのがHelpyです。モダンなデザイン、モバイルファーストなヘルプデスクです。 Helpyの使い方 トップページです。ユーザはここで検索したり、新しい質問をします。 こちらは管理画面です。すでに多数の質問が登録されています。 質問が来ていたら返信したり、社内メモを書いておけます。 返信している例です。過去の質問を追いかけることもできます。 利用者は検索してセルフサポートもできます。 Helpyはシンプルなデザインのサポートデスクシステムとなっています。この手の
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く