tech.guitarrapc.cóm

Technical updates

Visual Studio 2017 で使っている拡張機能

Visual Studio Code も Visual Studio もExtensions と呼ばれる 拡張機能を使うことで便利な機能を追加できます。

Market Place 便利。

marketplace.visualstudio.com

あまりむやみに追加すると動作が重くなるのですが、便利なものを使わない手はないので必要なものを入れています。*1

ここではVisual Studio 2017で私が入れている便利拡張をまとめておきます。

目次

Extensions一覧

Recommend Name Purpose Desc
5 Azure DevOps Services | Sign In 学習されるインテリセンス VS2019の機能ですが、VS2017でも拡張機能をPreviewで使えます。
5 GitHub - StefanKert/BuildVision: A Visual Studio extension to visualize the building process. ビルド結果表示の高機能化 VS2017 対応に合わせてオリジナル作者から引き継がれました
残念ながらMarket Place版は2015のままです
5 Git Diff Margin - Visual Studio Marketplace Git の追跡結果と比較して差分のハイライト表示をしてくれます
5 Open on GitHub - Visual Studio Marketplace 選択ファイル/行の Github ページにジャンプ
5 SwitchStartupProject for VS 2017 - Visual Studio Marketplace Startup Project の変更がすさまじく楽になります
5 VSColorOutput - Visual Studio Marketplace Output Window に出力された文字に状態に応じて色が付きます。
5 Custom Document Well - Visual Studio Marketplace 縦タブが使いたくて! VS2015までは Productivity Power Tools で提供されていた機能が個別パッケージで提供されました。
5 Open UserSecrets - Visual Studio Marketplace .NET Core Console で UserSecretsを使いたくて ASP.NET Core MVC の Manage UserSecrets と同様の機能を .NET Core Console でも提供します
4 BlackSpace - Visual Studio Marketplace 末尾の不用意なスペースをハイライト、保存時に削除も可能です。 類似拡張 : Trailing Space Flagger - Visual Studio Marketplace
4 LetMeEdit - Visual Studio Marketplace .csproj を unload せずに編集できます。 EditProjのFolkで、2017に対応してくれています。
3 PowerMode - Visual Studio Marketplace タイプでコンボ、楽しくないですか? 画面が大きくなるほど重いです。4Kとかやばい。設定必須。
3 Fix Mixed Tabs - Visual Studio Marketplace ソフトタブ、ハードタブの混在ファイルを開いた時に統一できます。 VS2015までは Productivity Power Tools で提供されていた機能が個別パッケージで提供されました。
2 SlowCheetah - Visual Studio Marketplace Configuration Transform のおともに 使う人にしかいらないやつです。.NET CoreのDIで不要になった説もあります。
2 Open Command Line (32-bit) - Visual Studio Marketplace VS から.cmd や .ps1 が実行できるの便利 powershell x86 なのは注意

それぞれの拡張

Visual Studio IntelliCode - Preview

2018/12/17追記

インテリセンス、コード補完と呼ばれるコード支援機能をさらに支援します。

https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.VSIntelliCodemarketplace.visualstudio.com

公式曰く...。

IntelliCode は、使用する可能性が高いものを入力候補一覧の最上位に配置することによって時間を節約できます。 IntelliCode の推奨は、星の獲得数が 100 を上回る、GitHub 上の何千ものオープン ソース プロジェクトに基づいています。 コードのコンテキストを結合すると、入力候補一覧が調整されて共通のプラクティスのレベルが上がります。 IntelliCode はステートメント入力候補に限定されていません。 シグネチャ ヘルプも、コンテキストに合わせて最も可能性が高いオーバーロードを推奨します。 このプレビュー リリースでは、C# を使用している場合、IntelliCode にご使用のコードからパターンを学習させることができるため、独自のユーティリティ クラスやドメイン固有のライブラリ呼び出しなど、オープンソース ドメインにない型の推奨を行うことができます。 詳しくは、以下をご覧ください。

VS2017 では、自分のプロジェクトで認識させるので自分の手癖や共有コードの癖が出ます。 たとえば、Unity + UniRx で Subject に対する OnNext(T) は良く書くところですが、これがトップに来てくれる当りめっちゃ嬉しいです。(他にもありますが分かりやすいでしょう)

追記ここまで

Build Vision

最高というより空気、これなしのビルドは考えられないぐらいには必須拡張と化しています。使ってないビルドはもう考えられません。

github.com

ビルドが可視化されてなかったことに気付かされた時の絶望たるや。

これだけ Market Place に出ていませんが、発行のために動いてくれているので心待ちにしたりフィードバックをどんどん返しましょう。

github.com

発行までの Pre-release は VSIXGallery で取得できます。

vsixgallery.com

Git Diff Margin

Git 使ってますよね? ソースコードが git 上とどのような変更があったか気になりませんか?エディタ上で変更点が可視化されます。変更があれば視覚上で追えてgit 操作前に git で何を変更するか分かる、最高です。

marketplace.visualstudio.com

未保存が黄色、追加行が緑、変更が青、削除が赤で表示されています。削除内容も赤い三角から見えます。

Open on GitHub

ソースコードが Github 上でどのurl? 選択行はurlで何行目? そんなちょっとした、しかしチームでソース共有時に手間を大幅に減らしてくれます。

いまだに使っていますが、そろそろ標準であってもいいのでは..。

neue cc - Open on GitHub - Visual StudioからGitHubのページを開くVS拡張

