何でもデバッグできるようになるスキル

2年以上前 | 3 points

パッケージ(apt, yum, gem等)レポジトリのホスティングサービスであるPackageCloudを開発している、James Golickの講演です。

パフォーマンスの高いハイクオリティなソフトウェアをデプロイしたければ、あらゆるレベルでバグ修正ができるようになること。

まず、エピソードとして紹介しているのが、友人の会社のサイトが落ちて、あいにく、その会社のエンジニアが出払ってしまっていて、どうにかしてほしいと助けを求められたときのこと。

  • ソースコードを見たことない。
  • システムの構成を知らない。
  • phpは詳しくない。
  • SSHでアクセスできる情報だけはある。

という状況の中で、

  • phpはおそらくApacheプロセスを実行しているだろうからということで、pidファイルを確認。
  • 次に、straceコマンドを使って、プログラムが実行したシステムコールをチェック。システムコールは、...

Node.js & Go: スタートアップのテクノロジーの選択

2年以上前 | 1 point

GopherCon 2014における、PoptipのCEOであるKelsey Falterの講演。同社はCNN、ESPN、L’Orealなどメディア & コンシューマグッズ大手に、ソーシャルメディアコンテンツの分析やアンケートのプラットフォームを提供しているNew Yorkのスタートアップです。

最初はNode.jsで開発したが、スタートアップにありがちな大手顧客の対応のためのスケールアップと、平行して資金調達活動を続ける中での時間がないバタバタの状況で、

  1. インスタンスが落ちるとシングルポイント障害点になってしまう。ホストしているサーバの障害やアプリのクラッシュなどが全体に影響する事態が起きた。
  2. サービスのほとんどが単一のプロセスで処理されていた。
  3. ピーク時のCPUとネットワークの負荷がかなり高くなった。
  4. 水平にスケールさせることができなかった。HTMLの処理、...

サイトパフォーマンスを上げるJavaScriptとCSSの使い方

2年以上前 | 2 points

リアルタイムアナリティクスのサービスを提供しているGoSquaredがエンジニアブログで紹介しているのは、サイトパフォーマンス向上の工夫。今回は、アセットのダウンロードやパースのところでなく、遅延をおこさずにスムーズに描画するかというポイントに絞っています。

典型的なスクリーンの描画フローでは、フレームごとにブラウザがJavaScriptを評価する。もしJavaScriptによって修正されていれば、エレメントのためのスタイルやレイアウトを再計算する。次に、ページをいくつかのレイヤに描いていき、レイヤをスクリーンにあてはめるのにGPUを使う。各ステージごとに、ウェブページやアプリが行うことが違い、それぞれにコストがかかる。スムーズな60fpsを目指したければ、ブラウザは全てを16msで完了させる必要がある。

JavaScriptがレイアウトを変更(margin, padding,...

ユーザインターフェースのアルゴリズム

2年以上前 | 2 points

(注)参照しているビデオは、矢印キーで前のページに移動した後に、再び矢印キーで指定しているページに戻ってこないと、うまく再生機能が起動しないようです。面倒ですが、済みません。

Mark DiMarcoのJSConf 2014での講演です。アルゴリズムがどのように適用されているかを、数式でなく、映像で説明してくれているのが、とてもわかりやすいです。

Amazonのプルダウンメニューの工夫の話は聞いたことがありましたが、元をたどればAppleが発明したものだけどOS Xに移行するときに使われなくなった(コピーし忘れた?)テクニックなのですね。知りませんでした。

1) 画面でマウスを自由に動かした際に、どのコンテンツが反応すべきかを事前に計算しておくアルゴリズム

このテクニックは、Voronoi Diagram(概念図)として知られている。

実用例: あらゆるデータビジュアライゼーションに応用できる...

SoundCloud: iOSアプリのUI

2年以上前 | 3 points

SoundCloudは、ブログからのPodcast配信のプラグインとしてよく使われているのは以前から知ってましたが、個人的にはミュージックプレーヤーとしては利用したことはありません。既に数十万のアーティストが楽曲のシェアに使ってるんですね。「Youtube for music」と呼ばれるレベルのサービスになってるとは気づいてませんでした。

リニューアルしたiOSアプリは残念ながらレビューは2.5程度ですが、Brian Lovinが取り上げているいるように、UIではいくつか細かい工夫がされてます。

個人的に気に入ったのは、まずは細かいというわけではないですが、

画面のどこをタップしても再生/ポーズができる。

個人的には「画面をタップして、中心に表示される再生/ポーズボタンを再度タップする。」というYoutubeなどのアクションが面倒だと以前から思ってました。SoundCloudの場合は、...

メールの復権

2年以上前 | 1 point

ベイエリアでは、ユーザへのメールがスパムと見なされてサービスのイメージが下がるのを極端に警戒していた時期が続いてましたが、最近はユーザとの接点という意味でメールの役割が見直されているという話しを聞きました。確かに、最近登録した新しいサービスでは、配信の頻度を工夫しつつ、かつクオリティもかなり上がってきているように思えます。

Sitepointでメールデザインの留意点が取り上げられてました。

1) 標準の横幅は550-600ピクセルだが、最近のトレンドはもっと広くなってきている。但し、700ピクセル内には納めるようにしておいたほうがよい。

