Twitterのスパム対策

約3年前 | 1 point

導入以来、スパム量を40%削減したBotMakerについて、Twitterがエンジニアブログで紹介しています。

サービスの性質的にスパム対策の難易度は高い

例えばメールであれば、コンテンツは非公開であり、スパム対策による多少の配信遅延は、サービスのクオリティ上は問題ない。一方Twitterは、APIを介して配信でき、リアルタイムでコンテンツを公開するサービスゆえに、

  • スパムの配信成功/ブロックがスパム配信者からもわかってしまう。
  • スパム対策による配信遅延は、サービスのクオリティ低下になる。

という事情がある。

満たすべき要件

誤ってスパム判定してしまうことなく、かつユーザの目にスパム投稿がふれないようにするには、

  • スパムコンテンツを作成を極力難しくする。
  • スパム投稿が掲載される時間を最短にする。
  • 新しいスパムへの対応。すばやくデータ収集 / 分析 / 新ルールのデプロイ /...

インキュベーションへの違和感と繰り返しトライすることの超高速化

約3年前 | 1 point

インキュベーションという言葉にはあまりポジティブな印象をもってませんでした。(tl;dr だけど認識変わりましたという話。)

一人の人間が一生のうちにFacebook的な大成功を二回おさめることは宝くじよりも難しいので、ある意味、どんな高名な人のアドバイスも外れるということ。役に立つアドバイスはあるが、インキュベーションが成功に結びつくわけではないのではと言ったほうが正確でしょうか。

と偉そうなことを言っておきながら、そもそも、アドバイスでさえ自分で実際にやろうとするとけっこう難しい。この場合のアドバイスというのは、同僚への気軽なアドバイスでなく、本当に成功してほしいと思って真剣にアドバイスしようと思った時の話です。

自分で意思決定をする場合、100%ロジカルに判断できるほどは材料がないことがままありますが、自分で成功すると強く信じて、かつ間違っていると気づくと、...

Cloudera: 機械学習が広がる中でのデータモデル

約3年前 | 1 point

Josh Willsは、Googleで広告オークションシステムとデータ分析インフラの開発を担当し、現在は、ClouderaのSenior Director of Data Scienceを勤めています。

機械学習によるデータ分析が、Googleなどに限らず、AirbnbやEtsyなどその他のネット企業にも広がっていく中、今後必要とされるデータモデルについて 、Midwest.ioGraphLab Conference で講演しています。

複数の機械学習分析を操るGoogleのチャレンジ

  • 機械学習分析のベースとなる各サービスの仕様が頻繁に変更になる。
  • 機械学習分析はそれぞれ単体でも複雑なのに、Googleの場合、それらが相互に関連があるケースが多かった。一つの機械学習分析の変更が、他の機械学習にどう影響がでるかが把握しきれない。その結果、広告配信システムを理解できない(=...

長期かつ修正頻度の高いPJでのCSSメンテ

約3年前 | 2 points

長期的な大規模プロジェクト、かつ修正頻度が高い場合は、DRYよりはメンテ性を最優先にしたCSSを書くべきという、Ben Frainの方法論です。長文ですが、よくまとまってると思います。

1) テクノロジーとツール

プレプロセッサ

  • 長期のプロジェクトにおいて重要なのは、テクノロジーではなく、何ができて、どう進めるかというアプローチ。
  • Sass / LESS / Stylus / Myth などどれでも、しっかり書かれていれば、必要なときにいつでも統合はできる。プレプロセッサは個人の好みでなくて、プロジェクト全体のメリットで決めるべき。また、コンパイル後のスタイルシートではなく、どうスタイルシートを書くかという視点で選ぶべきだと思っている。
  • プリプロセッサの必須条件はそれほど厳しくない。
    • CSS variables (カスタムプロパティ) : 色の選択やgridを決めるconstantの指定などで、...

ミッションクリティカルでも革新的であること

約3年前 | 1 point

NASAのDr. Jeff Noriisによる、Midwest.ioでのキーノート講演です。同氏は、ミッションクリティカルなソフトおよびロボット操作技術の専門家で、火星探索のランドローバーの開発を担当。

プレゼンのテクニックもすごくクリエイティブなので、52分のビデオを見る時間をかける価値はあるかと。

基本的には、タブレットをオーバーヘッドプロジェクタのようなかたちで使って、紙のノート / 写真 / 手紙の上に映像を重ねて(ビデオ: 3分37秒〜)ますが、後半では、ホログラムのようなかたちでロケットや地球/月を表現(ビデオ: 37分10秒時点)しています。QualcommのVuforiaをベースにつくった仕組みのようです。

一方、プレゼンの内容も秀逸。

最初のエピソードは、電話機を開発したAlexander Graham Bellの話。当時は、既に電報が商用化されており、...

Pinterest: ユーザに影響のでないデプロイ方式への改善

約3年前 | 1 point

Pinterestは、サーバの一部を本番から外し順次アップデートするという方式でデプロイをしています。それが起因してページ全体を無駄にリロードさせている状況を改善するための取り組みを紹介しています。

