タグ

ブックマーク / havelog.aho.mu (48)

  • 【PRブログ】「超速! Webページ速度改善ガイド」が 11/23 に発売されるので、みなさん買いましょう

    日は Web ページのパフォーマンスを向上させるためのノウハウをギチギチに詰め込んだ書籍のご案内です。 超速! Webページ速度改善ガイド ── 使いやすさは「速さ」から始まる(Amazon.co.jp) 書の目次(技術評論社 Web サイト) はじめに(技術評論社 Web サイト) @1000ch との共著で進めていましたが、いよいよ 2017年11月23日に発売されます。紙の書籍は Amazon.co.jp ですでに予約注文の受付が開始されています。 また、Gihyo Digital Publishing で電子書籍版も同日発売予定となっていますが、あくまで予定です。そんなにお待たせすることはないと思います。 ハッシュタグは #超速 または #チョッパヤ です。好きなほうをお使いください!! 書の構成 書の実態は、以前に WEB+DB PRESS で連載していた「Webフロ

    【PRブログ】「超速! Webページ速度改善ガイド」が 11/23 に発売されるので、みなさん買いましょう
    efcl
    efcl 2018/08/13
    "Web のパフォーマンス改善は Web フロントエンドにとって総合格闘技です。クライアントサイドという枠には収まらずにシステム全体を考えられる広範な知識や、なにを速くしたらユーザー体験が良くなるかという判断など
  • SSR と CDN ( Fastly ) とユーザー依存情報、その後

    正式リリースに向けての開発で表面化した不都合 以前、アーキテクチャ編: SSR と CDN ( Fastly ) とユーザー依存情報の分離(新規開発のメモ書きシリーズ4)で紹介したように、SSR で生成した HTML を CDN ( Fastly ) でキャッシュできるように「ユーザー依存情報はクライアントサイドで非同期に取り扱うというアプローチ」をとっていました。それによって発生していた不都合と解決に関する追加情報です。 ユーザー依存情報が非同期でレイアウトされる問題 ユーザー依存情報が非同期で解決されるということは、そのような情報を扱うコンポーネントの矩形は Web ページが一度レンダリングされたあとにレイアウトされます。つまりこの記事でも紹介されたところの「ガタンッ」的なユーザー体験が生じます。 ログインと非ログインが、全く同じサイズの矩形を確保するようなビジュアルデザインになってい

    SSR と CDN ( Fastly ) とユーザー依存情報、その後
    efcl
    efcl 2018/05/31
    ユーザー情報を含むものをSSRするときにプレースホルダー問題、サーバが40xを返せない問題(サーバがログインユーザーかしらないといけない)に対してログインユーザー向けと非ログイン向けで返すものを分ける
  • 技術要素編: web アプリが新陳代謝を続けるための依存関係の厳選(新規開発のメモ書きシリーズ1)

    新規開発したプロダクトについて 「世の中に URL は出ているが、まだ正式公開していない」という微妙な位置付けなのでプロダクト名と詳細は避けつつ述べます。短めの開発期間で急いでつくって、慌てて年末にβ版をリリースしたところです。 次の動きに向けてまったりしたり、Inside Frontend の開催に向けて四苦八苦しているところでメモ書きです。 このシリーズの他の記事はこちら。 ビルド設定編: UA に応じた最適な JS バンドルの配信と webpack との距離感 コード設計編: context による縦軸分類とレイヤードアーキテクチャ アーキテクチャ編: SSR と CDN ( Fastly ) とユーザー依存情報の分離 依存するパッケージの厳選 新しい技術、ライブラリを試すこと、それらを使って生産性の向上にチャレンジすることは必要です。とはいえ、程度が過ぎると逆に生産性を下げかねない

    技術要素編: web アプリが新陳代謝を続けるための依存関係の厳選(新規開発のメモ書きシリーズ1)
    efcl
    efcl 2018/02/19
    ウェブアプリの技術選定、ビルド設定、コード設計、アーキテクチャについての連載記事。 新規開発する際にどのような理由でライブラリやビルドツール、ディレクトリ構造などの採用したか、配信におけるCDNやパフォー
  • Web クライアントサイドのパフォーマンスメトリクス — Speed Index、Paint Timing、TTI etc...

    色々なパフォーマンス指標のこと 何かを評価するときには何らかの指標(メトリクス)を定めますが、何を指標として設定してどのように測るかというのは重要です。 いわゆる KPI もそうですが、扱っている商材やビジネスのステージ(フェーズ)によっても適切な指標は変わるかもしれません。色々な指標をよく理解して引き出しを広げておくことは、状況に合わせて適切な指標を選んで改善していく過程で役立ちます。 これまでのパフォーマンス指標 過去の Web パフォーマンス界隈はバックエンドから HTML ドキュメントを返却する際の所要時間や、Web ページロード時の各イベントの発火時間を計測する方法が多く見られました。 Backend Time Browser Event Based DOMContentLoaded Page load ( onload ) 近年は特に後者の、既定のイベント発火に依存していたクラ

    Web クライアントサイドのパフォーマンスメトリクス — Speed Index、Paint Timing、TTI etc...
    efcl
    efcl 2017/07/18
    ウェブクライアントサイドにおけるパフォーマンスの指標となる値やPerformance Budgetなどの用語についての解説
  • App Shell モデルの素振り(前編)webpack と Workbox を利用した構築

    App Shell モデルという設計パターン App Shell モデルは、共通のガワ部分を構成する HTMLCSSJavaScript をシェルと定義し、その中に入る動的なコンテンツ部分と構造的に分離して扱えるように設計されます。 アプリケーション シェル(App Shell)アーキテクチャは、ネイティブ アプリのように瞬時に、そして確実にユーザーの画面に読み込める Progressive Web App を構築する方法の 1 つです。 アプリの「シェル」とは、ユーザー インターフェースが機能するために必要な最小限の HTMLCSSJavaScript です。これらをオフラインで使用できるようにキャッシュしておくことで、ユーザーが同じページに再アクセスした際に、瞬時に高いパフォーマンス が発揮されます。つまり App Shell は、ユーザーがアクセスするたびにネットワークからす

    App Shell モデルの素振り(前編)webpack と Workbox を利用した構築
    efcl
    efcl 2017/06/22
    App Shellのサンプル
  • Web アクセシビリティ向け Node.js 製の自動チェックツールや DevTools 用の拡張機能など

    アクセシビリティを担保するプロセス作り この記事は Web Accessibility Advent Calendar 2016 - Adventar の 12 日目の記事です。 UI 実装の再考と a11y - Frontrend Vol.8 LT でも述べましたが、Accessibility is a Process, Not a Project ということでアクセシビリティ対応するプロジェクトではなく、アクセシビリティを担保するプロセスを作りましょうということで、チェックツールをいくつか並べて俯瞰してみます。対象読者は自分と同じようなクライアントサイドの Web アプリケーション屋さんということにしておきます。 ちなみにアクセシビリティ評価ツールについては 3 日目のアクセシビリティ方針、報告書、試験支援ツールa11ycのご紹介 (Web Accessibility Advent C

    Web アクセシビリティ向け Node.js 製の自動チェックツールや DevTools 用の拡張機能など
    efcl
    efcl 2016/12/13
    Webアクセシビリティの自動チェックツールや補助ツールの紹介。
  • requestAnimationFrame とタイマーの今更な比較とデモ

    フレーム描画のタイミング制御モデル 今更 requestAnimationFrame() だなんて Can I use を見ても IE 10 ですら実装していて、世界の 9 割以上で動作しうるカバレッジなわけですが改めて setTimeout() との違いを表現しうるサンプルをこさえてました。 それぞれの仕様の詳細や挙動についてはそれこそ今更なのでググっていただくとして、この記事ではサンプルについて曖昧な説明を添えていきます。 CodePen - setTimeout vs requestAnimationFrame (with CSS Transitions) See the Pen setTimeout vs requestAnimationFrame (with CSS Transitions) by Ayumu Sato (@ahomu) on CodePen. 比較のポイントとシ

    requestAnimationFrame とタイマーの今更な比較とデモ
    efcl
    efcl 2016/10/02
    `requestAnimationFrame`と`setTimeout`の比較。 `setTimeout`は細かい処理でも影響を受けやすいという話
  • CSS Containment の制約と効能について覚え書き

    ある要素内の状態による外界への影響を封じ込めて最適化を促す CSS Containment Module で定義される contain プロパティは will-change と同じようにブラウザが処理を最適化するために開発者から提供できるユーザーエージェント向けヒントとして機能します。 ヒントの目的はcontain の対象要素が親兄弟に影響を及ばさない独立した部分木であることを宣言し、各種の影響を contain の対象要素の中に封じ込めることです。 使うときは contain プロパティに既定の値として用意された size | layout | style | paint | content | strict のいずれかを指定します。content と strict は複合指定のエイリアスなので、文では size layout style paint の4つについて個々の説明をします。

    CSS Containment の制約と効能について覚え書き
    efcl
    efcl 2016/09/27
    CSS Containment について。`contain` プロパティ
  • 既存 Web アプリケーションのアクセシビリティを向上させるときによくあるヤツと対応方針

    アクセシビリティ向上メモ 最初から考慮されているのが一番ですが、そうでもなかったプロダクトに手を入れるときのあるあるを記録します。既存プロダクトはモノが出来上がってしまっているため根治的なリファクタリングよりも基的には省力で済ませたいので、今回書いた対応方法も完璧よりは省力路線です。 HTML やらセマンティクスに関する知識はそれなりにあるつもりでしたが、AT やマシンリーダビリティを念頭に勉強し直すと自分で作ったものも至らなかったなと振り返らざるを得ない今日この頃。初期設計のときの考慮範囲が拡がったように思うので善きかなです。 各項目について、もっと良い解法や誤り等あれば twitter とかでご指摘ください。 1. 画像に alt 属性がない場合 付けましょう。付けます。はい。 昔から基とも言うべき、HTML/CSS 書きとしては耳にたこができるほど言われてきたことなので今更感もあ

    既存 Web アプリケーションのアクセシビリティを向上させるときによくあるヤツと対応方針
    efcl
    efcl 2016/07/30
    ページ移動時にタイトルを読ませるには `aria-live` を使う。
  • React v0.14.x から v15.2.x へのアップデート録

    react v15.2.x アップデートに関連した記録 FRESH! by AbemaTV と AbemaTV の React を v0.14.x から v15.2.x にアップデートしたので、遭遇した WARN などについてメモ。 基的には React v15.0 | React を読めばマイグレーションガイドがありますが、今回の作業で実際に遭遇したものだけ対応を記録します。 不明な prop を渡すなエラー … Unknown props foo, bar... on <***> tag. Remove these props from the element. <div {...props} /> のように、下位コンポーネントに対する props の雑な継承で WARN が発生します。DOMAttribute として正しくない prop が要素に渡ると警告の対象です。詳細は Unk

    React v0.14.x から v15.2.x へのアップデート録
    efcl
    efcl 2016/07/30
    React 0.14.xから15.2へのアップデートした際に出る警告と対処法について
  • Web サイトっぽい SPA に必要なブラウザナビゲーションのエミュレートなど

    Web サイトっぽい SPA に立ち向かう 大分前の話ですが、Node学園 20時限目 今回もdots!!!!! - connpass で Client Side of なんちゃらfresh.tv としてお話した内容のうち、Web サイトっぽい SPA に関してだけこだわりを再抽出して書き留めます。 件は、ページ全体のスクロールや頻繁なナビゲーションを伴わず、1画面におさまるレスポンシブな Web アプリを作っている場合はあんまり関係がありません。画面内の局所的な状態更新は、コンポーネントの責務分割やら何やらの設計なので実は別の話です。 総じて、Web サイトっぽいくせに大人の事情で Web ブラウザのネイティブなナビゲーションを積極的に破壊しにいくときの心構えです。 URL が変わっても最低限レンダリングできるまで画面更新を遅延させる 画面遷移に必要なのは、 URL が更新されても次の

    Web サイトっぽい SPA に必要なブラウザナビゲーションのエミュレートなど
    efcl
    efcl 2016/07/19
    SPAにおけるルーティングと状態の管理/復元について
  • ブラウザベンダによる Flash 包囲網の現状メモ ( 2016年12月20日アップデート )

    Flash の息の根がいよいよ止まりそう ※ ( 2016年7月21日 ) Firefox について動きがあったので追記しました ※ ( 2016年10月10日 ) Chrome について 8/9 付けの動きを追記しました ※ ( 2016年10月10日 ) Safari 10 の挙動について追記しました ※ ( 2016年12月20日 ) Chrome のについて 12/9 付けの動きを追記しました ※ ( 2016年12月20日 ) Edge について 12/14 付けの動きを追記しました 脱 Flash、祝 HTML5 という機運が高まったのはだいぶ前の話ですが、実際には Flash コンテンツは今もなお数多くが生き続けています。たとえばニコニコ動画のプレイヤーであったり、アメーバピグや艦これのような人気ゲームにも Flash で作られているものがあります。 各ブラウザの状況 まだま

    efcl
    efcl 2016/06/20
    Flash + Browser今年の後半に半死状態
  • React に対する感情とかコンポーネント管理ライブラリの選定とか

    コンポーネント管理できそうなライブラリの選定 ここでいうコンポーネントは HTML 要素をコンポーネントに見立てるような、近代 Web フロントエンドにおける狭義のコンポーネントです。大まかな条件は次の3点。 コンポーネント中心の開発ができること >= IE9 をサポートすること(切っても良さそうなんだけど...) 既製品・スクラッチは問わないが極端なリスクは踏めない(納期がシビア) あとは期待度や API のセンスなど、個人的な審美眼判定に依ります。 angular/angular : 2.0 が正式リリースしたらまた会いましょう jashkenas/backbone : 最近のコンポーネント管理には及ばない Custom Elements ( Polymer ) : polyfill が >= IE10サポート segmentio/deku : 振る舞いは十分だったけど、>= IE10

    React に対する感情とかコンポーネント管理ライブラリの選定とか
    efcl
    efcl 2016/03/07
    Rectを採用するに当たってのポエム
  • テストを考慮した singleton の ES6 export

    テスト時の singleton を避けたい export facebook/flux のサンプル準拠だと、Store や Dispatcher が singleton でテストを書きづらいことがあるので、普段使う singleton インスタンスと、テストで使う class オブジェクトを両方 export した。 import AppDispatcher, {Action, Payload} from '../dispatcher/AppDispatcher'; import * as Events from 'events'; const CHANGE_EVENT = 'change'; // 生クラスの export export class AcmeStore extends Events.EventEmitter { dispatchToken: string; construc

    テストを考慮した singleton の ES6 export
    efcl
    efcl 2015/09/11
    シングルトンのES6 moduleとしてのexport方法。 defaultをシングルトン、export classでclassを出す
  • Isomorphic Architecture を実装してるときの細かいアレコレ

    Isomorphic あらため Universal ? 一時期火がついていた Isomorphic について。各自がプロダクションの事例を作り上げる潜伏期に入ったのか、はたまた当に一過性で火が消えたのか、コモディティ化を遂げたのか分かりませんが、あまり耳にすることがなくなった印象です。 そんな中ですが先日、Universal JavaScript — Medium が公開され、なるほど Universal ってキモチになったので、タイトルに反して以下は Universal と呼称します。 今回の話題にするのは module レベルではなく Universal な JavaScript architecture のほうです。アーキテクチャのレベルで Universal なコードが役立つ代表的ケースは SPA (Single Page Application) と SSR (Server S

    Isomorphic Architecture を実装してるときの細かいアレコレ
    efcl
    efcl 2015/08/02
    シングルページアプリケーションとサーバサイドレンダリングを扱う際に起こる問題と解決策について。 設定の共有をするか、UAの評価、React Componentを`<head>`への適応方法、ライフサイクルの管理などについて
  • Google I/O で v1.0 が発表された Polymer の Elements Catalog が面白い

    Polymer Elements のカタログページ Site: Polymer Element Catalog Repo: Polymer/polymer-element-catalog Polymer は、これからの Web 標準の一角を占めるであろう Web Components のラッパーライブラリです。その Polymer で作られたコンポーネントのカタログサイトが公開されていました。 これまでも Core Elements や Paper Elements が Polymer のコンポーネントとして提供されていましたが、分類も新たにレパートリーが拡充されています。 Cart に入れて Download カタログには各コンポーネントのドキュメントやデモが載っていて、使いたいものをチェックして Cart に入れていきます。必要なコンポーネントを Cart に入れてダウンロードさせると

    Google I/O で v1.0 が発表された Polymer の Elements Catalog が面白い
    efcl
    efcl 2015/06/14
    Polymer製のコンポーネントについて
  • yahoo/fluxible による SPA + Server Rendering の概観

    Single Page Application + Server Rendering yahoo/fluxible を使って、Single Page Application と Server Rendering の良いとこ取りのアーキテクチャを目指す。ある程度の複雑性と引き換えに、双方の利点で双方の欠点を打ち消し合うことができるため、全体的には良好なユーザーインタラクションを期待できる構成。 なぜ Single Page Application なのか 画面遷移時するたびにJavaScript/CSS のパースと評価をしなくて良くなる 画面遷移時のトランジションを柔軟に適用できる 画面遷移をまたがった実装が可能になる(あくまで可能になるだけ) なぜ Server Rendering するのか 初期表示の Critical Rendering Path を短縮できる SEO における保守信仰

    yahoo/fluxible による SPA + Server Rendering の概観
    efcl
    efcl 2015/06/12
    yahoo/fluxibleのFetchについて
  • TypeScript における ES6 との兼ね合いで避けているパーツ

    ES6 フレンドリな TypeScript のために 先日書いた JSX と TypeScript の混合 Flux または悪魔合体 の経緯から TypeScript と JSX を併用しているため、コードの記述に大きな差ができないよういくつかのパーツ(主に TypeScript のもの)を避けることにしています。 NGなパーツ 独断と偏見です。 Private/Public modifiers ジャングル ニ プライベート ナイ! class Acme { private himitsu = ''; public tellme() {} } みたいなのですね。バイオ JS にプライベートなんて必要なかったんや。protected も使えるっぽいけどアンドキュメント? Modules ES6 ライクな import/export だけ使うということで内部モジュール禁止です。不便ないですね。

    TypeScript における ES6 との兼ね合いで避けているパーツ
  • ES6 class で Component 書いたら react-devtools で Unknown になったので対応した

    react-devtools で Unknown がでる場合 タイトル長いですね。ともかく、ES6 class で Component を書いたら react-devtools で Unknown になってしまった話。 facebook/react-devtools について、無いと死んでしまう!ってほどの有り難みは感じていないのですが、いざ開いたときに Unknown だと残念なので対応しました。 辛い見た目 export default class MyComponent extends React.Component {} のように書いたら、コンポーネント名が取得できず Unknown だらけになりました。 <Top Level> <Unknown> <div> <h1>Hello World!</h1> <Unknown index="0" tabs="..."></Unknown

    ES6 class で Component 書いたら react-devtools で Unknown になったので対応した
    efcl
    efcl 2015/05/19
    React ComponentをES6 Classesで書いた場合にdisplayNameがない問題
  • JSX と TypeScript の混合 Flux または悪魔合体

    JSX + TypeScript の悪魔合体 ギョーム的に気持ちになったので JSX + TypeScript をはじめました。 導入にあたってチーム内への説明を兼ねたブログ。AltJSに対して ES でいいじゃん派ですが、自分の型需要に対して 現状の Flowtype が辛みしかないのでやむをえず。 動機 紆余曲折あって結局 React を使うことにした React Component には JSX with Babel を使いたい(手書きは無理だ) UI 以外のロジックを持ったモジュールは型の恩恵に預かりたい Flowtype つらい TypeScript かー UI 周りは JSX で、その他の堅いロジックは TypeScript で書けばいいのでは? 共存だ!! メリットがあるのかも不明瞭ですが、分からないからこそ試してみようという感じです。JSX と TypeScript の境界

    JSX と TypeScript の混合 Flux または悪魔合体
    efcl
    efcl 2015/05/11
    JSX+Babel+TypeScriptの組み合わせについて