感想:DESIGNING CONNECTED CONTENT デジタルプロダクトの長期的な成長を支える構造化コンテンツ

総評

サイトやアプリ制作のために、コンテンツを構造化しようという話。 対象ドメインの物事をモデリングし、それをもとにコンテンツを設計し、公開・運用していく方法が書かれている。 抽象度が高く難解な本だった。

紹介されている作業は難易度が高く、うまく実行できる気がしない。 でも構造化の必要性や利点はわかった。

面白かったところ

実際にあったIAサミットのサイト制作プロジェクトをベースに説明が展開されていく。 構造化のアプローチで、拡張性の高い優れたサイトができるのだけれど、 その価値が後継者には伝わらず、サイトは捨てられたと最後に書かれていた。

そのせいもあってか、チームメンバーや関係者との関わり方の注意が随所にたくさん書かれている。

感想:オブジェクト指向UIデザイン──使いやすいソフトウェアの原理

総評

3分の2はオブジェクト指向UI設計の方法・UIの歴史の話、3分の1はワークアウト(UI設計の出題&解説)だった。

オブジェクト指向UI設計についての解説は、すでに読んだことのあるような内容だった。 ウェブ上の記事にあるようなものとそこまで変わらない。

読んだことをワークアウトをしながら確認できるのはよい。冗長な感じはするけど。

最後の方におまけのように書かれている、UIの歴史の話(オブジェクト指向UIのフィロソフィー)が面白かった。 graphic meansのUI版のような感じがする。 知ったところで何の役にも立たないだろうけど、面白い。

感想:Design Systems ―デジタルプロダクトのためのデザインシステム実践ガイド

総評

単にパターンライブラリの作り方を解説する本なのかなと思っていたけれど、そうではない。 デザインシステムのプロジェクトを会社に支持してもらう方法から、みんなに使ってもらうための体制づくりの方法まで書いてあって面白かった。

面白かったところ

メモ:What's New In DevTools (Chrome 81)

間が開いてしまったけど、YouTube版で最新のWhat's New In DevToolsをちゃんと見てみた。

元情報

メモ

Moto G4 support in Device Mode

バイスツールバーのデバイスリストに「Moto G4」というのが追加された。 これを選択し、バーの右端のメニューボタンで「Show device frame」を押すとMoto G4のフレームが表示される。

この状態で「Capture screenshot」を押したときもフレームが表示される。

試しに撮ったのだけど、開き方が悪かったのか、違和感のある見栄えになった。

Cookie-related updates

ApplicationパネルのCookiesペインまわりでいくつかアップデートがあった。
- Cookie一覧でブロックされたクッキーの背景色が黄色になるようになった
- CookieのPriorityの欄ができた。各Cookieの優先度を見られる。
- Size以外のすべての欄をDevtools上で編集できるようになった。

あとNetworkパネルでは、各リクエストのところで右クリックすると「Copy」というメニューが出るけど、そこで「Copy as Node.js」が追加された。下記のような感じのスニペットクリップボードにコピーされる。

fetch("https://web.dev/", {
  "headers": {
    "upgrade-insecure-requests": "1"
  },
  "referrer": "https://web.dev/",
  "referrerPolicy": "no-referrer-when-downgrade",
  "body": null,
  "method": "GET",
  "mode": "cors",
  "credentials": "omit"
});

More accurate web app manifest icons

Applicationパネルのマニフェストのところで、アイコン表示のところ、以前は独特な挙動をしていたけれど、今はChromeと同じマニフェストアイコンが表示されるようになった。

Hover over CSS content properties to see unescaped values

CSSのcontentプロパティ、Devtoolsでみるとエスケープされた値が表示されるけど、hoverするとエスケープなし版の表示が見られるようになった。

More detailed source map errors in the Console

Consoleでソースマップのロードやパースに失敗したとき、より詳細な原因を表示してくれるようになった。

Setting for disabling scrolling past the end of a file

デフォルトだと、Sourceパネルではコードが見えなくなるところまでスクロールできるんだけど、それが邪魔な人はSettingパネルの「Allow scrolling past end of file」のチェックを外すと余分にスクロールされなくなる。

Bonus tip

動画だとたまにTips紹介がある。 ドロワーメニュー内の「More Tools」ボタンが結構便利だよという話。

たとえば「Quick Source」でSourceパネルを開いていないときでもSourceがみられるし、 「Search」のところで関連ソースのグローバルなキーワードサーチができる。

ECMAScriptの内部のパラメータたち

JSについてあまり詳しくないので、以下の記事が面白かった。
v8.dev

レキシカル環境とか、プロパティーディスクリプタとか、環境レコードとか、JSのspecにだけ登場する型の解説はここにある。
https://tc39.es/ecma262/#sec-ecmascript-specification-types

spec用に定義された抽象操作という関数がある。
https://tc39.es/ecma262/#sec-abstract-operations

[[]] で囲まれているのは内部スロットもしくは内部メソッドというもの。

内部スロットはJSオブジェクトか特定の方のデータメンバのことで、オブジェクトの状態を格納するのに使われる。
内部メソッドはJSオブジェクトのメンバである。

例えばJSオブジェクトは[[Prototype]]の内部スロットと、[[GetOwnProperty]]の内部メソッドを持っている。
しかしこれらはJSからアクセスすることができない。

たまに、内部メソッドは、似たような名前の抽象操作にいろいろとデリゲートする。 例えばordinaryオブジェクトの[[GetOwnProperty]][[GetOwnProperty]](P)をつかう。

