Ruby

Cookpad Ruby Hack Challenge #5 [二日間開催] に行ってきた話

先週の月木に Cookpad Ruby Hack Challengeに行ってきました。 わたしは今回で4回目の参加になります。 1日目 1日目はコミッタの人が Ruby の実装や内部についてお話しつつ、実際に Ruby のコードを見たり触ったりしよう、というような内容でした。 1日目は…

Ruby で HTML を整形する

最近 HTML をゴニョゴニョする事が多いんですが、HTML が整形されておらず見づらい事がままあります。 いい感じに整形して出力したいなーと思って調べてみたら標準ライブラリに CGI.pretty というのがありました。 require "cgi" html = <<~EOS <html> <head> <title>Example D</title></head></html>…

Ruby でメソッドの定義元をシュッと調べる

デバッグなどしている時に Rails の実装を読みたい!、ということはよくあると思うんですが、そういう時にシュッと定義元を開きたいですよね。 優秀な IDE とかだとそういう機能もあるかもしれませんが、irb や pry を実行している時にサクッと調べたいです…

[CombNaf x 学生LT] 第12回 学生エンジニアLT大会!!!で LT してきた

してきました。 相変わらず学生ではないんですが、遠目で見ていたりします。 今回は普段の学生LT とは違い CombNaf という別のコミュニティと合同で開催されました。 そのため、参加者が多かったり、普段の学生LT とは結構雰囲気が違っていたような感じでし…

3,4月で気になった Ruby のパッチ、提案

書こう書こうと思っていて結局書いてなかったシリーズ。 とりあえず、現状まとめていたやつだけ放出。 Feature #14579: Hash value omission - Ruby trunk - Ruby Issue Tracking System JavaScript みたいに Hash を定義する時に『値を省略してキーだけ渡し…

1,2月で気になった Ruby のパッチ、提案

去年、Ruby のパッチを書き始めた頃から開発者向けの ML に参加しているんですが、その中で面白そうなパッチや提案が結構目に付くので定期的にまとめてみようかと。 Feature #13784: Add Enumerable#filter as an alias of Enumerable#select - Ruby trunk -…

Ruby 25 周年記念パーティでデバッグ出力を行う gem つくってきた

今日 2018年2月24日は Ruby が誕生してちょうど 25年目! ということで記念パーティに行ってきました。 まあなんとなく行ってきたんですが、別に偉い人の話を聞いてもしょうがないので会場ではひたすら Ruby のコードを書いていました。人の話を聞いているよ…

表参道.rb #31 で LINE でお天気bot をつくった話をしてきた

LT してきました。 今回もご飯がとても美味しすぎた…。 LINE でお天気bot をつくった話 https://osyo-manga.github.io/slide-omotesandorb-31-otenki-bot/index.html#/ と、いうことで今回は珍しく生産性のある話をしてきました。 年末に LINE でお天気 bot …

Ruby で (a ==1 && a== 2 && a==3) の結果を真にする

と、いうのが JavaScript 界隈で流行っているので Ruby でもやってみた == メソッドを定義する 多分一番簡単なやり方。 比較演算子そのものの結果を変えます。 a = Object.new def a.== other true end p a == 1 && a == 2 && a == 3 # => true a メソッドを…

Ruby の Hash のキーを Symbol に変更する

Ruby の Hash のキーを Symbol に変更したい場合、Ruby 2.5 で追加された Hash#transform_keys を使うとよさそう。 hash = { "name" => "homu", "age" => 14 }.transform_keys(&:to_sym) # => {:name=>"homu", :age=>14} こういうのをやりたいことは稀によく…

Toyama.rb に参加してきた

タイミングよくちょっと近くへ行く用事があったの Toyama.rb に参加してきました。 勉強会の内容はみんなで雑談しながらもくもくして最後にやったことを各自で発表するような会です。 やったこと Ruby 2.5 の導入 Ruby 本体をビルド ファイルローカルなトッ…

rbenv をインストールしたので覚書

今まで めんどくさかったので rbenv を使っていなかったのですが Ruby 2.5 をインストールする為に入れたのでその覚書。 rbenv とは?みたいなことは以下の記事を参照してください。 rbenvとは?(rbenvを利用したRubyのインストール) - Qiita 事前準備 す…

【一人 Ruby Advent Calendar 2017】Ruby 2.5 がリリース!!【25日目】

一人 Ruby Advent Calendar 2017 25日目の記事になります。 今日で最後!! Ruby 2.5 がリリース!! Ruby 2.5.0 リリース 直前にいろいろとあったようですが、無事リリースされました。 コミッタの皆さんお疲れ様でした。 Bundler の標準入りは延期 Ruby 2.…

【一人 Ruby Advent Calendar 2017】キーワード引数や Hash の渡し方や受け取り方いろいろ【24日目】

一人 Ruby Advent Calendar 2017 24日目の記事になります。 Ruby 3.0 でキーワード引数をぶっ壊すらしいのですが、現状の仕様をよく理解していないので簡単にまとめてみようかと。 Hash を渡す時に {} を省略 引数の最後が Hash 値の場合、{} を省略して書く…

【一人 Ruby Advent Calendar 2017】Ruby で外部ファイルを読み込むメソッドいろいろ【23日目】

一人 Ruby Advent Calendar 2017 23日目の記事になります。 今回は require などの外部ファイルを読み込むメソッドを簡単にまとめてみます。 Kernel.#require 引数の Ruby のライブラリを読み込みます。 ここでいう Ruby のライブラリとは、 Ruby のスクリプ…

【一人 Ruby Advent Calendar 2017】Ruby の % 記法【22日目】

