Magnolia Tech

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

ドメインエキスパートを外部のリソースと捉えるのは違うんじゃない?

実践ドメイン駆動設計

実践ドメイン駆動設計

『実践ドメイン駆動設計』の一節にこんなくだりがある。

ドメインエキスパートをプロジェクトに参加させる方法

コーヒーにきまっている。こんなユビキタス言語を使えばいい。「やあ、サリー。トール・ハーフスキニー・ハーフワンパーセント・エクストラホット・エクストラショット・ラテのホイップ入りだよ。ちょっと話したいことがあるんだけど、いいかな?」

いやいやいや...要たるドメインエキスパートが、その程度のコミット度合いでプロジェクトが上手くいくわけないでしょ…

なかなか”適切な”ドメインエキスパートを見つけることは難しい。だからこそ、正しい視点を持ったドメインエキスパートがコミットすることは大事なんだよね。

ドメイン駆動設計』も『実践ドメイン駆動設計』も、なぜかドメインエキスパートに関しては深く踏み込んでいないし、なんだかすごく都合の良い存在に定義することで現実のプロジェクトの難しさの一番大事な部分に触れていないように読めるんだよね。それがそれぞれの本のスコープではないっていうことなんだろうけどさ。

成長は経験の質の掛け算じゃないかって考えた

それぞれの要素のうち、どこを強く経験するかは人それぞれだけどね

if文を追加したくない高校 校歌斉唱!

闇雲にif文無くせばいいって訳じゃないのは当然なんだけど、それでも単純に増加していくのを単に「要件を実装したらそうなりました」って言い切るのもまた違うんじゃないか。

場当たり的な分岐を雑に追加すべきではない、は常に正しいけどさ。

『エクストリームプログラミング』...僕らはいったいどういう「価値観の変えかた」をすればいいのかと考えるきっかけになる一冊

そういえば読んでいなかった。

XPは、私自身のソフトウェア開発の実践のなかで人間性と生産性を調和させ、その調和を共有しようとする試みである。自分や他人に思いやりのある接し方をすれば、生産性が高まることがわかってきた。成功の鍵は、個人の努力ではなく、「人と人」のビジネスに自分が携わっていることを受け入れることである。

本書で、冒頭のこの言葉が一番が刺さり、かつ「どうすればこれを理解、啓蒙することができるのだろうか」とずっと考えている。

ソフトウェア開発/運用、という物理的な制約が(比較的)少ない領域において、従来の物理的な制約の強い製造業の考え方を起点においたマネジメントスタイルから何らかの変化点が有るのは当然のことと言えるが、じゃあ果たして上記のことを、例えば石油プラントを開発する人たちが言わない、実践していないか、といえば、それはきっと違っててきっと同じことを言っているのではないか。

ソフトウェアに限らず、プロジェクトに参加している多種多様な人たちの価値観を擦り合わせ、ゴールに到達するための道筋を、取り巻く環境の変化に合わせてやっていくのはどんな業界・業種でも変わらないのではないか。

続くページに書かれている、以下のメッセージについて、

  • XPとは、効果のない技術的/社会的な古い慣習を捨て、効果のある新しい習慣を選ぶことである。
  • XPとは、自分が今日やるべきことを十分に理解することである。
  • XPとは、明日をよりよくしようとすることである。
  • XPとは、チームのゴールに貢献した自分を評価することである。
  • XPとは、ソフトウェア開発で人間としての要求を満たすことである。

最後以外は、ソフトウェア開発以外の世界でも当てはまるのではないか。「古い慣習を捨てる必要はありません」と言うリーダーはいない(実践できているかは別として)し、「今日やるべきことを理解しなくていい」と言う人もいない。

当然ソフトウェア開発の特性、”ユニットテストにより、より小さい単位で確からしさを確認できる”、”継続的なリリースにより、より小さい単位で方向転換ができる”などがもたらす価値観は従来の仕事の進め方とは違うかもしれないし、それらがより上記のことを「やりやすく」する側面があるのも間違いない。

ゴールは変わらないけど、そのプロジェクトの主要な特性から、そのゴールを実現するための方法論が違うだけ、と捉えるとスッキリすると思っている。


ウォーターフォール的なプロジェクトの進め方は、”フィードバックに基づく計画の見直しの累積は、回復不可能なロスを生み、計画の進捗に大きなマイナスの影響を与える”という前提に立っている。そのため、各階層にバッファを積むし、計画に対する遅れに敏感になる。

つまり、これ

そして、こうなる。

アジャイルの方法論は、突き詰めていけば、この事象を解決するために有ると自分は理解している。フィードバックが正しく行われ、正しい方向にプロジェクトが向かうように、すべての階層の人の価値観を尊重したプロセスや評価方法が必要になってくる。


本書の内容に戻ると、まずは「6章プラクティス」や「7章主要プラクティス」あたりから読み始めると良い。ただ、そこでいきなりそれを適用するというより、他の章に立ち返って、「そのプラクティスをもたらす背景・価値観」を理解した上で導入しないと、よくある「外形だけをなぞったアジャイル」となってしまう。達成したい価値観は何だろう?と考えながら読まないとミスリードが起きてしまう。

というわけで、この本は「ソフトウェア開発における価値観を変えたい人」におすすめです。読みやすく、170ページくらいしかないので、半日もあれば読めると思います。

『スクラム実践者が知るべき97のこと』……姿勢や、マインドセットは変わるのか?変えられるのか?

スクラム実践者が知るべき97のこと

スクラム実践者が知るべき97のこと

  • 発売日: 2021/03/23
  • メディア: 単行本(ソフトカバー)

結局は、チームの一員として成果にコミットしようとする姿勢をどうやって一人一人に作っていけるのか?というところに行き着く。

……のだけど、ではこれまでの「指示されたことをきちんとやります」というマインドセットから上手く転換できるのか、その転換は自分が、他人が思う以上に難しい。

また、人によっては、なぜ仕事で行うソフトウェア開発にそこまでのコミットメントを求められるのか?指示に従って作業を適切に遂行すれば成果が出る環境を作るのが組織の責任ではないか?個人のコミットメントを求めすぎではないか?と思ってしまうのかもしれない。

僕らが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)

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

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