Goと大規模分散システムの相性

3年弱前 | 2 points

Googleで分散システムの開発をてがけ、現在はソーシャルメディア mttr.toを立上げ中のBen Sigelmanが、Goを分散システムの開発に利用する場合の、メリットおよびチャレンジについて講演しています。

分散システムのあるべき姿

  • 分散システムの勘所は、最上位ビットをパフォーマンス的にも構造的にもうまく扱うことができるかというのがポイント。その効果が一番大きい。スループットの改善のような詳細は、自分もGoogleでそれに取組んだけれども、9ヶ月くらいたつとハードウェアの性能で解決される可能性が高い。また、構造的にというのは、なるべく小さなコンポーネントを組み合わせたシステムにできるかという意味。
  • Goのよいところは、
    • 両方、とくに後者によい。Railsだとアプリを複数個用意して並列処理するのは大変だったけど、Goだとシンプルにできて、標準ライブラリも読みやすいとかなどなど。...

モバイルとソフトウェアが世の中を変える様を数字で実感する

3年弱前 | 1 point

ワザノバでは市場環境的な話はほとんど取り上げたことはありませんが、モバイル市場を語らせるとA16ZのBenedict Evansが一番だと思うので、今回はお薦めさせてください。エンジニアの方にとっても、そうでない方にとっても、これからの世の中がどうなっていくのかを考える基礎を与えてくれます。

下記のポイント以外にも示唆に富む話が満載なので是非、BloombergBusinessweekのこの18分57秒の短いビデオを見てみてください。

  • メインフレームをはじめ、これまでのテクノロジーは特定の顧客向けに売る商品であったが、モバイルは史上初めて全ての人を対象にすることができる。
  • 2020年には、インターネットにアクセスする人 = スマホユーザになり、その数は40億人になる。
  • 新しいiPhoneのCPUには1995年のPentiumと比較して625倍以上のトランジスタ。...

UIは画面サイズと解像度だけで解決できなくなる

3年弱前 | 1 point

WordCamp San Francisco 2014におけるLuke Wronblewskiの講演です。UIデザインで考慮すべきは、画面サイズと解像度だけでなく、視聴距離、ポスチャー(詳細後述)、周囲の明るさという要素も必要になってくるという話。

  • スマホ端末を両手もしくは片手で持つ場合を合わせて、75%のユーザは親指を使って操作している。
  • タブレットのランドスケープモードとポートレートモードの利用比率は、6:4とか7:3とか言われるが、要は両方に対応する必要があるということ。
  • タブレットとキーボード付きのタッチ画面対応ラップトップを全てプログラム的に判別はできない。よって、画面のサイズが一定サイズ以上になると、マウス/キーボード向けの操作ヒントを画面に適宜表示するという工夫が必要になってくるかも。
  • 解像度だけで判断もできない。同じ1920x1080であっても、ユーザが利用しているのは、...

生まれ変わるAngularJS

3年弱前 | 1 point

シングルページアプリ向けの各フレームワークをGoogle Trendで比較したグラフLars Eidnesのブログに掲載されてますが、AngularJSの伸びが他を圧倒しています。一方で、アーキテクチャ上の課題は、コミュニティの声もあり、かつ当事者である開発チームも認識していたところ。そして、それに対する答えとしては、バージョン2.0で大幅に書き直すという流れになっています。

AngularJS 2.0については、「野心的だが険しい道のり」というタイトルの記事がGuardianに掲載されてますが、

  • ES6の採用
  • Web Componentsとの親和性のアップ
  • (双方向バインディングをどうするかまだ決まってないが)Reactの考え方に近づいてきている
  • (1.3のサポートはしばらく平行して続くと発表されたが)本当にスムーズな移行を提供できるのか?

がポイントだとSeb Ceveyはまとめています。...

メールクライアントごとの仕様の違いを考慮する

3年弱前 | 1 point

メールの復権」を書いてから4ヶ月ほどたちましたが、その後、自分がかつてユーザ登録したweb/アプリサービスがメールのニュースレター配信を次々とはじめていて、それが日々自分のinboxで実感できます。米国だけの傾向なのかどうかよくわかりませんが、ユーザと接点を持つ手段としてメールを見直す傾向は右肩上がりのようですね。

こうなってくると、メールクライアントごとの仕様の違いを考慮して、製作 & テストしなくてはいけないということ。そこそこ工数のかかるタスクです。

GiltのLauren Ribandoが紹介しているコツは、

  • デザイナーとしては、リンクを示す青色をサイトに合ったカラーで上書きしたいものだが、GmailとYahooメールは単純に<a>タグで指定するだけではうまくいかない。<a>タグの中に<span>タグをネストさせて、...

Googleのテスト自動化の進化

3年弱前 | 3 points

Google Test Automation Conferenceが今年はSeattleで開催されたようです。その中で興味深いと感じた話題をいくつか拾ってみました。

1) 成長を続けるGoogle

会社の規模が大きくなり、歴史を重ねてくると、何事も非効率になりがちですが、Ankit Mehtaが紹介してくれた数字によると、Googleの開発ペースは依然として右肩あがりのようです。

  • コードのコミットは、1日3万チェックイン。約3秒に1回。グラフを目測した限りでは昨年から約20%増。
  • リリース数もこの1年でほぼ倍増。

2) テストクローラーを利用してのモバイル実機テストの自動化

