えいのうにっき

a-knowの日記です

Hatena Engineer Seminor@はてな東京開発センター に参加してきたよ!

してきました!!セミナーについての詳細はこちら。 当初は応募枠も30人程度(その後70人に拡大)で、「まぁ仕事も忙しいし、当たったら行くか〜」ぐらいのノリで応募させて頂いたのですが、それが何の幸運か、当選を頂きまして。

付かぬ都合、付かぬ折り合いをムリヤリ付けて、参加させて頂いた次第です。 なぜなら、はてな大好きな自分としては、この幸運、フイにしてしまうにはあまりにももったいない!

写真がなくてアレなのですが、はてなの新オフィス・東京開発センターは、東京は表参道という、とってもオサレなロケーションに位置する、いろんな意味で眩しいところでございました。。

地下鉄銀座線・表参道駅から徒歩約10分程度といったところ。 ちょうどいいくらいの位置かもしれませんね。

と、いうわけで、

枠が70人に拡大されたとはいえ、落選された方もおられたようですので、 共有という意味も兼ねまして、その場でとったメモなんぞをここにまとめておこうと思います。

Hatena Engineer Seminor」ということでしたが、技術やエンジニアリングの話、というよりは、「表参道にやってきたはてなを、皆さんよろしくね!」という感じで、 新オフィスをそのまま使った懇親会もあったせいか、なんだかはてなユーザーのオフ会みたいだなぁ、 と感じたのは、僕だけではないんじゃないかなぁ、なんてことも思ったり。:) (まぁあとは、開発拠点開設に伴うエンジニア採用、の布石でしょうな!)

ではでは、以下、お話を聞きながら取ったメモです。 もちろん完全なものではないこと、ご了承下さい。 (カッコ書きしてるところはa-know個人の感想です)

Hatena Engineer Seminor@はてな東京開発センター 発表メモ

はじめに

  • CTO田中さんより、ごあいさつ。
  • 中目黒から表参道に移転して、規模拡大を考えているところです!
  • 今日始めて配布するステッカーです!
    • (やったね!)

