Safari

Safari

[13] Safari は、 AppleWebブラウザーです。

環境

[4] SafariMac OS で動作します。

[14] iOS 版は Mobile Safari と呼ばれています。 アプリ内ブラウザーとしても非常によく用いられています。

[15] 以前は WindowsSafari もありました。

[35] アプリ内ブラウザー機能として Safari View Controller があります。

構成

[16] レンダリングエンジンとして WebKit を使っています。

[17] JavaScript エンジンとして JavaScriptCore を使っています。

デバッグ

[25] ios-webkit-debug-proxy を使うと iOSSafari にアクセスできます。

[26] 端末と USB ケーブルで接続し、 Apple のドライバーをインストールする必要があります。 Windows の標準の構成でも iPhone のストレージにはアクセスできますが、 それだけでは駄目で、 Apple 謹製のドライバーが必要です。

[27] ドライバーは iTunes をインストールすれば良いことになっていますが、 うまくいかないトラブルが多発しているようです。 自動でインストールされていないときは C:\Program Files\Common Files\Apple\Mobile Device Support\Drivers ないし C:\Program Files (x68)\Common Files\Apple\Mobile Device Support\Drivers にドライバーのファイルがあって、それを手動でインストールすればいいらしいのですが、 Drivers というフォルダーが存在しないこともあります。 Apple が単独で配布はしていないようなので、 存在しない時どうしたらいいのかわかりません。 とにかくこれを用意してインストールする必要があります。

[28] ドライバーがインストールされており、端末とケーブルで接続された状態で、 ios-webkit-debug-proxy (ios-webkit-debug-proxy.exe) を実行すると、 サーバーが動きます。 サーバーが起動後すぐに異常終了するときは iTunes をインストールし忘れていないか確認しましょう。 サーバー起動後コマンドプロンプトに端末が接続されたと表示されないといはドライバーがインストールされているか確認しましょう。

[29] 昔は ios-webkit-debug-proxy さえあれば ChromeDevTools で開けたようですが、今は Safariプロトコルが変更されたらしく、 開けないようです。

[30] また ios-webkit-debug-proxy 組み込みのデフォルトの DevTools Web UI があるのですが、それもプロトコルが変わったせいかうまく動きません。 UI は表示されるのですが、何も表示されず何もおきません。 どのページが開かれているかがわかるくらいです。

[34] 不思議なことに通常の文書の Inspector はまったく動かないのに、 サービスワーカーの Network だけは表示されます。

[32] ios-webkit-debug-proxy の公式は回避手段として remotedebug-ios-webkit-adapter を使うことを推奨していました。 remotedebug-ios-webkit-adapterios-webkit-debug-proxy にプロトコル変換のラッパー的な node.js のプログラムを組み合わせたものです。

[33] ところが remotedebug-ios-webkit-adapter の開発者は開発を中止してしまい、 かわりに有償プランの有る商用サービスを売り始めました。 そのため将来性に不安があります。

メモ

[6] スラッシュドット ジャパン | Safari が Acid2 Test を最初にクリア http://slashdot.jp/mac/05/04/30/1122234.shtml?topic=74 (名無しさん 2005-05-03 12:51:42 +00:00)

[7] Safari HTML Reference: Introduction to Safari HTML Reference http://developer.apple.com/documentation/AppleApplications/Reference/SafariHTMLRef/Introduction.html (名無しさん)

[8] Safari CSS Reference: Introduction to Safari CSS Reference http://developer.apple.com/documentation/AppleApplications/Reference/SafariCSSRef/Introduction.html (名無しさん)

[9] Safari JavaScript Reference http://developer.apple.com/documentation/AppleApplications/Reference/SafariJSRef/index.html#//apple_ref/doc/uid/TP40001482 (名無しさん)

[10] Safari の JavaScript の不備: Days on the Moon http://nanto.asablo.jp/blog/2006/01/13/209495 (名無しさん)

[11] Historical User Agent strings (2006-12-31 11:51:02 +09:00 版) http://developer.apple.com/internet/safari/uamatrix.html

[12] スクリプト絶対配置SVG 要素を挿入したり移動させたりなんでしちゃってるんですが、 Windows Vista + Safari では一部がレンダリングされなかったり、移動後にも一部消し残しができたりします。 Chrome では起きないので、描画ライブラリー周りのバグでしょうか。 とりあえず、もっと上に別な要素を一瞬だけレンダリングすることで無理矢理再描画させると解決しました。

[18] Introduction to “What’s New in Safari” ( 版) https://developer.apple.com/library/safari/releasenotes/General/WhatsNewInSafari/Introduction/Introduction.html#//apple_ref/doc/uid/TP40014305-CH1-SW1

[19] Safari 7.0 ( 版) https://developer.apple.com/library/safari/releasenotes/General/WhatsNewInSafari/Articles/Safari_7_0.html#//apple_ref/doc/uid/TP40014305-CH5-SW21

Safari 7 makes use of this feature by giving each browser tab its own separate Web Content process for loading and rendering the page, and then napping this process when the tab is not immediately visible to the user.

[20] Introduction to “What’s New in Safari” ( 版) https://developer.apple.com/library/safari/releasenotes/General/WhatsNewInSafari/Introduction/Introduction.html#//apple_ref/doc/uid/TP40014305-CH1-SW1

This document summarizes changes to the Safari Web browser since version 4.0.

[21] Release Notes for Safari Technology Preview 2 | WebKit ( 版) https://webkit.org/blog/6098/release-notes-for-safari-technology-preview-release-2/

[22] いにしえの Safari 4 beta の UI を懐かしむ - Qiita ( ()) https://qiita.com/usagimaru/items/e709a80522c74e7aa9dc

[23] Release Notes for Safari Technology Preview 17 | WebKit ( ()) https://webkit.org/blog/7071/release-notes-for-safari-technology-preview-17/

[36] Apple「iOS/iPadOS/macOSのSafariは全て別物である」と主張して規制回避を図る | スラド アップル, https://apple.srad.jp/story/23/11/07/1215255/