ログ日記

作業ログと日記とメモ

Google Closure Library の UI と調べもの

What UI rendering systems are used by Google with closure library, and why are these not open source?
goog.ui.* は古いまま更新されていない。
最近のGoogleのサービスのUIはオープンソース化されていない。


Touch support for goog.ui.menu?
goog.uiは現在活発に開発されていないので他のライブラリを使った方が良い。


html5history and query parameters
html5history のクエリパラメーターが正しく処理されない。
goog.HTML5History with query params
ちょっとしたコードで簡単に解決はできる。


UI系は自分たちでやってくれってことかな。
ちなみにGoogle Groups はGWTで作られているっぽい。


Google Search、Gmail
・Closure Compiler
・Closure Library
 ・MochiKit
・JsActionっぽいフレームワーク
などが使われているようだ。


例えば Gmail の /scs/mail-static/_/js/k=gmail.main.ja.〜〜〜 のJavaScriptには Closure Library の debug/debug.js にある $googDebugFname という文字列があるし、

function(b,c,d,e,f,g){kq(d)||(d&&(j2a[0]=d.toString()),d=j2a);for(var k=0;k<d.length;k++){var l=Cp(c,d[k],e||b.handleEvent,f||!1,g||b.Lb||b);if(!l)break;b.Ce[l.key]=l}return b};

というコードは goog.events.EventHandler.prototype.listen_ 関数のコンパイル結果に見える。

UI以外は普通にClosure Libraryが使われているようである。


他に Lovefield というのものあった。SQLっぽくデータを操作するライブラリらしい。

Is Lovefield production quality?

Yes. As of May 2016, Inbox by GMail heavily relies on Lovefield to perform complex client-side structural data queries. Google Play Movies & TV has shipped with Lovefield for almost two years.

https://github.com/google/lovefield/blob/master/docs/FAQ.md

LovefieldがClosure Libraryを使っているので、良いサンプルになるかもしれない。
と言っても利用しているライブラリは

goog.require('goog.Promise');
goog.require('goog.array');
goog.require('goog.asserts');
goog.require('goog.iter');
goog.require('goog.labs.userAgent.browser');
goog.require('goog.math');
goog.require('goog.structs.Map');
goog.require('goog.structs.Set');
goog.require('goog.userAgent');
goog.require('goog.userAgent.platform');
goog.require('goog.userAgent.product');

が全てだった。