Googleが7月に買収したAppurifyのFounderであるJay Srinivasanによる、同サービスの紹介。

  • アプリの開発者はテストスクリプトを書く必要がなく、Appurifyが保有する数百モデル数千台の実機の上で...

iOSアプリ開発にチームで取組むチャレンジ

3年弱前 | 1 point

Michele Titoloについて取り上げるのは、

に続いて三回目ですが、今回はiOSアプリづくりにおけるチーム内の連携がテーマ。

彼女は現在、redditのiOSチームのリーダーをしながら、Objective-Cプロジェクトの依存関係の管理をしてくれるCocoaPodsの開発と、非営利団体 Women Who CodeのCEOを兼務しています。

redditはwebで大量のトラフィックとユーザを抱えてますが、スマホのアプリに注力しはじめ、切り口を変えた複数のreddit閲覧アプリづくりにチームで取組んでいます。最近では、Ask Me Anythingのアプリをローンチしたり、Alien Blueを買収したりと話題です。

コードの共有

  • 複数のアプリをチームでつくるには、...

Pinterestをスケールさせる中で学んだこと

3年弱前 | 1 point

PinterestのMarty Weinerによる goto; conference 2014の講演。

  • 「webサイトどうやってつくるの?」という創業期から、現在に至るまで、段階的にテクノロジースタックがどう進化したか。
  • 現在のPinterestのシステムアーキテクチャの全貌。
  • 個別のテクノロジーの選択理由。

などを語った45分のビデオですが、goto; conferenceのサイトからスライドのPDFをダウンロード(初日の10:20のコマです。)できるので、そちらを見ていただいてもわかりやすいかと。

「サイトが落ちてしまうのである意味自然に学ぶことができてしまった。」とのことですが、「これを聞いてくれてる皆さんが自分たちと同じ失敗をしないために。」というのが、Martyが伝えたいポイントです。

テクノロジーを選択するときに自問すべきことは、

  • 自分たちのニーズを満たすのか。
  • ...

npmとクライアント側でのパッケージ管理の議論

3年弱前 | 1 point

npmに登録されているパッケージ数は10万、月間ダウンロード数も5億を超えました。7月の段階で月間3億程度ですから、こちらのグラフで見てもわかるように、かなり成長が加速してきていますね。

EdgeConf4において、パッケージ管理をテーマにしたディスカッションに、npmのCTOであるLaurie Vossと、npmのpeer dependencyをつくったGoogle Chrome TeamのDomenic Denicola(ES6のPromiseの取組みでも知られた人ですね。)が参加しています。この二人と、BowerのJosh Peekを中心に議論が進んでいます。ちなみにJoshはGitHubの社員で、最近では、左右に並べてdiffを比較できる便利な機能をつくった人でもあります。

「サーバサイドのパッケージマネジャとしては、CPANやRubygem、...

CSSパフォーマンスツールを使いこなす

3年弱前 | 1 point

CSSconf EU 2014におけるGoogleのAddy Osmaniの講演です。CSSのパフォーマンス向上に役立つツールを40個+ 紹介してくれてます。

背景

パフォーマンスの最適化において、

  • ベースラインとしてやること
    • 最小化(minification)
    • 結合(concatenation)
    • 画像の最適化
    • 圧縮(GZip, Zopfli)
    • 非同期スクリプト
    • キャッシュの利用
    • WOFF2フォント
    • CSSスプライトを使う
    • リダイレクトをしないこと
  • スピードアップ
    • パフォーマンス向上に重要なCSSのインライン化
    • レンダリングをブロックしないように、急ぎでないアセットの取得を遅らせる
    • 使ってないCSSの削除
    • 修正の都度、ビジュアルの劣化テストを実施
    • パフォーマンスのベンチマーク測定
  • できればなお良いこと
    • 色、セレクタ、フォント種類/サイズを削減すること

最近のユーザの期待値は、ページの表示速度が0-100msであれば早い、...

APIの後方互換性を保つ工夫

3年弱前 | 2 points

Stripeの決済サービスの成長は、APIが使いやすいというエンジニアの間での評判がかなり寄与したと記憶しています。

同社のAPIは現在、

  • エンドポイント: 106
  • バージョン: 65
  • APIクライアント: 6

ユーザ企業を煩わせることなく後方互換性をしっかり担保したいという方針を守るための工夫を、Amber Fengが紹介してくれています。

1) ユーザが利用するバージョン情報の把握

ユーザ企業が最初にAPIコールをしたときのバージョン情報をStripe側で記録している。ユーザ企業はバージョンのことを意識することなく、それ以降は、最初のバージョンのAPIを継続して利用し続けるかたちになる。もしユーザ企業側でバージョンの変更をしたい場合は、ダッシュボードでの設定や、リクエストヘッダーに情報を付加することで可能。

2) バージョンと機能の整合性

...

Reactを実際に使ってみた話が増えてきた

3年弱前 | 2 comments | 2 points

コンポーネントベースのviewレイヤのライブラリであるReactを、実際に使ってみた感想についての発信が増えてきているので、まとめてみました。(4)はFluxの話も入ってます。)

1) Reactとは?

E4E Developer Conf 2014の講演でFacebookのBen Andersonは、Reactを採用しているサービスを挙げています。

Facebook / Instagram / GitHub (Atom) / Khan Academy (with Backbone.js) / Mozilla Firefox (for Paneis) / NY Times / Reddit (store)

また、その仕様の背景については、

既存のフロントエンドのソリューションは、複雑な双方向データバインディングになりがちなのに対して、...