2018年の私はどうなるのかな…

というわけで太陽暦上は2018年になりましたのでちょっと2017年の動向も踏まえて少しだけ近況報告を雑記として書いておきたいと思います。なお、なぜかOSのアップデートの話やらWindowModePatchの開発状況についても書いておきます。

 

さすがにフルタイム勤務になるとその他ができなくなる

という状態になっているため、いろいろと更新が滞っている状態だったりします。なお、一応時間外労働がどれくらいかは見ていますが月によっては休日出勤等も大量にありかなりやばい時間になることも。この辺りは20代にフリープログラマとして活動していたためにフルタイムの経験がほとんどなく、また初めての仕事なので経験や資料の積み上げが全くない状態から始まっているので仕方がないというところでしょうか。同じ仕事が継続できればもう少し楽になるはずなのですが、どうなのでしょうかね。

 

MX ERGOは「それなりに」使えている

ということで新しく買ったLogicoolのトラックボールマウスについて少し経ったので使用感覚などを書いておきたいと思います。なお、MX ERGOの機能の一つであるEasy Switchは一切使っておらず、Bluetoothも使っていないのでほぼ純粋なトラックボールマウスとしての使用としての感想にであることに注意してください。

一言感想を言うならば

「M570tと使用感覚はほとんど変わらず。M570tから付加価値を見出せるのであればMX ERGOへの買い替えは勧められる。」

ですか。ホイールが左右に倒せることについても私の使用方法では一切その機能を使っていないですし、高解像度モードも結局使う場面を見いだせていないので良かったとしても手首の位置調整機能で多少楽になった、というところだったりします。

ちなみに、この20°の傾きですが単に磁石で底板をくっつけているだけなので左下方向に力をかけすぎると0°状態に移行してしまう、といったことも起こります。トラックボールの場合はマウスを動かさないので滅多に怒らないのですが使用を始めた当初はM570tの使用感覚でマウスを密着させるために少し押さえつけるようにしていたところこの現象が何回か発生していたので慣れるまでは気になる人もいると思います。いまでは力感覚もわかっているので手首の負荷軽減になっている感じはわかりますし、マウスを軽く使うデスクワーク用とならば20°を、ゲームなどで集中して使う場合は0°を、のように使うのもありなのかな~と考えています。パタパタ動かしすぎて回転軸になるプラスチックの出っ張りが壊れないか微妙な心配もありますが、そんな人はまれだと思いますのでとりあえず書いておくだけにしておきます。

 

OSを最新世代へとアップデート

わざわざWindowsと書かなかったのはサーバー側もアップデートしたからです。というわけで両方とも解説。

Windows側はメイン機、NotePCともにWindows10 Fall Creators Updateへとアップデートしました。ちなみに以前にも書いたのですが、このアップデートはレジストリを経由する一部の設定はどうやっても引き継がれないのが個人的にはとても気になっていることで、具体的には無効化したはずのZipFolderの機能は元通りになっていますし、せっかくカスタマイズしたMediaFoundationおよびDirectShowの設定とWindowsMediaPlayerの設定もデフォルト状態に戻される、という現象が起こります。アップデートした直後にこれを戻すのが非常に面倒、というところでしょうか。まあ、レジストリを少し削除したり設定ツールで各種Codecのファイルを再生してみて正常に再生できるかどうかをチェックすればOKなのでまだましなのかもしれません。少し気になっているのはエクスプローラでの動画のサムネイル作成機能がうまく動かなくなっていること。特にMPEG-1形式の場合にうまく作成されないことがあるようです。私特有でしょうか?

 

そしてサーバー機もFedora25からFedora27へとアップデート、というより再インストール。実はもう少し早くインストールしてインストール日記を書くはずだったのですが、サーバー版のリリースが少し後になった影響で再インストールしたのが12月末になってしまったためこの記事で紹介しています。

