WindowsでWSL2を使ってRuby3.0.0-preview2を動かす

動きました。

f:id:tuto0621:20201216010609p:plain

WSL2のインストール

https://docs.microsoft.com/ja-jp/windows/wsl/install-win10#manual-installation-steps

プレビュー版のWindows10を使って簡単にやる方法と、現状のWindows10に手動インストールする方法が用意されているが、今回は手動インストールの方で進めた。とはいえ手動インストールでも十分に簡単。

を入れた。

Windows ターミナルをインストール

https://docs.microsoft.com/ja-jp/windows/wsl/install-win10#install-windows-terminal-optional

普段DvorakJを使って親指シフト入力をしているのだが、DOSプロンプトとの相性が悪く入力がもたつくバグがある。デフォルトのWSLのシェルはDOSプロンプトのため同じ問題があるのがずっと不満だった。(そのときだけDvorakJを無効にしてしのいでいた) Windowsターミナルだとそれが起きない!

それ以外でもきびきびと動作してとても印象がよい。

aptを最新に更新

$ sudo apt update

rbenvをインストール

https://qiita.com/ma2shita/items/5c41aa8a4908c919ba78

途中までは同じで最後に3.0.0-preview2を選択する。

$ rbenv install 3.0.0-preview2
$ rbenv global 3.0.0-preview2

Ruby3で遊ぶ

https://qiita.com/jnchito/items/bf8c6c2e1dd6cff05f4e

と同じことが一通りできることを確認。

WSL2上でcode rubytest/とかやると自動でRemove - SSHがインストールされて開くことができる。VSCode Steepも動いているようだ。

注意: /mnt/c/Users/..のようなWindowsフォルダ上でVSCode Steepを使おうとすると動作がもたついたり挙動が怪しくなるので注意。~/ruby3-testとかに置いて試してみよう。

感想

小さなファイルだからかもしれないが補完はきびきびと動くし型エラーが発生したときにすぐに赤線がついてエラー箇所も分かる。

後はF12で定義ジャンプや一括リネームなどができるようになれば型を書こうという気持ちになるかもしれない。

RubyMineのような有料の優れたツールを使えば現在でも補完やリファクタリングツールが使えるのかもしれないが、無料でもある程度の補完ができるようになると裾野が広がってとてもよいと思いました。

f:id:tuto0621:20201216010704p:plain

fizz_buzzの戻り値に対してmapをかけてもちゃんとその引数がStringになることも追跡できている

○○という言葉を使うのをやめようという提案に対してどう振る舞うべきか

自分用にまとめておく。

基本方針

  • BLMに賛同する(悲しい事件であり二度と起こるべきではない)。
  • 過去と現代の文化や慣習の違いにより、言葉の中には現在のアクティブコンテンツで使用すると不穏な印象を与えるものが多数存在している。それらをより穏当な言い回しで置き換えていくことに賛成。
  • この作業に終わりはない。現在許容されている言葉の中にも将来的に必ず禁止になる言葉が出てくると考えており、そのためこの作業は長期的な視点で行っていく必要がある。

振る舞い

  • ○○という言葉を□□に置き換えましょう、という提案を受ける
  • (重要) 理由を聞く
    • (注意) 理由について自力で調べて対話を進めるのはおすすめしない、複数の理由があり人によって異なる可能性があるため
    • 対話している人物や団体がどのような理由でその言葉を置き換えるべきだと思っているのかがとても重要
  • 分岐1: 理由に納得できた場合
    • お礼を言ってできることをやっていく。
    • 賛同しているけどすぐにできないケースはある、仕方ない。
  • 分岐2: 理由に納得できない場合
    • (したければ) その理由がおかしい理由を述べて、置き換えるべきではないのではないか、という話をする
    • (注意) 反論が発散しないように気を付ける。例えば△△という起源なので使うのをやめるべき、という理由であれば、◎◎という起源という話もありますよという反論は有効だが、そうで無い場合は軋轢を生むだけでいいことが少ない。
    • 論破して相手の意見を変えてもらうのは大量のエネルギーを使うしそもそも無理だったりするので注意する。主張している人はその人なりの理由がありすでに自分のコミュニティの中で賛成者がたくさんいるようなバックグラウンドに所属している可能性もある。しっくりこなければしっくりこないでよいけど、そんな簡単に変わる訳ない(お互いに)。
    • 名指しで作業を要求されているのでなければそこからすっと離れてもいいのかもしれない。(反対なのであればバズらせないほうがいいのかも)

Q&A

○○という言葉を□□に置き換えない人間は差別主義者だと言われたら?

  • 挑発に乗ってはいけません、あなたは差別主義者ではありません。
  • 今まで使っていた言葉を置き換えることのコストやプライオリティは人によって大きく異なります。1つ1つのトピックをすぐに実行できないだけでそのような攻撃的な言葉を使う人間の言うことを気にする必要はありません。
  • ただし、不穏な言葉を穏当な言葉に置き換えていく大きな流れ全体を否定するような言動や行為は差別に荷担していると(私は)考えています。

1つ受け入れたら、また1つ・・と全ての言葉を受け入れることになってしまうのではないか?

  • なりません。ブラックリストを置き換えることを決定しても、マスター/スレーブを置き換えることは決定しません
  • それぞれに個別の理由を聞いて、議論して、やるかやらないか決定する・・の繰り返しです。

まとめ

  • Twitterで誰かの主張がバズっていても別に強制ではない。
  • 自分のOSSプロジェクトにそのような提案が来たときは理由を聞く。
  • 理由に納得がいくものはやる、分からないものはひとまず保留する、いつやるかは他のIssueとの優先を見て考える。
  • 妥協点をさぐる。ソフトウェアの名前はすぐに変えられないかもしれないけど内部で使っているローカル変数やクラス名だったら比較的簡単なときもあるかもしれない。

dotnet/csharplang: The official repo for the design of the C# programming language

https://github.com/dotnet/csharplang/

前回のリンクは.NETの仕様を議論する場所だったがこちらはC#の仕様を議論するGitHubレポジトリ。

ルールは.NET designレポジトリと似ていて、proposalsフォルダには提案を自由にPR可能、GitHub Issueやmeetingsを経由して採用されたものはspecフォルダに移動される。

採用は C# Language Design Team (LDT) が行う。

Discussionの項目はGitHubで議論するルールとして参考になりそう。

GitHub - dotnet/designs: This repo is used for reviewing new .NET designs.

https://github.com/dotnet/designs

.NETのデザインドキュメント置き場。誰でも追加可能でプルリクエストとIssueをフォルダを使って議論を行なっている。

  • .\proposed フォルダーに未来のデザインについてPRを作成
  • 同意が取れたものは accepted フォルダーにマージされる

Memories - SizeCoding

http://www.sizecoding.org/wiki/Memories

サイズコーディングという分野があってできるだけ短いコードサイズで面白いものを作る世界のようだ。

環境はMSDOSが使われることが多く、NASM (it's free) and DOSBoxでテストするらしい。

ref: http://www.sizecoding.org/wiki/File:Kasparov.gif

iPhone SE: The One-Eyed King?

https://blog.halide.cam/iphone-se-the-one-eyed-king-96713d65a3b1

iPhoneSEのディープラーニングを利用したポートレートモードについて紹介。

Depthを取得する“Portrait Effects Matte” APIサードパーティにも使える。誤検知はあるけど人間以外にも使えそう。

Helide(この記事書いた人が作ってるアプリ)も搭載済み。