Magnolia Tech

いつもコードのことばかり考えている人のために。

僕らがType-Cケーブル一本でディスプレイ接続を実現するまでの、長い長い道のり

周りを見渡すと、MacBook ProiPad Air 4、HP ProBook、Lenovo ThinkPad...と、手元の機器がすべてType-C出力によるディスプレイ接続(と、給電)に対応していた。ディスプレイもASUSのモバイルディスプレイ、NECの4Kディスプレイと、どれもType-C入力による接続をサポートしている。

ケーブル一本で接続できて、電源供給も対応するのがType-Cでのディスプレイ接続の良いところだけど、やはりType-Cは単なるポートの形状でしかなく、お互いに何の規格をサポートしているか、実際に使えるか、しっかり見極める必要が、ある。

そんなチェック観点をまとめてみた。


PCやタブレットのType-Cポートがディスプレイ出力に対応していること、対応している規格を確認する

PCやタブレットのスペック表にはディスプレイ出力へ対応していれば、「対応している」ときちんと書かれているが、その表示に使われている規格や、対応している解像度が詳細に書かれていることは、少ない。

Type-Cのディスプレイ出力はAlternate ModeでDisplayPortでの出力になることが多い。

例えば、M1モデルのMacBook Proの仕様には以下のように書かれていて、DisplayPortをサポートしていることが分かる。

充電と拡張性

2つのThunderbolt / USB 4ポートで以下に対応:

充電

DisplayPort

Thunderbolt 3(最大40Gb/s)

USB 4(最大40Gb/s)

USB 3.1 Gen 2(最大10Gb/s)

HPのProBookというノートPCはスペックのどこを見てもサポートしている規格が書かれていなかったが、ポート横のロゴでDisplayPortをサポートしていることが分かる(「D」のマークがDisplayPortを示している)。

f:id:magnoliak:20210321213610j:plain

Type-Cポート & DisplayPortロゴ

DisplayPortの規格にも複数のバージョンが有り、バージョンによってサポートしている解像度は異なるが、出力側でバージョンまで書かれている仕様は残念なことに未だ見たことがない。

ThinkPadもスペック表には何の規格に対応しているかは書かれていなかった(DisplayPort対応のディスプレイに接続して使えたので、きっとDisplayPortなのだろう)。

ディスプレイの入力側が何の規格に対応しているか確認する

反対に、ディスプレイ側が入力としてどんな規格をサポートしているか確認する。

例えば、EIZOのEV2785というディスプレイでは仕様に以下のように書かれていて、DisplayPortに対応していることが分かる(DisplayPortのバージョンはなぜか書かれていない)。

USB Type-C (DisplayPort Alt Mode, HDCP 1.3)

NECLCD-EA271U-BKというディスプレイでは仕様に以下のように書かれていて、DisplayPort Ver 1.2に対応していることが分かる。

USB-C™ポート(DisplayPort Alt Mode)DisplayPort™規格 Ver1.2準拠 HDCP 1.3

ただ、一つ疑問なのは、Type-Cへの対応はDisplayPort Ver 1.3からでは?ということ(このスペックは今年発売される後継機種でも記載は変わっていない)。

また、据え置き型のType-C接続のディスプレイはUSBのPower Deliveryに対応した給電機能が有り、60W以上の給電ができるものが多い。給電のスペックを確認しておくと良い。

反対に、ポータブルディスプレイは、PCや、タブレット側の給電機能を使って動作するため、別に電源を別に取る必要がない。ただ、機種によってはポータブルディスプレイ自体がバッテリーを内蔵していて、逆にPC側に給電できるものも有り、ややこしい。

Alternate Modeに対応しているType-Cケーブルを用意する

以前のエントリでまとめたが、Type-Cでのディスプレイ出力は、Alternate Modeというモードを使って実現されているので、商品説明に「Alternate Mode対応」や、「ディスプレイ出力対応」と書かれているものを選ぶ必要が有る。特に給電用に特化したUSB 2.0のケーブルではディスプレイ出力はできない点に注意。

blog.magnolia.tech

映像コンテンツが4K出力できるかチェックする

ディスプレイや、PCが4Kの解像度に対応していても、映画などの映像コンテンツは著作権保護のための規格であるHDCP(High-bandwidth Digital Content Protection) 2.2への対応が必要となる(HDCP 2.2が4K対応)。

