感想:DESIGNING CONNECTED CONTENT デジタルプロダクトの長期的な成長を支える構造化コンテンツ
総評
サイトやアプリ制作のために、コンテンツを構造化しようという話。 対象ドメインの物事をモデリングし、それをもとにコンテンツを設計し、公開・運用していく方法が書かれている。 抽象度が高く難解な本だった。
紹介されている作業は難易度が高く、うまく実行できる気がしない。 でも構造化の必要性や利点はわかった。
面白かったところ
実際にあったIAサミットのサイト制作プロジェクトをベースに説明が展開されていく。 構造化のアプローチで、拡張性の高い優れたサイトができるのだけれど、 その価値が後継者には伝わらず、サイトは捨てられたと最後に書かれていた。
そのせいもあってか、チームメンバーや関係者との関わり方の注意が随所にたくさん書かれている。
感想:オブジェクト指向UIデザイン──使いやすいソフトウェアの原理
総評
3分の2はオブジェクト指向UI設計の方法・UIの歴史の話、3分の1はワークアウト(UI設計の出題&解説)だった。
オブジェクト指向UI設計についての解説は、すでに読んだことのあるような内容だった。 ウェブ上の記事にあるようなものとそこまで変わらない。
読んだことをワークアウトをしながら確認できるのはよい。冗長な感じはするけど。
最後の方におまけのように書かれている、UIの歴史の話(オブジェクト指向UIのフィロソフィー)が面白かった。 graphic meansのUI版のような感じがする。 知ったところで何の役にも立たないだろうけど、面白い。
感想:Design Systems ―デジタルプロダクトのためのデザインシステム実践ガイド
総評
単にパターンライブラリの作り方を解説する本なのかなと思っていたけれど、そうではない。 デザインシステムのプロジェクトを会社に支持してもらう方法から、みんなに使ってもらうための体制づくりの方法まで書いてあって面白かった。
面白かったところ
Visual Loudness Guideなどの、コンポーネントのうるささや声色を定義するところがおもしろかった。目立つコンポーネントを無闇に使ってはいけないということも感覚的に伝えることができそう。
コンポーネント名はメタファーに基づく個性的な名称にするというのも自分には無い視点だった。事業会社でいろいろな人がコンポーネントを使って画面を組み立てていくときには、たしかにそういう想起されやすい名称にするのがよさそう。
デザインシステムについての説明をポストカードに印刷してくばったり、Slackで定期的に投稿したりといった地道な活動も確かに必要そう。
デザインシステムが無いためにかかるコストの提示方法の記事がおもしろかった。何も斬新じゃないけれど、差分のスクショもまとめると見ごたえがある。
メモ: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 の項目が追加された。 何かあったらここから報告してほしいとのこと。