トップ «前の日記(2023/03/06 (月) ) 最新 次の日記(2023/03/08 (水) )» 編集 RSS feed

HsbtDiary


2023/03/07 (火) [長年日記]

IME を Google 日本語入力にした

ここしばらく macOS ならことえり、Windows なら MS-IME と OS に同梱されている日本語変換エンジンを何も考えずに利用していたけど、全てのプラットフォームで共通で使えるものにしてみるか、と Google 日本語入力を改めて使うことにした。他の選択肢としては ATOK くらいなんだけど、ジャストシステムは個人情報の扱いのアレなやつ以降使わないことにしてるので Google 日本語入力くらいしか選択肢がなかった。

キーバインドを、MS-IME にした上で「変換/無変換」「英数/かな」のキーでトグルするように変更した以外は特に設定することもなくそのまま使えている。連文節変換がことえりのそれとちょっと違っていて気にはなるけどただの慣れな気がする。しばらくはこれで。

Ruby に同梱されている default gems と同じバージョンの C ext な gem がインストールできない問題を直した

タイトルがすべてシリーズです。Ruby をインストールしたときに同梱されている default gems (bigdecimal や json など) と同じバージョンの default gems をローカルインストール、具体的には gem i json-x.y.z.gem のように .gem ファイルを指定してインストールしようとすると動かない問題を直した。

https://github.com/rubygems/rubygems/pull/6430

上の pull request にあるように歴史を積み重ねているコードのあちこちに起因する難解な問題だった。

この問題が何故困るかというと、ruby org の下にあるリポジトリでは、gem をビルドかどうか、特に C ext の場合はインストールしようとしたときにビルドエラーがでないでインストールできるかどうか、ということをテストしているのだが、これが何故か head つまり、最新バージョンの Ruby でだけ発生していて、なんだこれ、という状況が起きていた。

https://github.com/ruby/bigdecimal/actions/runs/4229832742/jobs/7346568360

エラーメッセージを見るに、単に RubyGems のどこかがバグっているのであろう、というあたりはついたので腰を据えて調べることにしたら、やはり単なる RubyGems のバグだった。

RubyGems の gemspec の処理についてはちょっと複雑すぎるのでここでの解説は省略するけど、要はローカルにある .gem をインストールするときだけ、C 拡張がすでにビルドされているか、という判定がおかしくて、「gem としてインストールしようとしている default gems にも関わらず、Ruby に同梱されている default gems があるからインストール済みと解釈して、存在しないインストール済み gem を再インストールしようとしていてエラーとなっていた」という状況だった。複雑すぎる。

結局、修正方法としてはインストール対象としている gemspec が、default gems そのものかどうかではなく、システム内に同名の default gems が存在するかを判定して、存在する場合は再インストールではなく、新規インストール、となるように捻じ曲げることで解決した。

一日 RubyGems のコードを読んで、だいぶ理解がふかまったけどこれ大変すぎるからもうちょいシンプルにしたい...。

Asakusa.rb 第704回

今週もみんなで discord に集まって軽く雑談。

https://asakusarb.esa.io/posts/1135

上に書いたような RubyGems の話をしながら、他にもいくつかある世界で数人くらいしか困ってない RubyGems の現状の動きの話をしているうちに時間が過ぎてしまった。最近、21時を過ぎたらもうだめだ、みたいな眠さになるので夜が本当に早い...。