marketplace.visualstudio.com

例えば行を選択した状態で、ブランチなり master を選ぶと?

url 上ですでに選択されています。便利!(微妙にいつも一行ずれます。)

SwitchStartupProject for VS 2017

Start up Project って設定面倒じゃないですか?右クリック嫌いだし目に見えてていいと思っています。

この拡張を使うとツールバーから Start up Project を確認、設定できます。ビルド同様ここにあった方が楽です。

marketplace.visualstudio.com

便利じゃないですか?

他にも multi-project startup として、複数プロジェクトの同時起動も簡単に設定できます。

https://bitbucket.org/thirteen/switchstartupproject/src/tip/Configuration.md?fileviewer=file-view-default

VSColorOutput

Visual Studio なぜかデフォルトでは Output (出力) Window に表示された文字の色を設定できません。エラーなら赤にしたいとかありませんかねぇ?

そんなときにこの拡張をいれると幸せになります。

marketplace.visualstudio.com

例えば正常ビルド

例えばエラー

分かりやすいと思います。

設定も随意に

こんなこともできたり。

Custom Document Well

すべては縦タブです。

marketplace.visualstudio.com

Open UserSecrets

ASP.NET Core では、プロジェクト名を右クリックすると Mange User Secrets (ユーザーシークレットの管理) メニューが出て、ローカル開発用 secrets.json をVSで編集しやすくします。 しかし、.NET Core Console ではこの機能がなく、せっかくMicrosoft.Extensions.Configuration.UserSecrets nuget をいれて User Secrets を取り扱えるようにしても、VSであつかうのに困ります。

この拡張を使うとそんな苦しみがなくなります。

marketplace.visualstudio.com

BlackSpace

末尾の余計なスペースをハイライト表示してくれます。設定で保存時に自動的に消すこともできるので便利便利。

marketplace.visualstudio.com

Github 上で余計なスペース見かけるとちょっと嫌になる人におすすめ。Hard Tab / Soft Tab が見やすくなるというのもあったり。

LetMeEdit

VS2017 では、新csproj フォーマットにおいてVS標準で csproj の編集メニューが追加されたのでLetMeEditは不要です。ただし旧csprojではunloadなしの編集はサポートされていないのでLetMeEditがいいでしょう。

LetMeEditを使うと、プロジェクトファイルを unload することなく編集できるようになります。

VS2015 までは EditProj という拡張を使っていましたが、2017 対応していません。そんな人は LetMeEdit がそのままの使い心地を提供します。

marketplace.visualstudio.com

unload って手間だとわかります。ソースや.csproj の変更時に必ず reload しないと整合性おかしくなりやすいので注意です。(自動的に聞かれます)

PowerMode

楽しいは正義。ただし画面が大きかったりパーティクルを多くすると重いです。

https://liammorrow.gallerycdn.vsassets.io/extensions/liammorrow/powermode/2.2/1495174801744/264136/1/demo.gif

marketplace.visualstudio.com

画面のゆれを止めたりするとカクツキがへって快適に楽しくなります。わたしはこんな設定。

VS Code でみんな大好きアレのインスパイアですね。

atom.io

Fix Mixed Tab

私はソフトタブを使うのですが、まれに直接ファイル編集したときや何かのインポートで入ったファイルはハードタブだったりします。この混在ファイルに対して、untabify (ソフトタブ) か tabify(ハードタブ) を一括適用できる拡張です。

marketplace.visualstudio.com

SlowCheetah

以前記事にしたようなことをするには必須のパッケージです。なんというか便利極まりないです。ただ、シンプルなプロジェクト構成ならいらないかなぁとも思います。

tech.guitarrapc.com

marketplace.visualstudio.com

2018/12/17追記

ASP.NET Core で紹介された DI によるコンフィグ構成がサポートされたことで、ビルド時のConfiguration Transform はもう不要な感じもあります。ということで以前よりおススメさげました。(4 -> 2)

追記ここまで

Open Command Line

cmd を開いたり、パスコピーだったりできます。便利。

marketplace.visualstudio.com

ちなみにこいつの Open Project File は unload をするので嫌いです。

使わなくなった拡張

以前、Productivity Power Tools 2017/2019 - Visual Studio Marketplaceを挙げていましたが、VS2017から機能は個別にパッケージ提供されています。そのため、Productivity Power Tool自体は使っておらず個別の機能をインストールしています。

利用している個別パッケージはリストに書いてある、Custom Document Well、Fix Mixed Tabsです。

Productivity Power Tools 2017

Visual Studio でタブの位置を横に持っていきたい、タブの色をプロジェクトごとに変更する、空白行をぺちゃんこにしたい、スクロールマップとソースコードの位置を合わせたい、Ctrl + Click で定義をピーク表示 などなど様々な「使う機能」が集約されています。

何気に Visual Studio Market Place 上のいくつかの Microsoft パッケージはこれに統合されています。

marketplace.visualstudio.com

一番うれしいのが Hard Tab と Soft Tab*2 が混じった時の統一ポップアップです。私は Soft Tab 好きなので Untabify ですねぇ。

まとめ

様々な拡張があります。なにげに VS2015 と VS2017 で引き継がれていない拡張も多いです。いい機会なので見直してだいぶん減らしました。

