タグ別アーカイブ: JavaScript

GoogleのエンジニアがUSBデバイスとウェブを直接接続できるAPIを作成 – GIGAZINE

WebUSB APIは、USBフラッシュドライブだけでなくキーボードやマウス、3Dプリンター、IoT製品などUSBでPCに接続する全てのデバイスを対象としており、USBデバイスを専用のプラットフォームなしで安全にウェブに接続できるというものです。提出されたドラフトによれば、デバイスを製造するメーカーは、WebUSB APIによってクロスプラットフォームのJavaScript SDKをデバイスに構築することができるとのこと。ブラウザは新しいUSBデバイスが特別なAPIを必要とするくらい人気を得るのを待つ必要がなくなり、メーカーだけでなくウェブにとっても利益があります。

By Juan Pablo Olmo

IT系ニュースサイトのNeowinによれば、WebUSB APIを使うとUSBデバイスを使用する際にインターネットから必要なドライバやソフトウェアを自動でインストールしてくれるようになり、わざわざデバイスの製品ページを探してドライバやソフトウェアを入手する必要がなくなるためユーザーにとってもメリットがあるとのことです。

また、WebUSB APIはCross-Origin Resource Sharing(CORS)のような保護システムを採用しており、ウェブページが他のドメインからデータを取得するためのリクエストを制限します。簡単に言うと、ウェブページはUSBデバイスを介してPCやUSBデバイスに保存されているデータにアクセスできないということ。このため、WebUSB APIは安全な方法でウェブとUSBデバイスを接続できるわけです。

引用元: GoogleのエンジニアがUSBデバイスとウェブを直接接続できるAPIを作成 – GIGAZINE.

Chrome で高速にページを読み込む新しい技術のご紹介 – Google Developer Japan Blog

コード キャッシングはもうひとつの新たな技術で、特に同じページを何度も表示するときにページが迅速に読み込まれるようになります。通常、ページの JavaScript はページを表示するたびに V8 エンジンによってコンパイルされ、プロセッサが認識できるインストラクションに変換されますが、このコンパイル済みのコードは、コンパイル実行時のマシンの状況やコンテキストによって大きく左右されるため、ユーザーがそのページから移動すると保持されません。Chrome 42 では、このコンパイル済みコードのローカルコピーを保持する拡張技術を採用することで、ユーザーがそのページに戻ってきたときにパースをダウンロードしてコンパイルする手順をすべて省略できるようになります。これによってすべてのページでコンパイル時間の 40% を削減し、モバイル端末において貴重なバッテリーの消費量を減らすことができます。

引用元: Chrome で高速にページを読み込む新しい技術のご紹介 – Google Developer Japan Blog.

Chrome で高速にページを読み込む新しい技術のご紹介 – Google Developer Japan Blog

スクリプト ストリーミングは JavaScript ファイルのパースを最適化します。以前のバージョンの Chrome では、パースを開始する前にスクリプトをすべてダウンロードする単純な手法を使っていましたが、このアプローチではダウンロードが終了するまで CPU を活用できていませんでした。Chrome バージョン 41 からは、async と deferred のスクリプトについて、ダウンロードが開始されると同時に別のスレッドでパースが実行されるようになります。つまり、ダウンロードの完了とほぼ同時にパースも完了することになり、ページの読み込みが 10 % ほど迅速に行われることになります。これは特に大がかりなスクリプトやネットワークが遅い状況において効果的です。

引用元: Chrome で高速にページを読み込む新しい技術のご紹介 – Google Developer Japan Blog.

ネット広告のクリック数のうち88~98%はボットによるものだと判明 – GIGAZINE

アドリアン・ニール氏とサンダー・コーウェンホーヴェン氏の調査した結果、Google・Yahoo!・LinkedIn・Facebookの広告をクリックしていたボットには複数の種類が存在することが判明しています。ボットは大まかに分けると6種類存在したそうで、それらは以下の通り。

◆Basic(基本型)

広告プラットフォーム上にて、広告キャンペーンなどをターゲットに走る「指定されたURL」にのみHTTP GETリクエストを送るボット。

◆Enhanced(改良型)

特定の広告のためのHTTP GETリクエストを広告サーバーから受け、AJAXを使用してウェブブラウザのロードイベントを記録します。これが標準のロードイベントとは異なる場合、HTTP GETリクエストを送っているのはEnhanced型のボットとのこと。

◆Highly Enhanced(高度改良型)

クライアント側のコード実行が既知のコードと一致しない場合は、高度なJavaScriptプロセッサーメトリクスを使用するボット。

◆Advanced(進化型)

人間の基本的な動作を真似るもの。

◆Highly Advanced(高度進化型)

