Rustは初めて触りましたが、理解しやすい書き方を心掛けてくれているので特に苦にはなりませんでした。
この本を読む前にインタプリタやコンパイラなど、言語処理系の学習を多少していたので字句解析、構文解析の辺りはすんなり理解できました。
逆に、他のプログラミング言語の経験がない、言語処理系の予備知識もなかったらどうだったろう?と考えるとハードルが高いような気がします。
それでも写経しながら書籍の通りに進めて行けばなんとなくブラウザの仕組みが理解出来る助けにはなると思います。
良い本です。次は本書籍内でも触れられている、「作って学ぶOSのしくみ」に期待したいと思います。
この商品に対するお客様のご意見を共有するには、携帯電話のアプリストアまたはGoogle PlayからAmazonアプリを開いてください。
¥3,665 ¥3,665 税込
獲得予定ポイント: | +111 pt (3%) |
を購読しました。 続刊の配信が可能になってから24時間以内に予約注文します。最新刊がリリースされると、予約注文期間中に利用可能な最低価格がデフォルトで設定している支払い方法に請求されます。
「メンバーシップおよび購読」で、支払い方法や端末の更新、続刊のスキップやキャンセルができます。
エラーが発生しました。 エラーのため、お客様の定期購読を処理できませんでした。更新してもう一度やり直してください。
無料のKindleアプリをダウンロードして、スマートフォン、タブレット、またはコンピューターで今すぐKindle本を読むことができます。Kindleデバイスは必要ありません。
ウェブ版Kindleなら、お使いのブラウザですぐにお読みいただけます。
携帯電話のカメラを使用する - 以下のコードをスキャンし、Kindleアプリをダウンロードしてください。
[作って学ぶ]ブラウザのしくみ──HTTP、HTML、CSS、JavaScriptの裏側 WEB+DB PRESS plus Kindle版
このページの読み込み中に問題が発生しました。もう一度試してください。
(概要)
Webブラウザは、開発者にとってもユーザーにとっても、もはや日常の一部となっているほど身近なソフトウエアですが、近年のブラウザはあまりにも高機能かつ巨大になってしまったため、その仕組みを詳しく理解することは困難です。そこで、シンプルなブラウザをRustを用いて実装することによって、ブラウザ上でWebサイトを開くまでに何が起きているのかを理解することを目的とします。さらに、作成したブラウザを、別冊で解説・実装している自作OSの上で動かすことによって、ブラウザと更にその裏側を理解していきます。
(こんな方におすすめ)
・普段からブラウザを使用していて、その裏側に少しでも興味を持っている方
(目次)
第1章:ブラウザを知る──Webサイトを表示するアプリケーション
ブラウザの役割❶──Webクライアントとしてのブラウザ
ブラウザの役割❷──レンダリングエンジンとしてのブラウザ
ブラウザの役割❸──JavaScriptエンジンとしてのブラウザ
コアの役割を支えるためのさらなる機能
マルチプロセスアーキテクチャ
ブラウザのセキュリティ対策
本書のゴール・注意点
第2章:URLを分解する──リソースを指定する住所
URLとは
URLの構文解析の実装
ユニットテストによる動作確認
第3章:HTTPを実装する──ネットワーク通信を支える約束事
HTTPとは
HTTPクライアントの実装
ユニットテストによる動作確認
WasabiOS上で動かす
第4章:HTMLを解析する──HTMLからDOMツリーへの変換
HTMLとは
HTMLの字句解析──トークン列の生成
ユニットテストによる字句解析の動作確認
HTMLの構文解析──ツリーの構築
ユニットテストによる構文解析の動作確認
WasabiOS上で動かす
第5章:CSSで装飾する──CSSOMとレイアウトツリーの構築
CSSとは
CSSの字句解析──トークン列の生成
ユニットテストによる字句解析の動作確認
CSSの構文解析──CSSOMの構築
ユニットテストによる構文解析の動作確認
レイアウトツリーの構築
ユニットテストによるレイアウトの動作確認
GUI描画のための準備
第6章:GUIを実装する──ユーザーとのやりとり
GUIとは
GUIアプリケーションのウィンドウの作成
ユーザーの入力を取得
アドレスバーからナビゲーション
ページの内容の描画
リンククリックでナビゲーション
第7章:JavaScriptを動かす──ページの動的な変更
JavaScriptとは
JavaScriptの加算/減算の実装
JavaScriptの変数の実装
JavaScriptの関数呼び出しの実装
ブラウザAPIの追加
WasabiOS上で動かす
おわりに
Webブラウザは、開発者にとってもユーザーにとっても、もはや日常の一部となっているほど身近なソフトウエアですが、近年のブラウザはあまりにも高機能かつ巨大になってしまったため、その仕組みを詳しく理解することは困難です。そこで、シンプルなブラウザをRustを用いて実装することによって、ブラウザ上でWebサイトを開くまでに何が起きているのかを理解することを目的とします。さらに、作成したブラウザを、別冊で解説・実装している自作OSの上で動かすことによって、ブラウザと更にその裏側を理解していきます。
(こんな方におすすめ)
・普段からブラウザを使用していて、その裏側に少しでも興味を持っている方
(目次)
第1章:ブラウザを知る──Webサイトを表示するアプリケーション
ブラウザの役割❶──Webクライアントとしてのブラウザ
ブラウザの役割❷──レンダリングエンジンとしてのブラウザ
ブラウザの役割❸──JavaScriptエンジンとしてのブラウザ
コアの役割を支えるためのさらなる機能
マルチプロセスアーキテクチャ
ブラウザのセキュリティ対策
本書のゴール・注意点
第2章:URLを分解する──リソースを指定する住所
URLとは
URLの構文解析の実装
ユニットテストによる動作確認
第3章:HTTPを実装する──ネットワーク通信を支える約束事
HTTPとは
HTTPクライアントの実装
ユニットテストによる動作確認
WasabiOS上で動かす
第4章:HTMLを解析する──HTMLからDOMツリーへの変換
HTMLとは
HTMLの字句解析──トークン列の生成
ユニットテストによる字句解析の動作確認
HTMLの構文解析──ツリーの構築
ユニットテストによる構文解析の動作確認
WasabiOS上で動かす
第5章:CSSで装飾する──CSSOMとレイアウトツリーの構築
CSSとは
CSSの字句解析──トークン列の生成
ユニットテストによる字句解析の動作確認
CSSの構文解析──CSSOMの構築
ユニットテストによる構文解析の動作確認
レイアウトツリーの構築
ユニットテストによるレイアウトの動作確認
GUI描画のための準備
第6章:GUIを実装する──ユーザーとのやりとり
GUIとは
GUIアプリケーションのウィンドウの作成
ユーザーの入力を取得
アドレスバーからナビゲーション
ページの内容の描画
リンククリックでナビゲーション
第7章:JavaScriptを動かす──ページの動的な変更
JavaScriptとは
JavaScriptの加算/減算の実装
JavaScriptの変数の実装
JavaScriptの関数呼び出しの実装
ブラウザAPIの追加
WasabiOS上で動かす
おわりに
- 言語日本語
- 出版社技術評論社
- 発売日2024/11/9
- ファイルサイズ11511 KB
この本はファイルサイズが大きいため、ダウンロードに時間がかかる場合があります。Kindle端末では、この本を3G接続でダウンロードすることができませんので、Wi-Fiネットワークをご利用ください。
この本を読んだ購入者はこれも読んでいます
ページ: 1 / 1 最初に戻るページ: 1 / 1
出版社より
商品の説明
著者について
名古屋市立大学芸術工学部でデザインを学びながら、フロントエンド、バックエンドのウェブ開発を独学で学ぶ。名古屋大学大学院情報学研究科では、コンピュータを使って生命の謎に迫る人工生命の分野で研究。低レイヤーの分野に興味があり、趣味の時間でRISC-Vエミュレータを開発中。現在はGoogleでソフトウェアエンジニアとしてブラウザ開発に従事している。 --このテキストは、絶版本またはこのタイトルには設定されていない版型に関連付けられています。
登録情報
- ASIN : B0DKDHR8BL
- 出版社 : 技術評論社 (2024/11/9)
- 発売日 : 2024/11/9
- 言語 : 日本語
- ファイルサイズ : 11511 KB
- Text-to-Speech(テキスト読み上げ機能) : 有効
- X-Ray : 有効にされていません
- Word Wise : 有効にされていません
- 本の長さ : 837ページ
- Amazon 売れ筋ランキング: - 15,998位Kindleストア (Kindleストアの売れ筋ランキングを見る)
- - 568位コンピュータ・IT (Kindleストア)
- - 1,112位コンピュータ・IT (本)
- カスタマーレビュー:
著者について
著者をフォローして、新作のアップデートや改善されたおすすめを入手してください。
著者の本をもっと見つけたり、似たような著者を調べたり、おすすめの本を読んだりできます。
カスタマーレビュー
星5つ中3.4つ
5つのうち3.4つ
14グローバルレーティング
評価はどのように計算されますか?
全体的な星の評価と星ごとの割合の内訳を計算するために、単純な平均は使用されません。その代わり、レビューの日時がどれだけ新しいかや、レビューアーがAmazonで商品を購入したかどうかなどが考慮されます。また、レビューを分析して信頼性が検証されます。
イメージ付きのレビュー
星5つ中5つ
とりあえずsabaコマンドを打ってみましょう
## 2024-11-09 20:04(追記)3章まで読み終わりました。HTTPClientを作ってWeb上からHTMLを取得する処理を自前で書いて、実際にexample.comなどにRequestをします。run_on_wasabi.shは相変わらずエラーな雰囲気に見えたのですが、とりあえずsabaコマンドを打ってEnterを押すと、無事にWasabiOS上でHTMLの取得ができたことが確認できました。テストだけ動かしてRustのコードやブラウザの裏側の雰囲気を体験できるだけでも楽しいですが、実際に動作するとやはり嬉しいです。これで安心して4章以降も楽しめそうです(総合評価を4から5に変更しました)。```[INFO] os/src/cmd.rs:54 : Executing cmd: ["wait_until_dns_ready"][INFO] os/src/cmd.rs:90 : DNS server address is set up! ip = 8.8.8.8[INFO] os/src/cmd.rs:54 : Executing cmd: ["nslookup", "example.com"][WARN] os/src/net/manager.rs:429: No route to 8.8.8.8. Sending ARP from all the interfaces.[ERROR] os/src/main.rs:147: Failed("Timed out")[INFO] os/src/executor.rs:147: Task completed: Task(os/src/main.rs:210): Ok(())saba[INFO] os/src/cmd.rs:54 : Executing cmd: ["saba"]...(中略)response:HttpResponse { version: "HTTP/1.1", status_code: 200, reason: "OK\r", headers: [ Header { name: "Accept-Ranges", value: "bytes", },(以下略)```## 2024-11-09 12:182024-11-09 0時にKindleの配信が待ち切れずPDF・Epub版を購入して2章まで読み進めた状態です。0章のrun_on_wasabi.shの実行でシェルからCloneしているWasabi OS内のエラーを拾っていたために処理がうまくいかず悩んでいたのですが、MacやUbuntuでコードが動作しているのでとりあえず先に読み進めています。Rust言語の扱い方を学べますが、言語の扱いに関する初歩の説明はなくすでに理解している前提で進みます。Appendixにも言語の入門などがない上で800ページ超の分量なので、事前に公式ドキュメントや書籍などでRust言語をある程度書ける状態にしておくことが望ましいです。Rustで何かを作ったり、ブラウザ自体を手作りで学べたりなどだいぶ攻めた内容で地道にコードを書きつつもワクワク感があります。ただ、万人に易しい内容でもないとは思いますので、Rust言語を楽しんで書いたり、環境構築で詰まっても自身で対処をしていく姿勢を持った上で本書籍を購入すると良さそうです。800ページを超えていて3章以降も分量があるのでゆっくり読み進めていきます。[ご参考]0章のrun_on_wasabi.shの実行時のログです。OS側でエラーをキャッチしてログを出力しているように見えましたが、コードの読み込みや環境の確認と検証に時間がかかりそうで0章でいきなり詰まりつつも諦めて先へと読み進めていきました。```[INFO] os/src/cmd.rs:54 : Executing cmd: ["wait_until_dns_ready"][INFO] os/src/cmd.rs:90 : DNS server address is set up! ip = 8.8.8.8[INFO] os/src/cmd.rs:54 : Executing cmd: ["nslookup", "example.com"][WARN] os/src/net/manager.rs:429: No route to 8.8.8.8. Sending ARP from all the interfaces.[ERROR] os/src/main.rs:147: Failed("Timed out")[INFO] os/src/executor.rs:147: Task completed: Task(os/src/main.rs:210): Ok(())```
フィードバックをお寄せいただきありがとうございます
申し訳ありませんが、エラーが発生しました
申し訳ありませんが、レビューを読み込めませんでした
上位レビュー、対象国: 日本
レビューのフィルタリング中に問題が発生しました。後でもう一度試してください。
- 2024年12月6日に日本でレビュー済みAmazonで購入
- 2025年1月21日に日本でレビュー済み何がしたい本なのかよく分からない
仮説①: 別冊になっている自作OSの本を売りたい?→だがその本は2025/1/20時点でも未発売
仮説②: 読者側のOSを指定したい?→バーチャルボックスかUTMをインストールさせればよいと思うのですが
仮説③: OSの機能は最低限にしてブラウザ開発に集中して欲しい?→自分は自作OSのセットアップで割と時間取られました
何がしたい本なのかよくわからないですね、、
内容自体は自作OSで検索すれば出てくるような内容がより詳細に書いてあるといった感じなので、CS未修の方で字句解析等に興味がある方は買ってもよいかもしれない。
あくまで作者が趣味でやったものを本にしました、というテイストで読むのが1番しっくり来る。そして自分は合わなかったので低評価にしました。
- 2024年11月9日に日本でレビュー済み## 2024-11-09 20:04(追記)
3章まで読み終わりました。HTTPClientを作ってWeb上からHTMLを取得する処理を自前で書いて、実際にexample.comなどにRequestをします。run_on_wasabi.shは相変わらずエラーな雰囲気に見えたのですが、とりあえずsabaコマンドを打ってEnterを押すと、無事にWasabiOS上でHTMLの取得ができたことが確認できました。テストだけ動かしてRustのコードやブラウザの裏側の雰囲気を体験できるだけでも楽しいですが、実際に動作するとやはり嬉しいです。これで安心して4章以降も楽しめそうです(総合評価を4から5に変更しました)。
```
[INFO] os/src/cmd.rs:54 : Executing cmd: ["wait_until_dns_ready"]
[INFO] os/src/cmd.rs:90 : DNS server address is set up! ip = 8.8.8.8
[INFO] os/src/cmd.rs:54 : Executing cmd: ["nslookup", "example.com"]
[WARN] os/src/net/manager.rs:429: No route to 8.8.8.8. Sending ARP from all the interfaces.
[ERROR] os/src/main.rs:147: Failed("Timed out")
[INFO] os/src/executor.rs:147: Task completed: Task(os/src/main.rs:210): Ok(())
saba
[INFO] os/src/cmd.rs:54 : Executing cmd: ["saba"]
...(中略)
response:
HttpResponse {
version: "HTTP/1.1",
status_code: 200,
reason: "OK\r",
headers: [
Header {
name: "Accept-Ranges",
value: "bytes",
},
(以下略)
```
## 2024-11-09 12:18
2024-11-09 0時にKindleの配信が待ち切れずPDF・Epub版を購入して2章まで読み進めた状態です。0章のrun_on_wasabi.shの実行でシェルからCloneしているWasabi OS内のエラーを拾っていたために処理がうまくいかず悩んでいたのですが、MacやUbuntuでコードが動作しているのでとりあえず先に読み進めています。
Rust言語の扱い方を学べますが、言語の扱いに関する初歩の説明はなくすでに理解している前提で進みます。Appendixにも言語の入門などがない上で800ページ超の分量なので、事前に公式ドキュメントや書籍などでRust言語をある程度書ける状態にしておくことが望ましいです。
Rustで何かを作ったり、ブラウザ自体を手作りで学べたりなどだいぶ攻めた内容で地道にコードを書きつつもワクワク感があります。ただ、万人に易しい内容でもないとは思いますので、Rust言語を楽しんで書いたり、環境構築で詰まっても自身で対処をしていく姿勢を持った上で本書籍を購入すると良さそうです。800ページを超えていて3章以降も分量があるのでゆっくり読み進めていきます。
[ご参考]
0章のrun_on_wasabi.shの実行時のログです。OS側でエラーをキャッチしてログを出力しているように見えましたが、コードの読み込みや環境の確認と検証に時間がかかりそうで0章でいきなり詰まりつつも諦めて先へと読み進めていきました。
```
[INFO] os/src/cmd.rs:54 : Executing cmd: ["wait_until_dns_ready"]
[INFO] os/src/cmd.rs:90 : DNS server address is set up! ip = 8.8.8.8
[INFO] os/src/cmd.rs:54 : Executing cmd: ["nslookup", "example.com"]
[WARN] os/src/net/manager.rs:429: No route to 8.8.8.8. Sending ARP from all the interfaces.
[ERROR] os/src/main.rs:147: Failed("Timed out")
[INFO] os/src/executor.rs:147: Task completed: Task(os/src/main.rs:210): Ok(())
```
## 2024-11-09 20:04(追記)
3章まで読み終わりました。HTTPClientを作ってWeb上からHTMLを取得する処理を自前で書いて、実際にexample.comなどにRequestをします。run_on_wasabi.shは相変わらずエラーな雰囲気に見えたのですが、とりあえずsabaコマンドを打ってEnterを押すと、無事にWasabiOS上でHTMLの取得ができたことが確認できました。テストだけ動かしてRustのコードやブラウザの裏側の雰囲気を体験できるだけでも楽しいですが、実際に動作するとやはり嬉しいです。これで安心して4章以降も楽しめそうです(総合評価を4から5に変更しました)。
```
[INFO] os/src/cmd.rs:54 : Executing cmd: ["wait_until_dns_ready"]
[INFO] os/src/cmd.rs:90 : DNS server address is set up! ip = 8.8.8.8
[INFO] os/src/cmd.rs:54 : Executing cmd: ["nslookup", "example.com"]
[WARN] os/src/net/manager.rs:429: No route to 8.8.8.8. Sending ARP from all the interfaces.
[ERROR] os/src/main.rs:147: Failed("Timed out")
[INFO] os/src/executor.rs:147: Task completed: Task(os/src/main.rs:210): Ok(())
saba
[INFO] os/src/cmd.rs:54 : Executing cmd: ["saba"]
...(中略)
response:
HttpResponse {
version: "HTTP/1.1",
status_code: 200,
reason: "OK\r",
headers: [
Header {
name: "Accept-Ranges",
value: "bytes",
},
(以下略)
```
## 2024-11-09 12:18
2024-11-09 0時にKindleの配信が待ち切れずPDF・Epub版を購入して2章まで読み進めた状態です。0章のrun_on_wasabi.shの実行でシェルからCloneしているWasabi OS内のエラーを拾っていたために処理がうまくいかず悩んでいたのですが、MacやUbuntuでコードが動作しているのでとりあえず先に読み進めています。
Rust言語の扱い方を学べますが、言語の扱いに関する初歩の説明はなくすでに理解している前提で進みます。Appendixにも言語の入門などがない上で800ページ超の分量なので、事前に公式ドキュメントや書籍などでRust言語をある程度書ける状態にしておくことが望ましいです。
Rustで何かを作ったり、ブラウザ自体を手作りで学べたりなどだいぶ攻めた内容で地道にコードを書きつつもワクワク感があります。ただ、万人に易しい内容でもないとは思いますので、Rust言語を楽しんで書いたり、環境構築で詰まっても自身で対処をしていく姿勢を持った上で本書籍を購入すると良さそうです。800ページを超えていて3章以降も分量があるのでゆっくり読み進めていきます。
[ご参考]
0章のrun_on_wasabi.shの実行時のログです。OS側でエラーをキャッチしてログを出力しているように見えましたが、コードの読み込みや環境の確認と検証に時間がかかりそうで0章でいきなり詰まりつつも諦めて先へと読み進めていきました。
```
[INFO] os/src/cmd.rs:54 : Executing cmd: ["wait_until_dns_ready"]
[INFO] os/src/cmd.rs:90 : DNS server address is set up! ip = 8.8.8.8
[INFO] os/src/cmd.rs:54 : Executing cmd: ["nslookup", "example.com"]
[WARN] os/src/net/manager.rs:429: No route to 8.8.8.8. Sending ARP from all the interfaces.
[ERROR] os/src/main.rs:147: Failed("Timed out")
[INFO] os/src/executor.rs:147: Task completed: Task(os/src/main.rs:210): Ok(())
```
このレビューの画像
- 2025年1月3日に日本でレビュー済みタイトルからはわからないが、自作OSで自作ブラウザをうごかす。
自作OSのせいでわかりにくい。ブラウザだけ作るのではダメなのか。。。
- 2024年12月1日に日本でレビュー済みブラウザの基本の仕組みやブラウザがどのようなプログラム部品で動いてるかを知るのにはいい本です。説明のところでは新しい話もかなり書かれているみたいだし、仕様との対応も書かれています。
でもRustで書かれたシンプルなブラウザを作る本なのかというと自作OS前提だし、Rustが学べるという感じでもないです。Rust標準のライブラリは使わず、ネットワーク通信なども自作OSの独自クラスを使います。最初の設定でつまづく人も多そう。著者の方のこだわりなのでしょうが素直な環境で動くプログラムの本の方が読みやすかったかなとおもいました。