個人的に一番変わったと感じた点がBtrfsがだいぶ安定したことでしょうか。Fedora25ではLVM上にXFSで各ファイルシステムを作成していたのですが今回はBoot領域のみ別確保であとはBtrfsを使って一括確保し、一部マウント先名前を付けた状態としてセットアップを行いました。LVMと異なりBtrfsの場合は一つのパーティションから切り出して名前を付けているだけになっているようで、varやusrやhomeもBtrfs上でパーティションが分かれているわけではないので領域が十分に使えるのが良いところでしょうか。ただ、ちゃんとroot領域やらに予備領域を作らないと何かあって領域がいっぱいになった時にログインすらできない、という問題は起こりそうなので設定が必要でしょうかね。それ以外だとSELinuxを有効にしていたのでSambaの設定に一苦労したくらいでしょうか。setseboolは-Pのオプションを付けないと永続化しない、ということを忘れていて再起動した後でファイルが見えなくなってあわてて調べなおしたので…。

 

WindowModePatchはただいまDirectX6世代のDirect3DをDirect3D9を使って実装中

2017年12月に実装を初めてまだこれです。時間が取れないものでデバッグにすらたどり着いていません。しかもおそらく一番大変な部分であるIDirect3DDevice系の実装に差し掛かっていてどうなることやら、というところです。幸いなのはDirectX7系のDirect3Dは簡易実装してあるのでそこから大部分のコードを流用できることですか。それでも実際に動かすまでには時間がかかりそうですし、今回のデバッグはもともとの問題となった部分が部分だけに大変だろうな~というところだったりします。気分転換ではないですが別のゲームでうまく動かない、とかを調べて簡単にバージョンアップできるネタがあればそちらを優先させてしまいそうな感じです。

 

はてさて、今年一年はどうなるのでしょうかね

個人的にはしばらくゲーム作りから離れていた影響なのかまた一本くらいは作りたいな~という思いがわいてきているところです。ただ今回はスクリプタやプログラマとしてではなく制作管理側として動いてみたいな~という感じに変わってきています。資金が十分にあれば同人・商業問わずチャレンジしてみたいところですね。その資金を手に入れるところから始まる、といったところでしょうか。

 

どうでもいいですが、2017年の頭にいくつかおみくじを引いて財布に入れていたのですが大吉などかなり良いものであったにもかかわらずそこまで良い思いができた年だったのか?と言われると沈黙するのですが…どうなのでしょうね。

 

とうとうマウスを交換することに

数年間愛用していたマウスですが、とうとう動作不良を起こし始めたので気になっていたあれに乗り換えてみることにしました。

 

今まで使っていたマウスは…

というと、このblogでも何回か記事にしていますので過去の記事を遡ってもらえばわかると思いますが、

M570tです。かなり長い間愛用しておりまして、表面に書いてあるロゴの印刷が使っているうちにはげていってしまって何が書いてあるのかわからない状態となるほどでした。ちなみに動作不良というのは左ボタンのチャタリングです。いわゆる一回しか押していないのに二回以上入力が認識されてしまい勝手にダブルクリックや二回のクリックと見なされてしまう、という現象です。スイッチ部分を取り替えることができれば直せるのかもしれませんが…。

なお、通常どのマウスも使い込んでいくとボタン部分のチャタリングによるボタン認識問題は出てくるものなので私の使っているマウスの耐久性が悪かったわけではないと思います。ゲーム開発でかなり酷使していた時期もあったので…

 

ということで、これにしてみた

なんとなくわかると思いますが、

MX EGROです。いや~。発表されたときからかなり気になっていて、一度は使ってみようかと思っていたので思い切って買ってみました。しかしまあ今までの用途から考えるとどうやってもFlowは使わないしゲーム用のマウスでもないのにかなりの金額をするものだな、とは思ってはいましたが。

なお、購入金額についてはほぼ定価購入だと思います。購入したいのであれば通販で店を探した方が安いと思います。通常の家電量販店だと高すぎるのか扱っておらず販売している実店舗を探し出すのに少し苦労しました。

 

