Gemのバージョンを比較する

文字列で比較するとうまく比較できない。

'1.0.9' < '1.0.10'
# => false

Gem::Version を使うと文字列のまま比較できる。

また、 prebeta などの文字が入っていても正しく比較できる。

require 'rubygems'
Gem::Version.new('1.0.9') < Gem::Version.new('1.0.10')
# => true

# pre とか beta とか入ってても比較できる
Gem::Version.new('1.0.0pre1') < Gem::Version.new('1.0.0')
# => true

class Gem::Version (Ruby 3.0.0 リファレンスマニュアル)

ファイルパスを指定して irb と reline を起動したい

はじめに

私は irb をよく使うので、せっかくなら常に最新版を使ってバグを見つけたいなと思いました。 irbrelinegit clone しておおむね master に追従しているので、ファイルパスを指定して irb を起動することにしました。

ruby -I <path>

Ruby 起動時に -I オプションをつけると、探索先を追加で指定することができます。 追加された探索先は $: で確認できます。

i.rb

puts $:

-I オプションをつけずに実行してみます。

~/sandbox
❯ ruby i.rb             
/usr/local/Cellar/rbenv/1.1.2/rbenv.d/exec/gem-rehash
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby/3.0.0
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby/3.0.0/x86_64-darwin18
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby/3.0.0
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby/3.0.0/x86_64-darwin18
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/3.0.0
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/3.0.0/x86_64-darwin18

-I オプションをつけて実行してみます。

❯ ruby -I ~/sandbox i.rb
/Users/mi/sandbox
/usr/local/Cellar/rbenv/1.1.2/rbenv.d/exec/gem-rehash
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby/3.0.0
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby/3.0.0/x86_64-darwin18
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby/3.0.0
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby/3.0.0/x86_64-darwin18
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/3.0.0
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/3.0.0/x86_64-darwin18

指定したパスが探索先に増えました!

注意点

複数のパスを指定する場合は複数の -I オプションを付ける必要があるようです。

~/sandbox
❯ ruby -I ~/sandbox ~/sandbox/ruby i.rb
ruby: Is a directory -- /Users/mi/sandbox/ruby (LoadError)

~/sandbox
❯ ruby -I ~/sandbox -I ~/sandbox/ruby i.rb
/Users/mi/sandbox
/Users/mi/sandbox/ruby
/usr/local/Cellar/rbenv/1.1.2/rbenv.d/exec/gem-rehash
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby/3.0.0
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby/3.0.0/x86_64-darwin18
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby/3.0.0
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby/3.0.0/x86_64-darwin18
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/3.0.0
/Users/mi/.rbenv/versions/3.0.0/lib/ruby/3.0.0/x86_64-darwin18

rbenv のバージョンを指定する

環境変数 RBENV_VERSION でバージョンを指定することができます。

~/sandbox
❯ RBENV_VERSION=2.7.2 ruby -v                                                                                                                            
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin18]

~/sandbox
❯ RBENV_VERSION=3.0.0 ruby -v
ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-darwin18]

irb をファイルパス指定で起動する

irb/exe/irb から起動できます。

コマンド

RBENV_VERSION でバージョンを固定し、-I オプションで探索先を追加し、irb/exe/irbirb を起動するコマンドです。

$ RBENV_VERSION=3.0.0 ruby -I /Users/mi/ghq/github.com/ruby/reline/lib -I /Users/mi/ghq/github.com/ruby/irb/lib /Users/mi/ghq/github.com/ruby/irb/exe/irb

実際に使ってみました。最新版の irbreline を参照できていることがわかりました。

$ RBENV_VERSION=3.0.0 ruby -I /Users/mi/ghq/github.com/ruby/reline/lib -I /Users/mi/ghq/github.com/ruby/irb/lib /Users/mi/ghq/github.com/ruby/irb/exe/irb
irb(main):001:0> irb_info
=> 
Ruby version: 3.0.0
IRB version: irb 1.3.1 (2021-01-12)
InputMethod: ReidlineInputMethod with Reline 0.2.1 and /Users/mi/.inputrc
.irbrc path: /Users/mi/.irbrc

