〜Twilog・Togetter統合の舞台裏〜 by 吉田俊明、青山民人|トゥギャッター株式会社 Twilog https://twilog.togetter.com/ Togetter https://togetter.com/

ハロー!くしいです! オフィスにお邪魔しては紹介しまくっている「行ってきたシリーズ」今回で162記事目になったようです。普段は日本の東京をメインに紹介していますが、今回からアメリカ編をお届けします。というわけで第一弾は、サンフランシスコ市内にあるTwitter本社にお邪魔してきました。まさかの本場でビックリしましたよね、私もです。 念のため、Twitter本社はスッと行って「はい、どうぞ」と入れてもらえないのでご注意を。以前一緒に働いていたエンジニアが今はTwitter本社にいて紹介してもらえることになったという経緯です。 Twitterの本社は2012年に現在の場所に移転し、周辺にはUberやAirbnbなどのオフィスが近くにあるエリア。治安が悪いと言われつつも、こうして色々とオフィスを構えているのは移転当時にサンフランシスコ市が再開発地域の税制優遇措置をしたからだそうで、結果的に現在の
(Twitter での6年間 7 からの続き) これ以後は、新アーキテクチャプロジェクトが長期間続くので、大きな変化はなかったと思う。 なので、この話はいったんここで筆をおくことにしたい。 ぼくは、今年3月に Twitter を辞めることにした。もともと新しい物事を学ぶことが好きなので、あまり同じ環境に長くいるのには向いてなかったのだと思う。それでも6年間やってこれたのは、すばらしいマネージャーや同僚にめぐまれたことが大きいし、ぼくが Twitter というサービスをすごく好きだったからだと思う。 Twitter という会社では、優秀なエンジニアやデザイナがユーザーのためになるように日々プロダクトを開発し続けている。これからもユーザーとして便利に使っていこうと思う。
(Twitter での6年間 6 からの続き) Apple のイベントからしばらくすると、テックリードから提案があった。ぼくがデモ用に作ったライブラリの設計もコードもきれいで見通しがいいので、そのライブラリをアプリ本体に組み込んで、既存のコードを置き換えてはどうかということだった。ぼくはその提案には反対だった。既存のコードによほど大きな設計ミスがない限り、同じ要求を与えれば同じコードができあがる。ぼくの知る限り、既存のコードに大きな設計ミスはなかった。ぼくは、まずゴールとなる新アーキテクチャーを設計し、既存のコードを徐々に置き換えていくことでゴールに近づけていくインクリメンタルアプローチを提案した。既存のプロモートツイート関連のロジックを新しいコードベースに意味もなく移植したりすることで問題を起こしたくなかったのだ。マネージャーや他のエンジニアたちも同意見で、新アーキテクチャプロジェクトを
(Twitter での6年間 5 からの続き) 2014年3月、グリーンカード、つまり永住権の申請プロセスをはじめることにした。そのときぼくは H-1B ビザで働いていたのだが、このビザには6年の最終期限がある。2010年10月からなので期限まで残り2年半しかなかった。一度期限が切れてしまうと、基本的には国外に出ていかなければいけなくなる。H-1B で働いていてこれからも US で働きたいと考える以上、グリーンカードを取得する必要があるわけだ。 6月の WWDC で、iOS 7 にシェアエクステンション機能が搭載されるとの発表があった。社内でそれを実装するために優秀なエンジニア2人のチームが結成された。この機能はアプリから独立した拡張として別プロセスで動作するので、iOS に標準搭載されている Twitter 連携機能を直接使う必要があった。そこでその問題について詳しいぼくが認証部分をチー
(Twitter での6年間 4 からの続き) 2013年の春ごろだっただろうか。上のほうの人が、A/B テストをプロダクト開発に活用することを推奨し始めた。A/B テストでプロダクトの方向性を決めていくというのだ。これにつられ、この頃の社内では A/B テスト万能論のような空気さえただよっていた。普通に考えて、A/B テストを数週間走らせてデータをとっても、それが長期的な成功につながるか判断できるはずがない。短期的に数字が上がるからといってユーザーの嫌がることを続けていれば、いつかユーザーの忍耐の限界に達してしまうかも知れない。そのユーザーの堪忍袋の状態をどうやって計測できるというのか、など疑問は尽きなかった。 そのころ Growth という大きな部署ができて、従来国際化を担当していた i18n エンジニアリングチームもその下に組み込まれることになった。Growth チームの強い権限のも
(Twitter での6年間 4 からの続き) そうこうしてるうちにコードネーム H という野心的なプロジェクトがスタートすることになった。最初は Hackweek の1プロジェクトとしてはじまったらしく、複数のタイムラインをスワイプで切り替えられるようにすることで、これまでのタブ UI による固定数のタイムラインではなく、たくさんのタイムラインをユーザーの好みに応じて追加することができるというアイデアだったらしい。このプロジェクトに iOS フレームワークチームのエンジニア全員が投入されることになった。当時 IPO の時期が近づいていたこともありクオリティよりも開発スピードを優先しないといけなかったので、まずレビューを一切なくして各自がコードをレポジトリに直接コミットすることになった。さらに、各機能のチームからの機能追加はメンテナンスブランチに対してのみ許され、しかも最小限に行うようにと
(Twitter での6年間 3 からの続き) 2013年に入り、iOS 6 の普及率も十分に高くなったころ、同僚のエンジニアから1つの提案がなされた。ツイートビューを作り直そうというのだ。その時点での Twitter for iOS は、iOS の黎明期に Apple が推奨していたように、できるだけビュー階層を減らして描画するようになっていた。たとえば、ツイートビューには一切サブビューがなく、ツイートテキスト、プロフィール画像、ユーザー名、タイムスタンプなどのパーツは直接ツイートビューに自前で描画する設計になっていた。当初はそのほうがパフォーマンス的に速かったからだ。それから数年間の Apple によるハードウェア、ソフトウェア両面での改善の結果、ベンチマークを取ってみるとどうやらその設計はもう古いらしいことがわかった。たとえば画像を表示するときに、自分でビューに CPU で描画するの
(Twitter での6年間 2 からの続き) 秋になると、上のほうが「Twitter は mobile centric company になる」という方針を打ち出した。つまり、それまではずっとウェブ中心の会社だったのを、これからはモバイル中心にシフトしていくという決意表明だ。その方針に従い、新機能を作るときにはまず iOS か Android に実装することが必須になった。もちろんプロジェクトに十分なエンジニアがいれば、ウェブも同時に実装してもいい。だが、これまでのようにウェブを先に作ってリリースしてから、あとで iOS と Android の実装を進めてリリースするということはしないことになった。その後のウェブトラフィックのかげり具合とモバイルユーザー数の伸びを考えると、いい時期のいい判断だったと思う。 そのころ、1人の男性エンジニアが育児休暇で10週間の休みに入っていた。少ししてから
(Twitter での6年間 1 からの続き) SQLite の導入とモデルレイヤーの刷新がうまくいったあと、ぼくは次のプロジェクトを探していた。何をやれば最終的に一番ユーザーのためになるか。そのときに選んだのは、JSON パーザーの置き換えだった。当時の Twitter for iOS は、YAJL という C で書かれた JSON パーザーをプッシュ形式のインタフェースで使っていた。プッシュパーザーはドキュメントパーザーに比べてピークのメモリ使用量は多少低くなるものの、パフォーマンスが悪くなる傾向がある。プッシュパーザーを使う側のコードは見通しが悪くなりバグが入りやすく、チームにとって頭痛の種だった。それを iOS 標準の NSJSONSerialization に置き換えることにした。Twitter for iOS のコードベースに存在するほぼすべてのモデルクラスの JSON データ
2012年1月、Twitter の iOS チームに7人目のエンジニアとして入った。 たまたま最初の週が Hackweek だったので、通常の仕事は一旦停止。なんでもやりたいことをやっていいらしい。入ったばかりで何もわからない状態だったので、ぼくのメンターのテックリードがやっていた Twitter for Mac の多言語化を手伝うことにした。水曜にパッチをマージしてもらって、ぼくの担当部分は完了。その後は次週から始まる通常営業に備えてコードを読み始めた。 次の週からは通常のサイクルが始まった。毎朝スタンドアップミーティングがあり、各自の仕事の進み具合を他のメンバーと共有する。前職までは同僚がほぼ日本人ばかりだったので英語で仕事をしたことがなく、聞き取りがうまくできなかったのを覚えている。 この日からさっそく Twitter for iOS のユーザーとして気になっていた問題を直し始めた。
Google Readerがサービスを停止したときはこの世の終わりみたいな状態になったのですが、実は後継となるFeedlyはもう2年以上使っていません。ではどうやって情報収集しているかというと、「Twitter検索」です。具体的には、「ついトピ!」というiPhoneアプリを使っています。 RSSリーダーの弱点は、 不要な情報をフィルタリングができない(必要ない、読みたくないタイプの記事がたまに入るけど、それ以外は読んでおきたいんだよなあ、とか)新しい情報ソースを追加するのが面倒(RSSの置き場が面倒なところにある場合とか、最近はそもそもRSSを吐いてないのもあるらしい)全体的に情報量が多くなりすぎて読めなくなる(ITmediaの翻訳をやっていたときには、数千サイトを追ってました)といったところにあると思っていて、Google Readerにフィルタリング機能がつけば最高なのになと思っていた
Twitterの日本人エンジニアに聞く、世界に通用するハッカーになるには 2012.10.05 - 2012.10.05 Twitter開発のテストはローカルで西村賢氏(以下、西村):Twitterって巨大な世界的企業で、一般的な開発と全然かけ離れているイメージがあったんですね。今ちょっと驚いたのがRailsでローカル環境でまだやってるということで、ローカル環境、例えば蓑輪さんも入られて最初、Macかなんかで開発するわけですよね。その上に開発環境を整える。 具体的に、例えばデータベースのところはどうするとか、結構この環境構築は大変なんですか、最近、その開発環境とステージングとプロダクションをなるべく近づけろとか、ありますよね、そういうトレンドが。そういう意味で言うと、ローカルTwitterが再現できちゃうというのは、不思議な感じなんですけれども。 蓑輪太郎氏(以下、蓑輪):そうですね。設定
IPAから天才プログラマーと認定された経歴を持ち、現在はtwitter社に勤めるひげぽんこと蓑輪太郎氏が、西村賢氏と対談。2億人超のユーザを抱えるTwitter社の開発環境や、エンジニアが持つべき心構えについて語りました。 ツイッター社に勤める日本人エンジニア 西村賢氏(以下、西村):今日は蓑輪さんこと、ヒゲポンさんということでネットでも知られていますので、ヒゲポンさんでよろしくお願いします。 蓑輪太郎氏(以下、蓑輪):よろしくお願いします。 西村:今日はだいたい大きく二つお話をお伺いしたいのですけれども、ひとつはTwitterに入られて今、どれくらいになりますか? 蓑輪:もうすぐ7ヶ月。 西村:7ヶ月。Twitterのソフトウェアエンジニアということで、その立場からごらんになったTwitter社の開発の風土ですとか、日々の業務のまわしかた、それから技術的な課題だとか、そういったあたりのT
TwitterのStreaming APIを使うと、流れてくるツイートを常時監視できます。 監視する対象は特定のキーワードだったり、特定のユーザーだったり、特定のサイトを指定したりできます。ユーザーの場合はユーザーのツイートに対するリプライも取得できるので、使って見るとかなり夢が広がるAPIです。 今回はこのTwitter Stream APIをHerokuで無料で監視しつつ、DBに蓄積するPGを書いたのでその紹介をしていきます。 🐮 ソースコード今回作成したソースコードはこちら。 詳細の説明は省きますが、基本的には環境変数に「TwitterのAPIのキー情報」と「DBへの接続情報」を書いて、後はAPIをEventMachineで監視 => ツイートが取得できたらDBに書き込むようになっています。 今回はこのソースをツイートscan.rbとします。 require 'rubygems'
ひと味ちがうTwitter Bootstrapの9個の無料テンプレート&有料まとめサイト Jan 28th, 2013 Tweet Twitter Bootstrapはデザインが苦手なプログラマのための必須ツールです。今回は、一味違ったBootstrapサイトを作るときにきっと参考になるテンプレートをまとめてみました! (03/05 追記) FlatUI、Bootstrap Expoを追加しました (03/24 追記) Flatstrapを追加しました (04/03 追記) MagicSuggestを追加しました (04/04 追記) Bootstrapのリソースネタを別の記事にしました 無料のテンプレート 無料のBootstrapテンプレートの紹介です。BootswachのようにCSSだけで適用できるものと、HTML/CSS/JSなどいろいろ追加しないと実現できないものがあります
typeahead.js a flexible JavaScript library that provides a strong foundation for building robust typeaheads
こんにちは。クラスメソッドの稲毛です。 前回のパッケージ管理ツール「Bower」インストールに続いて、いよいよ本編となります「Flight」フレームワークです。 通常なら「Flightとは?」から始める所ですが、今回はどんどんサンプルを作っていくことで理解を深めてみました。 Flightのインストール まずはBowerを利用してFlightを構成するスクリプトファイルをインストールする必要がありますので、アプリケーションを作成する場所に下記の内容で「component.json」というファイルを用意します。 component.json { "name": "Flight Sample", "version": "1.0.0", "dependencies": { "flight": "~1.0.0" } } 用意できたらコマンドプロンプトを起動し、component.jsonがあるディレ
A lightweight, component-based JavaScript framework for assigning behavior to DOM nodes.Flight A lightweight, component-based JavaScript framework from Twitter View on GitHub Overview Flight is a lightweight, component-based JavaScript framework that maps behavior to DOM nodes. Twitter uses it for their web applications. By way of example, we've including a simple email client demo (browse the sou
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く