You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Ruby ecosystem development introduction workshop: Tokyo: 2026-08-05: PharaohKJ: ruby/ipaddr: Work log #2086
This is a work log of a "Ruby ecosystem development introduction workshop".
"Ruby ecosystem development introduction workshop" is an activity to increase Ruby ecosystem developers.
Here's been discussed in Japanese. Thanks.
作業ログ作成時の説明
以下のテンプレートを埋めてタイトルに設定します。埋め方例はスクロールすると見えてきます。
Ruby ecosystem development introduction workshop: Tokyo: #{YEAR}-#{MONTH}-#{DAY}: #{ACCOUNT_NAME}: #{PRODUCT_NAME}: Work log
タイトル例↓:
Ruby ecosystem development introduction workshop: Tokyo: 2026-08-05: kou: Rabbit: Work log
[pharaohkj] $ rbenv global 4.0.6
ruby-build: using openssl@3 from homebrew
==> Downloading ruby-4.0.6.tar.gz...
-> curl -q -fL -o ruby-4.0.6.tar.gz https://cache.ruby-lang.org/pub/ruby/4.0/ruby-4.0.6.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 22.7M 100 22.7M 0 0 26.0M 0 --:--:-- --:--:-- --:--:-- 26.0M
==> Installing ruby-4.0.6...
ruby-build: using libyaml from homebrew
ruby-build: using gmp from homebrew
-> ./configure "--prefix=$HOME/.rbenv/versions/4.0.6" --with-openssl-dir=/opt/homebrew/opt/openssl@3 --enable-shared --with-libyaml-dir=/opt/homebrew/opt/libyaml --with-gmp-dir=/opt/homebrew/opt/gmp --with-ext=openssl,psych,+
-> make -j 12
-> make install
==> Installed ruby-4.0.6 to /Users/pharaohkj/.rbenv/versions/4.0.6
[pharaohkj] $ ruby -v
ruby 4.0.6 (2026-07-14 revision 03b6d3f889) +PRISM [arm64-darwin25]
## Alternative
The [ipaddress](https://rubygems.org/gems/ipaddress) gem is a popular,
extensive library for manipulating IP addresses with a layer of
compatibility with `ipaddr`. If you need a richer set of features
than `ipaddr` has, try this library instead.
changed the title [-]Ruby ecosystem development introduction workshop: Tokyo: 2026-8-5: PharaohKJ : ruby/ipaddr : Work log[/-][+]Ruby ecosystem development introduction workshop: Tokyo: 2026-08-05: PharaohKJ: ruby/ipaddr: Work log[/+]on Sep 7, 2026
Activity
PharaohKJ commentedon Aug 5, 2026
issueを眺める
PharaohKJ commentedon Aug 5, 2026
ruby/ipaddr#94 → issue起票者が対応しそう
PharaohKJ commentedon Aug 5, 2026
なんとなく眺めたので、動かしてみるか。
PharaohKJ commentedon Aug 5, 2026
ruby が 4.0.5 で恥ずかしいのであげとくか、、、
PharaohKJ commentedon Aug 5, 2026
README.mdを参考に、とりまtestを実行。動く。
PharaohKJ commentedon Aug 5, 2026
Rubyの世界に足を踏み入れてから、相変わらずこのライブラリにはどんなインタフェイスがあり、利用者はどれを呼ぶべきなのか、というのがピンとこない。
issueの内容は「これ仕様?」というようなものがたくさんあり、仕様を明記してもいいのかもしれない。
そのため、testを元に、仕様を起こしてみる。
testに載ってないことは、「考慮されていない」「後で考える」ことであると想定できる。
LLMに頼ってみる。
PharaohKJ commentedon Aug 5, 2026
とりあえず愛するRubyMineでcloneしたディレクトリを開く。
PharaohKJ commentedon Aug 5, 2026
そもそもどんな挙動が正しいのかドキュメントも眺めてみる。
このgemのrdocを読むにはどうしたらよいのだろうか?
教えていただいた結果、以下
PharaohKJ commentedon Aug 5, 2026
READMD.md を読むと、以下となっていて、「標準が備えているべきのもの」と「そうじゃないもの」のセンスが問われている気がする、、、。
PharaohKJ commentedon Aug 5, 2026
ruby/ipaddr#83 を実装してプルリクしてみようと思う。
実装した。
テストも追加した。
しかしながら、その提案通りに実装すると、内部で固定文字列をひたすら持つことになり、計測したところ
14,0KiBの増加であった。
ruby -robjspace -Ilib -e 'require "ipaddr"; v4=IPAddr::IPV4_SUBNET_MASKS; v6=IPAddr::IPV6_SUBNET_MASKS; def deep(a) ObjectSpace.memsize_of(a)+a.sum{|s| ObjectSpace.memsize_of(s)} end; puts "ruby=#{RUBY_VERSION}"; puts "v4_count=#{v4.size}"; puts "v6_count=#{v6.size}"; puts "v4_payload_bytes=#{v4.sum(&:bytesize)}"; puts "v6_payload_bytes=#{v6.sum(&:bytesize)}"; puts "v4_memsize=#{deep(v4)}"; puts "v6_memsize=#{deep(v6)}"; puts "total_memsize=#{deep(v4)+deep(v6)}"'結果
PharaohKJ commentedon Aug 5, 2026
14KiBはでかすぎないか、、、?
netmask?は計算で出した方が優しいのかもしれない。PharaohKJ commentedon Aug 5, 2026
そりゃまぁこういう文字列を内部で定義してるんだからでかいよね。
PharaohKJ commentedon Aug 5, 2026
動的生成にした。forkしてコミットしてプッシュしてプルリクもした!やったぜ。
ruby/ipaddr#117
github-actions commentedon Sep 7, 2026
おつかれさまでした!
ワークショップの終了にともないissueを閉じますが、このまま作業メモとして使っても構いません 👌
ワークショップの感想を集めています!
ブログなどに書かれた際は、このページへリンクの追加をお願いします 🙏
またの参加をお待ちしています!
[-]Ruby ecosystem development introduction workshop: Tokyo: 2026-8-5: PharaohKJ : ruby/ipaddr : Work log[/-][+]Ruby ecosystem development introduction workshop: Tokyo: 2026-08-05: PharaohKJ: ruby/ipaddr: Work log[/+]