irb(main):002:0> Reline::VERSION
=> "0.2.1"
irb(main):003:0> $:
=> 
["/Users/mi/ghq/github.com/ruby/reline/lib",
 "/Users/mi/ghq/github.com/ruby/irb/lib",
 "/usr/local/Cellar/rbenv/1.1.2/rbenv.d/exec/gem-rehash",
 "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/byebug-11.1.3/lib",
 "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/extensions/x86_64-darwin-18/3.0.0/byebug-11.1.3",
 "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/coderay-1.1.3/lib",
 "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/method_source-1.0.0/lib",
 "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib",
 "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/pry-byebug-3.9.0/lib",
 "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby/3.0.0",
 "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby/3.0.0/x86_64-darwin18",
 "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby",
 "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby/3.0.0",
 "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby/3.0.0/x86_64-darwin18",
 "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby",
 "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/3.0.0",
 "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/3.0.0/x86_64-darwin18"]

gem installしたgemのパスを知りたい

gemのインストール場所は、$ gem environment の出力結果の INSTALLATION DIRECTORY で分かる。

❯ gem environment  
RubyGems Environment:
  - RUBYGEMS VERSION: 3.2.3
  - RUBY VERSION: 3.0.0 (2020-12-25 patchlevel 0) [x86_64-darwin19]
  - INSTALLATION DIRECTORY: /Users/mi/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0
  - USER INSTALLATION DIRECTORY: /Users/mi/.gem/ruby/3.0.0
  - RUBY EXECUTABLE: /Users/mi/.rbenv/versions/3.0.0/bin/ruby
  - GIT EXECUTABLE: /usr/local/bin/git
  - EXECUTABLE DIRECTORY: /Users/mi/.rbenv/versions/3.0.0/bin
  - SPEC CACHE DIRECTORY: /Users/mi/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Users/mi/.rbenv/versions/3.0.0/etc
  - RUBYGEMS PLATFORMS:
     - ruby
     - x86_64-darwin-19
  - GEM PATHS:
     - /Users/mi/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0
     - /Users/mi/.gem/ruby/3.0.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/mi/.rbenv/versions/3.0.0/bin
     - /usr/local/Cellar/rbenv/1.1.2/libexec
     - /Users/mi/.rbenv/plugins/ruby-build/bin
     - /usr/local/Cellar/vim/8.2.1600/bin
     - /Users/mi/.rbenv/shims
     - /Users/mi/.rbenv/bin
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin

$ gem environment gemdir でも分かる

/Users/mi/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0

URI#escape と URI#unescape は Ruby 3.0.0 から削除された

タイトルの通り、 URI.escapeURI.unescapeRuby 3.0.0 から削除されました。長い間非推奨となっていましたが、ついに 3.0.0 で削除されました。

代わりに ERB::Util.#url_encode , CGI.escape , URI.encode_www_form , WEBrick::HTTPUtils.#escape_form , WEBrick::HTTPUtils.#escape などの使用を検討してください。

削除のPRはこちら。

github.com

URI.encode_www_form はこちら。

docs.ruby-lang.org

はじめての自作キーボードを作る(2)遊舎工房でmeishi2ビルド編

はじめに

この記事は2020年ふりかえりアドベントカレンダー 15日目です。書いているのは12月18日です。昨日の記事は はじめての自作キーボードを作る(1)情報収集編 - いまブログです。

あらすじ

自作キーボードのさわり心地を確かめることと、meishi2キットを作るために遊舎工房に向かいました。

遊舎工房

秋葉原にある自作キーボード専門店です。

yushakobo.jp

自作キーボードグッズがものすごくたくさんあります!!魅力的なキーボードやグッズが多くて店内じっくり見てると時間がすごい勢いで飛んでいきます。

店内の様子はこの動画がとても参考になります。

www.youtube.com

meishi2 キットを作る

meishi2 キットを購入するときに、キースイッチとキーキャップを自由に選ぶことが出来ます。

店舗にはキーテスターがあり、様々なキースイッチで好きなだけ試し打ちができます。 また、展示されている自作キーボードキットで打ち心地を試すことも出来ます。

キースイッチについてはこちらの記事がとても参考になりました。

メカニカルキースイッチの好みの話 - 自作キーボード温泉街の歩き方

色々押してみて、これらのスイッチでmeishi2を組んでみることにしました。

  • Gateron milky black
    • 展示されていた Corne Cherry で使われていてしっくりきたので試してみました。
  • Kalih box brown
    • 茶軸を試してみたかったので。
  • Gateron silent red
    • 赤軸・静音も1つ試してみたかったので。
  • Kalih speed silver
    • 最大限軽くするとどうなるのか試してみたかったので。

