一歩進んだレスポンシブデザインの取組み

2年以上前

“Junior Designers vs Senior Designers”というエントリーで、経験の少ないデザイーナーとデキるデザイナーの違いが、わかりやすいイラストで簡潔に表現されています。(実際にイラストを見ないとわかりづらいかもしれないので、サイトで確認ください。)

この中で、FacebookのDesign DirectorのJulie Zuoが紹介しているポイントは、

  • 1) プロセス: やみくもに迷走しながら進むのではなく、論理だったメソッドを順次検証することによりゴールに到達する。
  • 2) 目標: 「よく見せる」、つまり、型の決まった箱の中でパーツを整理して並べるのではなく、「価値をつくりあげる」、つまり、パーツをうまく組み合わせて美しい顔を表現する。
  • 3) バリューが発揮されるステージ: 課題を解決するソリューションをデザインするのが最も大変なのではなく、「課題の把握」-「...

ベストなユーザエクスペリエンスを実現するJavaScriptの課題と可能性

3年弱前 | 2 points

Socket.ioのクリエーターとして知られるGuillermo RauchのBrazilJS 2014での講演です。理想のシングルページアプリをつくろうとすると、JavaScriptが損なってしまうケースはあるとしながらも、一方で、多いに可能性を感じさせるトレンドもあるとして、最優先であるユーザエクスペリエンスを向上させるポイントを紹介しています。

1) 課題

  • スクリプトやCSSにブロックされることで、レンダリングの際にブランクページを表示してしまう。
  • Webスクレイピングというコンセプトを壊してしまう。サーバレンダリングしない限りは、フロント側はスムーズにスクレイピングをできるが、その間は誰もページにクエリしてhttpを分析できない。ポーリングしてデータがあるかどうかの確認も必要になり、クライアント側でやると、システムからのデータの抽出がすごく複雑になる。
  • サーバ側でテストがしづらい。
  • ...

分散環境でどうなるかはテストしてみないとわからない

3年弱前 | 2 points

Kyle Kingsburyは、「クラウドにおいてもネットワークパーティションは起こりうるゆえに、DBなどのプロダクトはマニュアルやマーケティング資料で説明している仕様 & パフォーマンスを、分散環境では必ずしもだせない。」というテーマでの検証結果を公表しているブログのシリーズと、ストレス下での計測ツールJepsenで知られています。ここ1年半ほどで、

  • PostgreSQL / Redis / MongoDB / Riak / Zookeeper / NuoDB / Kafka / Cassandra / Redis / RabbitMQ / etcd / Consul / Elasticsearch

などが紹介されているので、ご興味あれば確認ください。これはKyleのプライベートの時間でのプロジェクトなのですが、話題になったので今ではComcastがスポンサーになってるようです...

バーチャルリアリティとモバイル端末

3年弱前 | 1 point

パーフェクトなバーチャルリアリティの実現にあと何が必要かについては、今年のはじめに「Michael Abrash (Valve - Oculus VR)の語るバーチャルリアリティ」で紹介しましたが、Oculus Connect 2104のキーノートスピーチでJohn Carmackがアップデートしてくれてます。

Oculus VR自体も新しい開発者向けキット DK2を発表してますが、Samsungと協業したGear VRは、GALAXY Note4を組み込むかたち、つまりワイヤレスなので、広義ではもうモバイル端末ですね。そうなってくると、個人的にはゲーム以外にもどうコンテンツが広がるのかなというのが楽しみですが、まだモバイル端末におけるバーチャルリアリティには課題が残っているようです。

John Carmackファンは多いですが、今回もPRトークなし &...

努力とセンスの関係と優秀なプログラマー

3年弱前 | 1 point

スポーツにしろ、勉強にしろ、仕事にしろ、何をやるにもその特定の分野でトップ1%人は尊敬するほどすごいのですが、本人が長く続けつつ努力をしてきたことが垣間見えるので、なぜ優秀なのかというのが理解できる範囲。ただし、そのさらにトップ10%、いわゆる世の中でその分野のトップ0.1%の人というのは、すごすぎて、どうしてそうなれるのかが分からないと実感することがあります。議論している時に、数歩先の真理を理路整然と突然読み取って指摘されるような、驚くようなセンスを見せつけられる経験を数度したことがあります。

けどそれをセンスとか才能という言葉で片付けずに、経験値の差によるパターン認識力の違いと考えれば、そしておそらくほとんどのケースはそうだと思うので、継続的に努力をすることの尊さを再認識して、また頑張ろうという気になります。センスがものをいう分野はあれど、常に努力で向上する余地はあるかと。

「...

「失敗を活かす」を実現する仕組みづくり

3年弱前 | 2 points

ミスを許さない組織って嫌ですよね。月曜日の朝に会社に行くのがとにかく苦痛だった時期があります。しつけ的な規律をもたらすという一定の効果はあったかもしれませんが、ミスをしないように、しかられないようにするために仕事の進め方が最適化されていって、顧客がどう思うかよりは、上司の顔を伺うところに皆が全力を注ぎはじめます。

そんな会社は反面教師に。また最近は、blameless postmortem(個人批判をしない建設的な障害の振返りミーティング)というのも流行言葉。「そうだそうだ、もっと前向きであるべきだ。」と思いつつ、しかし難しいのは、ユーザに悪影響を与えるものを減らそうとする気持ち。その気持ちを持つことが正論、かつ当然最も重要であるがゆえに、障害の振返りの議論はどうしても「再発防止」に終始してしまいがち。

blamless...

Twitterのキャッシュを支えるRedis

