hatena engineer seminar#4 に行ってきた
2/7(土) に表参道のはてなオフィスで開催された hatena engineer seminar#4に行ってきました。 20~30minのセッションが5本あったのですが、印象に残った2本をチョイスして技忘録。
セミナーの内容は こちら
Goで書かれたmackerel-agentのOSS化や自動化にまつわるあれこれ
- id:Songmu / @songmu
昨年秋頃にカヤックからはてなに転職された id:songmu さんの発表。スライドはこちら
mackerel
- サーバサイドは Scala
- エージェントは Go
日本製としては珍しいモニタリングサービス。
入社してからやったこと
- テストをオープンに
- ビルドをオープンに
- リリースをオープンに
mackerel-agent
- Goなので、マルチプラットフォーム
- Windowsでも一応動く(公式サポートはされていない)
- シングルバイナリ
- セットアップが容易
- 常駐プロセスのプログラムに向いている
なんでOSSにしているのか?
ユーザがHACK出来る余地をのこしておく
- エンジニア的には嬉しい
- SaaS系でも結構あること
- Travis CI
- コンテナのCookbookを外部公開している
- github-service
- service連携部分を公開されている
- Travis CI
ソースをオープンにして第一段階クリア
パッチ受け入れ
- 放置してはいけない
- プルリクは公平に
- レビュー体制大事
- CI整えておけば、レビューややりとりがラクになる
CI
- テストコケてたら直してといえる
- パッチのAccept基準も不明瞭になる
- SaaSを使う
Travis CI
- 使い慣れている
- tagをトリガにしてCIが動く
mackerel-agentのCIでやっていること
- go vet/golint
- フォーマットの検査
- 些細なコーディングスタイルの違いで議論したくない
- go test
- テスト実行
- coverage
- Coveralls
- cross build可能かを検査
- Travisのほかに社内Jenkins
Windows対応
- AppVeyorでCI/CD
- テストとインストーラー作成
レビュー体制
- しっかり作っている
- agentは社内の誰かがレビューする
- 業務時間内の社内リソースをどう割り当てるか
- 気づいたとき
- あまり仕組み化できていない
mackerel-agent plug-in
- たくさんある
リリースプロセスをオープンに
- make release コマンドでリリース用のプルリクを作る
- バージョンのBump Up
- リリースノートの作成
- release merge commit に対してTravisが自動でtagを作る
- tag を打たれた commit に対して更にTravisがビルド成果をリリースノートに貼る
- これ、いい
ここ、近いことはやっているのですが、もうちょい改善できそうなので、詳しく仕組み知りたいと思いました。
仕組みはPerlで
- releng
- リリース用のプルリクをつくる
- autotag
- Travis側から実行する
- tagを作成
テストもしっかり
課題
まとめ
はてなブックマークの新機能における自然言語処理の活用
id:skozawaさんによるはてブの「トピック機能」の裏側のお話でした。結構刺さった。スライドがまだ公開されていないっぽいので、公開されることを期待。
はてなブックマークでの自然言語処理
トピックページ
- 関連性の高い話題の記事をまとめたページ
要望は前からあった
- インターネットで盛り上がっている話題を知りたい
- ホットエントリでの同じ話題のエントリ重複を避けたい
トピック生成
- クラスタリング精度が低い
重要語抽出ベースのアプローチへの変更
- 検索技術: Elasticsearch
トピック生成の流れ
- トピック作る
- 関連するエントリを集める
- トピックのマージ
タイトル生成
- 重要語抽出
- 重要文抽出
トピック生成
トピックとは
- キーワードの集合
トピックモデル
- PLSI
- LDA
Elasticsearchでトピック生成
- 重要語を取得出来る機能がある
スコア計算方法
- jlh
- mutual information
- chi square
- google normalized
- JLH
- 出現割合
- 話題の単語のスコアが高くなる
タイトル生成
- トピックに含まれる記事は同じ話題
- 各記事のタイトルはある程度しっかりしている
- いずれかの記事を使うとうまくいく可能性が高い
- ただ、闇雲にとってもダメ
- 重要文を利用する
- タイトルから重要語を抽出
- 係り受け関係に基づく文圧縮
まとめ
- Elasticsearch
- 自然言語処理
- トピック機能
所感
hatena engineer seminarは2回目の参加でした。今回は
- mackerelでの自動化あれこれの話
- はてなブックマークとはてなブログの開発環境の話
- 自然言語処理で作ったはてなブックマークでのトピック機能の話
- iOS/Swiftの話
- TypeScriptとMVPパターンの話
というバラエティに富んだ内容で、非常にインプットが多かったです。中でも以下の2つはイロイロな面で参考になる話が多く、反芻して取り込んでいきたいと思いました。
id:songmu さんのmackerel での自動化あれこれの話
- いまの自分のミッションに結構マッチしている
- github-service などからOSSに入っていくのは面白そう
- 自動化系スクリプトでもテストを書く
- 言語はやはり揃えた方が良い
- いまの一休では、自動化系スクリプトは windows batch, Javascript, Ruby 等、散らばっている
id:songmu さんの自動化・オープンマインドには非常に共感出来る部分が多くて、「こういう文化を作っていきたい」そのために、自分のスキルや考えをもっともっと伸ばしたいと思う内容でした。
id:skozawa さんの自然言語処理の話
- 個人的に興味深い領域
- いろいろなサービスで活用の仕方を考えられそう
- Elasticsearchが使えそう
id:skozawa さんの内容は、今年自分がチャレンジしたい領域にマッチしそうな話だったので、ファーストインプットとしてとても参考になりました。
また、休憩時間に id:stanaka さんとお話していて、面白そうなお話を頂きました。こちらについては、話が進められそうになったタイミングで発信したいですね。
はてなさんは東京オフィス(表参道)と一休オフィス(赤坂見附)と近いので、交流する機会を作っていきたいと思いました。
ありがとうございました :)