というかんじで選びました。

キーキャップはバラ売りしているものを買いました。

実際に作ってみる

meishi2 キーボードを購入し、店員さんに工作机を使いたいことを伝えます。2020年現在は2時間で500円で、はんだなどの消耗品も利用できます。

自作キーボードは作者の方がビルドガイドを作ってくれているため、そちらを見ながら作業します。

meishi2 キットは初心者にも分かりやすいよう丁寧に解説してくれているので大体これを見ながら作業できます。

biacco42.hatenablog.com

はんだ付けはなんとかできましたが、ProMicroへの書き込みがうまくいかずハマりました。

原因は2つあり、1つはProMicroが奥までしっかり刺さっていなかったこと、もう1つは書き込みがなぜかうまくいかなかったことでした。リセットボタン何回押してもハンダ温め直してもうまくいかず悩んでいましたが、店員さんにRSTとGNDをピンセットでショートしてもらって書き込みができるようになりました。

QMKファームウェアの書き込みができない – 遊舎工房サポートサイト

完成

f:id:imaizumimr:20201219040326j:plain

出来ました!2時間以内に終わって良かったです。

できあがるとしみじみと眺めてしまいます。これを作ったんだなぁ…と。あと押すのが楽しくて連打してしまいますね。

このあと作った勢いで Corne Cherry と 遊舎工房のはんだ付けセットと、Gateron milky blackと、適当なキーキャップを購入して作成意欲を高めていきました。

つづく

はじめての自作キーボードを作る(1)情報収集編

はじめに

この記事は2020年ふりかえりアドベントカレンダー 14日目です。書いているのは12月18日です。昨日の記事は 2020年買って良かったもの - いまブログ です。

きっかけ

内定したので就職が決まるまでに何をやりたいかな、と思ったときに自作キーボードを作りたいな!!と思い情報収集をはじめることにしました。

最初に読んだもの

(ダウンロード版)自作キーボードカタログ 2020 - 自キ温泉街販売所 - BOOTH

めちゃくちゃ参考になりました。これを見て40%キーボードがどんなものかわかるようになりました。こういうカタログは見ているだけでも楽しいです。

あと付録としてキーボード原寸大シートが付属しているため、大きさのイメージをつけやすくて良かったです。

Corne Cherry こんなに小さいのかー!と思いました。

念願の分割キーボード ErgoDash mini をつくった - kasumi∞blog

フィヨルドブートキャンプの先輩のブログ。フィヨルドブートキャンプのミートアップ(オンライン)で自作キーボードいいですよ!入門してから1ヶ月くらいで作れました!と仰っていたのもあって作りたくなりました。

これから自作キーボードを始め、遊舎工房に行くあなたへ - takkanm’s blog

遊舎工房に行く前に読みました。悩んだら店員さんに聞こうと勇気が出ました。

komagataのブログ

フィヨルドブートキャンプのメンターのkomagataさんも自作キーボードを作っているので参考にしました。

あたりをつける

自作キーボードカタログ、遊舎工房のサイトを眺めて自分の欲しいキーボードを考えました。

割れている物を使いたかったので、

  • Lily58 pro
  • claw44
  • corne cherry

を候補にしました。HHKBからの乗り換えなので40%に慣れられるか不安で60%がいいかなぁとか考えていました。

はんだづけへの不安

はんだ付けは中学生以来やったことがなく不安だったので、まずは遊舎工房でmeishi2 キットを組んでみて考えることにしました。

meishi2 キットは4キーのキーボードなので初心者にぴったりです。meishi2 キット | 遊舎工房

遊舎工房には工作室があり、はんだ付けキットを借りたり、困ったときに店員さんに相談することができるので初心者にやさしいです。

その他

  • キースイッチは実店舗で押してから考えることにしました。
  • キーキャップもイメージが沸かなかったので店舗で考えることにしました。

つづく

おまけ

この文章はCorne Cherry で書いています。記号と矢印以外は慣れてきました。

2020年買って良かったもの

はじめに

この記事は2020年ふりかえりアドベントカレンダー 13日目です。昨日の記事は Rails Girls Gathering Japanに参加 - いまブログ です。

