YouTube Liveの全画面モード(フルスクリーン)でチャットのコメントを表示可能にするChrome拡張機能「Youtube Chat in Fullscreen」を紹介します。Chromium版の新しいMicrosoft Edgeでも使えます。
Rakudo、MoarVM、Rakuの読み方を調べてみた
Perl 6が名称変更でRakuになるというので、なんとなく関連用語の読み方(発音)が気になって調べてみました(ソースはYouTubeのPerl関連動画)。
- Rakudo
- Raku言語コンパイラ、実行環境。読み方は強いて言うなら「ラクード」が近い。
- MoarVM
- Raku言語用の仮想マシン。MoarはMoreを表すネットスラングなので読み方はそのまま「モアブイエム」となる。
- Raku
- 読み方ははっきりしていない。「楽」は英語だと「ラクー」と読むようなので「ラクー言語」になるのか?
- TIMTOWTDI
- Perlのモットーである「There's more than one way to do it 」の頭文字で「ティムトディ」。発音で書くとTimToadyとなる。GitHubなどで見かけるTimToadyという人物はLarry Wallである(失礼ながら最近になって知りました)
Raku言語(Perl 6)のクックブック「Using Raku」が無料で公開。他にも学習本を紹介
100問のプログラミングの課題に対し、Raku言語ではどのように解決するかを解説した本「Using Raku」が公開されました。PDFで無料で読めます。
上記のUsing Rakuは既にRaku言語を知っている人向けの本です。著者のAndrew Shitov氏は「Perl 6 at a Glance」という入門本も無料公開しています。
入門書から先に進んでRaku言語をしっかり学習したいのであれば「Perl 6 Deep Dive」がおすすめです。こちらは無料ではありませんが、Packtのセール時は10ドルくらいで購入できます。
Raku言語の学習本は他にも「Learning Perl 6」があります。内容的にはPerl 6 Deep Diveと重複する部分が多いです。
もっとディープな本として、Raku言語のGrammarに特化した「Parsing with Perl 6 Regexes and Grammars」も紹介します。
Grammarは正規表現より更に高次元の文字列解析機能で、この本では1冊丸ごとGrammarについて説明しています。Raku言語と正規表現の基本が分かっていないと理解は難しく、初心者向けではありません。

