東京Ruby会議12 で発表した資料です。
こんにちは。ソフトウェアエンジニアの sasamuku です。 Prism は、エラートレラント性や移植性を考慮して設計された新しい Ruby パーサです1。先日リリースされた Ruby 3.4 で、Ruby のデフォルトパーサとして採用されたことが発表されました2。 ROUTE06 が開発している Liam では、以前から Ruby コードのパースに Prism を活用しています3。パーサと聞くと「専門知識が必要なんじゃ」「自分には難しい」と感じるかもしれません。私自身もそうでしたが、実際に開発で利用してみると、そこまで複雑ではなく、使いこなせると非常に便利な技術であることが分かりました。 本記事では、前半で Prism の基本的な使い方を、後半では、カジュアルな Prism 活用例として、個人開発の Gem を作成した事例をご紹介します。普段の開発現場やちょっとした個人ツールの作成など
この記事はANDPAD Advent Calendar 2024の17日目の記事になります。(投稿予定の12/17前後で風邪を引いてしまい投稿が遅れてしまいました。🙇♀️) @youchanです。実は今年の8月にアンドパッドに入社していました。アンドパッドではインフラコストを削減するための施策を行なうチームに配属しています。 アンドパッドでは建設業のDXを実現するサービスを提供しています。建設の現場では多くの写真が取り扱われます。膨大な写真データはインフラコストに響くので削除できるものは削除したいところです。実際にサムネイル画像も保存されていたりして削減可能なものがたくさんあります。 私の最近のミッションはこの不要なファイルを削除するということなのですが、ファイル数が膨大なためいくつかの工夫が必要なのでそれについて記事にしたいと思います。 また本稿では、課題を通して並行・並列処理につい
こんにちは。 メディアサービス開発部 Webアプリケーション開発課のフサギコ(髙﨑)です。 Ruby on Railsによるバックエンドの実装運用とAWSによるサービスインフラの設計構築を中心とした、いわゆるバックエンド方面のテックリードとしてニコニコ漫画を開発しています。 本記事では、私たちが開発・運用しているRails製のjson APIバックエンドにおいて、mallocの実装としてjemallocを使うように変更したことについてお話します。 背景 私たちが2020年4月から開発しているニコニコ漫画のRails製json APIバックエンド(以降「新バックエンド」と呼びます)は、2010年8月のサービス開始以来サービスを支え続けているPHP製アプリケーションのビジネスロジックに関する式年遷宮的移行先であり、当初よりAWS ECS Fargate上で実行しています。*1 今年8月にリリー
ダウンロード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
2024年8月26日紙版発売 2024年8月26日電子版発売 山本浩平,下重博資,板倉悠太 著 A5判/672ページ 定価3,740円(本体3,400円+税10%) ISBN 978-4-297-14403-6 Gihyo Direct Amazon 楽天ブックス 丸善ジュンク堂書店 ヨドバシ.com 電子版 Gihyo Digital Publishing Amazon Kindle ブックライブ 楽天kobo honto 本書のサポートページサンプルファイルのダウンロードや正誤表など この本の概要 最新Ruby 3.3に対応。Rubyでやりたいことがすぐにわかる,逆引きレシピ集の決定版。 Rubyの基礎知識や実践ですぐに役立つテクニックを,目的別にまとめた逆引きレシピ集です。文法/データ操作/正規表現/文字列操作/テスト/エラー処理といったRubyの基本から,RubyGems/データベ
この記事では、Ruby の非同期処理ライブラリである Sidekiq を使って定期実行処理を行う Sidekiq-Cron の監視方法について、チームでの方式検討の様子を交えながらご紹介します。 目次 目次 はじめに Sidekiq-Cron について Sidekiq-Cron の cron job の status の監視 既存の status 監視の問題点 既存の監視の仕組みの問題点 負荷が低い監視の仕組みの検討 案1:全 cron job の status を定期的にダンプし、ダンプ結果を読み取って監視する 案2:Redis を直接参照して cron job の status を読み取る 案3:Sidekiq の GUI の html ページの内容をパースして status を取得 [採用] 案4:Sidekiq の GUI に新しいエンドポイントを実装して、そのエンドポイントから
2024年春、「競プロの神」と「Rubyの神」がホンネで語り合った。 競プロの神は、日本最大の競技プログラミング(競プロ)サイト「AtCoder」を率いるchokudaiこと高橋直大(たかはし なおひろ)さん。Rubyの神は言うまでもなく、Rubyの開発者である、Matzことまつもとゆきひろさんだ。 神々が対面したのは、学生エンジニアのキャリアや就職活動(就活)を支援する「サポーターズ」が、エンジニアを目指す学生のために開いているオンラインカンファレンス「技育祭2024春」のプログラム「競プロの神とRubyの神のエンジニア対談~神々の一問一答~」。 最初は“神”の呼称に困惑していた2人だが、chokudaiさんは「競技プログラミングサイトで一番はやっているのはAtCoder。僕はそこでユーザーをBANする権限を持っているので神じゃん、と思いました」と納得。まつもとさんは「僕は、Rubyコミ
最近宇宙開発系の企業に興味を持っていて、その会社に行くためにはC言語の理解が必要不可欠なのではないかと感じたので、ここ最近C言語を触っています。 これまではJavaScriptやTypeScriptやRubyなどのインタープリタ言語をメインでやってきたので、C言語を学ぶとまた違う発見があって面白いです。 その中で、文字列型が他の言語と違うことに戸惑ったという話をしていこうと思います。 インタープリタ言語の文字列型 例えばTypeScriptにおいて文字列型を定義しようとすると、下記のように定義します。
本稿は Yorick Peterse 氏によって書かれた次の記事の日本語翻訳です。著者に翻訳の許可を得て公開しています。 yorickpeterse.com また本稿は DeepL Pro を使って下訳したものに手を加えています。日本語翻訳の不具合または誤訳については Yorick Peterse 氏ではなく、本稿のコメント欄にお願いします。 ここから本文です。 GitLab 社で働くのはどのようなものだったか 私は2015年10月に GitLab 社に入社し、6年あまり働いて2021年12月に退社しました。 前に GitLab 社を辞めて Inko に取り組んでいることは書きましたが、2015年から2021年までの間、GitLab 社で働いていたことがどのようなものであったのかについては触れませんでした。理由は2つあります。 燃え尽き症候群に苦しんでいて、(当時は) 自分の人生の最後の6
Setting up VS Code for Ruby on Rails development can be tricky, so I wrote this article to help. Plus, I've turned the extensions in this article into a VS Code Extension Pack. Use it to install all the extensions from this article in 1-click, to get started quickly with VS Code + Ruby on Rails. Table of Contents Using VS Code as a Ruby on Rails editor shouldn't be so hard! It's tricky deciding wh
STORES株式会社でRubyインタプリタ開発をしている笹田です。お正月に新年早々おでんを腐らせてしまったので、今年は作ったらさっさと食べることを目標にしたいと思います。 この記事では、主に私が開発している、Ruby 3.3で導入されたM:Nスレッドについて紹介します。 M:Nスレッドはスレッドの性能向上のために導入されました。M個(大きな数)のRubyスレッドをN個(十分小さい数)のネイティブスレッドだけで実行するというモデルで、スレッド管理のオーバヘッドを抑えられる方法として知られており、ほかにもGo言語などで利用されています。今後、大量のネットワーク接続を処理するといったことをRubyで記述することを検討したい場面が出てくるしれません。そのようなときにRubyでスイスイとプログラムが書ければいいなと思っており、その一貫です。最終的には、Ractorを用いた軽量な並列・並行アプリケーシ
はじめに 正規表現は様々なプログラミング言語で利用されている、テキスト処理のためのパターン言語です。 正規表現はテキストエディタでの検索や置換、入力文字列のバリデーションなどプログラミングの様々な分野で実用されています。 ある程度の規模のプログラムにおいて、正規表現を全く利用しない (利用していない) ということはほとんど無く、正規表現は今日のプログラミングにおいて非常に重要なパーツだと言えます。 JavaScriptやRubyといったプログラミング言語では正規表現はファーストクラスのリテラルとして実装されているため、とても簡単に利用できます。 例えば次のRubyプログラミングでは変数fooに入った文字列の部分にfizzかbuzzが含まれるかどうかを、正規表現/fizz|buzz/を使ってチェックしています。 foo =~ /fizz|buzz/ さらに、計算機科学 (コンピューターサイエ
プログラミング言語「Ruby」の国内最大のビジネスカンファレンス「RubyWorld Conference」。Rubyの先進的な利用事例や最新の技術動向、開発者教育の状況などの情報を発信することで、「Rubyのエコシステム(生態系)」を知ることができる場として開催します。ここで登壇したのは、Rubyアソシエーション 理事長のまつもとゆきひろ氏。プログラミング言語の過去、歴史から学ぶ教訓について発表しました。全4回。3回目は、「Second System Syndrome」について。前回はこちら。 退屈は最大の敵 まつもとゆきひろ氏:次はPerlですね。ここまでですでに4回ぐらいPerlの話題が出てきています。なぜかというと、私はPerlが大好きなんですね。実は、Perlが大好きなんですが、Perlのプログラミングは大好きじゃないんですね。あと、Perlのソースコードも大好きじゃないんですね
プログラミング言語「Ruby」の国内最大のビジネスカンファレンス「RubyWorld Conference」。Rubyの先進的な利用事例や最新の技術動向、開発者教育の状況などの情報を発信することで、「Rubyのエコシステム(生態系)」を知ることができる場として開催します。ここで登壇したのは、Rubyアソシエーション 理事長のまつもとゆきひろ氏。プログラミング言語の過去、歴史から学ぶ教訓について発表しました。全4回。1回目は、「アイデアだけでは十分ではない」について。 Ruby開発のきっかけ まつもとゆきひろ氏:じゃあ、始めます。Rubyを作り始めた記録が残っているんですが、その当時勤めていた会社の先輩にあたる人が、本を書くという話になったんですね。 その時に、彼は『プログラミング言語を作りながら学ぶオブジェクト指向』という本を書くと言ってきたんですね。編集の人と話をしていく中で「どういう企
近い将来WebSocketがRailsで使用できるようになると聞くと、デベロッパはみんな舞い上がって興奮します。 しかし、 あなたのユーザは、あなたがWebSocketを使用しているかどうかなんて気にしません 。 ユーザは、”快適なリアルタイムWebアプリ”を求めている。 デベロッパは、”快適でビルドが簡単なリアルタイムWebアプリ”を求めている。 オペレーションは、”デプロイ、スケール、管理が簡単なリアルタイムWebアプリ”を求めている。 上記全ての要望をWebSocketがかなえてくれるのなら素晴らしいことですが、この実装の詳細は高いコストがかかります。 超高性能で全二重なクライアントとサーバ間の通信は、本当に私たちに必要なのか? WebSocketは、クライアントに情報を配信するための簡単なAPIと、クライアントからWebサーバへ情報を送信するための簡単なAPIを提供します。 サーバ
Runa という Ruby で Gem を使ったり複数ファイルで構成された中規模のアプリケーションを簡単に書くためのフレームワークを作っています。 Runa を作った経緯 Ruby は単独のスクリプトファイルとして実行するときは取り回しも簡単で大変使いやすい(小規模アプリケーション) が、特定の gem に依存したり複数ファイルで構成されるようなアプリケーションを作ろうとするとスタンダードな方法が用意されておらず(特に配布や共有のことを考えると)敷居が高くなってしまう(中規模アプリケーション) これが今まで余り問題にならなかったのは、Web アプリであれば Rails がその辺りも面倒をみてくれたり、コンソールアプリケーションなら gem で配布するみたいな方法でやりくりしてきた経緯がある。しかし gem で配布するには RubyGems のアカウントが必要だったり、昨今のセキュリティ問題
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く