GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • メインページ
  • コミュニティ・ポータル
  • 最近の出来事
  • 新しいページ
  • 最近の更新
  • おまかせ表示
  • 練習用ページ
  • アップロード (ウィキメディア・コモンズ)
  • 特別ページ
  • ヘルプ
  • 利用案内
  • 井戸端
  • お知らせ
  • バグの報告

This view

  • Original page
  • New address

GeezerVison is showing ja.wikipedia.org — Google Native Client - Wikipedia

Google Native Client
開発元 Google
最新版
Pepper 45 / 2015年6月10日 (2015-06-10)
リポジトリ
  • chromium.googlesource.com/native_client/src/native_client.git
プログラミング
言語
C++
対応OS Microsoft Windows, macOS, Linux, Chrome OS, Android
サポート状況 終了
種別 ネイティブコードを安全に、しかし効率的に実行することを目標としたサンドボックスフレームワーク
ライセンス BSDライセンス
公式サイト developers.google.com/native-client/

Google Native Client(ネイティブクライアント、食塩を意識してNaClと略される)は、ネイティブコードを安全に、しかし効率的に実行することを目標とした、サンドボックスを中心としたフレームワークである。当初はその名の通りネイティブコード版のみであったが、その後の情勢などにより、現在はプロセッサアーキテクチャ非依存の Portable Native Client (PNaCl) もあり、それについても述べる。

WebAssemblyの普及に伴いそちらにリソースを集中するため開発を終了し、2019年にChromeから削除されることを発表[1]。2023年に削除された[2]。

概要

NaCl、PNaClともx86とARMに対応したものが公開されている。ウェブブラウザ上のウェブアプリケーションをネイティブアプリケーションに近い速度[3]で実行することなどを主な目標とした、安全にネイティブコードを実行できるシステムである。PC版およびChrome OS版Google Chrome 14からはChromeウェブストアで配布されているアプリケーションを実行する場合に限りデフォルトで有効になっており、それ以外の場合はchrome://flags/で有効にする必要がある[3][4]。Google Chrome 29からPNaClが導入され、Google Chrome 31(デスクトップ版のみ)からは、PNaCl がデフォルトで有効になっており、NaClとは異なりAdobe FlashのようにChromeウェブストア以外の一般のウェブページ内に埋め込みでも使用できる[5]。

NaClのARMへの実装は、2010年3月にリリースされた[6]。x86-64もサポートされている。しかし、NaClはCPU依存であり、それぞれホストの命令セットへコンパイルされたバイナリしか使用できない。Portable Native Client (PNaCl) では、LLVM中間表現を採用することでこの問題を解決しており、CPU非依存でアプリケーションを動作させられる[7]。PNaCl向けに書かれたアプリケーションをEmscriptenを使い、汎用のJavaScriptとして動作させるための、pepper.jsもGoogleは開発している。

標準CライブラリとしてNewlibを使用しているが、NaClはポートされたGNU Cライブラリ(glibc)も使用可能である[8]。今のところ、PNaClはglibcは未対応。標準CライブラリではPOSIXスレッドも使用可能であるが[9]、プロセスはサポートしていない。

Google Chrome 14 (release 0.5) から、Native Clientは安定版のABIを持っていて、将来のバージョンでの上位互換性を保証している[10]。同様に、PNaClの方はGoogle Chrome 31以降、上位互換性を保証している[11]。

NaCl、PNaClはGoogleによってオープンソースプロジェクト(BSDスタイルのライセンス)として開発が進められていた[12]。

サンドボックス

NaClはARMとx86-64でのサンドボックス化のため、ソフトウェアによるフォールト分離を利用している[13]。x86-32での実装は、サンドボックスのメモリ空間を規制するなど一部用途以外ではx86のセグメンテーション機能を用いない[14]。システムコールの呼び出しなどの危険な命令の実行を防ぐためには、コード検証機を利用する。また、安全な命令の中に隠された危険な命令へジャンプすることを防ぐため、Native Clientでのインダイレクトジャンプは32バイトブロックの先頭へのみ許されるほか、ジャンプ先ブロックが不定なジャンプは許可されない[14]。これらの制約のため、C言語で書かれたプログラムは Native Client 上で動作するためにはカスタマイズされたGNU toolchain、特にgccとbinutilsで再コンパイルすることが必要になる。

Pepper API

Pepper APIはNative Clientアプリケーションを作成するために使えるクロスプラットフォームAPIで、PPAPI (Pepper Plug-in API) とも呼ばれる。ネットスケープのNPAPIがベースとなっており、ブラウザを超えた機能に安全にアクセスすることができる[9]。

名前の由来は、Native Clientの略がNaClで、塩化ナトリウム(食塩)の化学記号であることから、調味料・香料としてセットにされる塩コショウの胡椒 (Pepper) から来ている[9]。

