タグ

rubyに関するtkawaのブックマーク (150)

  • Rubyの型アノテーションの現状についていくつか思うこと(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: A few words on Ruby's type annotations state 原文公開日: 2023/05/05 原著者: zverok 参考: 週刊Railsウォッチ20230531: Rubyの型アノテーションの現状についていくつか思うこと ...を軍の訓練施設で書いているうちに、ついつい5,000ワードになってしまった。 今これをスマホで書いている、それもウクライナ軍の訓練施設にある、200人を越える戦友たちと過ごしている兵舎で。もっぱら訓練と訓練の合間の短い時間(たいてい夜と日曜だが)をこの作業に当てている。 率直に言うと、軍に入隊して以来、まさかRubyについて何か書く時間やインスピレーションを得られるとは思ってもみなかったが、今ここでこうして書いている。 最近、Redditの/r/rubyで興味深い長大な議

    Rubyの型アノテーションの現状についていくつか思うこと(翻訳)|TechRacho by BPS株式会社
    tkawa
    tkawa 2025/09/08
  • Ruby30周年イベント(後編):まつもと氏「Static Compiler for Ruby」を作りたい。道具立ては揃ってきた

    Ruby30周年イベント(後編):まつもと氏「Static Compiler for Ruby」を作りたい。道具立ては揃ってきた まつもとゆきひろ氏によって開発が始まったRuby言語の30周年を祝うイベント「プログラミング言語Ruby30周年記念イベント」が2月25日にオンラインで開催されました。 イベントでは関係者やRuby愛好家らによる過去30年の振り返りやRubyにまつわるライトニングトークなどが行われ、最後にまつもとゆきひろ氏による基調講演「D is for Dream, V for Vaporware」が行われました。 基調講演では、Rubyを開発する前にまつもと氏が手がけた、Rubyの原点となるソフトウェア「CXライブラリ」や、今回初めて名前が明かされた「Tish」という作りかけのプログラミング言語や、これまであまり語られることのなかった、さらにその前の学生時代に妄想していたプ

    Ruby30周年イベント(後編):まつもと氏「Static Compiler for Ruby」を作りたい。道具立ては揃ってきた
    tkawa
    tkawa 2023/03/09
    『「a=[1,2,3]」は配列なんだけれど、要素の方にはIntegerが3つ並んでいます。長さは3です、frozenされています/されていません』同感。型はクラス名のことではない、とこれからも言っていきたい
  • Rubyで1つのインスタンスに同名メソッドを複数保つ方法 - アジャイルSEの憂鬱

    きっかけ Swiftでprotocolの実装を複数持てるのは便利そうだなぁと思ったことある。(foo as A).call だとA#call で、(foo as B).callだとB#callが呼べる的な #fukabori_rubykaigi_2022— 神速 (@sinsoku_listy) 2022年10月5日 よく考えたら as メソッドを定義するだけで実現できそうな気がしたので、実装してみた。 Swiftの話 Swiftを勉強してた頃に、プロトコル拡張で実装したメソッドをキャストした型によって呼び出し分けるのを試したことがある。 sinsoku.hatenablog.com 検証コード module As class Proxy def initialize(this, mod) @this = this @mod = mod end def method_missing(nam

    Rubyで1つのインスタンスに同名メソッドを複数保つ方法 - アジャイルSEの憂鬱
    tkawa
    tkawa 2022/10/07
    メソッドのシグネチャが違うだけでも容易に死んでしまうので、実用上はメソッドをrenameしてincludeするぐらいが無難そう
  • Rubyの静的型検査を利用した開発手法の現状まとめ

    Leaner 開発チームの黒曜(@kokuyouwind)です。 先週はBurikaigi2022で登壇させていただきました! 今回はリモート開催でしたが、来年は現地でブリしゃぶをべられると良いですね! Burikaigi ではRBSから始める静的型付け生活と題して、 Ruby の静的型検査の概要や開発手順などについて登壇しました。 入門的な内容ではありますが、今回は発表内容を大まかにまとめた記事をお届けします。 なお記事の構成上、発表内容から一部割愛している話がありますがご容赦ください。[1] Ruby 静的型検査の概要 TypeScript の台頭や Python 3.5 での型注釈記法の導入など、動的型付けの言語においても静的型検査の仕組みを導入する動きが近年活発です。 Ruby においても 2020 年 12 月にリリースされた Ruby 3.0.0 において RBS と Typ

    Rubyの静的型検査を利用した開発手法の現状まとめ
    tkawa
    tkawa 2022/02/06
  • Ruby: 静的型付けで解決しない問題とは(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Problems that Static Typing Doesn’t Solve | CodingItWrong.com 原文公開日: 2020/10/19 原著者: Josh Justice サイト: CodingItWrong.com | Full-stack developer for sufficiently small definitions of stack. Work for Big Nerd Ranch. Brandur Leach氏のブログ記事『Better typing in Ruby』は、Stripeの静的型付けチェッカーSorbetが誕生したときの状況と、Sorbetで得られたメリットについて解説しています。私はこれまで静的型付けのメリットについては割り引いて考えてきましたが、この記事を読むうちに、私がそ

    Ruby: 静的型付けで解決しない問題とは(翻訳)|TechRacho by BPS株式会社
    tkawa
    tkawa 2021/09/09
  • ruby / vscode-rdbg を試す - Re: 醤油の一升瓶じゃあ戦えない

    ruby/debug と連携してデバッグを行える VSCode extension が出てるので試す。 marketplace.visualstudio.com github.com 前提 $code -v 1.57.0 b4c1bd0a9b03c749ea011b06c6d2676c8091a70c x64 $ruby -v ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x86_64-darwin19] 準備 debug はプレリリース版をインストールしてねと README にあるので従う。 gem install debug --pre ためしに以下のようなコードを書いてブレークポイントを貼ってみる class A attr_accessor :x end def main a = A.new a.x = 2 puts a.x end

    ruby / vscode-rdbg を試す - Re: 醤油の一升瓶じゃあ戦えない
    tkawa
    tkawa 2021/06/23
  • RubyとWebAssemblyの関係についてわかる範囲でまとめる | うなすけとあれこれ

    はじめに 2021年1月にv1.0がリリースされたWasmerにRuby Gemが存在することに触発されて調べてみました。RubyWebAssemblyが関わっているものについてわかる範囲でまとめ、軽くどのようなものかを書いていきます。 僕自身、業務はおろかプライベートでもWASMを書いたことはなく浅い理解しかしていないですが…… WebAssembly (WASM)とは WebAssembly は最近のウェブブラウザーで動作し、新たな機能と大幅なパフォーマンス向上を提供する新しい種類のコードです。基的に直接記述ではなく、C、C++Rust 等の低水準の言語にとって効果的なコンパイル対象となるように設計されています。 この機能はウェブプラットフォームにとって大きな意味を持ちます。 — ウェブ上で動作するクライアントアプリで従来は実現できなかった、ネイティブ水準の速度で複数の言語で記述

    RubyとWebAssemblyの関係についてわかる範囲でまとめる | うなすけとあれこれ
    tkawa
    tkawa 2021/02/18
  • プロと読み解く Ruby 3.0 NEWS - クックパッド開発者ブログ

    技術部の笹田(ko1)と遠藤(mame)です。クックパッドRuby (MRI: Matz Ruby Implementation、いわゆる ruby コマンド) の開発をしています。お金をもらって Ruby を開発しているのでプロの Ruby コミッタです。 日 12/25 に、ついに Ruby 3.0.0 がリリースされました。一昨年、昨年に続き、今年も Ruby 3.0 の NEWS.md ファイルの解説をします。NEWS ファイルとは何か、は一昨年の記事を見てください(なお Ruby 3.0.0 から、NEWS.md にファイル名を変えました)。 プロと読み解く Ruby 2.6 NEWS ファイル - クックパッド開発者ブログ プロと読み解くRuby 2.7 NEWS - クックパッド開発者ブログ Ruby 3.0 は、Ruby にとってほぼ 8 年ぶりのメジャーバージョンア

    プロと読み解く Ruby 3.0 NEWS - クックパッド開発者ブログ
    tkawa
    tkawa 2020/12/26
  • Ruby: Rack PushでリアルタイムWebアプリをWebから切り離す(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Ruby’s Rack Push: Decoupling the real-time web application from the web | Musing, Music and things that go bump in the night 原文公開日: 2018/05/01(原文は何度か更新されています) 著者: Bo Wild 原注: (更新情報: プルリクが更新されたので記事に反映しました) 何だか面白くなってきました。 最近はWebSocketや、その年上の従兄弟であるEventSourceやらServer-Sent Events(SSE)の話題でもちきりです。Fayeや(Railsの)ActionCableも大流行で、リアルタイム更新処理がかつてないほどやりやすくなりました。 しかしリアルタイム更新処理は混乱の

    Ruby: Rack PushでリアルタイムWebアプリをWebから切り離す(翻訳)|TechRacho by BPS株式会社
    tkawa
    tkawa 2018/07/18
  • 10 分でわかる Ruby Guild - Feedforce Developer Blog

    どうも、バックエンドエンジニアのサトウリョウスケです ✌︎('ω')✌︎ RubyKaigi 2018 から早 3 週間。この記事を読んでいる方でも参加された方が沢山いるのではないかと思います。 個人的な感想ですが、今年は例年以上に充実していたんじゃないかな、と大満足です✨ 感想記事はこちらの記事に詳しくまとめられています。 developer.feedforce.jp さて、今回の RubyKaigi の発表では笹田さんから Guild の進捗についての発表がありました。 この Guild の概要について社内のメンバーに解説したところ中々に好評だったので、今回の記事では Guild とはどういうものなのかを超ざっくりですがご紹介します。 そもそも論。なぜ Guild が必要なのか? Guild と Thread の関係 Guild 間のデータの受け渡し おわりに そもそも論。なぜ Gui

    10 分でわかる Ruby Guild - Feedforce Developer Blog
    tkawa
    tkawa 2018/06/25
  • ES6 style hash literals in Ruby

    (Or how to create a naughty fork of Ruby on your own machine) I've been writing a lot of JavaScript code lately, and one pattern I see used a lot is something that I think is called an Object Literal. The idea behind this syntax is that you frequently create hashes (or objects in JavaScript) that have a key that is the same name as the variable. i.e. // some_old_skool_javascript_file.js var name =

    tkawa
    tkawa 2018/03/08
    JSでは普通に使ってるし確かに楽になるけどあまり好きじゃない。Setリテラルとして入ってくれたほうがうれしい
  • Ruby: mallocでマルチスレッドプログラムのメモリが倍増する理由(翻訳)|TechRacho by BPS株式会社

    要約 メモリ断片化は測定や診断が困難ですが、驚くほど簡単に修正できることもあります。マルチスレッドのCRubyプログラム(mallocのスレッド単位メモリアリーナ)におけるメモリ断片化の原因を追ってみましょう。記事のボリュームは3343語、20分程度です。 単純な設定変更だけで問題を完全に解決できることはめったにありません。 私の顧客のSidekiqプロセスが大量のメモリを消費していたことがありました(1プロセスあたり1 GB程度)。開始当初の各プロセスは300MB程度でしたが、時間の経過とともにじわじわと肥大化してほぼギガバイトレベルにまで達したところで落ち着き始めました。 私は顧客にMALLOC_ARENA_MAXというたった1つの環境変数の変更を依頼しました。「2に設定してください」と。 プロセス再起動後、「じわじわ肥大化」現象はピタリと止みました。プロセスのメモリ使用量は以前の半

    Ruby: mallocでマルチスレッドプログラムのメモリが倍増する理由(翻訳)|TechRacho by BPS株式会社
    tkawa
    tkawa 2018/01/05
    現時点では MALLOC_ARENA_MAX=2 が良いかも
  • Rubyで try-with-resources (あるいは with/using)をやりたいという話 - たごもりすメモ

    前のエントリで書いたうちに入っていたが、Rubyでも try-with-resources (あるいはPythonで言う with やC#で言う using)が使いたいなー、という話。 Feature #13923: Idiom to release resources safely, with less indentations - Ruby trunk - Ruby Issue Tracking System Ruby体にFeature request出してみたんだけど、ライブラリでやればいいんじゃないの、という結論になってしまって、ええーと思っている。ライブラリだといくらでもある方法のひとつになってしまって、他のプログラマ(他所のライブラリ作者とか)に「これを使え」という話がしづらいんだよねえ。あとgemにして広く使われたとしても、この機能のバージョン指定がgemどうしで衝突してト

    Rubyで try-with-resources (あるいは with/using)をやりたいという話 - たごもりすメモ
    tkawa
    tkawa 2017/10/01
    lambdaで [conn, stmt] を返すようにすれば黒魔術不要なのでは(そこはあまり重要でないのかもしれないけど)
  • Ruby 2 in Ruby on Rails

    Slides for my keynote "Ruby 2 in Ruby on Rails" at RedDot RubyConf 2017 in Singapore https://www.reddotrubyconf.com/#amatsuda #rdrc2017

    Ruby 2 in Ruby on Rails
    tkawa
    tkawa 2017/07/28
    RubyとRailsの関係がすごく興味深い
  • 子どもたちにテクノロジーへのドアを開こう。プログラマー的思考法を学べる絵本の著者・リンダさんの想い

    多くの人が子どもにプログラミングを学ばせたいと考えていますが、全員がプログラマーになるわけではありません。では、学んだことは無駄になるのでしょうか。そうではない、と『ルビィのぼうけん』の著者、リンダ・リウカスさんは言います。大事なことは子どもたちにテクノロジーへのドアを開き、さまざまな領域で活用できるプログラマー的思考法を身につけてもらうこと。今回、リンダさんと書の翻訳者・鳥井雪さんにお話をうかがいました。 『ルビィのぼうけん こんにちは!プログラミング』は、プログラミングではなくプログラマー的思考法を学ぶことができる子ども向けの絵です。著者はフィンランド出身のプログラマーイラストレーターでもあるリンダ・リウカスさん。女性にプログラミングを学んでもらうワークショップを主催するRails Girlsの創設者の一人です。 彼女は多くの講演でプログラミング教育の重要性を説き、子どもたちのた

    子どもたちにテクノロジーへのドアを開こう。プログラマー的思考法を学べる絵本の著者・リンダさんの想い
    tkawa
    tkawa 2016/05/30
  • APIデザインケーススタディ —— Rubyライブラリを移植する前に読む本 - 世界線航跡蔵

    APIデザインケーススタディ 』というを頂戴したので読んでみた。 ライブラリ作者に向けて このRuby標準ライブラリを題材にして、分かりやすく、多様な機能をサポートして、互換性を保つAPIの設計をするにはどのように考えるべきかを教えてくれる。 ここでAPIと言っているのは、一般的なRubyのクラスとオブジェクトとメソッドから成るライブラリをどうデザインするか、という話である。 別にChef RecipeやRSpec DSLのようなちょっと変わったDSLを設計するとかそういう話ではない。確かにその種の言語内DSLのデザインには固有のセンスが必要とされるし、 Ruby DSL Handbook なんてが書かれているように実装にあたってもある種のテクニックが必要なのも確かだ。でも、それ以外の「ふつう」のライブラリのデザインは果たして簡単だろうか。 適切な粒度のクラスを定義する。必要な

    APIデザインケーススタディ —— Rubyライブラリを移植する前に読む本 - 世界線航跡蔵
    tkawa
    tkawa 2016/01/07
  • あなたの知らない超絶技巧プログラミングの世界 | 技術評論社

    概要 「役に立たないプログラムには価値がない?」 「プログラミングは仕事以外でやりたくない?」 書には、アスキーアート化、自己生成、縛りのあるプログラミングなど、実用性を追求するだけでは出会えないテクニックが満載。プログラミングが好きな方はもちろん、プログラミングが苦手な方でも楽しめる遊びをIOCCC入賞常連の著者が紹介します。ちょっぴり不思議なプログラミングの世界をのぞいてみませんか。 【特別寄稿】序文:まつもとゆきひろ 書に寄せて 子供のときの気持ちを思い出してみましょう。サーカスを見に行きました。猛獣使いに空中ブランコ、ナイフ投げ。素晴らしい技にワクワクします。これだけの技術を身につけるにはどれだけの訓練が必要なのでしょうか。感動します。でも、彼らがあまりにも自然にあまりにもかんたんそうに技を披露するのを見て、もしかしたら、ひょっとすると自分にも隠された才能があって、やってみたら

    あなたの知らない超絶技巧プログラミングの世界 | 技術評論社
    tkawa
    tkawa 2015/12/16
    購入
  • 情報処理2015年12月号特集記事「20年目のRubyの真実」インタビュー-情報処理学会

    笹田:今日はよろしくお願いします。「Rubyの真実」を久しぶりに読んでいただいたわけですが、一番ささるセンテンスってありました? 「確かに、これはそうだな」、というような。 松:結局プログラミング言語において、普通の人が注目するのは、客観的な評価ををしやすいところ、といっていること。 笹田:普通の人っていうのは? 松:プログラミング言語を選ぶ人とか。 笹田:ユーザですか? 開発者? 松:それは誰でも同じだと思うんだけど、次の仕事にどのプログラミング言語を使おうかとか、あるいは、より良いプログラミング言語の設計について研究しようとしているかもしれないし、自分でデザインして実装しようとしているかもしれないし。で、そういう人たちそれぞれ、言語を評価するわけだよね。使うか使わないかとか、この機能を採用するかしないかとか。そういうときに、最初に評価しがちなのは、機能がどうこうとか、性能がどうこ

    情報処理2015年12月号特集記事「20年目のRubyの真実」インタビュー-情報処理学会
    tkawa
    tkawa 2015/11/16
  • rubocop のしつけ方 - onk.ninja

    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:

    rubocop のしつけ方 - onk.ninja
    tkawa
    tkawa 2015/10/28
    .rubocop.yml 参考にしてます!
  • faml と slim、hamlit のパフォーマンスの差 - eagletmt's blog

    http://k0kubun.hatenablog.com/entry/2015/03/31/004021 を見て、「faml は slim と同等とか言いながら slim よりずっと遅いじゃん」と思われると悔しいので一応解説しておく。 なお、このエントリは slim 3.0.3 と hamlit 0.4.2 に基いている。 なぜこのベンチマークで faml が遅いのか、結論から言うと、この中で faml だけ自動 html エスケープが有効になっているからだ。 haml はデフォルトでは自動 html エスケープは無効であり、hamlit もそれに倣っている。 slim のベンチマークで用いている slim のビューでは == を使って明示的に html エスケープを無効化している https://github.com/slim-template/slim/blob/v3.0.3/ben

    faml と slim、hamlit のパフォーマンスの差 - eagletmt's blog
    tkawa
    tkawa 2015/04/09