2021/01/04

2020年を簡単に振り返る

活動報告を書こうと思っていたら2020年が終わってしまったので、ソフトウェア環境の変化なども含めて箇条書きで簡単に振り返る。

  1. 貢献活動
  2. ソフトウェア環境

貢献活動

  • ETS2MP/ATSMPをWine/Protonで動かすランチャの改善(2019年からの継続)
    • マルチプレイヤーDLLを用いて起動する中核部分のC言語のプログラムが最初にあって、マルチプレイヤー関係のファイルの更新などの処理を外部ツールを用いて行いつつそのプログラムの起動も行うシェルスクリプトがあったのだが、そのスクリプト部分を外部ツールに依存しないようにしつつ機能追加もしやすくする目的でPythonに移植しつつ、D3D11移行などのシミュレータ自体の変更への対応やWine/Protonに固有の不具合の回避などの色々な改善を入れていた
    • 4月にもう一人の活発度の高い貢献者とともに作者からCollaborator権限の招待を得てPythonへの移植が取り込まれ、その後も二人で改善を続けている
      • PyPIでのパッケージ公開やGitHub Actionsを用いたチェック処理やビルド処理、PyPIへのアップロードなどの自動化の仕組みなどを取り入れた
        • PyPIへのパッケージ公開やGitHub Actionsでの各種処理の自動化についてはエンジニアと思われる方々が既にWeb上に記事を多数公開しており、ここでそれらについて特にまとめるつもりはない
  • Wine
    • 開発版にてRPGツクールVX Ace作品の一つでRegressionが発生したので報告し、早期に修正される
      • 他のほとんどのRPGツクール作品では発生せず特殊なケースだった
    • RPGツクールXP/VX/VX Ace作品のMIDI BGMの回避策に必要なネイティブ版dsound.dllと内蔵版のquartzの組み合わせではゲーム内のMP3再生が動作せず、Winetricksのquartzもある時から別のバージョンのファイルがインストールされるようになっていて正常に動かせないという状況になってしまったため、解決策として以前のバージョンを使用するためのquartz_feb2010を10月に実装して取り込まれた(“Wine 5.0.x系でのDirectShowからのMP3再生における問題と回避策” の追記も参照)
  • Hacktoberfest
    • 開催期間中にルールが変更されてGitHub内の各プロジェクトの所有者がプロジェクトにhacktoberfestのトピック(キーワード)を付けた上で参加者のPull Requestが取り込まれる、またはPull Request単位でhacktoberfest-acceptedのラベルがプロジェクトのスタッフによって付けられる(この場合はプロジェクト自体のトピック登録の有無は問わない)、という条件が付いてハードルが大幅に上がってしまった
    • プロジェクトの所有者がこのイベントのことをよく知らない場合や関心がない場合、所有者の活発度が低い場合などには記念品のTシャツを得るための必要数を増やすのが難しく、貢献したいプロジェクトを決める自由度が大きく低下した
      • 開催企業に対しての意見(フィードバック)はコメント送信で既に行っているが、今回は変更後のルールが改善されることはなかった
    • 次回からは事前にトピックの付いているプロジェクトを探してそこから準備をしていくか、またはイベントへの参加を見送る選択肢も考える
    • 2020年の分はCOVID-19の影響で発送が遅れた(条件を満たした後でイベントのサイトで発行されるURLからTシャツ業者のサイトに移動して注文を行ったのが10月下旬だったが、発送の通知は2ヶ月近く後になった)

