相手の立場にたつ意識と無意識

2年以上前 | 1 point

CSS-Tricksのエントリー。Chris Coyierが、「相手を思いやること、相手の立場にたって考えることが一番大切なスキルの一つ。」と語っています。

相手の立場にたつと、自分がつくったプロダクトをユーザがどのように使うのか理解でき、そのおかげでUXスキルを磨くことができる。サポートメールを書くときも文面を工夫できるようになる。ミーティングも意味のあるものにできる。コミュニケーションを受け取る相手がどう感じるかを考えれば、明確に相手に伝えることができるようになる。

それを実践するために、

相手への感謝を忘れないこと。相手にとって、自分が嫌なヤツになりかけたとしても、自分でそれを阻止することはできる。怒りは怒りを引き起こし。やさしい気持ちはやさしい気持ちを生み出す。

キツイ表現でなく、正直にフィードバックすることも大切。Web開発において、バグを伝えないことは思いやりではない。...

アニメーション: CSS vs JavaScriptの議論

2年以上前 | 1 point

GreenSockが、「アニメーションのパフォーマンスは、CSSが常に優れているというわけでない。」という観点からベンチマーク調査した結果を公表。それに対して、GoogleのPaul Irishが反論。詳細やりとりはサイトを確認していただければと思いますが、ポイントはコメント欄で交わされている結論かと。

Paul Irish

独立したtransformコントロールを必要とする場合、CSSのみのアプローチではelementのカウントが膨れ上がるので、JavaScriptの方が相当よい結果を残す。それ以外のケースでは、理想的な実装がされているという前提に立てば、両者のパフォーマンスは同程度である。

究極的には、CSSとGSAPのパフォーマンスは基本的に同じで、オーサリングや異なるtransformプロパティをうまく操作できる点ではGSAPが優れている。...

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

2年以上前

Facebook: iOSアプリのアーキテクチャ」でご紹介した、Reactの仕組みをiOSアプリのニュースフィードに応用した取組みについて、同社のAri Grantが今回は、実際にFacebookのiOSアプリで使われているコードを使って紹介してくれてます。InfoQのサイトでビデオを是非ご確認ください。

iOSのUIづくりの複雑さに、表示内容が常に変化するニュースフィードの仕様が拍車をかけて、

  • 60 fpsを実現したい。=> レンダリングにフレームあたり17msしかとれない。
  • テキストレイアウトは時間がかかる。=> バックグランドスレッドを使おう。
  • 多くのviewを用意するには時間がかかる。 => viewの再利用をしよう。
  • 各フィードで表示するデータの種類が多い => 行ごとにviewタイプを用意する方式ではムリ。
  • ...

Java: 本番環境でのデバッグスキルを磨く

2年以上前 | 2 points

Takipi のFounderであるTalWeissのSan Francisco Java User Groupミートアップでの講演。本番環境で役に立つデバッグテクニックの紹介です。

1. スレッド名の活用

  • スレッド名はmutable(EJB除く)である。コードのコンテキストにあわせて、Thread.currentThread().setName(Context, TID, Params, Time,...);のようにすれば、トランザクションID、Serveletパラメータ、キューメッセージID、起動時間など、スタックトレースに役に立つ情報を表示できるようになる。
  • JConsole / Java Mission Control / プロファイラ / 有料サービスなどどのツールを利用していても、活用できる手法。
  • 更に上級バージョンとしては、スレッドのローカル変数を現在のスレッドに読み込み、...

キャリアの点と線

2年以上前 | 2 points

「面接での一つだけの質問」と題したBob Baxleyのブログエントリー :

「この仕事に就くと決めて、うちに入社したと思ってください。... 一つだけ確実なのは(短い期間であろうが、遠い将来であろうが)、貴方はいつか退職するということ。.... 退職してからこの会社のことを振り返って、あなたが経験したことや達成したことを3〜5個の箇条書きでまとめてLinkedInに掲載するとします。その時貴方は何と書きますか?」

数分しか時間がないと仮定した面接の際に何を相手に聞くのかという文脈の話なのですが、自分なら即答できないかもしれないなと思いました。答えられない質問という訳ではなく、本当によい質問なので、条件反射的に返すのではなく、じっくり考えて答えたい。もしくは事前に考えて書いたものを渡したいという意味です。

面接を受ける人が自身のキャリアに期待するところと、...

開発現場における並行処理の留意点

2年以上前 | 1 point

Squareが主催した並行処理システムに関するパネルディスカッション。

まずは、並行処理理論で博士号を取得し、Sqaureで分析システムを担当するGian Perroneがハイレベルでの留意点を挙げています。

  • システム全体で起きていることを自分の頭で完璧に把握しようという姿勢は、正確な並行処理システムをつくる妨げになる。テクノロジーやツールをうまく利用すべき。
  • 並行処理システムを漏れなくテストするというのは相当難しい。
  • 自分で考えて、注意深く対処するというのでは不十分。うまく抽象化に頼るべき。

続いて同社のTamir Dubersteinが、以前データセンタを移行させたときに経験したバグについて、

非同期処理するJavaシステムと、Rubyなのでリアルな並行処理ではなかったが、Javaが実行するたびにプロセスをフォークし、Javaが新しい子プロセスを走らせる仕組みだった。...

分散システム設計のチェックリスト