はてなのサービス開発と東京開発センターの立ち上げ(id:stanakaさん/@stanaka/CTO田中さん)

  • 自己紹介
    • サーバインフラを支える技術・大規模サービス技術入門 書きました
    • githubもやってます
      • 「こういう立場になってもコードをかくのはやめたくないかな〜」
        • (すばらしひ!)
      • 言語はあまり選ばず書いてます
  • はてなの変遷について
    • 2001年7月、京都で創業
      • (おお、当時の写真!)
      • 最初は社長自ら作った、人力検索からでした。
        • (お父さんの一言がきっかけでしたっけ・・・。ヒントはどこに転がってるかわからないなーホント)
      • はてダがヒット
    • 2004年2月、東京へ移転
      • このときは、はてなのサービスを全部止めて&サーバ全部ハイエースに乗っけて、物理的に移動!
        • このときクラッシュしていたら・・・?
        • このときはこういうのも珍しくはなかったんですよ〜
          • (にしてもすごすぎる。。)
    • 2008年3月、京都移転
      • ネットサービスをじっくり開発したい、という意図から。
      • どんどん増床
      • このときのサービスで一番大きいのは、うごメモはてな
    • 2012年7月
      • 11周年!はてながだいぶ広がってきた
      • 納会もやりました
        • だんだんオトナの会社、ちゃんとした会社としての面もでてきている
        • はてなが元来持っている、おもしろい部分と両立させながら、やっていきたいですね
  • はてなのサービス
    • みなさんは何を思い浮かべますか??
    • 敢えて「はてなID」を挙げさせて頂きます!
      • 各種サービスの根本にあるものと考えている
      • 文字列と人間、ひとつの人格を結びつける、これはひとつのはてならしさ
      • ID文化を作り上げられたのはひとつの特徴だと考えている
      • ネット空間×はてなID
        • 匿名化されたアイデンティティをサービスにつなげる
        • はてな村」という言葉もあるが・・・。「小さいコミュニティだ」と揶揄されることもあり、またそれを気にしながらの開発することもあった
          • (決して悪い意味ばかりではないと思いますけどね:) )
  • はてなの今
    • サービス開発、加速している!・・・と思っている
      • はてなのそういう面もお伝えしていきたいんです
      • 数多くの機能追加、機能変更をしています!
      • Markdown記法への対応」などは、270ブクマを超えるスマッシュヒットに!
        • はてな社内でも、はてブ数は反響の大きさを図る一つの指標になっているのか・・・)
        • (それぐらいでスマッシュヒット、と位置づけてしまっていて大丈夫かな??)
      • この先も、使われる機能を優先的に残して、シンプルなものにしていきたい
  • 開発手法の洗練
    • ペーパーエンジニアリング
    • エンジニア・デザイナー間の連携で、洗練させていきながら。
    • 仮設→計測→検証。
      • どういうユーザーがどういう使い方をするだろうか?実際にどういう使い方をされたのか?
      • より非連続的なサービスの改善をしていきたいときなど、実現するための手段としてリーンスタートアップのような手法を活用していきたいと!
  • 技術的な蓄積
    • AWS,Solr,redis,fluetned・・・
  • エンジニアリング環境
    • ディスプレイ4つ使うDevOpsエンジニア(インフラエンジニア)も!
    • 30インチディスプレイとかもあるよ!
  • Github Enterprise
    • 最近取り入れて使い始めている
    • 2009年ごろからgit使い始めている
    • これに限らず、外部のツールでもいいものはどんどん使い始めている
    • Enterprise版でも「available for hire」あるんですよw
  • 教育プロセス
  • 開発体制の充実@京都
    • だいぶ体制は確立してきてます。
  • 東京開発センターオープン
    • 中目黒から表参道へ。おしゃれで静か。環境には気を使っています!
  • なにを作ろうとしているか
    • 将来的には独立した開発チームとして、ひとつのサービスを開発できるようにしていきたい
      • (期待してます!!)
      • チームとして完成したチームにしたい!
      • デザイナーしかいない。。ディレクター、エンジニアいないんです
        • (積極採用フラグ?)
  • 京都との関係
    • 京都での開発はずっと中心で在り続ける
  • はてなの開発系職種
    • スマートフォンアプリケーションエンジニア
    • アプリケーションエンジニア
      • サーバサイドとか
    • DevOpsエンジニア
      • いわゆるインフラエンジニア
    • ディレクター
    • デザイナー
  • 宣伝
    • 明日からYAPC、3人話します
  • このあとの発表のスピーカー紹介