ちょっと前までの4Kディスプレイでは、Type-CだけでなくDisplayPortのポートもHDCP 1.3までの対応という機種も多く、HDMI経由でないと4Kの映像コンテンツに対応できない機種が多かった(なぜかHDMI側は、HDMI2.0/HDCP 2.2対応ができている機種が多い)。

また、Macの場合、2018年以降のT2チップを内蔵している機種でないとたいていの4K映像コンテンツの再生ができない。

この辺りの条件は映像配信サービスによって少しずつ条件が違うので、自分が使うサービスの条件を必ず確認すること。


とにかく魔境でしかないType-C周り、ケーブル、電源に続いて、ディスプレイ接続の注意点をまとめた。

最近のDellの4KモニタはDisplayPortがHDCP 2.2をサポートしているとのこと。

ケーブルは相変わらず、全部入りのAnkerのThunderbolt3ケーブルを買っておけばいいんじゃないかと。

よくよく確認していくと、実は手元に一つも4Kの映像コンテンツを再生できるスペックのPCが無いことが分かった(MacBook Proは2017年モデル!)。

iPad Air 4のスペックには以下のように書かれていて、高価な変換アダプタ(7000円以上する!)が必要な模様(手元のBelkinのアダプタではダメだった)。

対応するビデオミラーリングとビデオ出力:USB-C Digital AV MultiportアダプタおよびUSB-C VGA Multiportアダプタ経由で最大4K(アダプタは別売り)

だったら、Apple TV 4Kを買うのが一番手っ取り早いんじゃないかと思い始めた…著作権保護難しい…

Apple TV 4K (32GB)

Apple TV 4K (32GB)

  • メディア: エレクトロニクス

あとモバイルディスプレイは家の中でも置く場所が自由に選べる。

MultiSync LCD-EA271U-BK気になったところ

NEC 27型4K対応3辺狭額縁ワイド液晶ディスプレイ LCD-EA271U-BK

NEC 27型4K対応3辺狭額縁ワイド液晶ディスプレイ LCD-EA271U-BK

  • 発売日: 2018/11/29
  • メディア: Personal Computers

ファームウェアのアップデートが終わり、日常的に使い始めたMultiSync LCD-EA271U-BK。

画質は、非常に良い。今まで使ったディスプレイの中でも最高に良い。ムラも無く、隅々まで明るい。 けど、気になる点も多い。

  • ファームウェアのアップデートをしないと最新のmacOSのType-C接続が動作しない
  • ファームウェアのアップデートには修理扱いでメーカーへ送付する必要がある(着払い)
  • 有効な接続が一つでもないと、なぜかOSDメニューが表示されない
  • 出荷状態ではUSB機能が無効化されていて、OSDメニューから有効化する
  • つまり、Type-C接続しかできない場合、USBを有効にする手段がない!
  • Type-C、HDMIケーブルは付属しない(DisplayPortケーブルは付属する)

色々と不満はあるけど、普通に使い始めると気にならないので、安く入手できるならオススメ。

ただし、そろそろ売り切れで、スペック上はほとんど何も変わっていない後継機が4月下旬に出る。 メニュー周りの不思議な挙動は直っているといいのだけど…

『ドメイン駆動設計』…そもそもドメインに駆動されない設計って有り得るのか?

10年前に初めて読んで、数年おきに読み返すようにしているのだけど、読むたびに自分の中でも感想が変わる一冊……エリック・エヴァンスの『ドメイン駆動設計』

世の中そこまで悪く無いというか、別に「ドメイン駆動設計を取り入れました!」と高らかに宣言しなくても、いにしえの時代からみんなちゃんとドメインと向い合ってきたし、相応の価値あるシステムを作り上げてきた。派手に失敗した(廃棄された)システムよりも、ちょっとトラブルが多い、なにか改修しづらい、影響が調べづらい…みたいな、アジリティが低いことは問題となったとしても。

そのアジリティの低さをドメイン駆動設計の概念により少しでも高めて行こう、というならば分かるけど、「ドメイン駆動設計を取り入れないと上手く行かない」となると違うんじゃないか。

メインフレームCOBOLって世界だって、きちんと設計はされていたし、ドメインと向かい合っていたわけで、ただその方法論に良い名前がついてなかったり、妙に原理主義的な主張だったりするから、一部の人の関心しか引かなかったわけで。