肝心の使い勝手は…

まだ使い始めたばかりなのでなんともいえません。が、前のマウスと違うところとして親指トラックボールのそばにあるボタンがデフォルトで「精密モード」というものに割り当てられていて、このボタンを押すと入力解像度を一時的に引き上げる?ものらしく、画像をPhotoShopやGIMPなどで加工する場合によく使えそうです。ただ逆に言うならマウスの移動量が減ってしまい、マウスの移動が遅くなります。それをどう生かすかは各自の考え方次第、というところでしょうか。個人的には精密モードがあるなら通常のマウスカーソルの移動量は多少大きくてもかまわないのでは?と考えて設定で少しあげています。それ以外はデフォルトのままで使っていきたいと思います。

あと最大の売り(だと思います)である手首の角度については、0度状態にするとM570tよりもマウスが大きいためか手首が浮いているように感じられ少し心許ないです。20度状態だとマウスの置き場所を間違えないのであれば使いやすい可能性が大きいかな、と感じる状態でした。というところでしばらくは20度の状態で試してみたいと思います。

最後にM570tは単三電池で動くのに対してMX ERGOは内蔵の充電池で動くタイプなのでこれがほぼ完全に充電されてから警告が出るまでどのくらい持つのか、が興味を引かれるポイントだと思います。これがよければもう一つ別の場所でもM570tを使っているのでそちらも交換してみたいかな~と思います。

もしかするとしばらくしてさらに追加で使い勝手について書くかもしれませんが…それはそのときということで。とりあえず暇な時間を見つけてはプログラムは書くようにしています。さすがにエミュレーションする部分が大きいので時間がかかっています。

 

しばらくWindowModePatchの機能向上に取り組む予定

この手の情報は基本的にTwitterに書くのですが、今回はblog側にも書いておこうかと思います。

 

やはりDirectDraw周りのエミュレーションがあまい

特にDirectDraw+Direct3Dの組み合わせになるとかなり微妙なようです。DirectDrawをそのまま使うタイプの解像度処理だと色深度によって問題が出ることもあるらしく・・・というところで、Direct3D9を使ったエミュレーションだとその辺が完全に実装できていないのでエラーを返される場合も多々あるようです。

 

ということでその辺の処理を追加実装する予定に

一応どう実装するかは決めているので後はコツコツとエミュレーションを書いていくだけです。例えばDirect3DをDirect3D9を使ってエミュレーションするクラスの出だしは

 