こんにちは。趣味は買い物の ima1zumi です。2020年もそろそろ終わりが近いので、買って良かったものリストでもつくってみようと思います。「これ悪くはないけどもうちょっと考えて買ったほうが良かったな」と思っているやつも紹介しようと思っていたのですが、思ったより記事が長くなってしまったのでそちらについては気が向いたら書きます。

軽く前提

2020年は働いておらず、ずっと家でプログラミングスクール(FJORD BOOT CAMP)の学習をしていました。ほとんどの時間を画面の前で過ごしています。

買ってよかったもの

購入して良かった!これがない生活には戻りたくない!と思っているものたちです。

1. トラベラーズノート レギュラーサイズ

www.tfa-onlineshop.com

手帳探しの果てにたどり着いた相棒(のはず)です。2020年10月頃から使用中。

私は万年筆ユーザーで文字を書くことが好きなので、紙の手帳はずっと使っています。スタンダードなタイプの手帳は大体試しました。その結果月間ブロックタイプ、週間レフトタイプ、週間バーチカルタイプ、1日1ページタイプで予定を管理することには合わないということが分かっています。また、月間ブロックで予定を管理すると Google カレンダーとの二重管理になり予定管理が崩壊するので、月間ブロックは予定管理用として使わないことにしました。

これまでの使用感として、週間ブロックタイプ、変形週間ブロックタイプ、1日2ページタイプ(フランクリンプランナー)はわりと良かったので、自分にとって書くスペースが広い方がいいということが分かっています。しかし1日に書くスペースが限られていると、時々めちゃくちゃ書きたくなったときに「続きはこちらのメモページへ…」となりページが飛び飛びになるのが不満でした。

メインの筆記具が万年筆で、かつ文字が大きめ(5mm方眼には収まらない)なので、手帳自体の大きさはバイブルサイズ以上必要だということも分かりました。また、トモエリバーやthin paperといった手帳向けの薄い紙は書き心地がそれほどよくないので、あまり好みではありませんでした。手帳本体の薄さは求めておらず、できれば MDノート や ニーモシネ や ノーブルノートの紙 といった厚めの紙を使いたいという気持ちもありました。

去年「手帳に予定管理機能を求めてないんだからMDノートでバレットジャーナルにすればよくね?」と思いMDノート(A5・無地)も使っていたのですが、なぜだかしっくりこなかったんですよね…おそらく無地で日付がないと自分にとっては逆に書きにくいと分かりました。しかも手で日付を書くのは嫌でした。日付を書きたくないくらいなので、バレットジャーナルも続きませんでした。

2020年10月頃に来年の手帳のことを考えていてネットの海を彷徨っていると、トラベラーズノートを見かけました。A5は大きすぎる、でもバイブルサイズ以上の大きさは欲しい、と思っていた自分にとってぴったりのサイズのように見えました。また、紙質もMDノートと同じ用紙ということで安心して使えることがわかりました。こういった細いタイプのノートを使ったことがないのでそこは少し不安でしたが、リフィルだけなら気軽にチャレンジできるのでとりあえずリフィル(日記タイプ)を買ってみることにしました。このリフィルはナンバリングしてあり1日1ページっぽく扱えるので、日付問題も解決できるだろうと思いとりあえず使い始めることにしました。

www.tfa-onlineshop.com

使ってみるとサイズがめちゃくちゃちょうど良かったんです!幅が狭く適度な地点で折り返せる、余白が目立たないのが書きやすいと分かりました。不満もなく使い続けられたので、カバーを買うことにしました。その際にメインのリフィルは日記タイプから方眼タイプにしました。方眼タイプの方が1ページに収まらない日も安心だからです。日付を手書きで書きたくないという問題は日付印を買うことで解決しました。

www.tfa-onlineshop.com

ちなみに、公式のトラベラーズノートのカバーは革です。革製品は好きなんですが、文具屋で見かける傷だらけのトラベラーズノートを見るとちょっとなぁ…と思って今まで手を出せずにいました。ですが東京駅限定モデルがかわいかったので、傷がつくデメリットを上回り購入する動機になりました。私が使っているトラベラーズノートも、傷は入っていますがデザインがかわいいのでヨシとしています。最近ちょっと乾燥が気になってきたので、ラナパーというレザートリートメントを塗りました。しっとりしてより可愛らしくなったと思います。