3年弱前 | 2 points

TwitterのYao Yuが、大規模サービスのキャッシュにおいてRedisを活用する取組みについて紹介しています。

1) Redisを採用している理由

  • キャッシュだけで、ストレージとしては利用していない。
  • 主なところでは、Twitterのタイムラインで利用している。ホーム画面であれ、ユーザ画面であれ、タイムラインはTweetのインデックスなので、key/valueストア型のRedisを利用するケースとして最適。
  • 以前はmemcachedを使っていたが、問題になったのは、タイムラインでおきるread/writeは、(ユーザが閲覧している範囲に追加反映するということなので)比較的小さいが、オブジェクト自体、つまりタイムライン全体はユーザによっては、数百件、数千件となり、規模が大きいということ。この大きなサイズだとデータベースを直接見に行きたくはない(ので、キャッシュから取得しようとするが)。...

Facebook: グローバル市場を見据えたAndroidのパフォーマンス改善

3年弱前 | 1 point

FacebookチームのAndroidアプリは、背景にグローバル市場でのAndroid利用者数の急増、それに伴う新興国ユーザの増加(当然そこのユーザをもっとFacebookに囲い込みたいという思惑あり。)という事情を反映して、端末バラエティ / ネットワーク接続環境のフラグメンテーションにしっかり対応して、パフォーマンス改善を重視していこうという方向性にあるようです。

1) 新興市場の理解 by Chris Marra

  • FacebookにアクセスするAndroidデバイスは、10,000モデル。
  • 世界中の新興国を訪問して市場調査した結果、ローエンド端末 / 中古端末 / プリペイド課金 / 利用時間単位での課金 / モバイルインフラの脆弱さなどの事情を認識。
  • Android Year Class: どの時期にどの端末が人気だったかという基準で年度別の主要端末をピックアップし、(...

Facebook: BuckでAndroidビルドをスピードアップ

3年弱前 | 1 point

FacebookのDavid Reissが、オープンソースで提供しているAndroid & JavaビルドツールBuckを紹介しています。

1) 他の選択肢との比較

  • Googleが提供するビルドシステムANTは、遅いのとモジュールのサポートが弱いのがネック。
  • ベター版となったGRADLEは、ANTよりは早いが、モジュールのサポートという意味ではまだ不十分。また、Buckの開発に着手した当時はまだAndroid対応してなかった。
  • Mavenは、とにかく遅い。

2) Buckの性能アップ

  • Facebook Androidアプリは 65万+行あるが、Buckでの処理において、ここ1年でスピード10倍改善。
  • 細かいモジュールにも対応できるので、コンパイルの並列処理に活かせる。
  • Javaコードのモジュールのインターフェースを変更したか、実装を変更したか検知して、実装のみなら再コンパイルしない。
  • ...

Uberの急成長とそれを支える技術

3年弱前

Uberの技術については以前から興味ありましたが、残念ながらその点についてはあまり発信がない会社。今回、@Scale 2014に、CTOのThuan Pham(元VMWare / Westbridge / Doubleclick)とSenior Engineering ManagerのPaul Holden(元Apple)が登壇していたので、その他の情報も調べてまとめてみました。

1) 急成長

急成長という意味では、かつてはGrouponがありましたが、サイトのローカル言語/課金対応さえすれば、後は営業 + サイト運営の体制づくりというオペーレーション中心なので、ある意味短期間にグローバル展開しやすいビジネスモデルだったと思います。一方、Uberはサービスのローカライズがもう少し複雑 & ものすごい勢いで新機能を追加しながら、なおかつ急速なグローバル展開をしています。

  • ...

Pants: 大規模コードベースを単一のレポジトリで管理するビルドシステム

3年弱前

Pantsは、Foursquare / Twitter / Squareなどで利用されているオープンソースのビルドシステム。大きくなったコードベースを、一つのレポジトリでまとめて効率よく、依存関係も考慮のうえビルドできることを目指したプロジェクトです。

紹介ビデオ

  • 現状は、Java /Scala / Pythonをサポート。他言語の追加も問題なし。
  • Googleのビルドシステムを参考にしている。
  • 変更された部分だけをコンパイルするインクリメンタルビルド
  • コード生成をサポート: thrift、プロトコルバッファー
  • 外部のJVM / Pythonの依存関係に対応。
  • デプロイ可能なパッケージを作成。
  • ローカル/分散キャッシュをサポート
  • 特にScalaのビルドに関しては、他のツールより早い。
  • スタンドアロンのPythonのexecutable(PEXファイル)を作成。
  • Linux & Mac OS X
  • ...

Facebook: iOSアプリのアーキテクチャ

3年弱前 | 1 point

FacebookのiOSチーム、Adam ErnstとAri Grantによる@Sacle 2014での講演。データモデルとビューレイヤの改善の取組みについて紹介してくれてます。

1) データモデル

背景

  • 2年前からHTML5からネイティブに切り替えて一旦大きく改善したが、その後機能を追加するたびにアプリのパフォーマンスが悪化。
  • ネイティブに移行後、オブジェクトのキャッシュレイヤとしてiOSのCore Dataを使ったのが失敗であった。
  • Core Dataの役割は「整合性を含むオブジェクトグラフ管理」
  • Facebook iOSアプリの場合、サーバ側を正のデータとするが、デバイス側で、すぐにコンテンツを表示できるように、またコンテンツの整合性(例えば、Timelineに表示される特定のコンテンツのLike数は、同じコンテンツがNews Feedに表示された際のLike数と一致させる。)...