サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
中東情勢
nhiroki.jp
少し前のバージョンですが、Chrome 69 より Web Worker から Web Worker を作れるようになりました。この機能は Nested Workers とも呼ばれています。 Nested Dedicated Workers - Chrome Platform Status Intent to Implement and Ship: Nested dedicated workers - blink-dev 使用方法とユースケース 使い方は Window 上で Worker を作る場合と同じです。次のコードでは、Window から Parent Worker、Parent Worker から Child Worker を作り、postMessage() で Child Worker から Window までメッセージを送信します。 // index.html const wo
本日発売の WEB+DB PRESS vol. 107 にインタビュー記事が掲載されました。 UPDATE(2018/12/21): 技術評論社のサイトで Web 版が公開されました。 本号から mizchi さんがホストを務める「at the front - 前線にて」という連載インタビュー企画がスタートしたのですが、その第 1 回ゲストとしてインタビューしていただきました。 「Chromium から見る Web の未来」というサブタイトルになっていますが、主に私のこれまでのキャリアや技術的に興味があること、Chromium コミッターとしての活動やプロジェクトの最近のトレンド (Layered APIs や off-the-main-thread) などについて個人的な立場から話をさせていただきました。3 ページの記事になっています。 こういったインタビューを受けるのは初めてでとても緊
「Caching or Not: Rethinking Virtual File System for Non-Volatile Main Memory」という USENIX HotStorage 2018 で発表された論文を読みました。これはそのメモ書きです。 免責 精読しておらず内容が間違っている可能性があります。正確な情報が欲しい方は必ず論文を読んでください。誤りの指摘や補足、議論などは GitHub Issue へお願いします。 読書状況 ざっくり全体を流し読み。 概要 Persistent Memory ファイルシステムにおいて、VFS のメタデータキャッシュがオーバヘッドとなることが分かった。そこで VFS のキャッシングレイヤーをバイパスして直接 Persistent Memory ファイルシステムのメタデータにアクセスできるようにする ByVFS を提案。 dentry c
JavaScript の文脈で「スクリプトをインポートする」といった場合、色々な可能性が考えられます。現場での混乱を避けるためにも用語を正しく使い分ける必要があります。そこで本記事では JavaScript のスクリプトインポートについて整理します。 更新履歴 2019/12/05 Dedicated Worker の ES Modules サポートについて追記しました。 2018/09/08 Worklet の type とその上での dynamic import について追記しました。 Service Worker 上での importScripts について追記しました。 Classic Script と Module Script スクリプトインポートを理解するには、スクリプトについて正確に理解する必要があります。HTML の仕様では、スクリプトには Classic Script
Chrome 69 時点での Service Worker は、InstallEvent 後にインストールされていないスクリプトに対して importScripts() を呼ぶことができますが、これは仕様に沿っていません。そこで、これを修正しようという提案が Blink の開発者メーリングリストに出されています。 Intent to Deprecate and Remove: importScripts() of new scripts after service worker installation Firefox と Edge は既に仕様通りに実装されており、未インストールスクリプトに対する importScripts() はエラーを返すようになっています。一方、Safari は Chrome と同じ挙動をしています (Bug Issue)。 本記事では、この変更がどのような背景で行
ウェブブラウザにおいてメインスレッドはとても重要なリソースです。なるべくメインスレッドを使える状態にしておくことが滑らかな UI/UX を実現する上で重要になります。しかし、実際には多くの処理が実装上の理由やブラウザ仕様の不足によりメインスレッドでしか動かせないため、メインスレッドは忙しくなりがちです。特にページロード時は JavaScript の実行やリソース読み込みなどでとても忙しくなります。 とあるページの perf プロファイル。メインスレッドでせわしなく処理が行われている様子が分かる。 これを解消するために、ブラウザの処理をメインスレッド以外 (off-the-main-thread) でも実行できるようにする試みが行われています。 1. Off-the-main-thread とは メインスレッド以外のスレッドに処理を委譲することを off-the-main-thread と呼
年明け早々に次男が生まれたので育児休暇を取得し、3 月初めに仕事に復帰しました1。この記事では育児休暇中に感じたことなどを書いてみます。 なお、すべて個人的な体験談であって所属している会社の見解などを表しているわけではありません。 はじめに まずはじめに私の置かれていた状況を紹介します。人によって状況が違うと思うので、その辺りを踏まえて読んでもらえれば。 私は米国資本の会社でソフトウェアエンジニアとしてオープンソースソフトウェア (Chromium) の開発に従事しています。このプロジェクトには世界中の会社や個人の開発者が参加していて、私の休暇状況とは関係なくメールが来たり、コードレビューの依頼が来たりすることがあります。妻は専業主婦です。長男は三歳の未就園児で、次男出産前は妻が家で面倒を見ていました。 前回長男が生まれた時は一ヶ月の育児休暇を取り、今回は二ヶ月の育児休暇を取りました。会社
新卒のソフトウェアエンジニアとして Google に入社して丸 6 年が過ぎました。「若者は 3 年で辞める」という話があるけど、その二倍も働いていることになります。当時の気持ちを忘れないうちに今までの振り返りをしてみようと思います。 (2019/04/04 追記) 入社までの話を「新卒のソフトウェアエンジニアになるまで」という記事に書きました。 なお、すべて個人的な体験談であって会社の見解等を表しているわけではありません。 きっかけ Google を意識したきっかけは大学一年生の頃に読んだ梅田望夫さんの『ウェブ進化論』でした。多分同世代の多くの人がこの本に影響を受けたんじゃないかと思います。私も「これからネットの世界はどんどん変わっていくんだ!」と興奮し、その中心的な会社だった Google に憧れを持ったことを覚えています1 。 直接的なきっかけは修士一年生の頃。そろそろ就活に向けて動
Service Worker の実装が主要ブラウザで揃い始めて盛り上がってきましたね。その流れに便乗して久しぶりに Service Worker の仕様や実装に関する記事を書いてみました。今回は Service Worker スクリプトのインストールと更新処理についてです。 この記事は Service Worker スクリプトを少しでも手書きして動かしたことがある人を想定読者にしています。Service Worker について全く知らない人はまず別の入門記事を参照してください。また、細かいことを気にせずに Service Worker を使いたい人は Workbox といったライブラリやフレームワークの利用をおすすめします。 更新履歴 2019/09/24: Chrome 78 から importScripts() も更新対象になりました。それについて加筆しました。 2018/06/07:
これは Chromium Browser アドベントカレンダー 26 日目の記事です。穴が空いたときの代理投稿のために用意してあったのですが無事に使わずに済んだので 26 日目として公開します。 本記事では Chromium のソースコードを眺めていて見かけた珍百景を紹介します。実用性は皆無です。他に見つけたら随時追加します。 ちなみに Chromium のソースコードの読み方については本アドベントカレンダー 1 日目の記事で紹介しました。みなさんも珍百景を見つけたらこっそり教えてください :D 天気の良い日 天気が良い日は陽気な気分でコードを書けますよね。 Web Platform Tests で使用するサブドメインは自由に設定できるのですが、その一つが「天気の良い日」になっています。理由は不明。なぜかフランス語のサブドメインも設定されていて、そっちはどうやら「生徒」という意味らしいです
『Game Programming Patterns ― ソフトウェア開発の問題解決メニュー』を読み終わったのでその感想とメモです。 読んだ動機 コード設計に関する本は、他にもデザインパターンやリファクタリングの本なども思い浮かんだのですが、デザインパターンは具体的な課題があって、それを解決するために見るカタログのようなものだと思っていて、適用範囲が限定的だと感じています。そして何よりデザインパターンの本はつまらないので、それよりはもっと汎用的に適用できる考え方を学べる本が良いと考えました。一方、リファクタリングの本も今回の質問に対する答えとしてはやや具体的すぎると感じたので見送りました (実はリファクタリングの本はまともに読んだことがないので実際は違うかもしれません。そのうち読みたい)。 「プリンシプル オブ プログラミング」読了 - nhiroki’s weblog 引用文では「リファ
2016/04/26 : ready イベントの使い方にミスがあったため修正しました。Jxck さんに指摘していただきました。ありがとうございます。 2016/04/26 : claim() の挙動は Jxck さんの screen cast によるチュートリアルが分かりやすいです (中級者向け Service Worker Tutorial - blog.jxck.io)。 Service Worker のスコープとページコントロールについて解説する記事のその 2 です。既に Service Worker の基本について理解していて、かつ、前回の記事を読んでいることを前提にしています。今回は「まだコントロールされていないページをコントロール状態にする claim()」について紹介します。claim() は Chrome ではバージョン 42 から使用することができます (リリースノート)
これは Chromium Browser アドベントカレンダーの十日目の記事です。本記事では Chromium における JavaScript のスレッド並列実行環境について仕様・実装・API の面から包括的に紹介します。ブラウザの内部実装に興味がある人を対象に、各機能の使い方ではなく実行モデルに焦点を当てて説明しているため、難易度は高いです。使い方を知りたい人は MDN などの記事を読んでください。この記事をきっかけに実装解読に挑戦してみる人が一人でも増えると幸いです。 本記事を書くにあたり、yuki3 さんに多くのコメントをいただき、議論に付き合っていただきました。ありがとうございました。なお、文責はすべて私 (nhiroki) にあります。誤りや補足、質問などは気軽に GitHub Issue もしくは Twitter へお寄せください。 更新履歴 2018/01/15 Layout
これは Chromium Browser アドベントカレンダーの一日目の記事です。初日ということで、本記事では Chromium のソースコードを読む上で役に立つであろう、プロジェクトのディレクトリ構成やファイル構成を紹介します。 (2018/04/09) “The Great Blink mv”1 プロジェクトによってついに WebKit ディレクトリが blink ディレクトリにリネームされました。それに伴い本記事の内容を更新しました。差分は以下の通りです。 third_party/WebKit/Source を third_party/blink/renderer に置換。 blink/ 内のファイル名の命名規約を Bar.{cpp,h} から bar.{cc,h} に置換。 置換に伴う説明文の修正。 (2017/12/01) ディレクトリ構成について追記しました。 Chromium
『プリンシプル オブ プログラミング ― 3 年目までに身につけたい 一生役立つ 101 の原理原則』を読み終わったのでその感想とメモです。 読書メモ on Twitter 読んだ動機 「コードは書けるがクラスや関数の設計スキルがまだまだ未熟な新人ソフトウェアエンジニアが、設計について体系的に学べる本はないか」と聞かれて思い浮かんだうちの一冊が本書でした (この時点では未読)。書評サイト等での評価が高いのと目次をさらっと眺めた感じではきっとお薦めできるだろうと思いましたが、人に薦める以上はまずは自分が読まなくてはと思い、読み始めました。 コード設計に関する本は、他にもデザインパターンやリファクタリングの本なども思い浮かんだのですが、デザインパターンは具体的な課題があって、それを解決するために見るカタログのようなものだと思っていて、適用範囲が限定的だと感じています。そして何よりデザインパター
pmap というコマンドの使い方を覚えたので忘れないうちにメモ. pmap は指定したプロセスのメモリマッピングに関する情報を proc ファイルシステムから取得し,表示してくれるツールです.例えば,bash プロセスのメモリマッピングがどんな風になっているか,次のように調べることができます. $ ps | grep bash 27723 pts/0 00:00:00 bash $ pmap 27723 27723: bash 0000000000400000 896K r-x-- /bin/bash 00000000006e0000 4K r---- /bin/bash 00000000006e1000 36K rw--- /bin/bash 00000000006ea000 24K rw--- [ anon ] 0000000000dde000 4356K rw--- [ anon ]
2023-10-15 『新規事業を成功させる PMF の教科書』を読んだ 2023-10-08 『プロダクトマネジメント ― ビルドトラップを避け顧客に価値を届ける』を読んだ 2023-09-22 Tech Lead Manager から Tech Lead に戻った話 2023-09-18 『地磁気逆転と「チバニアン」 ― 地球の磁場は、なぜ逆転するのか』を読んだ 2023-09-04 『日経サイエンス 2023 年 10 月号』を読んだ 2023-08-21 『ChatGPT 攻略』を読んだ 2023-08-13 『宇宙検閲官仮説 「裸の特異点」は隠されるか』を読んだ 2023-08-10 『発達障害の人が見ている世界』を読んだ 2023-08-09 『分析者のためのデータ解釈学入門』を読んだ 2023-07-30 『FINAL FANTASY XVI』をクリアした 2023-07-2
『GPU を支える技術 ― 超並列ハードウェアの快進撃 [技術基礎]』を読み終わった。 感想 GPU 周辺の知識を一通り学べる良書。とても勉強になった。GPU の仕組みやプログラミング、グラフィックスに関する前提知識は一切必要ないと思うけど、CPU に関しては学部生のコンピュータアーキテクチャくらいの知識はないと読むのがしんどいと思う。まえがきにもそう書いてある。 本書では、汎用 CPU の基本的な処理方法の概念はおおよそ理解があるという想定で解説を行っています。 ハードウェア主眼の本だと思って読み始めたけど、3D グラフィックス周りの基礎知識もいっぱい書いてあって、それらも一緒に学べて良かった (Graphics Processing Unit の本だから書いてあって当たり前?) ハードウェアの詳しい説明の後に CUDA や OpenCL におけるサンプルが提示されているため、システム構
2018/02/15 : 仕様や実装の変更に伴い新たに「Service Worker スクリプトのインストールと更新処理」という記事を公開しました。本記事の内容は既に古いので、新しい記事を参照するようにしてください。 2015/12/13 : update() とブラウザキャッシュのインタラクションについて仕様変更があったので追記しました。Chrome 48 から適用されます。 2015/12/13 : update() が Promise を返すように仕様変更があったので追記しました。Chrome 46 から適用されます。 Chrome に ServiceWorkerRegistration.update() を実装したのでその紹介。Chrome 45 から使用することができます。 [spec] Service Workers - update() [blink-dev] Intent-
『Real World HTTP ― 歴史とコードに学ぶインターネットとウェブ技術』を読み終わった。 感想 本のサブタイトルにある通り、HTTP や関連する仕様の策定の歴史と Go 言語によるミニマムな実装例をもとにインターネットとウェブの技術について学べる本。日本語で読める HTTP に関する書籍としては最も網羅的だと思うし、まえがきによると著者の方もそれを意図して書かれたようです。 仕様の変更や新しい仕様が策定された経緯は最新の仕様を読むだけではなかなか知ることができないけど、本書はしっかりとサーベイした上で歴史的経緯が書かれていて、史料的な価値も高いと感じました。 本書とは全く関係ない話ですが、史料的な価値を生み出すことを念頭に記事や本を書くのは歴史的経緯を知っている人の重要な任務じゃないかと思っていて、そういったことをしてくれる人が増えるといいな、と思っています (特に私が興味のあ
まだ高校生だった頃、プログラムがコンピュータを動かしている仕組みがとても不思議でした。 プログラムがコンパイルされることでバイナリが生成され、バイナリというのは 1/0 で表現されていて、それが電気信号の On/Off に対応するらしい、といった知識はありましたが、ディスプレイ上の文字列が現実世界に作用し、おまけにそれを自由に編集できるなんてまるで魔法のようでした。それが私がソフトウェアとハードウェアの境界に興味を持ち始めたきっかけだったと思います。 大学に進学してコンピュータアーキテクチャを学ぶ中で、コンピュータは電子回路を組み合わせたものであり、プログラムやデータはその上を流れる電気信号の集合で、ディスプレイは電気信号を人が理解できる形に表現し直す機械であることを意識するようになってから、この辺りのことがスッと理解できるようになりました。 それにしても、このような理解に至るまでずいぶん
「ZMap: Fast Internet-Wide Scanning and its Security Applications」(PDF) という USENIX Security Symposium (2013) で発表された論文を読んだので、そのメモ書きです。 免責 内容が間違っていたり、偏っていたりする可能性があります。正確な情報が欲しい方は必ず論文を読んでください。誤りの指摘や補足、議論などは GitHub Issue へお願いします。 読んだ動機 先日参加したシステム系輪講会で ZMap というスキャンツールを使ったインターネットの調査研究がよく行われているという話を聞きました。曰く、ZMap を使うとパブリックな IPv4 アドレス空間を数十分でスキャンできるとのこと。その仕組みが気になってこの論文を読んでみました。 まとめ・雑感 実装を工夫することで、拡張性があり高速なネット
このページを最初にブックマークしてみませんか?
『nhiroki’s weblog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く