class CDirect3DOnDirect3D9 : public CUnknownBase, public CDirectDraw7OnDirect3D9Holder, public IDirect3D, public IDirect3D2, public IDirect3D3{

 

となります。なんじゃ、こりゃ?といいたくなるプログラムコードです。しかし本当にこういうコードを内部的に書いています。特にひどいのがIDirect3DとIDirect3D2とIDirect3D3を同時に実装するというところ。もう少し各クラスに互換性があれば上位だけを実装して強制型キャストですむのですが、この3つにはその手の関係が微妙にないのでこんな実装をするしかないようです。ちなみにIDirect3D7だとIDirect3D3以前とはまた違った実装をしているのでこれは単独で組んでいます。おそらく残りの実装も面倒なのでしょうね。まあ、暇な時間を見つけて作っていきたいと思います。

WindowModePatch 0.70 Alphaを公開

WindowModePatchの更新情報です。0.69Alphaは欠番ではなく更新してもしそのまま何も書かないとどうなるのか?を実験してみたのですが対して変わらなかったので0.70Alphaでは更新情報を記事にします。

 

0.69Alphaは入力系の更新

念のためにスタブとしてDirectInputに関する入力変換は実装していたのですがいろいろと調べてみるとなんとなくこれが理由のような事象があったのでDirectInputも対象にして処理するようになっています。おそらくそれほど問題にはならない更新だと思います。バリバリにDirectXを使うようなゲームなら影響がある可能性はあるかもしれませんがこちらはADVゲームがメインですのでDirectInputをまともに使っている物は余り見ませんので。

 

0.70Alphaは初期ウィンドウサイズに関する更新

通常は自動的に内部からウィンドウサイズ変更命令を行ってサイズ調整をするのですがなぜかサイズ調整の部分だけ無視するプログラムもあるようで。いろいろと調べたのですがなぜサイズ調整のルーチンが無視されているのかがさっぱりわからず、仕方がないので初期ウィンドウのサイズを直接設定できるように変更してみました。こちらは通常この機能を使う必要は全くありません。さらにいうなら自動認識でうまくいっている状態ならなおさら使う必要はないと思います。あるとするならウィンドウ検知に失敗するために描画サイズの固定を行っていてかつ外側のウィンドウサイズだけなぜか変更されない、こういう状態だけで有効です。また、設定は設定ファイルからのみ変更可能ですのでもしそんなゲームを対象にしたいのであればこの機能を使うとうまくいく「かもしれない」というものです。どうしてもこの手の記述って多くなってしまいますよね・・・

 

やっぱりまともに更新する暇がない

というのが現状ですか。0.70Alphaにかんしても調べて実装するまでは実効一日で終わってしまいましたし。単に思いついた後準備に手間取ったり都合がつかなくなってほったらかしになってしまったが故にTwitterに更新開始を書いてから今までかかってしまったわけですし。そうなると本当にコード公開やら何かを考えないと(これが宝かどうかは別として)宝の持ち腐れのようになるのかもしれませんね。

 

WindowModePatchのページに英語版を追加してみた

でも書いている記事は日本語な訳ですが…。

 

日本語ができない人の訪問が増えたようなので英訳してみた

頑張ってみました…といいたいところですがこちらも簡易です。やり方は簡単で適当な長さで区切った日本語の文を翻訳サイトで一度英語に訳した後再度自分が日本語に翻訳したときにある程度正しいか?をチェックして正しいならばそのまま、間違っているならば自分の知識内で修正を行って翻訳サイトにて再度日本語に翻訳して文法的な誤りがないかをチェックする、という手順で行っています。この頃のGoogle翻訳などの翻訳サイトは本当に質が向上しているので致命的な誤りが出ることがほとんどない状態となってきました。逆に言うなら翻訳結果が微妙となった場合であれば自分の日本語表現を多少変えてやることでそれなりの英文が出てくる、ということでもあります。

もちろん、この方法を使うためにはある程度自分に英語から日本語への翻訳ができる、という条件が必要です。一応英語の技術文書であればMSDNなどのプログラムのヘルプで読み込んでいるので単語の意味が調べられるのであれば問題ないレベルにはなっています。もちろんこの力がないと翻訳サイトを二回使う、という状態となりチェックが微妙になるのでは?と思います。さすがに二回の翻訳を行うと原文と離れた文となることも多くなるのでその辺はうまくやりましょう。

 

WindowModePatchで別方向の進展がありそうな感じ

忙しい合間を縫って動いています。まあ、これのために英語版のサイトを作ってみたというのが実情だったりします。一応ゲームの対象は日本語だけではないですし、WindowModePatchのフロントエンド側には日本語版のWindows以外で起動した場合には英語でメニューなどを表示するように仕掛けがしてあるのでいろいろな人と協力してやっていくのにはこういうことが必要になるのでしょうね。あとはトップページとか更新履歴なんかも英語になればもっといろいろな人に広がるなど情報が得られるのではないか?とも考えています。

また、Twitterやニコニコ動画などからのリンクがあったりといくつか確認している限りではWindowModePatchはある程度役には立っているようですのでうれしいです。こちらの方向も進展していくと面白いと考えています。忙しいので更新は難しいかもしれませんが動作情報などは受け付けていますので。