はてなにおけるアプリケーションエンジニアの役割(id:yanbeさん)

  • 自己紹介
    • はてブ開発チーム所属です
    • 大学院でソーシャルブックマークを題材にしたウェブマイニングの研究に従事していました
      • 直近3年ぐらいのWebの研究でよさそうなのを参考にしつつ、サービスに取り入れてます
      • (当たり前なんだろうけど、すげー・・・!)
  • 開発体制
    • ディレクターが1人
      • 全体の取りまとめ役
    • アプリケーションエンジニアが3人
    • デザイナー一人
  • 用いているコミュニケーションツールについて
  • Trello
    • タスク管理
    • 以前はホワイトボードでやっていたが、東京オフィスとの共有に難があったので
  • Github Enterprise
    • Pull requestでコードレビュー依頼
    • 進捗を追いやすい
  • 検索ミドルウェア・Solrの利用
    • MySQLボトルネックになりがちなところに投入!
    • Like句を全文検索に置き換え
    • 遅くなりがちな処理を事前にやっておく、Solrに置き換える
    • 例1:新着エントリーでURL絞込み
      • URLをLIKE検索(先頭一致)
      • 任意のソート順(新着、Bookmark数順・・・)
    • 例2:タグページ
      • 特定のタグ+ブックマーク数の閾値 or 人気順
      • ただしスパマーのタグは除く など
      • エントリー全文検索
      • マイブックマーク検索
  • 継続的なレスポンスタイム計測
    • 目的
      • サービスレベルを一定に保つため。
    • 手法
      • ログでレスポンス時間を出力、定量的に評価
      • 機能ごとにHadoop
    • 利点
      • 施策をしたとき、どのくらい効果があったかがわかる!
      • 意図せず遅くなった時、グラフの変化したタイミング周辺に原因があるので調査しやすい
    • たとえば、「1秒以内に返せたページの割合」を監視。
  • 施策前後のユーザー行動の変化の測定
    • 「特定機能が使用されたとき」をGAのイベントとして記録、リリースタイミングもメモ
    • (これ大事だなー。)
  • 機械学習を活用したスパム判定システム
    • スパムエントリーの特徴
      • 短時間で3〜5アカウントでブックマーク
      • 新着エントリーに載る
      • 内容は情報商材など
      • ユーザーの目に入る前に排除したい
    • 昔の手法のご紹介なので、今日はもう話しちゃいますが・・・
    • 以前:固定したルールベース
      • 接続元がxブックマーク以上同じ または 〜
    • 欠点
      • 条件が固定なのでスパマーに学習されやすい
      • 誤判定しやすい
    • 現在:AdaBoostアルゴリズムによる学習ベース
      • 過去のスパム判定結果から判定ルールを生成
    • 事前学習
      • スパムを判定できそうな指標をたくさん用意する
        • サポート部に助言を仰いだりも
      • 過去に手動でスパム判定されたエントリーに適用してみる
        • その精度に応じて指標に重み付け
    • 学習結果の適用
      • 重み付けされた複数の指標でスパム判定
    • 実際にうまく判定できた例
      • 新着エントリー経由で自身のECサイトへ誘導しようとしていたエントリー
      • IP変えたり、ブクマ時刻をかえたりしてカモフラージュ
        • ・・・されても判定できてます!
  • B!KUMAガールズの企画と開発
    • 「いままではてブでやってこなかったようなこと」の開発
    • 背景
      • 今までのはてブ、良くも悪くも「はてな的」
      • 既存のユーザーの満足度向上に繋がっても、ユーザー増には繋がらない
    • はてブから特定の層向けにコンテンツを切り出して提供する
      • スマホアプリを切り口に開拓
      • 特定の層に訴求するルックアンドフィール
      • はてブからコンテンツをうまく切り出す仕組みが必要
        • 1ヶ月目:コンテンツ抽出エンジンの研究
          • 手法を機械学習ベースとルールベースを比べたらルールベースのほうがよかった
          • 管理画面でパラメータを指定することでコンテンツを制御
        • 2ヶ月目:デザイナー参加、スマホアプリ開発開始
        • 3ヶ月目:社内リリースとヒアリング後、リリース
    • 結果、App Store・ニュース無料カテゴリ1位/「おすすめ」に掲載
  • おわりに
    • はてなでエンジニアとして働くメリット?
      • 開発チームの裁量の大きさ
        • 少人数のチームで企画から開発、リリース、効果測定まで
      • 古くからネットサービス事業でやってきた蓄積がある
        • B!KUMAみたいな「データの蓄積があること」が前提の動きができる
      • これからもおそらくネットサービス中心
        • 11年ぶれてない
        • これからもインターネットで世の中をより良くしたい

