はじめに 最近では、機械学習関連Gemが多く開発され、Rubyでも機械学習できるようになってきました。代表的なものを、ざっくりとまとめてみました。 まとめ情報 いきなりですが、この記事は私の偏見で選んだものですので、他のまとめ情報も紹介します。もっとも大きなのがAndrei Beliankou (arbox) さんのまとめリポジトリです。色んなものが紹介されています。 Railsエンジニアにとっては、SearchkickやStrong Migrationsで有名な、Andrew Kane (ankane) さんも、機械学習関連のGemを多く作成しています。C/C++のAPIが提供されている、他言語の機械学習ライブラリを、FFI/Fiddle/Riceでラップして、Rubyで使えるようにしています。ankaneさん自身が書かれた、それらGemのまとめ記事があります。 ベクトル・行列・線形代数
RBSはRuby 3に組み込まれた、Rubyの型情報を記述する言語です。 この記事ではRBSの文法を駆け足で紹介します。 細かい話は飛ばしますが、この記事を読めば大体のケースでRBSを読み書きできるようになると思います。 事前準備 インストール まずは文法の前に、rbs gemをインストールしましょう。 Ruby 3を使っている場合、rbs gemはRuby 3に同梱されているため何もしなくても使えます。 Ruby 3未満を使っている場合でも、gem install rbsすれば使うことができます。 この記事では、rbs gem v1.0.0を対象に構文を紹介します。 $ gem install rbs Successfully installed rbs-1.0.0 1 gem installed $ rbs --version rbs 1.0.0 動作確認 書いたRBSは、rbsコマン
Posted by naruse on 25 Dec 2020 Ruby 3.0系初のリリースである、Ruby 3.0.0 が公開されました。 これまで、Ruby3に向けてパフォーマンスの改善、並行処理、静的解析という3つの目標を掲げて、活発に開発が行われてきました。特にパフォーマンスの改善については、Ruby 3x3 として「Ruby3はRuby2の3倍速くする」ことを目指してきました。 Ruby 3.0では開発の指標の一つとしてきたOptcarrotベンチマークで3倍を達成するとともに、以下のような取り組みが行われています。 benchmark-driver.github.io/hardware.html に書かれている環境で計測されました。 8c510e4095 が Ruby 3.0 として使われています。環境やベンチマークによっては3倍にならないかもしれません。 Ruby 3 では
技術部でRubyインタプリタの開発をしている笹田です。コロナの影響で、リモート勤務などに移行し、新しい生活スタイルを満喫されている方々がたくさんいらっしゃるんじゃないかと思います。ただ、私は以前から自主的に自宅勤務することが多かったので、正直生活がぜんぜん変わっていません。 さて、家で私が何をしているかというと、Ruby 3の準備です。その中でも、数年取り組んできた Ruby で並列処理をするための仕組みである Ractor の開発をしています(以前は Guild というコードネームで呼んでいました)。Ractor という名前は、Ruby の Actor みたいな意味で付けました。Erlang とか Elixir で有名な Actor model というアレです。厳密には、Actor model でよく言われる特性をすべて備えているわけではないのですが、並列で動く Ractor を複数作る
今日 Ruby Hacking Challenge in Hamada.rb に参加したときに ruby_jard という Ruby のデバッグツールを教えてもらいました。 これがかなり凄まじくすごかったのでちょっとまとめてみます。 ruby_jard とは ruby_jard とは Ruby のコードをデバッグするツールになります。 ruby_jard | Just another ruby debugger. Provide a better experience while debugging Ruby rubyjard.org 立ち位置としては byebug のようなデバッグツールになっており、コード上で jard というメソッドを呼び出すとそのタイミングでプロセスが停止して、コンソール上から Ruby のコードを実行できるような形になっています。 実際にどういう形でデバッグするの
1class ReviewsController < ApplicationController 2 require 'rqrcode' 3 require 'rqrcode_png' 4 require 'chunky_png' 5 before_action :authenticate_user, {only: [:index, :show, :destroy, :share]} 6 7=省略= 8 9def share 10 @concert = Concert.find(params[:concert_id]) 11 qr = RQRCode::QRCode.new(new_concert_review_path(@concert), :size => 4, :level => :h ) 12 png= qr.to_img 13 @qr_base64 = png.resize(20
S3の操作するコードを書くタスクは日常的にやるわけではなくて、なぜかちょうど忘れた頃の絶妙なタイミングでやってきます。そのたびにAPIリファレンスを見ながら頑張って組み立ててるような気がしたので、しゃらくせぇ!と思い、よく使うやつをまとめました。 Aws::S3::ClientとAws::S3::Resourceの2系統を用意しました。お好みに応じて参照してください。 参考までに、この2つの違いがよく分からなくて途方に暮れている人はこちらをご覧ください。 AWS SDK for Ruby V3のAws::S3::ClientとAws::S3::Resourceの違いに正面から向き合う クレデンシャル情報やリージョンは、環境変数やIAMロール等で設定されているものとします。 個別に設定する場合は、Aws::S3::Client.newやAws::S3::Resource.newの引数に渡して
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Be sparing when using unless - Andy Croll 原文公開日: 2018/01/07 著者: Andy Croll Ruby: unlessはここぞというときまで使わないこと(翻訳) Rubyの強みのひとつに素敵な組み込みシンタックスシュガーがありますが、unlessキーワードもそのひとつです。否定文で使われるifをunlessで置き換えることができます。 しかし、Rubyのシンタックスが自由なために、あっという間にコードが必要以上に理解しづらくなってしまいます。 次のように書いてはいけない 心が折れるunless。 # 例1 unless something? # 何かする else # 他のことをする end # 例2 unless something? || another_thing? #
ruby-packerとは リポジトリ: pmq20/ruby-packer: Packing your Ruby application into a single executable. サイト: Enclose.IO: Compiling your application into a single executable -- ここにはRuby以外にもNode.js Packerなども置かれています @pmq20さん作のruby-packerは、Rubyコードをシングルバイナリに変換して、Rubyがない環境でも実行できるようにするコンバーターです。 Evil Martiansのdipツール↓にも、ruby-packerでビルドした各種シングルバイナリ版がありますので実績はありますね。なおmacOS向けのdipのバイナリサイズは14MBでした。 docker-composeを便利にする
Rubocopは、バージョン毎に新しいCop(Lintのルール)が追加されたりCopの名前が変わったりします。そのためバージョンアップ後には、大抵は設定やソースコードを見直さなければなりません。 だいたい2週間に1回は行う作業なので、スムーズに作業できるよう手順を書き出しておきます。 0. 事前準備 普通の作業環境なら起きないはずですが・・・ ユニットテストが整備されていること 現バージョンの rubocop を実行して通ること gitツリー上に変更したファイルが無いこと(git status で確認できる) 適切なgitブランチがチェックアウトされていること(git branch で確認できる) 1. バージョンアップ rubocop や関連ライブラリのバージョンを上げます。 2. ファイルを一括修正 rubocop --auto-correct で、バージョンアップで追加されたCopに
一般的に、Rubyでオブジェクト同士を==で比較すると、オブジェクトIDの比較となる。 ==を再定義してある場合は例外で、例えばStringは文字列の内容が比較される。 ではArrayやHashはどうなのか。 実はArrayやHashを==すると中身の比較が行われる。 よって以下のような比較が可能である。 単純なHashとArrayはもちろんのこと、複雑に構成されたオブジェクトもこのとおりだ。 p [1, 2, 3] == [1, 2, 3] #=> true p ({a:1, b:2, c:3} == {a:1, b:2, c:3}) #=> true p ([{a:1, b:2}, {array:[3, 4, 5]}] == [{a:1, b:2}, {array:[3, 4, 5]}]) #=> true 私は何となくオブジェクトIDの比較になりそうな気がして、無意識のうちにこのよう
rubocop のしつけ方 TL;DR rubocop --auto-gen-config して Offense count の多い順に毎日数個ずつ設定を確認したら 僕の使っている .rubocop.yml ができました これが onkcop か…(ゴクリ / “僕の使っている .rubocop.yml” https://t.co/KVryle9SJq — そのっつ (SEO Naotoshi) (@sonots) October 26, 2015 rubocop とは コーディング規約に準拠しているかをチェックする gem です。 https://github.com/bbatsov/rubocop こんなコードに対してかけると def badName if something test end end 以下のような警告をしてくれます。 Offenses: test.rb:1:5: C:
こんにちは、hachi8833です。 「Rubyスタイルガイドを読む」シリーズ文法編、第6回目をお送りします。 Rubyスタイルガイドを読む: 総もくじ 前回: Rubyスタイルガイドを読む: 文法(5)ブロック、proc 次回: Rubyスタイルガイドを読む: 文法(7)lambda、標準入出力など 文法(6) 演算子など 参照: bbatsov/ruby-style-guide 2-38【統一】分岐の条件部分で=による代入の結果を値として使う場合は、条件全体をかっこ( )で囲むこと Don't use the return value of = (an assignment) in conditional expressions unless the assignment is wrapped in parentheses. This is a fairly popular idiom
いろいろな書き方ができるRuby。そのRubyを取り巻くコーディングポリシーの状況やツールについて、この回では書いていきたいと思います。 以前に某AdventCalendarに載せた内容だけどRubyStyleGuideもRubocopもその時に比べて変更されてきているので、改めて内容の反映した上でこっちに掲載。 Rubyの特徴とベストプラクティス Rubyは1つの目的を達成するために複数のアプローチが可能な言語です。例えば配列の長さを取得したいときにarray.sizeとarray.lengthのどちらを使っても、配列の長さを取得することができます。これはもともと他の言語を使っていた人がRubyに親しみやすくなる要因の一つとなっているのですが、ある程度大きな開発をするときにはコーディングポリシーをしっかり決めておかないと、プログラムを書いた人によっては癖が強すぎて読みづらい事態が起きたり
Rubyはバージョンアップによって、やむなく旧バージョンとの互換性がなくなってしまうことがあります。それが破壊的変更です。静的コードアナライザーモジュールであるRuboCopのコミッターのkoic氏が、どんなときに破壊的変更が起きるのか、起きてしまったときは、どのように対応すればよいのか、その背景と対策を語ります。 Rubyの静的コードアナライザーモジュール「RoboCop」 koic氏:こんばんは。今回は「Breaking Change」というタイトルで発表します。Twitterは「@koic」というハンドルネームでやっています。永和システムマネジメントという会社から来ました。 (Rubyの静的コードアナライザーモジュールの)RuboCopは、今日も含めて何度か話に出ていると思うのですが、私はそこのコミッターをしていたり、RailsのActive RecordのOracleを使っている部
目次 Rubocopとは 使い方 エラーメッセージの読み方 便利な設定 代表的なエラーへの対処法 Rubocopに学んだrails way Rubocopとは Rubyのコーディング規約に準拠してるかをチェックするgem 使い方 gemなので、 $ gem i rubocop とやるか、Gemfileに書いて $bundle install インストールしたら、 $ rubocop で実行(ディレクトリ以下全て読み込む) エラーを指摘されるので、1つずつ対処 エラーメッセージの読み方 以下の例について説明 aaa@localhost:(abc*) $ rubocop [/Users/aaa/rails_workspace/board_plus] Inspecting 62 files .CC..CCCCCC.CCCCC....C.C..CCC.CC.C...C.CC..CCCCCCCCCC
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く