背景

  • Pinterestのサイトでは、JavaScript + XHRにより、ページ内で必要なコンテンツだけが、クリックされた際に適宜更新されるようになっている。
  • ユーザが最初にPinterestのサイトにアクセスすると、サーバはブラウザに対しJavaScriptのバンドルを読込ませ、そのバンドルがサーバにあるソフトウェアのバージョンとの一致を確認する仕組み。
  • デプロイする際は、サーバの10%をオフラインにし、アップデート完了後、本番に戻すという作業を繰り返している。つまり、新しいバージョンのソフトを載せたサーバと古いものを載せたサーバが混在している状態になる。(...

JavaScriptでvarを並べること

約3年前 | 1 point

まあ、好みの問題もあるので、嫌な人にとっては嫌なんでしょうが、、

JavaScriptで、例えば先頭で var をまとめて定義 & 値を代入する際に、

var foo = 1, bar = 2;

でなく、

var foo = 1,var bar = 2;

と、varを並べたほうが、メンテ性も見た目を揃えるにもよいのではないかという、Ben Almanの2年前のブログが最近いくつかtweetされてたので、チェックしてみました。

そもそも、

  • 複数varを並べるのは無駄だし、初心者っぽい。
  • 単独varの方が見た目がよい。

という意見が相当根強いようですが、それに対して彼の主張は、

Maintenance

もし下記のような内容の変更のため、並び替えて編集したとする。

// Before:var foo = 1, bar = 2;// After:var bar = 2, foo = bar -1;

...

入会フローを磨くこととモバイルファーストの意味付け

約3年前 | 1 point

User Onboardingというサイトは、web/スマホアプリの入会フロー、ユーザ登録やチュートリの画面遷移を、ページごとに解説してくれてるサイト。

サイトの文言やボタンの内容 / 配置 / 色選択、スペースの取り方、ページごとの意味付けなど、ビジュアルのデザイン以外についても、何をどのように修正すべきか(たまに褒めてもいますが。)を詳細に説明してくれてます。UIデザイナーだけでなく、サービスづくりに関わる人全ての参考になると思います。

サイトの存在には気づいていたのですが、これほどコンテンツが増えてるとは気づきませんでした。26個のサービスが紹介されていて、全部のスライドを見る価値あります。自分は一晩中かかって制覇しました。こうやって各サービスを比較すると、SlackやTrelloは本当によくできてますね。逆に相当ダメだしされているサービスも、反面教師という意味で、勉強になります。...

シングルページアプリづくりのJavaScriptフレームワーク比較

約3年前 | 2 points

開発言語やフレームワークの比較は、参考になるところはありつつも、その結果、不愉快な気分になる人がいるわけですが、それを懸念して、「(これを読んだ人は、他人の)意見を読んでいるだけだと思い返してほしい。貴方にどうすべきだと言ってるのではなく、自分にもしくはチームのために何がよいかは自分で判断すべきこと。」と前置きして、Henrik Joretegが、JavaScriptフレームワークについて私見をシェアしています。

反対意見も併記しようと思ったのですが、TwitterやHNでの反応がまだないようなので、注目すべきコメントがでてくれば、後日まとめます。

1) Angular.js

pros

  • 最初がものすごく簡単。スクリプトタグでng-属性をアプリに追加すれば、マジックのように振る舞う。
  • 開発のコアチームの多くがGoogleの社員で構成され、手厚い陣容。
  • ユーザベース/コミュニティの規模が大きい。

...

よいデザインチームのつくり方

約3年前 | 2 comments | 3 points

DisqusTeespringのデザインチームの立上げを指揮してきたJoshua Sortinoが、デザイナーの採用とチームづくりのポイントについてまとめています。「よいプロダクトを生み出す組織づくり」という意味では、他のポジションに共通する話しもあって興味深いです。

採用全般についてのアドバイス

  • サービスづくりに情熱を燃やす人がベストな社員になる。正しいマインドセットがあれば、スキルは追いつく。
  • 問題解決指向が強いが特定のスキルが弱い人の方が、そのスキルはあるが問題を解決しようというマインドセットに欠ける人よりもよい。
  • 候補者の人が自分よりも優れたユニークなスキルがあるかどうかは重要。メンバそれぞれに得意分野があれば、強みを活かしたアサインができるし、エゴによるバトルがおきづらい。
  • 「どうしても人手が足りないから仕方ない。」という採用はしないこと。一時的に助かっても、...

失敗をおそれることでなくしてしまう未来

約3年前 | 2 points

1) 変われない企業という生き物

”It isn’t what we don’t know that gives us trouble, it’s what we know that ain’t so.”(自分たちの知らないことではなくて、知ってることが変わっていくのに気づかないことが、トラブルの元になるんだ。)

エンタープライズITのクラウド化の伝道師 Adrian Cockcroft (Netflix - Battery Ventures) が、"Migrating to Cloud Native with Microservices” と題した講演の中で紹介している、1920-30年代のセレブ Will Rogersの言葉

Adrianは、エンタープライズ企業がクラウドを採用するに至るまでの反応を時系列で見て、

Ignore - “No” - I said “No”...

Carousel by Dropbox: スマホのメモリを利用した遅延の軽減

約3年前 | 4 points

4月に紹介した「Carousel by Dropbox: 遅延のない動きを実現する工夫」の続編として、今回は、写真のメタデータをメモリにキャッシュして遅延を減らす取り組みが紹介されています。

背景

写真閲覧アプリCarouselは、アプリを開いたら即座に写真をスクリーンに表示し、ユーザが履歴をたどって一番古い写真までスクロールバックしたとしてもスムーズな閲覧ができるように、写真のメタデータを利用している。

写真を10万枚以上保持するユーザもいて、ユーザのスクロールにあわせてディスクからメタデータを読み取る仕組みだけでは遅延を防げない。そこで、ディスクのキャッシュにあるメタデータをメモリに保存する方式を採用している。

このインメモリモデルとオンディスクモデルをうまく調和させるには、モデルのステートを変更しようとするスレッドに注意しなくてはいけない。例えば、ユーザの操作を反映するメインスレッド、...