はてなのサービスを支えるインフラについて(id:shoichimasuharaさん)

  • 自己紹介
  • はてなのインフラエンジニアの役割と業務
    • アプリケーションエンジニアの求めに応じたサーバーを用意する
      • 増加する負荷にも対応
      • 新しい技術にも対応
      • インフラエンジニアはアプリケーションエンジニアのあらゆる要求に答えられる必要がある
      • 設計段階でのサーバ構成をまとめて投げられる・それを受け止めるイメージ。
    • 気づきにくい異常もグラフ化して検知するようにしています
    • はてなではPWG(パフォーマンスワーキンググループ)がある
      • アプリケーションエンジニアとインフラエンジニア合同のパフォーマンス評価のための定例会がある
      • この場で情報・スケジュールの共有をしている
    • アプリケーションエンジニアの要求とかサービス全般の状況を把握して改善したり措置をとったりするのがインフラエンジニアの役割
    • はてなのインフラエンジニアは、アプリケーションのレベル・分野まで踏み込むことも
      • それこそコードの指摘とか
  • はてなを支える技術
    • 意外とシンプル
    • MySQL、ロードバランサ、NGINX(プロキシ、ディスパッチャ)、redis, solr、アプリケーションサーバー、ストレージ・・・
    • ホストがどうしても増えるので仮想化してる
      • 物理作業が不要
      • サーバセットアップのコストが最小
      • オペレーションの場所は選ばない
      • セットアップの自動化などでサーバ作成コストをより下げたり
      • 物理仮想あわせて二千何百。
    • 負荷問題
      • 1台あたりのパフォーマンスを通常のクラウドでは成し得ないものにしている
        • SSD, Fusion-ioのioDrive
    • 使用しているミドルウェアの一部
  • 最後に
    • もちろん実際はもっと複雑です
    • 他社が二の足をふむような新しい技術を積極的に取り入れています
      • SSDの導入とか、率先してやりました
    • エンジニアの裁量が大きいので、そういった技術、エンジニアがやりたいと思った技術はどんどん投入していくことができます

質疑応答

  • セキュリティの担保はどうしている?やはり個々のエンジニアが見ていく?
    • 基本的に個々のエンジニアが気をつけて頑張る。
    • エンジニア同士で高め合い、担保し合い。専任の人がいるというわけではない
    • Github Enterpriseでpull requestでレビュー。それで指摘を受けたりもできる。
  • はてなではレビューの文化が根付いている?
    • ベテランのエンジニア・レビューがうまいエンジニアはだいたい決まってて、そういう人に集中しがちではある
    • そういう環境はある。
  • 東京開発センターにリソースをどれくらい割り振るのか?京都からどれくらいの人数がくるのか?
    • 具体的には決まってないが。。
    • ある程度リモートでもなんとかなるかなとも思っているので。
  • 大幅に採用増やしたりする?
    • いきなり10名採用とかはする気はないです
    • まずは片手で収まる程度かなと。
  • 新しい技術を導入するという話に関して、例えばSolr導入したときは、どういうやり取りをした?どういうプロセスを踏んだ?
    • 勝手に導入した?w
    • 有望な技術はよりよいサービスをつくるためという観点からも積極的に取り入れるべきだと考えている
    • プロトタイプを作ってディレクター経由で実際に動いているものを見せて・・・。
    • 撤退容易性、置き換え容易性も考慮します
      • これがMySQLの置き換えだとかのレベルになると、さすがに慎重になります
  • 収益化、どれくらい儲けてる?割合とか。
    • 広告がメイン、ブログの有料プランとかも
    • 具体的なところは秘密です。。
  • 機械学習によるスパム判定、常に動き続けて随時更新している?or手介入で調整?
    • ブクマが追加されるごとに自動的に動かしてると暴走もありうるので、それはやってないです
    • そのときそのとき、予め設定しておいた最適なパラメータで動き続ける
      • (質問者)安心しました〜
  • 新しいサービスを立ち上げたりするときの予算・リソースについての現場の裁量権は?
    • 人以外のリソースは比較的潤沢にある。インフラリソースとか。
    • 一番のボトルネックは人、エンジニア
      • 一人二人でも会社にとって大きなボリューム。なかなか現場まで裁量権の移譲はできていない。
  • なぜGithubはEnterprise?
    • コードの機密性を考慮して。
    • デプロイ時、Githubから直接は非現実的、Enterpriseのプラン利用で。
    • 現場もEnterprise希望だった