2) version 2007以降、Outlookはバックグランドイメージをサポートしていないので、常に固定のバックグランドカラーをOutlook用のフォールバックとして用意し、ユーザへの重要なメッセージをバックグランドイメージだけに置かないこと。

3)...

Please excuse me while I got pivot って便利な言葉だな

2年以上前 | 1 point

Garry Tanのブログで、

Don't be a dreamer, be a creator

というタイトルのエントリーがあって、要は、「夢ばっかり見てないで、さっさとサービスつくって試しなさいよ。」ということ。おっしゃる通りなんだけど、人間どうしてもじっくり考える時間は必要で、あまり長く時間をかけても効果はないけど、一定時間は集中していたいもの。

大吉が出るまでおみくじを引き続けるように、もう少し救いのある表現はないかなと思ったら、ありました。

Please excuse me while I got pivot.

Scott Adamsのブログのエントリーで、

pivotはスタートアップが素早く一つのプロダクトから、次のプロダクトに乗り換える、もしくは新しいビジネスモデルに変わること。pivotの後に、ダメなアイデアではじまったスタートアップが大成功した事例はあまたあるし、...

オープンソースと特許とテスラの決断

3年弱前 | 1 point

今朝テスラがブログで発表した内容は、「オープンソースの精神にのっとり、テスラの保有する特許を他社/他者が利用しても訴訟をしない。」ということ。適用されるオープンソースのライセンスが明示されていないところから考えるに、純粋にオープンソースではなくて、無料もしくは無料に近いかたちでのライセンス契約が必要になるかたちになるのかなと想像してます。

年ほど前に、ソフトウェアでオープンソースが広がり、サーバ周辺のハードウェアでもオープンソースのプロジェクトが進みはじめた中、製造業のオープンソース化はくるのかという議論をしたときに、私はちょっと根拠の薄いあるべき論から、「衆知の集結によりトータルバリューがあがるはずなので、製造業もオープン化はゆっくりでも不可逆的に進む。」と主張したのですが、製造業勤務一筋の方からは、「中小製造業が生き残っている生命線なので、特許は企業戦略の中心として強く残り続ける。...

A/Bテストの進化

3年弱前 | 2 comments | 1 point

Airbnb: 最も利用されている機能がベストだとは限らない」を紹介した際に、疑問として残っていたポイントについて、その後フォローアップの情報になるブログがいくつか続いています。

まずは、Airbnbのブログで、信頼性を表すP値が5%以内では安定せず、かつ中期的な予約率改善率の計測でも効果はニュートラルと出た(計測結果のグラフ)価格帯スライダーバーを、最終的には変更すると判断をしたのは、予想とおり「高い価格帯を検索して予約をするユーザがいたから」、つまり総手数料売上があがるという別のKPIを考慮しての判断でした。

また、Airbnbの場合は、「個人オーナーへの宿泊申込 - 了解 - ユーザの予約」というコミュニケーションを挟むため、予約率の変化を判断するには一定の日数が必要。そこで、P値を適正と判断する閾値は、A/Bテスト開始から短い期間では厳しくみているとのこと。...

ベストでなくても実際のところやってしまうこと

3年弱前 | 1 point

「ベストでないとしても、実際のところやってしまうこと。」という特集。

  • "red-green-refactor"でなく、"green refactor"を一発でやるか、本番アップした後にやる。

  • なぜCIサーバをパスしないのかわからなかったので、テストを全部コメントアウトした。

  • ログをとにかく見やすく表示することに取り憑かれている。「ちょっと待って、このテキスト揃えるから。」「まわりをboxで囲もう。」「このファンクションからでてくるログは全て、メソッド名、コロン、スペース、それからメッセージの順で表示されるように。。」

  • 同僚から「そろそろ次に進もうよ。」とせかされて、「後々のために、ここはもっと直感的にわかるように仕上げないと。」と言い返しているが、実のところやってるのは、デバッグのメッセージを徹底的にこだわって直していたりする。

  • RSpecの実行中に、...

Maya Angelouの言葉

3年弱前 | 1 point

米国の作家Maya Angelouが亡くなったというニュースを見ました。恥ずかしながら、どういう方か存知あげなかったのですが、彼女の残した言葉がどんどんtweetで流れてくるので、調べてみたくなりました。

"Try to be a rainbow in someone's cloud." (誰かの雲の虹になるようにしなさい。)

"If you don't like something, change it. If you can't change it, change your attitude. Don't complain." (気に入らないことがあれば、それを変えなさい。それを変えることができなければ、貴方の態度を変えなさい。不平を言ってはいけません。)

"If you get, give. If...

安全に失敗すること

3年弱前 | 1 point

NYで開催されたThe LeanUX15 Conferenceに招待された哲学者のAlicia Juarrero教授の講演。原題は "Safe-Fail, NOT Fail-Safe" ですので、「失敗しないように安全にするのではなく、安全に失敗すること。」という内容です。

まずは、カヌーと急流下り用のラフトを例えに比較しています。

カヌーは細身のすっきりしたデザインで、穏やかな海や川面を快適進めるように設計されているが、そもそも急流や波が高いときは舟をださないというのがベストな戦略。つまり、失敗しないように安全にする前提で、成果がでるように最適化されている。

一方のラフトは、ずんぐりとした形状。極力ひっくり返らないようにそのかたちにしているが、複数のメンバが激流の状況にあわせて、チームワークよく漕いでいかないとうまく進めない。しかし、水をかぶってびしょぬれになって、...