2年以上前 | 1 point

TwitterのMarius Eriksenは分散システムのエキスパートであり、モジュール化され、安全でかつ効率よく機能するサーバソフトの構築のノウハウは、「Your Server as a Function」という論文にまとめられています。

また、分散システム設計における留意点も、下記の内容のチェックリストというかたちで紹介してくれています。

1. 障害耐性

  • もし依存先が障害を起こしたらどうなるか?その障害がゆっくりと起きたらどうか?
  • システムをどのようにスムーズにデグレードさせることができるか?
  • システムは想定以上の負荷にどう対処するようになっているか?
  • 大きな障害が起きた時の最悪のケースはどうなるか?
  • どれだけすばやく復旧できるか?
  • 処理を遅らせることができる箇所はきちんと遅れて動作してくれるか?
  • シムテムは可能な限りシンプルにできているか?
  • システムは負荷をどのように分散できるようになっているか...

GPUを活かせるCSSの工夫

2年以上前

Ariya Hidayatが、サイトパフォーマンスの改善のためにGPUをうまく活用するポイントについて紹介してくれています。

まず、期待できるGPUの効果は、ページのレンダリングを加速してくれること。

アニメーションのフレームごとにピクセルを描くのではなく、ブラウザはDOMエレメントのスナップショットを撮って、それをGPUテクスチャ(レイヤ)として保存。後で、GPUにそのテクスチャを変換させ、DOMエレメントをアニメーションしているように見せることができる。

渋滞している高速道路ではスピードをだせる車は役に立たないことを例えに、translate3dを使えば自動的にサイトパフォーマンスが改善するわけではないとし、

生成されるコンポジットレイヤの数を抑える。

  • レイヤごとにGPUテクスチャとしてマップされるので、メモリを浪費してしまう。
  • これをチェックするには、
    • Firefoxでは...

成長する開発チームでの施策

2年以上前

Kickstarterの開発チームは昨年14名から20名に。成長しているサービスでチーム規模が大きくなる中、どのようにエンジニアをまとめ、モチベーションをあげ、優秀な人材を採用できるようアピールしているのか?開発チームの年間の振り返りのブログエントリーからその施策の一部が垣間見えます。

  • ミートアップ、Functional Swiftのカンファレンスを主催。
  • 各Engineering leadをアサインし、クロスファンクションのチーム構成とし、VP of Engineeringを採用。
  • エンジニアHack Dayを定期的に開催。
  • 12週間でプログラマーとして仕事に就けるようにトレーニングする社会貢献的なスタートアップ Flatiron Schoolに講師を派遣。
  • 非エンジニアメンバに開発の基礎を楽しく学んでもらう「詩人のためのGitHub」コースを展開
  • ランチルーレットアルゴリズム...

伝えてないから伝わらないこと

2年以上前 | 2 points

GoogleのIlya Grigorikがプレゼン [1] において、TLSをもっと活用できるデフォルト設定をnginx側にしてほしい、つまり設定できるだけでは人々は気づかないのでデフォルトをどれにするのかというのが重要なのだと説明する文脈で例えにだしたのが、「Curse of knowledge」

The curse of knowledge is a cognitive bias that leads better-informed parties to find it extremely difficult to think about problems from the perspective of lesser-informed parties. [1] (… 情報を持つ側にとって、情報を持たない側の視線に立って考えることはものすごく難しい... )

これを聞いて、「Curse...

Luaが支えるCloudFlareのWebアプリファイアウォール

2年以上前

CloudFlareのWAF (Web Application Firewall)は、HTTPリクエストをフィルタリングし、

  • SQLインジェクション
  • コメントスパム
  • XSS
  • DDoSアタック
  • WordPressなど特定のアプリを狙った攻撃

などの攻撃をネットワークのエッジで、つまりサーバに到達する前に守ってくれます。

適用するフィルタリングルールは、オープンソースのOWASPなどの共通ルール 5,682件 + CloudFlare内製のルール 102件 + 顧客企業がカスタムメイドしたルールの総計で、それが全てのリクエストに当てはめられます。その処理速度は平均1ms以下、概ね400μs程度。日あたり12億リクエストを防御しているとのこと。

nginx.conf 2014の講演 [1] で、同社のJohn Graham-Cummingが、その処理速度を高速スクリプト言語Luaを活用して、...

能動的な姿勢に比例して学びの効果は上がっていく

2年以上前 | 1 point

TELUQ(ケベック大)のコンピュータサイエンスの教授であるDaniel Lemireが語る、効果的な学び方の話。

教室に座って教授の講義を聞いていると学んでいる気になる。新しい話題についての本を読むと学んでいる気になる。しかし、相当受け身な学び方ゆえに、それでは非効率。ある意味非効率よりももっと始末が悪い。理解できたような誤った錯覚を覚えるので、非生産的である。… その内、その話題や専門用語などに慣れてくる。(理解してないのに理解しているように感じて)自分を欺いてしまうので、何も学ばないよりももっとよくない状況になる。

という厳しい指摘から始まりますが、解決策は、「チェレンジングだと感じるアクションをすることで、自らを鍛えることができる。」ということ。

  • テキスト本をダラダラ読み進んでも意味はない、一番難しい課題を見つけ出しトライすること。
  • 学んだことのまとめを書いて、振り返ること。...