Parsing with Perl 6 Regexes and Grammars: A Recursive Descent into Parsing
- 作者: Moritz Lenz
- 出版社/メーカー: Apress
- 発売日: 2017/12/11
- メディア: ペーパーバック
- この商品を含むブログを見る
Perl 6の名称が変更され、今後はRaku言語に
ここ最近Perl 6の言語名変更について議論が起こっていたらしく、Larry Wallも変更に賛成する意向を示しています。
名称変更に関する情報は以下の記事から raku.online
名称変更による影響は色々と考えられますが、「Perl 5」と「Raku (Perl 6)」が別言語であると明示されるのが大きいでしょう。名前は似ていても仕様としては別物と言っていいくらい違いますし。
悲しいことにPerl 6は全く話題にならないので、日本では混乱は起こらないだろうと思っています。
既に公式サイトのURLはraku.orgでアクセスできるようになっています。RakudoのリポジトリもPerl 6からRakuに変更が始まりました。
Firefox 68のWebRender機能をRyzen APUで有効化する
2019年7月にリリースされたFirefox 68.0で、新レンダリングエンジンのWebRenderがAMDのGPUでも有効化されました(リリースノート)。
同じ頃に新APUのRyzen 5 3400gを購入していて、ブラウジングが高速化すると期待していました。しかしよく確認してみると、7月末現在ではRyzen APUの内蔵GPUではWebRenderが有効化されないことが分かりました。
APU内蔵とは言え、Radeon VegaならWebRenderが使えるはずでは?と思ったら有効化されないのはバグで、既にレポートが出ていました。
- Deafult webrender disabled after changing AMD gpu : firefox
- 1566811 - AMD Radeon Vega 8 "too old" for WebRender
WebRenderの強制有効化
将来的にはバグが修正されるでしょう。WebRenderを有効化する設定値があるので、今のところはこれで使用します。 参考:https://www.askvg.com/tip-how-to-enable-or-disable-new-webrender-feature-in-mozilla-firefox/
- アドレスバーに
about:config
と入力 gfx.webrender.all
を検索し、「値」をダブルクリックしてtrue
に変更- Firefoxを再起動
- アドレスバーに
about:support
と入力し、グラフィックの画像処理がWebRenderになっていればOK
自分の場合は上記の変更でDirect 3D 11からWebRenderに切り替わりました。試してみると、ページが描画される瞬間の間が体感できるレベルで短くなっていて、キビキビ動くようになったという感触です。
WebRenderベンチマーク
本当に高速化しているのか、念のためにベンチマークを実行しました。参考:Firefox 67.0 WebRenderを有効にして高速描画 - とある人柱のblog
動作確認環境
- Windows 10 Home 1903
- AMD Ryzen 5 3400g with Radeon Vega Graphics (RX Vega 11)
- Radeon ソフトウェア エディション Adrenalin 2019 19.7.3
物凄く速くなっています。Ryzen APUでも高速化できることが確認できました。
Windows上のVSCode + Code RunnerでWSLのコマンドを実行する
Visual Studio CodeのCode Runner拡張機能でWindows側から WSL(Windows Subsystem for Linux)のコマンドを実行する設定方法です。
実行環境
- Visual Studio Code自体はWindows 10で実行
- Code Runnerでコードを実行する際、WindowsではなくWSL上のコマンドを実行する
- WSLのLinuxはPengwinを使用
設定方法その1 - カレントディレクトリを移動して実行
例としてWSLのperlを実行するようにします。Visual Studio Codeのユーザー設定(settings.json)に以下のように入力します。WSLのコマンドの呼び方は 「Windows 10のコマンドプロンプトからWSL上のLinuxコマンドを呼び出す(バージョン1803対応版):Tech TIPS - @IT」が詳しいです。
{ "code-runner.executorMap": { "perl": "cd $dir && wsl perl $fileName" }, }
試しに実行中のOSを出力するperlスクリプトを実行してみます。Windows版のperlだと「MSWin32」となる所が「linux」になり、WSL上で実行されている事がわかります。
補足
ちなみに単純化して以下のようにしても、パスがWindowsのフォーマットで渡されるため動作しません。これを避けるために上記の設定ではcd $dir
を入れてカレントディレクトリを移動し、ファイルのフルパスを渡さないようにしています。
{ "code-runner.executorMap": { # 動作しない "perl": "wsl perl" }, }
設定方法その2 - wslpathを使用
最初の設定では「wsl.exe
は実行時のカレントディレクトリをそのまま引き継ぐ」ということを利用してcd $dir
を入れていました。もう1つ、wslpath
を使ってきちんとパスを変換する方法もあります。
{ "code-runner.executorMap": { "perl": "bash -c \"perl $(wslpath $fullFileName)\"" }, }
この場合のbash
はLinux上ではなく、WSLをセットアップするとインストールされるbash.exe
が実行されます。-c
オプションのコマンドはWSL上で実行されるので、Code Runnerのパラメータである$fullFileName
をwslpath
でWSLフォーマットに変換すればいいということになります。カレントディレクトリを変更しないという点では、こちらの方が本来の動作に近いと言えます。
ただし、このパスの途中に空白を含むファイルは実行できません。「方法その1」のcd $dir
方式では問題なく実行できます。
設定方法その3 - 自力でWSLのパスに変換
パスに空白文字が含まれていても動作するように改良したバージョンです。sedでバックスラッシュをスラッシュに置換→ドライブレター(C:
など)を/mnt/c
に置換→シングルクオートで囲む、という処理を行っています。エスケープシーケンスが多すぎて分かりづらくなってしまいました。
{ "code-runner.executorMap": { "perl": "bash -c \"perl '$( echo $fullFileName | sed 's%\\\\%/%g' | sed 's%^\\([a-zA-Z]\\):%/mnt/\\L\\1%' )'\"" }, }
ASUSのファンレスマザーボード「PRIME J4005I-C」でゲームリモートプレイ用PCを作ってみた
ASUSのGemini Lake SoC搭載マザーボードPRIME J4005I-Cを購入しました。目的は「寝ながらPCゲームをプレイする」です。ポータブルモニターとタブレットアームを使い、Steamでホームストリーミングすることを狙いました。この記事ではマザーボードの特徴と使用感を紹介していきます。
実はHDMI 2.0対応
PRIME J4005I-Cを使ってみて意外だったのが、HDMI端子が4K 3840 x 2160 60Hzに対応していることでした。
スペックに ”Supports HDMI with max. resolution 4096 x 2304 @ 24 Hz” と記載されているので勝手にHDMI 1.4だと思っていました。
ただし4K 60Hz対応と言ってもヌルヌル動くわけではなく、ブラウザーのスクロールなどは多少カクつきます。
Steamホームストリーミングは1080pで充分快適。Moonlight PCだとさらに綺麗
目的であるゲームのストリーミングプレイは思ったよりラグが少なく、自分の環境では22ms程度の遅延でした。タイミングがシビアなゲームでなければ充分だと思います。ストリーミングはDXVA2のハードウェアデコードが有効になっていました。
NVIDIA SHIELDのゲームストリームがPCでも使えるようになるMoonlight PCも試してみると、さらに綺麗で安定したフレームレートでプレイできました。SteamがH.264でエンコードしているのに対してSHIELDはH.265を使っているので差が出ているのかもしれません。
ケースファンのセミファンレス化が可能
BIOSで呼び出せるQ-Fan controlでは、CPU温度が閾値以下に下がるとケースファンを停止するように設定できます。停止できるのはDC 3ピンコネクターのファンをマニュアル制御で「Fan off」にした場合のみで、PWM 4ピンのファンでは設定できませんでした。