ソフトウェア環境

  • FirefoxのWebRender対応などでWebサイト閲覧が以前より快適になった印象
    • 過去のバージョンではツールバー上のアドオンのボタンを押した時に出る小さなページの表示が真っ白になることがあったが、バージョン84時点では正しく表示されている
    • Linux上のFirefoxにおけるWebRenderはバージョン84時点では既定で有効になっている
    • GNOME ShellのWaylandセッション上で環境変数MOZ_ENABLE_WAYLAND=1指定かつWebRender有効で動かしているが安定しており、VA-APIによるGPU動画再生支援も機能している(CPU使用率が低い)
      • Google Chrome/Chromiumも再生支援に対応しているように見えるのだが、いずれもchrome://flagsで有効に設定してchrome://gpuで機能が有効なのを確認しても動画を再生してみるとうまく動作していない(環境はMesa 20.3.2時点のradeonsiドライバ)
  • Chromium(87以上)のWayland対応によりNW.jsを用いてRPGツクールMVなどの作品がWaylandネイティブで動作可能に
    • 現状クライアント側によるウィンドウ装飾(CSD: Client-side decoration)が出ないのでフルスクリーンで遊ぶ場合以外は無理に勧めることはしない
  • GTK 4(“GTK+” ではなくなった)とQt 6の正式版が12月に公開
    • ディストリのパッケージの提供は2021年公開のディストリからとなりそう
    • GTK 4ではOpenGLやVulkanが利用可能な場合にそれらがGUI部品の描画に使用されるが、手元の環境ではVulkanはまだ挙動が変なところが残っている印象
    • GTK 4での日本語入力に必要なモジュールについてはFcitxの4系は非対応(リポジトリが読み取り専用の状態なので今後も更新されない)で、5系用のみ既にコードが存在していることを確認
    • GTK+ 2の最終バージョン2.24.33が同月に公開され、今後修正は提供されなくなる
      • GTK+ 2系に依存し続けているソフトウェアは将来ディストリのパッケージの提供が終了となれば現在のGTK+ 1.2系と同様に使えなく/使われなくなると思われる
  • Alacritty
    • GPUを使用する高速な端末ソフトウェア
    • Waylandにも対応
    • Debian/Ubuntu系ディストリのパッケージは2020年末時点ではない
      • これを含め、Rustで書かれたプログラムのディストリのパッケージが提供されるのはまだ後になりそう(Gentooなどの一部のディストリには既にある)
    • 自分でビルドしてrxvt-unicodeから移行した
    • WindowsやmacOSのバイナリはリポジトリからダウンロード可能
  • Wine
    • “Enigma Virtual Box” で中身がまとめられたRPGツクールMV作品の起動を確認(--ignore-gpu-blacklist --use-gl=desktop指定はまだ必要)
      • 確認したのは “AliasAche” という作品のみで、この作品は6.0-rc4時点では起動はするものの、Wineで動かすと突然画面が固まって進行不能になることがある(100%再現するというものではないのだが、最初のダンジョンの最深部のボス戦で敵の行動により戦闘画面から離脱した後に固まることが複数回あり、特定の状況で起こりやすいのかもしれない)ので、こまめなセーブが必要
        • 公式サイトのPEビルドと手元でソースから作成したELFビルドの両方で動作を確認(PEビルドでなくてもよい)
      • 5.0.x系ではウィンドウが出る前に落ちていた
      • 他のRPGツクールMV作品もWineで十分にテストしたわけではないため、Wineで動かすと固まる問題が起こる可能性は十分にある
      • 他のEVB使用作品も試したいが、見つけるのが大変
    • RPGツクール2000/2003作品(仮想デスクトップ内のフルスクリーン実行時)とMV作品をWineで動かすとWaylandセッションのXWayland環境で非常に低速になる謎の現象を確認(X.orgのセッションでは普通に動作)
      • GPUやグラフィックドライバに依存している可能性もある?(繰り返すが手元の環境はradeonsi)
  • Proton
    • 聖剣伝説3リメイク体験版やDQ11S体験版がGE版(派生版)にてそれぞれ体験版の終わりまでプレイできることを確認
    • Proton 5.13だと聖剣3はムービー再生が動作せず(例えばタイトル画面前のものは真っ白画面にテロップのみになる)、DQ11Sはフレームレートが突然低下する現象を頻繁に確認しているが、GE版の5.21-GE-1では前者は正常動作(ただし仲間候補キャラの回想シーンでメッセージをスキップすると進行不能になる)し、後者も改善がみられた
    • PS4世代の家庭用ゲーム機用に出ているようなゲームはグラフィックボードがないと厳しく、内蔵GPUのVega3だと解像度や画質の設定の見直しが必要だということが分かった
      • 個人的感想としては、1280x720であれば先述の2つのゲームは体験版の範囲ではゲームとしては何とか遊べる印象
        • 聖剣3は特に “神獣” が出てくる辺りからゲームプレイに支障の出るレベルで重くなる可能性もあるので微妙なところで、詳細な画質設定がないことからこれ以上の負荷軽減ができないのもつらい
      • グラフィックボードを導入した場合、映像だけでなく費用(イニシャルコストとランニングコストの両方)も段違いにハイクオリティになってしまうのがつらい
      • PS4を買うことは結局なかったため、代わりにグラフィックボードを導入することも考えられなくはないが、 “買うとしたらこれ” と仮に定めたGPUを搭載したカードの最安値は年末年始でもほとんど変動しなかったので、長期的に検討して値下がりを待つべきか
        • NVIDIAのGPUについては、昔使っていたボードが現在のプロプライエタリドライバではサポートされず、現在のディストリでは動かなそう(古いX.orgサーバに依存?)なのだが、近い将来高価なグラフィックボードを導入しても長期的に見るといつかサポート対象から外れそうなのと、自由なソフトウェアのnouveauでは2020年末時点ではVulkanが使えないことから、現状あまり選択したくはない一方、最近のRadeonはGeForceよりワットパフォーマンスが悪いというので悩む
      • 例外として、春に期間限定で無料で入手できた “PAC-MAN CHAMPIONSHIP EDITION 2” はグラフィック負荷がそれほどかからないゲームのためVega3でも快適に動作しており、Proton 5.0の時期にアドベンチャーモードのクリアまでプレイした
        • スコアアタックは一部 “S” 評価にできたが、まだ “A” も残っている
        • たまに読み込み処理が終わらないことがあるが、レビューコメントを見る限りではWindowsでも起こるようなのでWine/Proton固有ではないと思われる
  • Visual Studio Code
    • “Visual Studio Code” という名前のコード編集ソフトウェアについての情報と良い評判を目にする機会があったのでインストールしてみた
    • MITライセンスのソフトウェア
    • WindowsやmacOSだけでなくLinux(x86_64, ARM, ARM64)版もある
    • 拡張性が高く、操作も特殊ではないため、多くの人にとって使いやすい
    • Gitリポジトリの操作ができるのも便利
    • 拡張によって対応するプログラミング言語などが増やせる他、日本語ユーザインタフェースにするものもある
    • 個人的にはPythonのコードを書く作業がこれまでよりも短時間で行えるようになったのが大きい
    • Emacs風のキー操作に対応する拡張があるのがありがたいが、制約により一部の操作は同じようにはできない
    • 欠点としては、Electronベースなのでメモリ使用量が多い(Webブラウザが入っているようなものなので)
    • 現状、小さなメモや文章の下書きなどの用途ではEmacsを使用し続け、プログラムや複数ファイルにわたるドキュメント(ワークスペースの仕組みにより開いているファイルを記憶できる)を書くにはVSCodeという使い分けをしている
    • こちらも詳細はエンジニアと思われる方々による記事が豊富にあるため扱わない