ReSharper も実は辞めました。Ctrl + T が VS2017 だと Ctrl + 1, Ctrl + T なんですね、今知りました (

http://visualstudioshortcuts.com/2017/visualstudioshortcuts.com

*1:VS2017 から起動に時間がかかるようになる原因のパッケージを教えてくれたりします。

*2:https://stackoverflow.com/questions/26350689/what-are-hard-and-soft-tabs

Github for Unity を導入してみる

Unity はいくつかの理由で Github.com を使うのが手間になることがあります。その中で最も障害となりえるのがlarge binary assets、つまり大きなサイズのバイナリファイルの扱いです。

今回は、先日発表された Github for Unity を利用することで、このフローがどう改善するのか見てみましょう。

github.com

目次

なぜ Github.com で Unity を管理するのが手間なのか

さて、ゲーム開発は多くのスタッフが協力して成り立ちます。コードやアセットの管理にGithub のような 分散バージョン管理システム(DVCS) を用いるのは、エンジニアから見るとごく自然だと思います。

これはUnity のようなゲームエンジンでコンテンツを作るときも同じです。しかし Unity をはじめとしてゲーム開発ではアセットが大量に必要になります。特に Texture *1 ファイルの数とサイズが大きくなりやすいことで苦しいことも多いのではないでしょうか。

ここで立ちはだかるのがGithub.com のDisk Quota と称される単一ファイル、リポジトリへの制限です。*2

About large files on GitHub - GitHub Docs

2017/7/14時点で次の推奨 (事実上の制限) になっています。*3

  1. We recommend repositories be kept under 1GB each. This limit is easy to stay within if large files are kept out of the repository. If your repository exceeds 1GB, you might receive a polite email from GitHub Support requesting that you reduce the size of the repository to bring it back down. (リポジトリサイズ : 1GB未満維持を推奨。超えた場合サポートからのサイズ縮小リクエストが来ます。)
  2. we place a strict limit of files exceeding 100 MB in size (単一ファイル当り 100MBの制約)

※ 他にも Webからのファイル追加では、25MBまでのファイルサイズ制限があったりしますが主眼ではないので割愛します。

このGithub.com サイズ制約を意識していないと、大量の画像ファイルやメッシュデータなどをバージョン管理しようとしたときに容易に制限に引っかかってしまいます。私は当時、よくpush しようとして File limit でpushが失敗してしょんぼりしましたが皆さんはどうでしょうか?

大容量に成りうるファイルのバージョン管理には Git LFS を利用する

Github は、そういった大容量のファイルを扱う際は Git LFS を利用することを推奨しています。

Managing large files - GitHub Docs

git-lfs.github.com

LFS 対象のファイルは、Github 上ではポインタファイルとして扱われるのでファイルの大きさによらず 1KB未満 で済みます。やったね。

version https://git-lfs.github.com/spec/v1
oid sha256:4665a5ea423c2713d436b5ee50593a9640e0018c1550b5a0002f74190d6caea8
size 36

おそらく初めに悩むのが、git LFS が利用している git の smudge filterclean filter 機能だった方は私だけではないのではないでしょうか?実際、このfilter でトラブルが起こったります。*4

Git LFS に関しては素晴らしいQiitaエントリがあるので参考にどうぞ。smudge/clean filterについてもサクッと理解できます。

qiita.com

ただ git と git lfs は別のコマンドなので少し面倒な部分があります。またコマンドはなく何かしらのGit を扱えるツールを用いる場合、別途 Git LFS をサポートしている必要があります。

Github for Unity を用いないこれまでの流れ

さて、Github + git lfs の例を見てみましょう。

今回はサバイバルシューターのチュートリアルでやってみます。

unity3d.com

ディレクトリを見ると Textures に pngや tif があるのでこれを git lfs 対象としてみます。

まず、.gitattributes はこのようにしてみました。

gist.github.com

私はUnityの場合、.gitignore をこのようにしています。

gist.github.com

早速 git add します。Source Tree で staging にあげようとすると2MBを超えるファイルは警告がでますね。もちろんこの *.asset も git lfs の対象拡張子にしています。

さて、git add でstaging エリアに上がったファイルを見ると smudge フィルタを通ってポインタファイル化されています。例えば、ArchesDiffuse.png という画像(バイナリ)ファイルがテキストで表現されています。

SourceTree で push 状態を見ると Git LFS に対象ファイルがどんどんpushされているのが見えます。これはもちろんコマンドでも同様にわかります。

無事に普段と同じフローで lfs 対象ファイルもpush されました。

では Github.com 上のファイルを見てみます。

github.com

先ほどの ArchesDiffuse.png は、中身がポインタファイルにも関わらず、Github.com 上ではちゃんと png としてLFS先の実体画像が表示されています。LFS対象でない普通の画像ファイルと同じように扱えているのは素晴らしいですね。

GithubForUnitySample/ArchesDiffuse.png at master · guitarrapc/GithubForUnitySample · GitHub

通常のファイルと LFS 管理ファイルの違いは、Stored with Git LFS という表記があることです。

では実際の中身を見るため、Rawファイルを見てみましょう。

https://raw.githubusercontent.com/guitarrapc/GithubForUnitySample/master/Assets/Textures/ArchesDiffuse.png

先ほど同様ポインタファイルになっていることが分かります。

git lfs の場合の git lfs clone/git lfs pullはここでは主眼ではないので、ぜひ試してみてください。

Github for Unity を用いてみる

さて通常の git/git lfs を用いた Github での Unity ファイルのバージョン管理はわかりました。これが Github for Unity でどう変わるか見てみましょう。

ダウンロード

導入するためには、.unitypackage を使います。つまり、プロジェクトごとに利用を選択できます。

GitHub for Unity | Bring Git and GitHub into Unity

パッケージは、リリースタグから取得できます。今のところは Alpha なので動作が不安定なことは理解した上で使うといいでしょう。*5

Releases · github-for-unity/Unity · GitHub

今回は、 v0.15-alpha を用います。

事前準備とかは、README を見るといいです。ブログ見る必要なくなります。

Unity/README.md at master · github-for-unity/Unity · GitHub

なお、現在 サポートしている Unity は 5.4~5.6。LFS は 2.xです。

  • Unity 5.4-5.6 (Unity Personal も可)
    • We've only tested the extension so far on Unity 5.4 to 5.6. There's currently an blocker issue opened for 5.3 support, so we know it doesn't run there. There are some issues for 2017.x, so it may or may not run well on that version. Personal edition is fine
  • Git and Git LFS 2.x

Unity へのパッケージ導入

ツールバーから行きます。 Assets > Import Package > Custom Package.... からダウンロードしたgithub-for-unity-0.15.0.0-alpha.unitypackage を導入します。

いい感じに導入されました。

ツールバーに Github メニューが増えました。

Github ログイン

ツールバーのGithub > Authenticate からGithub にログインできます。このアカウントは、Github Web にログインするときの UserName/Password を用います。

注意点として、内部実装として、Octokit.Net を用いて Github API v3 を使っているため、2FA を使っていても Password です。通常2段階認証の場合、Password の代わりに Personal Access Token というケースが多いと思いますが違うので注意してください。

2段階認証を使っている場合は、2FA PIN コードが求められます。

上手く認証できましたか?

Github ウィンドウ

ツールバーから Github > Show Window でGithub のタブが開きます。

さて、5つのタブがあります。

  • Changes
  • History
  • Branches
  • Settings
  • Account

History タブ

ここにはコミットグラフが表示されます。

先ほどの initial commit というコミットログがグラフに表示されています。

またここから、Getch / Pull / Push 操作が可能です。

コミットログを選択すると対象のファイルがツリー表示されます。

残念なことにツリービューのみの提供に加えて、ここのウィンドウサイズは変更できないため非常に見にくいです。

なお現在は日本語が文字化けます。PRがきているようですが....サイドエフェクトがあるようなのでいつになるか待っている状況です。

github.com

github.com

github.com

Branches タブ

local と remote のブランチ状況が表示されます。

もちろんここでリモートブランチに切り替えたり、新規でブランチを切ることもできます。

ブランチをダブルクリックして checkout できます。

Branches の上に現在のブランチが表示されています。ブランチ一覧でも微妙に bold になっています。

Settings タブ

Git 設定状態や Lockされたファイル一覧が見えます。

Locked ファイルは、噂の他の人との共同作業用の機能です。わくわく機能ですね。

You can see who has locked a file and release file locks after you've pushed your work. https://github.com/github-for-unity/Unity#settings-tab

さて、Path to Git を見るとここで使っている Git が Portabl Git であることが分かります。

C:\Users\<UserName>\AppData\Local\GitHubUnity\PortableGit_f02737a78695063deace08e96d5042710d3e32db\cmd\git.exe

Account タブ

Go to Profie で、Github.com 上のプロファイルページに移動します。

Changes タブ

ここに、git 上の変更が表示されます。ファイルの変更は色で表現されています。

  • 追加 : 緑
  • 削除 : 赤
  • 変更 : 黒
  • ファイルの移動 : 削除と追加として表示されます

残念ながらこの画面で可能なのは、Commit のみです。

よくあるあるな、Discard/Remove/Reset/Ignore などの操作をしようにも右クリックが出ないため git 操作の完結をするには機能不足です。

残念ながら File Diff もサポートしていませんが、Issue に上がって修正PRがマージ済みです。

t.co

github.com

また Staging Area もありませんが、これはIssueが上がっています。

github.com

Commit 操作

Changes タブからGithub for Unity を取り込んだコミットをしてみます。チェックをつけて Commit メッセージを書きます。

これで Commit してみましょう。

上手くいきました。

これを push します。ここが少し時間かかります。が、問題なく リモートブランチを作ってプッシュされるのでちょっと待ってみてください。

push したら、Github.com 上で LFS 対象ファイルがどうなったか見てみましょう。うまく扱えているでしょうか?

https://github.com/guitarrapc/GithubForUnitySample/blob/master/Assets/Editor/GitHub/GitHub.Api.dll

問題なく push されたようです。

マージしてみましょう。残念ながら Github for Unity から PRを直接作成できないので Github.com 上からPRを作ります。

PR をマージします。

Github for Unity で Branches タブから master を checkout します。で、当然 Github for Unity が入る前になるのでタブ消えます。(あっ)

ちなみにSource Tree 上ではこのように表示されるのでorigin/master を Pullしておきます。

さて History を見ると、微妙にツリーっぽい表示になっています。

SourceTree などは見やすいツリー表示なので、ちょっとこれだけで把握は難しいですね。

これで一通りの動きが見えました。

コントリビュート

さて、Github for Unity は Github 上で公開されています。Issue を積極的に受け入れる姿勢を見せており、Twitter でつぶやくと補足されます。うれしいです。

ということで、改善点があれば Issue で積極的に共有するといいでしょう。コードはC# で書かれており、PR も積極的に受け付けているので、ぜひみなさんもどうでしょうか。

私からは4つIssue をあげてあります。

  • Index.lock が消えないケースがあること

github.com

  • Tree View だけでなく、Flat List View を用意することの提案

github.com

  • Changes タブでの Remove/Discard/Reset/Ignore などの git のフル操作の提供提案

github.com

  • Github for Unity から直接PRをする提案

github.com

まとめ

Github for Unity、まだUnity のみですべての git 操作が完結するというには早いです。しかしアルファのわりに動作は比較的安定しており、ある程度の層がここからできます。

ぜひ使ってみるといいと思います。

参考

Github for Unity の基本的な使い方は他の方もまとめておいでです。

http://stepup-next.halfmoon.jp/blog/2017/06/30/unity-for-github/stepup-next.halfmoon.jp

*1:tga や png などの画像ファイル

*2:Github Enterprise のようなホスティングは別とします。またほかのgit を使ったサービスも記事の対象外です。

*3:このサイズ制限がなければ、大規模なUnity開発でも懸念をいただくことなくGithub.com 利用できるですが仕方ありません。

*4:ちなみにlfsの対象指定は smudge/clean filter の指定 = .gitattributes で行います。 https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes

*5:αってそういう意味だしそこを割り切ると楽しく使えます。

最近のPC 構成

私にとってお仕事の道具であり過ごす時間が最も大きいものといえばPCです。

市場に魅力的なスペックのパーツが出てきたときに、値段が落ち着いて買えそう、変える意欲と自分の中の需要もあるという条件でじんわり決めて買っています。

今回、自分メモで今の構成を書いておきます。

メモ : 2017/7/3 時点

目次

構成

PC、Monitor、Keyboard/Mouse、Network、Otherで分けてみます。

特にマウスやモニターはPC本体よりも入れ替え頻度が高く、特にマウスはちょくちょく変えている気がします。

PC

総じて妥協です。必要十分だけど、この構成別に数年前から見ても良くなっただけで革新ないんですよね。PCまだこの形式なのかしら?進化を感じなくて面白くないですね。

  • ストレージやメモリは、次に変えるときは、3D XPointであってほしいところです
  • CPU は Ryzen で次からのモデルに期待です
  • GPU はまだまだダメですねぇ。おっそ
  • 数年前から完全にWifi環境です。ケーブルをいかに減らすかっていいですよ。7260HMWDTX1 はそんなにオススメできないけど、デスクトップをWifiにするにはいい感じです。USBのWifi子機をいくつか試してきたんですが、やはりボード差し込みのほうがおススメです。これはアンテナ自由に配置できるし。*1
Parts モデル 入れ替え日 備考 満足度
PC Case CoolerMaster Silencio 352 2016/6 小さいは正義 ★★★★☆
MotherBoard ASUS H170M-PLUS (Intel H170) 2016/6 こんなのでこの構成ならok ★★★★☆
CPU Intel Core i7-6700 2016/6 いうほど早くない ★★★☆☆
CPU Fan Noctua NH-D9L 2016/6 空冷でいいです ★★★★☆
Power OWLTECH RAIDER RA-650S 2016/6 650W 80PLUS Silver ★★★★☆
RAM DDR4 SDRAM PC-17000 32GB 2016/6 16GB*2
そろそろ64GBかな
★★★★☆
Storage1 SM951 MZVPV256HDGL 2016/6 NVMe
速度〇、512GBほしい
★★★★☆
Storage2 Crucial MX200 2.5 500GB 2015/5 SATA 6Gbps ★★★★★
GPU GeForce GTX1080 8GB Founders 2016/6 Radeon5年使ってましたがやっぱり嫌い ★★★★☆
Wifi Intel 7260HMWDTX1 2016/6 802.11ac/a/b/n + Bluetooth
ドライバが微妙に不安定*2
★★★★☆

Monitor

先日ようやく4K入れました。今後1-2年は変わらないと思います。モニタは Display Port に統一するといろんな問題から結構解放されるのでオススメです。*3Multi Stream Transport 使えるし。HDMI使う理由がないならDP最高です。

  • モニターアームがやっぱり最高なので4Kのスタンドはちょっと考えたいです。まさか4K が 13kgのモニタになるとは
  • Dell U2715HはUSBハブ機能が弱いの以外はかなりバランス良くおススメです
  • Microsoft WirelessAdapter は品質に関しては最悪に近いのでどうしても出なければ推奨しません
Parts モデル 入れ替え日 備考 満足度
Display Monitor1 Acer ET430Kwmiippx 2017/7 4K 43"
ハーフグレア
USBハブなし
★★★★☆
Display Monitor2 Dell U2715H 2016/6 2550x1440 27"
アンチグレア
★★★★★
Monitor Arm エルゴトロン LX 45-245-026 2013/6 耐荷重9kg ★★★★★
Wireless Display Adapter Microsoft WirelessAdapter V2 P3Q-00009 2016/3 ドライバが不安定
使えるから許容
更新ないの最低
★☆☆☆☆

Keyboard/Mouse

マウスぐらいしか買い替えません。しばらく変えない気がします。

  • Realforce ほんと打鍵が楽で好きです。数か月前からスタンド立てなくなって使いやすさ増しました。キーボードだけ有線なのですがモニタのUSBハブにさしています。無線にしたい気もします
  • 小さいマウスが好きなので、5年前からLogicool の小さいものを家で好んで使っていました。LOGICOOL エニウェアマウス M905r を 4年(一度壊れて同じものを購入)、その後 Logicool MXAnywhere2™ MX1500 でしたが、ミドルボタンがスクロールボタンじゃないのが唯一好きになれないポイントでした。これ、Unity でミドルボタン操作で動かす癖のある私にはつらいものがあります。更に3D触っているとなると会社で使っている MX Masterの高速スクロールの快適さがやばいです。我慢の限界で先日調べていると、ちょうど最新版の MX Master2S がちょうど発売したので勢いで買い換えました。幸せです。最高。無線マウス最高です。電池より充電型がおすすめ
  • リストレストは5年つかってたのが壊れて買い換えました
Parts モデル 入れ替え日 備考 満足度
Keyboard Realforce91UDK-G 2013/4 テンキーレス
日本語配列カナなし
静電容量無接点方式
ALL45g荷重
★★★★★
Mouse Logicool MX2100sGR MX Master 2S 2017/6 Unifying/Bluetooth
充電式
高速スクロールがすべて
★★★★★
リストレスト サンワサプライ MPD-MU1NBK 2016/7 安定 ★★★★☆

Network

そろそろプロバイダを Nuro にしたい気持ちです。

  • Yamaha のファンなのですが、そろそろ飽きましたね
  • Wifiは個人ならAterm が安定です。他の何か言いのないかなぁ
Parts モデル 入れ替え日 備考 満足度
Routeer Yamaha RTX810 2013/9 IPSecの検証に便利。
AWS/Azureとつながない理由がない
★★★★★
Wifi NEC AtermWG1400HP 2014/10 いうほど早くないけど安定 ★★★★☆

Other

UPS ないときに雷で何度壊したか.... UPS本当におススメです。

  • UPS はずっと OMRONを使っています。APCが仕事で痛い目にあったことが多いためなのです。処分も楽なので OMRONおススメです。BY80Sはずっと安定してていいUPSです
  • VIVEは開発用途で持っています。VRやってる以上は家にないとつらいです
Parts モデル 入れ替え日 備考 満足度
UPS OMRON BY80S 2012/12 そろそろ交換時期 ★★★★★
HTC VIVE 初期モデル 2016/4 開発用。TiltBrushが好き。 ★★☆☆☆
サーバーPC いくつか 2008~ 型落ちしたら気分でOS入れ替え
捨ててもいいかな
★★☆☆☆

まとめ

一通り一巡していますが、現状だと CPU と GPU が遅いなぁと思うぐらいで他は快適です。

自宅は好き勝手にできるので何かを試すにはちょうどいいです。思いついたら試して壊して構築してをよくやってます。

*1:モニタ裏に私は配置しています。

*2:ほぼ安定なのでok

*3:スリープ復帰時にDirect Xを使用しているアプリが落ちる問題は別に私は影響ない

Acer ET430Kwmiippx で 4K 43" 環境にした

4K はここ一年ぐらいどうしたものか考えてきました。

自宅では、2560x1440(縦) と 1920x1080(横) の2画面構成でいました。しかし、Unity をはじめとして多くのウィンドウを開く必要に年々迫られるようになり ディスプレイで多くのウィンドウを適切な大きさで表示しないと効率が悪い状況になりました。

今回 4K ディスプレイをいくつか検討して Acer ET430Kwmiippx を設置してみたのでメモを残します。

目次

4K の必要性

いらなければ買わないのです。4K である必然性が出てきたのはいくつか自分に納得のいく理由をつけられたからです。*1

ディスプレイは作業空間なので、仮想的に広げるのもいいのですが、単純に今表示している画面が大きいかどうかはポイントだと思います。

同時に開いていおくアプリケーション/ウィンドウの数が増えた

私が主に開くアプリケーションは仕事も個人も大体似ています。これらをウィンドウに大きめに表示することを好んでいます。 - Visual Studio / LinqPad / Unity / PowerShell / VSCode / Chrome / Vivaldi / Slack / SourceTree - ブラウザならタブという手があるのですが、難しいものですね - あとウィンドウをそのまま比較を結構よくやるので、タブやバーチャルデスクトップでは難しいのです

仮想デスクトップは余り活用しておらず、基本的にディスプレイの中にアプリを開きっぱなしにする傾向にあります。

  • 仮想デスクトップにはまっていた時期もあったのですが、開発/普段などの用途で分けるようにしても用途と画面を一致させて切り替える使い方を自分になじませられなかったため上手く扱えていません
  • ノートPC なら便利なのですが、複数ディスプレイ環境での仮想デスクトップの活用がなかなか見いだせていないです

1920x1080 のディスプレイへの不満

  • 1920x1080 画面表示が小さい
  • 2560x1440 と 1920x1080 の構成にしてから 解像度の差が気になるようになった
  • 1920x1080 のディスプレイが7年使っていて2560x1440との色見ギャップが気になるようになった

※ 1920x1080に感じる不満はディスプレイサイズとの不一致に端を発しているので、どのみち 4K にしても根本的な問題が変わらないのですが、まぁ。

だいたいそろった感

ハードウェアにいつも少し様子見する理由です。そろそろ手を出してもいいかなぁと。

  • 価格が5-6万でモデルの選択が出てきたのと、値段がだいたい収まったこと
  • いくつかの知見の記事もそろってきた

4K の選定

4K ディスプレイいくつかあります。周りにも使っている人がいるので意見を伺ってみて選定しました。結果購入したのはAcer ET430Kwmiippx です。

amazon.co.jp - Acer 4K 43インチ ET430Kwmiippx

ディスプレイサイズと文字の大きさ

最も最重視したのは、Windows 上で Text Size 100% にしたときに 文字が読めるかどうかです。

文字が快適に読めないなら4Kディスプレイにした意味がありません。仮に size of text を 120% などにすると画面領域が狭まるため、私にとっては4Kにする意味がかなりなくなります。

www.eizo.co.jp

100%で文字が小さくてもコードなどはIDEなどでテキストサイズを大きくすればいいのですが、システムフォントって想像以上に目に入っているので小さいと読むのに疲れるのですね。

現在の 24" (1920x1080)、 27" (2550x1440) の文字サイズは数年付き合っていて疲れない大きさなので、このバランスを維持することを最優先にします。

実際に4Kを利用している人に話を聞き、自分でも試した限りだと、以下のように感じました。

  • 4K 27" で Text Size 100% は、文字が非常に小さく読めるが読むのがストレス
  • 4K 32" で Text Size 100% は、文字が明らかに小さく2550x1440 がそばにある状況では常に比較してしまい疲れてくる

画面解像度と表示される文字の大きさを優先すると 40" 以上のモデルに限られます。

本当はデスクに置くディスプレイサイズは 27" が最適だと思っているのですが、こればかりは仕方ないです。

価格

VRやAR開発をしているためか、4K に対して過度な期待を抱けないという判断でいます。*2よって、予算は 6万前後まで。*3

40" で6万前後ということで候補となったのが以下のモデルでした。

www.philips.co.jp

www.acer.com

www.iodata.jp

他のスペックで気になるところ

スペック 要件
アスペクト比 16:9 *4
視野角 IPS であればok
接続方式 DP v1.2 *5
光沢 グレア or ハーフグレア *6
フレーム ベゼルはなるべく薄い方がいいです。フレームレスであるひつようはありません
USBハブ あればいいですが無くても 27" にあるので問題なし
高さ調節 なくてもok。必要になればアームに変更

検討

決定打は実機を見て気分で。43" 大きいなぁと思いつつ、PhilipsとAcer で Exploerer 上の文字表示をみて決めました。

モデル メモ
Philips BDM4350UC/11 サポートが5年と長いのですがサポートをほぼ使わないのでプラス材料にならず。重さ9.72kg と軽いのが嬉しいです。USBハブもついていて嬉しいです。ただ、焼き付けの声が多く不安が強かった程度です。
Acer ET430Kwmiippx DP の出力があるので MST に対応しています。USBハブがないのが苦しいところ。Philipsもそうですが、背面と足の突き出しが少し大きいのも嫌かな?実機をヨドバシアキバで見てきたのですが、Philips よりも画面がきれいに映っていたのが決定打でした。
IO-Data lcd-m4k401xvb 40" と他の43"よりも小さいのがいいです。ただ実機でも感じたのですがベゼルが太すぎる、発色が赤っぽい?DPが不安定という話があったのでDP中心にしているのでナシで。

開封の儀

とりあえず梱包状態から設置まで。

到着

Amazon で購入してもよかったのですが、土曜着にしたかったのとポイントつくしで ヨドバシカメラで買いました。

箱大きいです。

とりあえず開封してみるといい感じで大きいです。

背面をみるとVESA規格の 200x100 でマウントできます。

エルゴトロンのLXデュアルデスクマウントアーム サイドバイサイド(耐荷重 9KG)でやれるか変換プレートで試しましたが、案の定無理でした。挑戦はおすすめしません。MX デスクマウントLCDアームでぎりぎりですね。

VESA規格変換段付プレート VESA規格75/100㎜ → VESA規格100㎜×200㎜ NB-VS1020H を用意してたんですが無駄になりました。

スタンドはねじ4本で止まっています。高さ調整はできずチルトのみ可能です。

端子はまとまっています。DPの出力があるのいいですね。

設置

設置前の状態はこれでした。コーディングを縦置きディスプレイでしているのですが、横配置のモニタとの差異が大きい状態です。

設置後です。。今回はモニターアームを使わずそのままデスクに配置しました。

椅子に座った状態でとると視界がモニタで埋まります。

所感

2日使った感想です。(2017/7/2時点)

  • 文字の大きさは全く気にならず、文字とディスプレイのサイズのバランスは想定通りばっちりです
  • ブルーライト低減機能をon にすると黄色発色になるのでブルーライト低減切っていますが、若干目が疲れる気がします。もう少し使って判断だと思います
  • 43" 大きいです。視界が凄く埋まります。良い意味でも悪い意味でも。会社でこの状態は嬉しくないかも? 家だからいいですが
  • USBハブはもともと縦置きのディスプレイでしか使ってなかったので問題なし
  • モニタが大きくなってウィンドウを、FullHDのサイズでそのまま配置できるのは楽です。横幅が崩れないので、表示への違和感もなく、単純に作業スペースが広がりました
  • 4KフルでYoutube の1080表示なども荒れて見えます。なるほど噂通り。スーパーシャープネスを有効*7にするとましになります。少し遠めで見ると気にならないですが
  • 文字がかすれて見えます。これもスーパーシャープネスで少しマシですが難しそう。高精細さが失われたのは間違いないのでちょっと今後4Kが出るならそこも注目だと思います

1週間使った感想です。(2017/7/9時点)

  • 画面は大きいけど疲れるってことはなくなりました
  • ブルーライトとかも気になりません
  • 部屋を真っ暗にしてルコと多いのですが、単純にディスプレイ大きい分、部屋が明るくなりました (
  • USBハブはやっぱりなくても平気
  • フルスクリーンウィンドウじゃなくて、画面の半分か1/4にすることに慣れました。作業スペース多いの嬉しいし、快適です
  • ウィンドウを小さくすると文字のカスれが気にならなくなるようになって一石二鳥でした
  • 一度だけディスプレイ表示がバグったけどディスプレイ再起動で直った
  • レスポンシブな画面で、一定以上に大きな画面サイズになるとむしろ余白多かったりするデザイン多くてしょんぼりですね。Youtube とか。こういうサイトは遠慮なくウィンドウ小さくしています

3週間使った感想です。(2017/7/23時点)

@ufcpp せんせーも同じモデル買われたらしく記事面白かったです。

http://sp.ch.nicovideo.jp/ufcpp/blomaga/ar1274968sp.ch.nicovideo.jp

  • 記事にあるように、わたしもディスプレイ少し湾曲しててもいいかもって思い始めました。実際モニタの恥が遠く感じるので湾曲大事だなぁと。ただし私の場合は27"モニタ縦置きがあるので湾曲だと微妙かも?
  • タスクバーは1つでいいと思ってるけど、昔あったドックやランチャー系欲しくなってきた
  • 私の利用方法は、画面の半分を縦にウィンドウたてて、余った半分にモニタを1/4ずつ、あるいは乱雑においています。Visual Studio は縦置きモニタに表示
  • やっぱり時々画面が線まみれになる(ディスプレイ再起動で直る) 昨晩併せて3週間で3回。だいたい1週間に1回のペースで遭遇していますね。(別に問題とは感じてない)
  • リモートデスクトップをしたときに、リモート画面が小さくて余白が気になる(無茶ぶり)

まとめ

4K で 43" は大きいですがオススメです。個人的には 38-40" ぐらいがベストな気がします。トリプルディスプレイにする気は失せたのでそこはバッチリですね。特に Unity のようなディスプレイにウィンドウを大きく映し出す場合は効果が高いです。

モニタが小さくてやりにくいと思っていた言い訳が今後できなくなるのは素晴らしいと思います。モニタアームだけなんとかしたいです。

文字のかすれというか、高精細さが失われるのは間違いないので4Kに求めるものによってはそこを注目するといいと思います。

*1:こじつけですね

*2:しかしVRでテキストを読むのは絶望

*3:これでも出しすぎで5万以下にしたかった

*4:EIZO の四角はナシ派です

*5:HDMIは VRHMD用に使うのでHDMIはミラキャスト以外はありえない派です。DP1.2 なら Multi Stream Transport 使えるのも良いです

*6:映り込み疲れるので嫌いです

*7:デフォルト無効

Windows の TimeZone 設定をコマンドラインから行う

Windows の TimeZone 設定といえば コマンドプロンプト以外にも PowerShell や .NETでもできます。

Windows 10 でどのようなやり方があるのか軽く見てみましょう。

目次

各種方法

ざっくり見てみます。

コマンドプロンプト

TZutil が安定でしょうか。

Tzutil Command-Line Options | Microsoft Learn

書式が相変わらずめんどくさいです。

TZUTIL </? | /g | /l | /s TimeZoneValue[_dstoff]>

今のタイムゾーンを取得したり、タイムゾーンの一覧取得、設定が可能です。

gist.github.com

PowerShell

Powershell 5.0 から Microsoft.PowerShell.Management モジュールに Timezone に関する Cmdlet が2つ追加されました。Get と Set です。

PS > man Get-TimeZone

NAME
    Get-TimeZone

SYNTAX
    Get-TimeZone [[-Name] <string[]>]  [<CommonParameters>]

    Get-TimeZone -Id <string[]>  [<CommonParameters>]

    Get-TimeZone -ListAvailable  [<CommonParameters>]


ALIASES
    gtz


REMARKS
    Get-Help cannot find the Help files for this cmdlet on this computer. It is displaying only partial help.
        -- To download and install Help files for the module that includes this cmdlet, use Update-Help.
        -- To view the Help topic for this cmdlet online, type: "Get-Help Get-TimeZone -Online" or
           go to https://go.microsoft.com/fwlink/?LinkId=799468.

使い方も簡単です。Get-TimeZoneで今のタイムゾーン取得、Get-TimeZone -ListAvailable で一覧取得、Set-TimeZone で設定。まんまですね。

gist.github.com

ちなみに PowerShell DSC でも可能です。まだリリースされてませんが、1.6 でWMF5.1 や Nano Server 向けに TimeZone Cmdlet を使うように分岐が入ります。

github.com

gist.github.com

.NET (C#)

当然 C# でも操作できます。 Set がだるいので、コマンドをラップしてもいいかもしれません。

gist.github.com

WSL (Bash on Ubuntu on Windows)

WSL から UbuntuでやるようにはSETがちょっとうまくいかないのでどうすればいいですかねぇ。

手元の bash で sudo 壊れて直してないので試してませんが、ln 置き換えでいい気がします。 gist.github.com

2017/6/21 追記

記事を見た先輩から教えていただきました。

Ubuntu のヘルプ通り、本来ならこれで行けます

UbuntuTime - Community Help Wiki

gist.github.com

しかし、現在バグがあらいます。

bugs.launchpad.net

修正までは以下でいいようです。

gist.github.com

まとめ

どれを使ってもいいでしょう。この程度だと PowerShell が一番楽、かな?