人の動作を真似るボットは、ロードしたページを数秒間表示したままにしたり、マウスやキーボードを使用したり、ページを上下にスクロールしたりします。しかし、ボットが行うような擬似的な無作為性はクラスター分析で検知可能とのこと。

◆Humanoid(ヒト型ボット)

ベジェ曲線やB-スプライン曲線などを使用して高度に人間の行動を真似るボット。

そして7日間の調査結果は以下の通り。各広告ネットワーク上での広告クリックは88~98%がボットによるもので、特にGoogleの広告ネットワーク上では98%がボットによるクリックです。また、Yahoo!やLinkedInの広告ネットワーク上には基本型のボットが存在しない、というのも大きなポイント。

引用元: ネット広告のクリック数のうち88~98%はボットによるものだと判明 – GIGAZINE.

米Google、送受信者以外読めないGmail暗号「End-To-End」プロジェクトを発表 -INTERNET Watch

エンドツーエンド暗号化とは、メール送信者が暗号化してウェブブラウザーで送信した暗号を、メール受信者がウェブブラウザー上で解読するまで誰も読むことができないという意味だ。理論的に暗号鍵保有者以外は誰もメールを読むことができないため、鍵をなくした場合には誰であれ二度と解読できないことになる。

これまでのエンドツーエンド暗号化ソフトには「PGP」や「GnuPG」等が有名だ。しかしこれらのソフトを利用するには高度な技術力が必要で、お世辞にも誰もが利用できるソフトとは言えなかった。「End-To-End」は、オープンな標準規格「OpenPGP」を使った同等の暗号化機能を誰もが利用できるようにすることを目標とする。

公開されたソースコードはまだアルファ版だ。Googleでは、まず公開することにより、十分にテストと評価が行われ、安心して使用できるレベルの安全性が確認されることが重要だと考えている。それでGoogleは「End-To-End」を「Vulnerability Reward Program」に加えた。これはセキュリティ脆弱性発見者に賞金を与えるGoogleのプログラムだ。

「End-To-End」が採用したのは、新たに開発されたJavaScriptによる暗号化ライブラリ、OpenPGP標準規格、IETF RFC 4880。機能としては鍵生成、暗号化、復号化、デジタル署名、署名検証を有する。

暗号化はメール本文のみで、添付ファイルには適用されない。なお、もともとOpenPGPによるメールでは、メールタイトルと受信者リストは暗号化されない。また、現時点で「End-To-End」はChrome拡張機能として実装されているため、拡張機能のないモバイル向けChromeでは利用できない。

文字化け対策は行われているが、まだ完全でないそうだ。特に日本語利用者には改良が必要となりそうだ。

引用元: 米Google、送受信者以外読めないGmail暗号「End-To-End」プロジェクトを発表 -INTERNET Watch.

Web 開発における「新しい原則」 | Atlassian Japan

シングル ページ アプリ (SPA) は新しい概念ではありません。2004 年に Gmail がこの概念を広めましたが、以来あまり導入は進んでいません。一言で言うと、シングル ページ アプリは 1 つのページで完全に動作する Web アプリを指します。従来の Web アプリはページからページへと遷移します。各ページはリモート サーバーで動的に生成されます。通常、ブラウザーに配信される Web ページは比較的静的であり、ページに表示するデータややり取りを処理するプログラム的なロジックはあまりありません。

それに対し、シングル ページ アプリはプログラム的ロジックや計算のほとんどをブラウザーに託します。シングル ページ アプリではサーバーが Web ページを組み立てることは通常ありません。代わりに、Web アプリは基本的にブラウザー上で完全に “実行” されています。ブラウザーとサーバー間の唯一のやり取りは、アプリの実行に必要なデータの交換だけです。これはすべてページの更新や再読み込みなしで発生します。

高速で高品質なブラウザーが出現したことにより、シングル ページ アプリの設計と構築がかつてなく容易に行えるようになりました。過去何年かの間に、Web フレームワークや JavaScript ライブラリがこの新しいパラダイムに対応すべく進化してきました。この点については後でもう一度触れたいと思います。

シングル ページ アプリにより、”リアルタイム” アプリの作成も可能になりました。リアルタイム アプリは生きているアプリであり、ユーザーが操作することなくアプリ自身が更新を行います。ここ数年でブラウザー ベンダーはリアルタイム アプリをサポートする機能の作成に尽力し、リアルタイム アプリの構築を格段に容易にする規格 (Web ソケット) を作成しました。

引用元: Web 開発における「新しい原則」 | Atlassian Japan.

生徒が生み出した、ブラウザで動くJavaScript分散コンピューティング « WIRED.jp

4人が「Smidge」と呼ぶこのソフトウェアは、JavaScriptでつくったアドホックのスーパーコンピューターとも言うべきもので、多数のマシンの処理能力を特定のウェブサイトに振り分けることによって分散処理を実現させるという。

