The Future of Rails as a Full-stack Framework Powered by Hotwire @ Rails World 2023, Amsterdam
こんにちは。メドピアのRuby(Rails)化をお手伝いしている@willnetです。最近はエンジニアが増えた影響か、Railsの質問に答えていることが多いです。 以前、Railsの太ったモデルをダイエットさせる方法についてというタイトルでPOROを使っていこうという話を書きました。その際にコード例などもなるべく多く載せるようにしたのですが、このエントリだけを読んだ状態では、いざ「POROを使ってみよう!」としたときにまだ悩む余地がありそうです。 POROはその名の通り普通のRubyオブジェクトなので、いろんな書き方ができてしまいます。それなりに経験がある人でないと、どのように書いたらいいんだろう…と悩んで時間を使ってしまいそうですね。さらに、複数人で開発しているチームだと書き方のバラツキも気になるところです。きっと、POROを書くときのお作法が決まっている方が開発しやすいはず。 そこで、
2018年12月14日、品川シーズンテラスカンファレンスにてRubyアソシエーションが主催するイベント「Ruby Business Users Conference 2018 Winter」が開催されました。すでにRubyを活用しているユーザーや、これからRubyをビジネスに活用しようと考えている人が集い、情報交換を行いました。基調講演「プログラミング言語サバイバル」に登壇したのは、一般財団法人Rubyアソシエーション理事長のまつもとゆきひろ氏。Rubyの開発をはじめて25年、今日のプログラミング言語の潮流とRuby開発者として感じている危機感について語りました。 プログラミング言語サバイバル まつもとゆきひろ氏(以下、まつもと):どうもこんにちは、まつもとと申します。今日は「プログラミング言語サバイバル」というタイトルでお話をしようと思います。 今年は、2月にイベントをやりましたが、Ru
Ruby 2.5 がリリースされたので、そろそろ Ruby 2.3 から 2.4 にしようかと思う今日この頃です。 この前 Ruby 2.5 の変更内容の記事を書きましたが、Ruby 2.4 についてちゃんと調べてなかったので今さらですが調べてみました。 元ネタは https://github.com/ruby/ruby/blob/v2_4_3/NEWS です。 長くなったので3つにわけてます。 全般 - このページ 組み込みライブラリ 標準添付ライブラリ 条件式中での多重代入が可能 メソッド引数で rescue 修飾子が有効 トップレベルで return 可能 Refinements Symbol#to_proc で Refinements が有効 BasicObject##__send__ で Refinements が有効 Module#refine の引数にモジュールを指定可 Mo
2017年12月25日、プログラミング言語Rubyの新バージョンである「Ruby 2.5」が公開された。Rubyの新バージョンは例年、クリスマスにリリースされる。翌日の26日には「Ruby 2.5リリースパーティー」が開かれ、Rubyの開発者(コミッター)がRuby 2.5の改善点を披露した。 Ruby 2.5の最大の特徴は処理の高速化。様々な箇所が高速化のために改良されている。また、2020年のリリースを目指している「Ruby 3.0」の機能を実現するための準備も同時に実施しているという。 冒頭ではRubyのオリジナルの開発者であるまつもとゆきひろ氏がテレビ電話で参加。開発がリリースのギリギリまで続いてしまった点を反省した。「せめて11月までにまとめておくべきだった」(同氏)。また、クリスマスリリースはプレゼントという意味があるものの、家族を持つコミッターが増えてきたため、「少し前の22
この記事は、技術系同人誌としてまとめるはずだった原稿をほぼそのまま転載しています。諸事情により向こうかなり長い間同人誌即売会に売り手として参加することが難しくなったためです。 長いですが、お楽しみいただければ幸いです。 まえがき この本は、Rubyコミッタである卜部昌平に、その妻である私、卜部一恵がRubyのtrueとfalseについて突っ込んで聞いてみた話です。本文は両者の対話形式で進んでいきます。 私は昌平と同じ大学同じ研究室に所属していたのでプログラミングについての基礎は一応ありますが、エンジニアとして職を得たことはありません。つまり、プログラミング初級者です。この本はそのくらいのレベル感の本だと思います。 私自身が初級者なりにRubyを使っていて、if文が思った通りに動かない、そんなときに抱いた疑問からこの本が生まれました。 同じような疑問を抱いている方の一助になれば幸いです。 は
簡単に言うと、rbenv の shims はシェルの `PATH` 探索とは独立して実行ファイルを探索しているため。 以下、単に rbenv としているけれどクローンである plenv なども同様と考えてよい。 shims とは rbenv の README が詳しい。 Shims are lightweight executables that simply pass your command along to rbenv. So with rbenv installed, when you run, say, rake, your operating system will do the following: Search your PATH for an executable file named rake Find the rbenv shim named rake at the
Pythonプログラマーというか、元々Python(ときどきR、C言語)で数値シミュレーションをしていた学生が、就職してRubyでWeb開発を行うにあたって勉強したことを書き連ねていくだけの記事です。 もし自分と同じような立場の人(これから後輩としてもどんどん増えていくかも!)がいたら、「ここを押さえておけばRubyは問題なく書けるよ」と教えられるように書いておきます。というのも、レビューを行っていた先輩とのプログラミングのスキルとの開きがあり、先輩も私も「どこが分かってないのか説明できない」状態になってしまってお互いに困ってしまった経験があるからです。 RubyとPythonはよく似ているのですが、思想や見た目で違う部分が多く、片方を勉強するともう片方の理解も深まります。 たまに2ちゃんねるのオカルト板である「見たことある世界によく似た異世界に迷い込んだ」みたいな感覚で、なかなか面白い経
Articles Products Gallery FTP SKK About Contact Admin xargsでファイルの中身の行(スペースあり)を引数にする 標準出力を別のコマンドの引数にしたいときに便利なxargsですが、空白があるときには厄介なときがあります。備忘録を兼ねてまとめました。 シナリオ スペースを含む複数行を全部、別コマンドの引数にしたい。 input.txt の内容: foo bar baz bar hoge piyo piyo print.rb の内容: #!/usr/bin/env ruby puts 'Printing...' p ARGV 期待する出力: Printing... ["foo bar", "baz bar", "hoge piyo piyo"] Attempt 1 まぁこんなことは思いついた時点で頭の中でボツですが、一応。 Command
人工無脳とうたっていて、Rubyを使って一通りのことがわかる本 なのだが、大変評判の本だった作者が亡くなってしまい、増版がなく書籍の値段が高騰 本書は復刊ドットコムやkindle版でも入手することが可能 2016年4月に、大手の会社が一斉にチャットボット(人工無能)用のAPIやSDKの発表をし始める。人工無能は技術者と呼ばれる一部の人間に親しまれてきたREPL( Read-eval-print loop)式のUIの一般への普及の入り口と考えることもできる。>サポートサイトでサンプルも落とせます Rubyは様々な言語の良いところを集めた言語だ。一昔前のPerlやPythonを思い起こさせる。言語を作るための言語のメインストリームはやはりC言語であるものの、WEBからIoT(Internet of Things)などの発展からビックデータと呼ばれる個人消費者向けの大量のデータを処理する需要が増
fluentdな人達と話していると定期的にRubyのオブジェクト生成が遅いとdisられます。 本質的にしょうがない部分もあるんですが、それにしても遅い部分も結構あるので、おもむろにperf statとperf recordを取ってみましょう。 % sudo perf stat -d ./miniruby -e'GC.disable;i=1000000;while (i-=1)>0;Hash.new;end' Performance counter stats for './miniruby -eGC.disable;i=1000000;while (i-=1)>0;Hash.new;end': 467.629812 task-clock (msec) # 0.993 CPUs utilized 19 context-switches # 0.041 K/sec 2 cpu-migratio
(訳注: 2016/3/2、頂いたフィードバックをもとに記事を修正いたしました。) Ruby on Railsは最近、急激に注目を集めていますが、その原因はほとんど、この言語が斬新なテクノロジーとしてもてはやされたことと、タイミングにあります。技術的な優位性は時間の経過とともに失われますから、タイミングがよかっただけでは、一過性のブームに終わり、このムーブメントの隆盛は長続きしません。従って、「Railsがいかにして、適切な技術としての位置を維持し続けるるだけでなく、影響力とコミュニティを拡大し続けてきたのか」をより多くの人に説明していく必要があります。そして、その維持・拡大を可能にした/していく要因は、物議を醸すことさえあるRailsの基本原則にあると考えています。 この基本原則はここ10年ほどの間に進化を続けてきましたが、最も強固な柱となっているルールはやはり、公開当初から制定されてい
なぜ読んだか メタプログラミング Ruby を読んだ ので、この勢いで Ruby のことをもっと深く知りたかった。 どうだったか エキサイティングな体験だった。 この本には Ruby が Ruby コードをどうやって実行しているのか、ということが書いてある。字句解析してトークン列に変換して、構文解析してAST(抽象構文木)ノードに変換して、コンパイルして YARV 命令列に変換して、それを YARV(仮想マシン) が実行する....どうやって?ということが書いてある。 登場する Ruby のコードは単純なものばかりだが、その背後にあるしくみ、C のコードは複雑だ。にもかかわらず、この本を読んでいると自分がそれをいとも簡単に理解したかのような錯覚に陥るので爽快感がある。ワクワクする。それはきっとこの本の著者の説明が驚異的に上手なのと、豊富な図のおかげだろうと思う。 著者の Pat Shaug
本稿は、ブダペストで開かれたイベント「 RuPy 」で、Pat Shaughnessyが披露したプレゼンの内容をまとめたものです。 プレゼンの映像はここ から視聴できます。 本稿は当初、 同氏の個人ブログ に投稿されましたが、同氏の了承を得て、Codeshipに再掲載します。 このイベントは「RubyとPython」に関するカンファレンスなので、RubyとPythonでは、ガベージコレクション(以下「GC」)の動作がどう違うのかを比較すると面白いだろうと私は思いました。 ただしその本題に入る前に、そもそもなぜ、GCを取り上げるのかについてお話しします。正直言って、すごく魅力的な、わくわくするテーマではないですよね? 皆さんの中でGCと聞いて、心がときめいた方はいらっしゃいますか? [実はこのカンファレンス出席者の中で、ここで手を挙げた人は数名いました!] Rubyコミュニティで最近、Rub
この前のARC037で惨敗したので, プロコンしばらくやってみようかという気になっている. Rubyでちょっとやってみた結果, Rubyアカンという結論になった. アカン理由を列挙する. だるいはずのC++の方がstdinの取得がなぜか楽. Rubyはgets.split.map(&:to_i)とか書く必要があり, 結構うんざりする. Rubyで美しく書けるぜ!と思って書くと, 大抵TLEする. 組み合わせとかを全部生成してから処理という関数的な考え方はダメ(現実社会ではふつうこちらが好ましい). そういう場合は大抵はdpしないと死ぬ. そもそも想定解法でもTLEすることがあって, これは萎える. 主催者側も, 全言語で試験してるわけではないんだろう. 配列の確保が遅い. 例えば3003の3次元配列を確保しようとすると数秒かかる. この時点でTLE. int dp[300][300][30
#naruhounix を読んだ。 正直「プロセス?あれでしょ、なんか動くやつ。」というレベルだったので非常に勉強になった。 Rubyで書かれているのも、余計なこと(Cの文法とか例外処理とか)がついてこなくて理解しやすい。 書き方はいいからイメージが知りたいんや!というタイプの方におすすめ。 逆にRubyの余計なこと(このバージョンでは修正済みとか)がついてくるのでRubyist寄りであることはいなめない。 プロセスをforkしてもリソースは同じみたいなところはポインタ的な解釈。 あとfork後ちょっとでもメモリの内容が変わったら全コピーだと思ってたけど全然違ってオブジェクト単位?(このへんあやふや)というか本当に変わった部分だけコピーされるみたいだ。 例えばRailsアプリとかは立ち上がる際に大量のフレームワークのコードとアプリケーションのコードを読み込んでいるので数秒とかかかる。 しか
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く