[[GetOwnProperty]](P)は説明をみると、Return ! OrdinaryGetOwnProperty(O, P)って書いてあるんだけど、このOrdinaryGetOwnPropertyは内部メソッドじゃない。オブジェクトに関連づいているわけじゃないので。 操作対象のオブジェクトがパラメータとして渡される。

ECMAScriptのオブジェクトにはordinaryオブジェクトとexioticオブジェクトがある。
ordinaryオブジェクトは、必須内部メソッド(essential internal methods)と呼ばれる、デフォルトの挙動のセットを持っている。
https://tc39.es/ecma262/#table-5

デフォルトの挙動から逸れるものはexioticオブジェクトである。
一番有名なexioticオブジェクトはArray。lengthプロパティのところがデフォルトじゃない。

ECMAの挙動説明のところは(!や?が書いてある)、完了レコードの記述である。

完了レコードには3つのフィールドがある
[[Type]] - normal、break、continue、return、throwのいずれかがはいる。normal以外は abrupt completions といわれる
[[Value]] - 関数の戻り値や例外など、完了時に生成される値
[[Target]] - directed control transfers につかうとか

全ての抽象操作で暗黙的に完了レコードが返される。戻り値がBooleanのときでも、型がnormalの完了レコードにラップされている。

※ ただし、完了レコードから値を抽出するのではなく、そのままの値を返すヘルパー関数などもある

たとえばあるアルゴリズムが例外をスローするとき、完了レコードの[[Type]]はthrowであり、[[Value]]は例外オブジェクトになる。
https://tc39.es/ecma262/#sec-completion-record-specification-type

ReturnIfAbrupt(argument) というのがあるんだけど、これは、
abrupt completion のときは引数を返し、そうでなければ完了レコードから値を出してくるもの。
https://tc39.es/ecma262/#sec-returnifabrupt

そして!や?の説明はここにある。
https://tc39.es/ecma262/#sec-returnifabrupt-shorthands

この記事は連載ものっぽい。また気が向けば続きをチェックする。

メモ:Understanding motion - Material Design

元情報

https://material.io/design/motion/understanding-motion.html#expressing-continuity

上記のページの気になった部分のメモ。 自分の言葉で書いているし(翻訳ではない)、間違った解釈をしているかもしれない。

メモ

連続性の表現

UIの外観が変化したとき、モーションで連続性を表現することができる。 連続性は次のテクニックを使用して表現される。

  • トゥイーン
  • フェード
  • Shared transformation

トゥイーン

時間経過に従って要素がシームレスに進行するのがトゥイーン。 カラーなど、中間値を持つプロパティーに適応できる。 レイアウトのカラム数など、中間値を持たないものには適応できない。

フェード

普通のフェード

要素の不透明度をトゥイーンさせることをフェードという。 フェードは中間値のないプロパティーでもスムーズに遷移させることができる。

クロスフェード

2つの要素が同時にフェード(1つがフェードインし、もう1つがフェードアウト)することをクロスフェードという。 一瞬2つの要素の背景も見える。

複数の表面がオーバーラップするので、気が散る場合もある。

フェードスルー

1つの要素が完全にフェードアウトしてから、新しい要素がフェードインすることをフェードスルーという。 テキスト・アイコンなどオーバーラップしない要素に適用できる。

トランジション中に背景が透けて見える。 shared transformationと組み合わせたときに画面感の連続性を表現することができる。

Shared transformation

要素の移動をシンクロさせて、連続性を強化するのが、shared transformation。

例えばFABのアイコンが突然変わったら気が散ってしまう(①)。 Shared transformationで変化をスムーズに表現できる。(②) https://storage.googleapis.com/spec-host/mio-staging%2Fmio-design%2F1576174064000%2Fassets%2F127msUeEph5wIZvXKwexUN4_YYp_HWf_W%2F03-cutonaction.mp4

感想

  • shared transformationという定義は知らなかった。

メモ:What's New In DevTools (Chrome 78)

しばらくDevToolsのアップデートを確認していなかった。
かなり前のものだけれど、78のアップデート内容を確認してみる。

元情報

https://youtu.be/VNkctDLYP6o developers.google.com

メモ

Multi-client support in the Audits panel

Auditsパネルがリクエストブロッキングローカルオーバーライドなどの別機能と連携してくれるようになった。

これにより、レンダリングをブロックするしているリソースをDevTools上で消してからパフォーマンスを再計測することができ便利。

たとえば、誰も使っていないjQueryが読み込まれていて、消したらどうなるのか確かめてみたいとき、
コンソールを出し(Ctrl + Shift + P などで)、「Show Request Blocking」のコマンドを叩き、
タブの中で「jquery」をブロック対象に設定する。

ほかにもいくつかのライブラリにasync属性をつけてみたいときには、「Show Overrides」のコマンドを叩いて、Desktopなどにに変更後のファイルを保存する。

そしてAuditsを使うと、パフォーマンスが良くなっているのを確認できる。

Payment Handler debugging 

ApplicationパネルでPayment Handlerイベントがサポートされた。

Background Servicesの欄に追加されているので、そこで確認いろいろできる。
Devtools閉じていても、アクティビティを記録しておけるらしい。

Lighthouse 5.2 in the Audits panel

Third-Party Usageの項目が追加された。どれだけサードパーティーコードのリクエストがあるのか、読み込み時にどれだけメインスレッドをブロックしているのかがわかる。

Largest Contentful Paint in the Performance panel

PerformanceパネルでLargest Contentful Paint in the Performance panelのマーカーが追加された。 viewport内で一番大きいコンテンツ要素が表示されたときのレンダリング時間がわかる。

File DevTools issues from the Main Menu

Main Menu > Help のところに Report a DevTools issue の項目が追加された。 何かあったらここから報告してほしいとのこと。