最後に、id:jkondoからご挨拶

初めての生・近藤社長! ここは思わず聞き入ってしまったので、これまでのように逐一メモってはないですがー。

  • 「これはおもしろい!」と言ってもらえるレベルまで作りこむこと、それが世界への一番の近道だと考えています。
  • 拠点について
    • 京都。開発に集中できる環境として、とてもいい。
    • 東京。やはり人、情報が多い。ビジネスも多く回っている
    • このふたつ、二元論ではなくて、行ったり来たりするのがいちばんいいなと。笑
  • 今回、この開発センターの開設でもって、いよいよ攻めに入る。
  • 京都と東京の良さをミックスさせて、世界に通用するようなサービスを作っていければ、と。
  • 僕は、「こういうサービスがあったことで生活が豊かになった」というものをどんどんと作って、なるべくたくさんの人の生活を豊かにしたい
    • 例えばブログ。
    • できるだけ多くの人の「ブログを書き始める」という、その初体験の瞬間をはてながプロデュースしたい、という気持ち。
  • 不可逆な変化を自分たちの手で起こしていた瞬間が、世の中の人の生活を豊かにしてきた瞬間ではないか。
  • これからも、生み出し続けていきたい

セミナーを終えて。

最近は、なりを潜めているようにも見えたけれど、 僕の大好きなはてなが、確かにそこにありました。

これからも、いちはてなユーザーとして、応援しています! 本日は素晴らしいお話とお食事、ありがとうございました!!

オマケ・懇親会とかで聞けたこと、聞こうと思ってたけど聞けなかったこと。

  • 聞けたこと
    • (a-know)技術者の確保ってどうですか?
      • はてなの主要言語は現在もPerl
      • やはり、なかなか「Perlの経験者」ということで採用できる例は少なくなってきている
      • そもそもはてなは、経験者を採用するというよりは、自社で育てるスタイルインターンとかもやってます。
    • (a-know)インターンといえば、今年も14名、ブログとかで楽しそうな雰囲気が伝わってきますね!
      • 楽しそうな雰囲気「しか」伝わってない!(ちょっと怒)
    • (a-know)(ひえ・・・)今後もずっとperlなんですか?
      • この先ずっとPerlであり続けられるとは思っていない。
      • かといって一気に刷新するのではなく、影響範囲や対象の利用頻度なども鑑みつつ、随時異なる言語・新しい技術を試行(ちょっとしたツールの開発に使うとか)しています
      • そうすることで、Perl固執しない、技術の素地を保っている感じ。
      • 例えばFWについても、開発には必須だけど、それを使っている限り身に付けられない部分というのもあるので。
        • (このあたり、素晴らしいバランス感覚だなぁ、と思った)
  • 聞けなかった部分
    • はてなの今後の具体的なサービス展開について。
      • やっぱり、多くのユーザーがはてなに求めているのは「思いもよらないもの」「使い手をわくわくさせてくれるようなもの」というようなものだと思うんです!
    • 今後(はてな社内で)使用領域が拡大していきそうだと感じている技術ってなんですか?
    • はてな社内で最もポピュラーな、開発プロジェクトの管理方法ってどんなものですか?
    • アプリ案等はトップダウンで?
      • おもしろい案を拾い上げ、実際に実現するまでのプロセスについて、配慮・工夫されていることはある?
    • ときどきはてなのサービスについてのアンケートが来るんですが、あれってどういう基準で配ってます??
      • 同じアンケートが何度も。。手当たり次第に来てるイメージあります。
      • 正直、あんな配られ方されると、アンケートの回答も拾い上げられてるとは思えない。やるだけマイナス。
      • ポイントがもらえるのはいいけど。。