Smidgeは、分散コンピューティングソフトウェアの「BOINC」とも似ている。有志によるコンピューティングプロジェクト「SETI@Home」のために開発されたBOINCは、これまでにタンパク質の「折り畳み」シミュレーションやブラックホールの探索などの目的で利用されてきており、最近ではAndroid端末を利用するBOINCソフトウェアも誕生していた(日本語版記事)。一方、BOINCとSmidgeの決定的な違いは、前者が分散処理のために各端末に専用ソフトウェアをインストールする必要があるのに対し、後者はその必要がなく、分散処理をウェブブラウザを利用して行うことができるという点だ。

「Smidgeでは、ラップトップからiPhone、Androidまで、あらゆる端末を組み合わせた分散処理を行うことができます。実際、私のBlackBerryも処理に組み込むことができたのは驚きでした」(ペティヤゴダ氏)

引用元: 生徒が生み出した、ブラウザで動くJavaScript分散コンピューティング « WIRED.jp.

PayPal社がバックエンドをJavaからJavaScriptへ移行

Javaアプリケーションに対して、1秒間に倍のリクエストがありました。初回のパフォーマンス測定結果は、シングルコアのNode.jsアプリケーションと5コアのJavaアプリケーションとを比較したものだったため、この結果はかなり興味深いものでした。この差はさらに広がるものと私達は予想します。

さらに

同じページのレスポンスにかかる平均時間が、35%減少しました。この結果として、Webページは200ms早く表示されました―ユーザが何かしら確実に気づく程度に。

引用元: PayPal社がバックエンドをJavaからJavaScriptへ移行.

「今日使われているプログラミング言語の多くは、なぜ1990年前後に誕生したものなのか」に関する一考察 – kazuhoのメモ置き場

だから、汎用的な「文字列型」というのは「夢」にすぎなかった。CあるいはPascalにおける文字列(CのASCIIZ文字列あるいはPascalの文字列型)は、簡易な処理を書くため、あるいはOSやライブラリとやり取りをするための取り決めとしての側面が大きかったのである*2。

また、より簡易な処理を行いたい場合には、AWKのような「行ごとにデータを読み込んで処理」するという、それ専用に設計された処理系を使うアプローチが採られていた*3。

ところが、1990年代に入ると半導体技術の進歩により計算機の搭載メモリ量が増加し、「文字列処理におけるメモリ使用量」は最早問題ではなくなってくる。これを象徴するのが、テキストVRAMを前提とするCUIから、文字を画像へメモリ内で展開して描画するGUIへの移行である*4。

同様の影響はプログラミング言語においても現れた。プログラミング言語において汎用的な「文字列型」を導入しても、その言語の応用分野が狭まることはなくなったので、1990年前後に誕生したプログラミング言語である C++, Perl, Python, Java, JavaScript, Ruby は、いずれもその言語仕様の一部として汎用性のある「文字列型」を備えている。

今日、広く使われているプログラミング言語の多くが1990年前後に誕生したものなのは、決して偶然ではない。それら諸言語は、メモリ空間の拡大にともないテキスト処理の手法が変わるというタイミングで産まれた新しい生存空間に早期に進出し、根を広げたプログラミング言語なのである

引用元: 「今日使われているプログラミング言語の多くは、なぜ1990年前後に誕生したものなのか」に関する一考察 – kazuhoのメモ置き場.

Google、JavaScript APIを手軽に試せる「AJAX API Playground」を公開:CodeZine

Googleがオープンソース開発者向けにAPI情報の公開やさまざまなサポートを行っている「Google Code」で、Google AJAX APIのサンプルコードをウェブ上で手軽に試すことができる「AJAX API Playground」が公開されて話題を呼んでいる。

Googleがオープンソース開発者向けにAPI情報の公開やさまざまなサポートを行っている「Google Code」で、Google AJAX APIのサンプルコードをウェブ上で手軽に試すことができる「AJAX API Playground」が公開されて話題を呼んでいる。GoogleのエンジニアであるBen Lisbakken氏が20%タイム(*1)で開発し、1月21日に「Google Code Blog」の「Playing around with Google’s AJAX APIs」というエントリで発表した。

AJAX API Playgroundでは、IDE的にサンプルコードを編集して実行できる。3つのペインから構成されており、左上の「Pick」ツリーから試してみたい APIを選択すると、右上の「Edit」ペインにそのサンプルコードが表示される。その下にある「OutPut」ペインには、実行結果が表示される。「Edit」ペインのサンプルは自由に書き換えることができ、「Run」をクリックすると書き換えたコードが実行される。

引用元: Google、JavaScript APIを手軽に試せる「AJAX API Playground」を公開:CodeZine.