これが手帳探しの旅の果てになることを祈っています。

2. ディスプレイ

フリマアプリで DELL の 27 インチ 4K モニタを購入しました。3万円くらいでした。

特に問題なく使えています。画面が広いと何かと便利です。特に何かの資料を見ながら書物をするときには無いと困ります。画質にも満足しています。

最近もう1枚ディスプレイが欲しくなってきました。

3. トラックボール

私が購入したのはこちらですが、今は新しいモデルが出ているのでそちらでもよさそうです。

これを使う前は AppleMagic Mouse 2 を使っていました。mac ならではの便利モーションをたくさん発動できて便利だったのですが、いかんせんマウスの形状が薄いためよく手首が疲れてしまっていました。1日の終わりに手首を振って疲れを取ろうとする日が増えたため、手首に優しいというトラックボールを使い始めました。一瞬で慣れました。運命でした。トラックボールなしの生活には戻りたくありません。人差し指タイプとか別のタイプも気になっています。

個人的な難点は USB を1枠使うことです。 Magic Mouse は USB 枠を使わないのでよかったんですが…。使用している PC が macbook 12インチ なので USB type-C ポートが1枠しかなくてUSBは常に取り合いになっているのでつらいです。あと、縦横スクロールできるときに横スクロールする方法がわからなかったので2ボタンを横スクロールに当てました。

4. 薄い財布

superclassic.jp

電子マネー決済メインにしようと思って財布を薄くしました。自然とポイントカードが絞られ、いろいろスッキリしました。この財布以外にも薄い財布はいろいろあるので興味がある方は探してみればいいんじゃないかと思います。私は薄い財布のブッテーロレザーバージョンを使っているのですが、革の雰囲気も好みです。

難点はこの財布を使っているとときおりじっと見つめられることと、財布を開いたときにお札が丸見えになることです。小銭はあまり入らないので、極稀に小銭入れが閉まらなくなって困ることがありますが、意識的に小銭を消費していればそれほど困らなかったです。

5. ブラジェクのガラス爪やすり

私は自分の爪の形があまり好きではないんですが、twitter で「1年爪のメンテしてたらキレイな爪の形になったよ!」というツイートをみかけて私もそうなりたいと思って購入しました。すごく綺麗にやすりがけできます。一度使うと戻れなくなる。

乾いたまま使うと粉が散るので濡らして使ってます。

6. iwakiのダブルウォールグラス

寒い季節はコーヒーを淹れても一瞬でアイスコーヒーになってしまうのが嫌で購入しました。保温タンブラーはなんとなく好きじゃないのでダブルウォールにしてちょっとでもぬくもりをとどめておきたいと思い買いました。温かみを感じる温度で飲み切ることができ、満足しています。

ダブルウォールグラスは体積が大きくなりがちで持ちにくいので、取っ手があるととっても便利です。

これは食洗機対応ではありますが、ダブルウォールグラスは脆く食洗機にかけるのが怖いので手洗いしています。

7. グノーシア

グノーシア|オンラインコード版

グノーシア|オンラインコード版

  • 発売日: 2020/06/02
  • メディア: Software Download

やって良かったゲームです。本当に…。

実プレイ時間3日くらいで終わる軽めのゲームなので、年末年始にぜひ。

8. コスメデコルテのフェイスパウダー

10 misty beige を使っています。ちょいマットより。

これをはたくと自然に顔色がよくなり、自分の顔面の状態への満足度が高くなります。あと日焼け止め塗ったり汗かくような場所でのテカリ防止にもなります。

自然にトーンを上げてくれるので、ちゃんとメイクをするほどではないけどちょっと何かしたい日にぴったりです。手軽だし塗るたびに満足するのでお得な感じがします。他のフェイスパウダーに比べて高いのですが、粉がかなり多いのでそういう理由もあるのかなと思います。

www.cosmedecorte.com

9. キッチンペーパーホルダー

あるべきものがあるべき場所にあるのは幸福だということが分かりました。おおむね片手で切れます。

10. エビオス錠

飲んでいるとお腹の調子がいいので欠かせなくなりました。

おまけ

今年は自作キーボードキット Corne Cherry を買ったのですが、まだ組み立てていないので選考外にしています。楽しみです。