未来を見据えてコードを書こうとすればするほど、ドメインと向かい合う時間はおのずと長くなるはずなんだよね。

人間同士のコミュケーションを始めるにもハンドシェイクのプロトコルが必要なんだよね

最初にハンドシェイクのプロトコルを使って正しくコミュケーションを確立させるためのやり取りにもっと意識的でありたい。

その時にアイスブレイクのさらに次のステップが必要で、そこを探ってる間は性急に結論を出そうとしてはいけないと思う。

その曖昧な状態で結論も出口も無い瞬間を否定しちゃいけないんだよね。

一家に一冊『体系的に学ぶ 安全なWebアプリケーションの作り方』

紙の方が、さっと取り出して、「ほらここに書いてある」って言い易いけど、一方で600ページ超えなので、「読んでおいてよ」って物理的に渡すとプレッシャーになるなーって思った。

でも、拾い読みしておくと、ぱっと取り出せて便利だなって、改めて思った。

20年代に『人月の神話』を読むのなら、”第16章 銀の弾などない”と”第17章 「銀の弾などない」再発射”から読むのが良いのではないか

システム開発のオフィスの本棚によく置かれている率が高そうな本と言えばご存知『人月の神話』。

それが読まれているか、読んだ人なりの感想が有るか、更には実践されプロジェクトに反映されているかは、ここでは……あえて聞かないでおきましょう。

現在出版されている「20周年記念増訂版」は、1995年に、オリジナルの出版(1975年!)に、1986年に発表された論文である”第16章 銀の弾などない”と、それ以降の議論が第17章〜第18章、第19章として加えられている。

つまり、一冊の本の中でも20年の時間が流れているのだ。

本書のタイトルにもなっている『人月の神話』は、この本の中では第2章で語られているに過ぎない。また、オリジナルの『人月の神話』で語られていることはどちらかというとマネジメント視点が強く、いきなり「エンジニアになるぞ!」みたいな人が読むには少し退屈かもしれない(読み物としては面白いと思えるけど)。


それより、今から、この20年代に読むなら”第16章 銀の弾などない”と”第17章 「銀の弾などない」再発射”から読み始めるのがお勧め。冒頭に書いた通り、元々この章の内容はオリジナルの『人月の神話』には含まれていない、独立した内容なのだから、ここから読んでも全然問題無い。

(ちなみに、第17章の冒頭に、”「人月の神話」はさかんに引用されても議論されることがなかった”と書かれているのが興味深い……おそらく面と向かって聞けば誰だって人と月は等価交換できないと言うに決まっている……ただ、それを回避するために正しい手段が取れているか?というだけで)

第16章では、正しくソフトウェアを作っていくためには近道はなく、地道に積み上げていくしかない、ということが理由と共に書かれている。そしてそこには現代においても相変わらず「銀の弾」を探そうとしている人や、「銀の弾」だと宣伝している人が多いことを気づかせてくれる。そういう意味でも現代においてこの章を読む価値は未だ色褪せていない。


きっと色んな場所の本棚に眠っているはずだから、探し出して、借りて、読んでみると良いと思います。貸してくれた本が凄く読み込まれている時は、感想とか、実践している内容を聞いてみるといいと思います。本が凄く綺麗だった時は……お礼だけを言っておきましょう。

レビューは「書かれていることが正しいか」だけでなく、「書かれていないことが書かれていなくて正しいか」を見ないといけない

初めてレビューなるものをやることになったとき、なにをどう見ればいいのか分からなかった、という経験の有る人は多いと思う。

そしてそのうち、「書かれていることが正しいか」だけでなく、「書かれていないことが書かれていなくて正しいか」を見ないといけない、ということに気づくことで一段階スキルが上がった感覚を覚えたりしませんでしたか。

ただ、その「書かれていないことが書かれていなくて正しいか」を確認し、漏れていれば指摘するためには、「全体を把握していること」「もとの構成に一貫性があること」など、さまざまな前提がある。誰にでもできるわけじゃないし、組織としてそれができる人を育てて、用意していかないといけない。

レビューがただの儀式になって、「レビューをおこなったこと」自体が意味を持つ場面も有るのかもしれないけど、本質的に正しい成果に近づくためには、上記のような観点で見ていく必要がある。

当たり前かな…とも思ったけど、案外当たり前のことが当たり前でなかったりするので、あえて書いてみた。

magnoliak🍧 (@magnolia_k_) | Twitter