以下はPPAPI環境下で使用できる機能。

  • JavaScriptインターフェース
  • リモートファイルローダ
  • ローカルファイルIO
  • 2Dグラフィックス
  • 3Dグラフィックス (OpenGL ES 2.0)
  • オーディオ再生
  • WebSocket
  • 各種入力(マウス、キーボード、ゲームパッド等)
  • ゲーム向け支援機能(マウスカーソルロック、フルスクリーン等)
  • etc ...

Mozilla の反応

JavaScript の生みの親であり、Mozilla CTO の ブレンダン・アイク は、ECMAScript 6 で十分であると述べ、NativeClient の必要性を退けている[15]。 Mozilla のバイスプレジデントである Jay Sullivan は NativeClient を指して「これらのネイティブアプリはウェブページのブラックボックスでしかなく、(中略)我々はHTMLを信じており、我々が集中したいと考えるものだ」("These native apps are just little black boxes in a webpage. [...] We really believe in HTML, and this is where we want to focus.")と述べた[16]。

関連項目

  • WebAssembly - これをベースに初期の実装を行ったウェブブラウザ上で実行する低水準の中間言語

参照

  1. ↑ WebAssembly Migration Guide (P)NaCl Deprecation Announcements
  2. ↑ 株式会社インプレス (2023年11月1日). “「Google Chrome 119」が正式公開 ~Android版は「Android 7.0 Nougat」対応を終了/セキュリティ関連の修正は全15件”. 窓の杜. 2023年11月9日閲覧。
  3. 1 2 Native Client: A Technology for Running Native Code on the Web
  4. ↑ How to Test-Run Web Applications
  5. ↑ Chrome 31 Beta: Android Application Shortcuts, requestAutocomplete(), and PNaCl
  6. ↑ “Google's Native Client goes ARM and beyond”. The H (2010年3月18日). 2010年5月19日閲覧。
  7. ↑ PNaCl: Portable Native Client Executables
  8. ↑ NativeClient: Plash Wiki
  9. 1 2 3 Native Client Technical Overview
  10. ↑ Official NaCl Release Notes
  11. ↑ Stability of the PNaCl bitcode ABI
  12. ↑ Google Native Client on Google Code
  13. ↑ David Sehr, Robert Muth, Cliff L. Biffle, Victor Khimenko, Egor Pasko, Bennet Yee, Karl Schimpf, Brad Chen (2010年). “Adapting Software Fault Isolation to Contemporary CPU Architectures”. 19th USENIX Security Symposium. 2011年7月31日閲覧。
  14. 1 2 Bennet Yee, David Sehr, Greg Dardyk, Brad Chen, Robert Muth, Tavis Ormandy, Shiki Okasaka, Neha Narula, Nicholas Fullagar (2009年). “Native Client: A Sandbox for Portable, Untrusted x86 Native Code”. IEEE Symposium on Security and Privacy (Oakland'09). 2011年7月31日閲覧。
  15. ↑ JavaScript founder dismisses Google Native Client, pushes ECMAScript 6
  16. ↑ Mozilla: Our browser will not run native code

外部リンク

  • 公式ウェブサイト
  • GDC2012のスライド資料 (PDF)
Google
Alphabet・歴史・サービス
企業
イベント・取り組み
  • Android
    • Developer Challenge
    • Developer Day
    • Developer Lab
  • Doodle4Google
  • Code-in
  • Code Jam
  • Developer Day
  • Developers Live
  • I/O
  • Lunar X Prize*
  • Science Fair
  • Summer of Code
  • Talks at Google
  • 取り組み・プロジェクト
    • ATAP
    • ドラゴンフライ*
    • Made with Code
    • Project Sunroof
    • Cultural Institute
    • 「邪悪になるな」
    • OKR
人物
  • デビッド・チェリトン
  • アル・ゴア
  • アラン・ユースタス
  • アラン・ムラーリー
  • アミット・シングハル
  • アン・メイザー
  • デビッド・ドラモンド
  • エリック・シュミット
  • ジェフ・ディーン
  • ジョン・ドーア
  • ジョン・ハンケ
  • ジョン・ヘネシー
  • クリシュナ・バハラット
  • マット・カッツ
  • パトリック・ピシェット
  • ポール・オッテリーニ
  • オミッド・コーデスタニ
  • レイチェル・ウェッツトン
  • ラム・シュリラム
  • レイ・カーツワイル
  • サラー・カマンガー
  • サンジェイ・ゲマワット
  • シャーリー・ティルマン
  • スーザン・ウォジスキ
  • ウルス・ヘルツル
  • ヴィントン・サーフ
  • ハル・ヴァリアン
  • ニール・モーハン
役員
  • スンダー・ピチャイ (CEO)
  • アナト・アシュケナージ (CFO)
  • ルース・ポラット (CIO)
創業者
  • ラリー・ペイジ
  • セルゲイ・ブリン
部門
  • Android
  • Glass
  • Google Ads (広告)
  • Google AI
  • Google Chrome
  • Google Cloud
  • Google Health
  • Google Maps (マップ)
  • Google Nest
  • Google Pixel
  • Google Search (検索)
  • YouTube
不動産
  • 111 Eighth Avenue
  • チェルシーマーケット
  • Googleplex
  • Data Centers
開発
オペレーティングシステム
  • Android
    • Automotive
    • TV
    • Wear
  • ChromeOS
  • Chromium OS
  • Fuchsia
  • Glass OS
ライブラリ・
フレームワーク
  • AMP
  • Angular
    • Angular
    • AngularJS
  • ARCore
  • APIs
  • Charts
  • Dialogflow
  • FLoC
  • Flutter
  • Guava
  • Guice
  • Polymer
    • Web Components
  • Tango*
  • TensorFlow
ツール
  • Android Studio
  • App Inventor
  • App Maker
  • Closure Tools
  • Developers
  • Gadgets API
  • GData
  • Lighthouse
  • Native Client*
  • OpenRefine
  • PageSpeed Insights
  • reCAPTCHA
  • Search Console
  • Swiffy*
  • Web Toolkit
  • AI Studio
探索アルゴリズム
  • ページランク
  • Hummingbird
  • Panda
  • Penguin
  • Pigeon
  • RankBrain
ファイルフォーマット
  • APK
  • KML
  • VP9
    • AV1
  • WebM
  • WebP
その他
  • Chrome Experiments
  • Cloud
    • App Engine
    • BigTable
    • Cloud Spanner
  • Data Transfer Project
  • DeepMind
  • Fiber
  • Gears*
  • GFS
  • Health
  • Labs*
  • マテリアルデザイン
  • MapReduce
  • OpenSocial
  • Public DNS
  • Web Server
  • Google Coral
  • プログラミング言語
    • Dart
    • Go
    • Sawzall*
サービス
娯楽
  • Chromecast
  • Play
    • ブックス
    • ゲーム
    • ムービー
    • ミュージック*
    • ニューススタンド*
    • ポケパーク カントー※
  • ポッドキャスト*
  • サンタを追いかけよう
  • Stadia*
  • Google TV
  • VEVO
  • YouTube
    • Gaming*
    • Kids
    • Music
  • YouTubeシアター
伝達・交流
  • Chat
  • Contacts
  • Duo*
  • Gmail
  • グループ
  • ハングアウト
    • トーク*
  • IME
    • 日本語入力
    • ピンイン入力
  • Inbox*
  • Meet
  • メッセージ
  • Orkut*
  • Spaces*
  • 翻訳
  • ボイス
  • Google+*
言語モデル
  • Gemini
  • Gemma
  • PaLM
  • LaMDA
  • BERT
検索
  • Google 検索
    • ナレッジグラフ
    • パーソナライズド検索
    • セーフサーチ
    • 音声検索 (Google)
  • 画像検索
  • レンズ
  • アラート
  • ブログ検索*
  • ブックス
  • Flights*
  • Travel
  • Finance
  • ショッピング
    • Ngram Viewer
  • データセット検索
  • Dictionary
  • Googlebot
  • マップ
    • ストリートビュー
    • マップメーカー*
    • ビルディング メーカー*
  • ニュース
    • News Archive Search*
  • Patents
  • Google Public Data Explorer
  • Scholar
  • ソースコード検索*
  • デスクトップ*
  • Find Hub
  • トレンド
    • Insights for Search*
  • ビデオ
  • GOOG-411*
  • 谷歌 (中国版Google)
  • Gemini
組織・管理
  • カレンダー
  • フォト
  • ドライブ
  • ドキュメント エディタ
  • ドキュメント
  • スプレッドシート
  • スライド
  • フォーム
  • 図形描画
  • Keep
  • ノートブック*
  • NotebookLM
  • One
  • Tasks
  • Files by Google
  • Workspace
ビジネス・金融
  • 広告
  • Ad Manager
  • AdSense
  • マーケティング プラットフォーム
    • Analytics
  • Pay
    • ウォレット*
    • Checkout*
  • Primer*
その他
  • Arts & Culture
  • アシスタント
  • Chrome
  • Chromium
  • Classroom
  • クラウド プリント*
  • クラウドソース
  • Doodle
  • Earth
  • Express*
  • Fi
  • Fit
  • Gboard
  • Google.org
  • iGoogle*
  • Now
  • パック*
  • リーダー*
  • Safe Browsing
  • SketchUp
  • Station*
  • TalkBack
  • URL Shortener*
  • VirusTotal
  • 画像・写真
    • カメラ
    • Snapseed
    • フォト
    • Goggles*
    • Panoramio*
    • Picasa*
  • 出版
    • Blogger
    • Domains*
    • FeedBurner
    • サイト
    • Quickoffice*
  • フォント
    • Noto
    • 源ノ角ゴシック
  • JotSpot*
  • Knol*
ハードウェア
Google Pixel
スマートフォン
  • Pixel / Pixel XL*
  • Pixel 2 / 2 XL*
  • Pixel 3 / 3 XL*
  • Pixel 3a / 3a XL*
  • Pixel 4 / 4 XL / 4a*
  • Pixel 5*
  • Pixel 5a*
  • Pixel 6 / 6 Pro
  • Pixel 6a
  • Pixel 7 / 7 Pro
  • Pixel 7a
  • Pixel Fold
  • Pixel 8 / 8 Pro
  • Pixel 8a
  • Pixel 9 / 9 Pro / 9 Pro XL
  • Pixel 9 Pro Fold
  • Pixel 9a
  • Pixel10 / 10 Pro / 10 Pro XL
  • Pixel 10 Pro Fold
  • Pixel 10a
タブレット
  • Pixel C
  • Pixel Tablet
ノートパソコン
  • Chromebook Pixel (2013)
  • Chromebook Pixel (2015)
スマートウォッチ
  • Pixel Watch
  • Pixel Watch 2
  • Pixel Watch 3
  • Pixel Watch 4
アクセサリ
  • Pixel Buds
Nexus
スマートフォン
  • Nexus One
  • Nexus S
  • Galaxy Nexus/SC-04D
  • Nexus 4
  • Nexus 5/EM01L
  • Nexus 6
  • Nexus 5X
  • Nexus 6P
タブレット
  • Nexus 7 (2012)
  • Nexus 7 (2013)
  • Nexus 10
  • Nexus 9
その他
  • Nexus Q
  • Nexus Player
Google Play Edition
  • Samsung Galaxy S4
  • HTC One M7
  • Sony Z Ultra
  • Motorola Moto G
  • HTC One M8
  • LG G Pad 8.3
Android One
  • Micromax Canvas A1
  • Karbonn Sparkle V
  • Spice Dream UNO
  • Android One 507SH
  • Android One S1
  • Android One S2
  • Android One X1
  • Android One X2
  • Android One S3
  • Android One X3
  • Android One S4
  • Android One X4
  • Android One X5
  • Android One S5
  • Android One S6
  • Android One S7
その他
  • Chromebook
  • Chromebox
  • Chromebit
  • Chromebase
  • Chromecast
  • ウェアラブル
    • Cardboard
    • Daydream
    • Glass
    • コンタクトレンズ*
  • Google Nest
    • Nest Wifi
    • スマートスピーカー
  • Jamboard
X
  • Project Glass
  • Google Self-Driving Car
  • Project Wing
  • Project Loon
  • Google Contact Lens
  • マカニパワー
  • *: 開発・サポートを終了した製品およびサービス
  • ※: オフィシャルスポンサーとして参画している施設
  • カテゴリ カテゴリ
  • コモンズ コモンズ
Webインタフェース
サーバサイド
通信プロトコル
  • HTTP
    • v2
    • v3
    • 暗号化
    • WebDAV
  • CGI
  • FCGI
  • WebSocket
API
  • C ASAPI
  • C ISAPI
  • Java Servlet
  • Python WSGI
  • Perl PSGI
トピックス
  • Webサービス
  • アプリケーションサーバ
  • リソース (WWW)
  • サーバサイドスクリプト
  • Webhook
クライアントサイド
Browser APIs
  • ActiveX
  • Browser Helper Object
  • Google Native Client
  • WebAssembly
Web API
W3C
  • Canvas
  • IndexedDB
  • SVG
  • WebGPU
  • WebRTC
  • WebSocket
  • WebVTT
  • ウェブストレージ
  • Web Worker
  • XMLHttpRequest
  • オーディオ
  • ビデオ
クロノス
  • WebCL
  • WebGL
その他
  • Gears
トピックス
  • Ajax
  • DHTML
  • Mashup
関連項目
  • ウェブページ
    • 静的
    • 動的
  • ウェブアプリケーション
    • RIA
    • SPA
    • PWA
  • ウェブユーザインタフェース
「https://ja.wikipedia.org/w/index.php?title=Google_Native_Client&oldid=108585035」から取得
カテゴリ:
  • オープンソースソフトウェア
  • ソフトウェア開発ツール
  • Google Chrome
  • C++
  • ウェブ技術
隠しカテゴリ:
  • ウィキペディアとウィキデータで異なる公式ウェブサイト
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.