一人 Ruby Advent Calendar 2017 22日目の記事になります。 そろそろラストスパート % 記法 Ruby には % 記法という特別なリテラルがあります。 例えば、%w という記法を使うと以下のように『空白文字で分割した』文字列の配列として定義されます。 p %w(hom…

【一人 Ruby Advent Calendar 2017】ginza.rb で Ruby 2.5 の話を聞いてきた【21日目】

一人 Ruby Advent Calendar 2017 21日目の記事になります。 ちょっと話が前後してしまいますが、火曜日にginra.rb に初参加してきたのでそのまとめを。 今回は Ruby 2.5 のおさらいということで Ruby 2.5 の機能を参加者全員で眺めて生きながら意見を言って…

【一人 Ruby Advent Calendar 2017】トップレベルの変数の扱い【19日目】

一人 Ruby Advent Calendar 2017 19日目の記事になります。 前回、トップレベルのメソッドの扱いについて書いたのですが、今回は変数に関してです。 トップレベルのローカル変数 トップレベルで定義されたローカル変数は通常のローカル変数と同じような感じ…

【一人 Ruby Advent Calendar 2017】トップレベルメソッドの扱い【18日目】

一人 Ruby Advent Calendar 2017 18日目の記事になります。 Ruby でトップレベルに定義したメソッドがどういう扱いなのかイマイチわからなかったので調べてみた。 トップレベルの self まず、トップレベルの self ですが、これは main という特別なオブジェ…

【一人 Ruby Advent Calendar 2017】module_function について【17日目】

一人 Ruby Advent Calendar 2017 17日目の記事になります。 #module_function とは #module_function は任意のメソッドを『モジュール関数』として定義するための Module のインスタンスメソッドです。 #module_function は以下のように module 内で使用しま…

【一人 Ruby Advent Calendar 2017】` メソッドで外部コマンドの実行結果を取得する【16日目】

一人 Ruby Advent Calendar 2017 16日目の記事になります。 遅れてしまいすみません。 Ruby の ` メソッド Ruby では外部コマンドを呼び出す手段がいくつかあるんですが、以下のように ` メソッドを使用することで `{command}` の結果を戻り値として取得する…

【一人 Ruby Advent Calendar 2017】Ruby の &. 演算子【14日目】

一人 Ruby Advent Calendar 2017 15日目の記事になります。 今回は Ruby 2.3 で追加された &. 演算子(ぼっち演算子)について紹介します。 &. 演算子 &. 演算子はメソッド呼び出し(.)の代わりに使用できる演算子です。 obj&.hoge と呼び出した場合 obj が n…

【一人 Ruby Advent Calendar 2017】Ruby の && と || 演算子【14日目】

一人 Ruby Advent Calendar 2017 14日目の記事になります。 今回は Ruby の && と || 演算子のお話。 && や || 演算子 Ruby の && や || 演算子はちょっと特殊で、真理値ではなくて『左辺、もしくは右辺を評価した値』を返します。 &&:左辺を評価して、 偽…

【一人 Ruby Advent Calendar 2017】Ruby に Method#=== が入った!!【13日目】

一人 Ruby Advent Calendar 2017 13日目の記事になります。 なんかこのツイートが目についたので、開発者会議で話題にしてみてacceptされました。— Akira Matsuda (@a_matsuda) 2017年12月12日 と、言うことでわたしが提案してパッチを投げていた Method#===…

【一人 Ruby Advent Calendar 2017】Ruby の演算子について【12日目】

一人 Ruby Advent Calendar 2017 12日目の記事になります。 今回は演算子について簡単に。 Ruby の演算子ってなに? さて、プログラミング言語では + や == 、<< などなど様々な演算子があります。 Ruby ではこれらの演算子は『メソッド』として定義されてい…

【一人 Ruby Advent Calendar 2017】外部からインスタンス変数にアクセスする【11日目】

一人 Ruby Advent Calendar 2017 11日目の記事になります。 今回も昨日に引き続いて外部からクラスの内部へアクセスするネタです。 インスタンス変数 さて、Ruby では @value というような『@ + 名前』の変数を使用することで『そのオブジェクト内で共通して…

【一人 Ruby Advent Calendar 2017】private メソッドを呼びだそう【10日目】

一人 Ruby Advent Calendar 2017 10日目の記事になります。 さて、今回は Ruby の private についていろいろ Ruby で private メソッドを定義する Ruby では private(という名前のメソッド)を使用することでメソッドを private として定義することができま…

【一人 vimrc advent calendar 2017】第7回 学生エンジニア限定LT大会!!!で Vim を布教してきた【9日目】

一人 vimrc advent calendar 2017 9日目の記事になります。 学生ではないんですが、学生エンジニア限定LT大会で発表してきました。 と、いうか前日まで行くかどうするか悩みまくって申し訳ない Vim の布教 https://osyo-manga.github.io/slide-gakusei_LT-vi…

【一人 Ruby Advent Calendar 2017】クラス名+メソッド名をいい感じに出力する【9日目】

一人 Ruby Advent Calendar 2017 9日目の記事になります。 デバッグ出力として "クラス名#メソッド名" を出力したい デバッグを行っている際に次のように "クラス名#メソッド名" を文字列で出力したいことがあります。 class X def homu # クラス名#メソッド…

【一人 Ruby Advent Calendar 2017】表参道.rb #29 ~ Module ~【8日目】

一人 Ruby Advent Calendar 2017 8日目の記事になります。 今日は表参道.rb #29 ~ Module ~参加して LT してきたのでそのスライドでも。 今回もご飯が美味しかった mixin と module について https://osyo-manga.github.io/slide-omotesandorb-29-mixin/#/ …