Treasure Data インターンで最高の夏過ごしてきた #td_intern

8月1日から9月30日の間,Treasure Data Summer Intern 2016に参加していました. 他のインターン生2人からの強烈なプレッシャー (強烈なプレッシャー1強烈なプレッシャー2)に負けたので僕もインターンブログを書きます.

tl;dr

すごいメンターの元 Fluentd の開発してると何故かめっちゃお金がもらえるインターンでとにかく最高

なにやってたの?

f:id:ganmacs:20161007102854p:plain キュートなロゴ

Fluentd というソフトウェアの v0.14 向けの機能を,メンターの @tagomoris さんの元,開発しました.具体的に行ったことは以下のようになります(スライドからそのまま持ってきただけですが).

  • 6 features
    • Counter API (Not merged yet)
    • Data compression in buffer plugins and forward plugins
    • New out_file plugin only for section
    • A CLI tool to read dumped event data
    • Log rotation
    • filter_with_time method in filter plugins
  • 2 enhancements
    • Optimizing multiple filter calls
    • Add event size to options in a forward protocol
  • Some small tasks

インターン期間は2ヶ月あったので,最初の1ヶ月は Fluentd の開発スタイルに慣れようということで小さめの機能(Counter API以外のタスク)をいくつかをやって,最後の1ヶ月で大きい機能(Counter API)を1つ をやりました.

一応雑に機能を紹介すると,

Counter API
マルチプロセスでfluentd動かしたとき,メトリクスとるのに使えるやつ

Data compression in buffer plugins and forward plugins
データを圧縮して操作できるようになり何かとリソースを節約できるやつ

New out_file plugin only for section
secondary セクションのみで使えるシンプルな out_file プラグイン

A CLI tool to read dumped event data
送信に失敗してダンプされた MessagePack形式のデータを読めるようなるやつ

Log rotation
Fluentd で log rotation できるようになるやつ

filter_with_time method in filter plugins
filter pluginで time をいじれるようにするやつ

Optimizing multiple filter calls
複数filter使用したときに高速化するやつ

Add event size to options in a forward protocol
eventのサイズつかって,内部の無駄な処理最適化するやつ

それぞれの説明を詳しく書いてもいいんですが長くなりすぎて誰も読まなくなると思うので,興味のある人は僕に会ったときにでも聞いてください(スライドを読んでもいいですが説明がアレ).

以下が最終発表スライドです.発表は英語でするはずだったんですが,僕のときだけUSの人たちがいなくて日本語で発表OKだったので,日本語が使えることに感謝しながら日本語で発表しました.

感想は?

まずは,Fluentd がいろいろ大変でした(語彙力).そもそも1回くらいしか Fluentd 使ったことなかったのでどうやって使われているか調べるところからはじまり,「あれ,これやばくない???」とか思いながらインターン初日を過ごしていました. @tagmorisさんのスライドにも書いてありますが,Rubyの黒魔術をふんだんに使って書かれていたので非常に読み応えがありました. コードを読む上で,Fluentd ソースコード完全解説 は参考になりました.結構古いので変わってしまったところもありますが,全体の流れを見るにはちょうどよかったです. キッっと睨んでるとわかってきたので大変なのは慣れることだなって感想になりました.

あとは,一番大きい機能の Counter API を merge まで持っていけなかったことが心残りです. 設計をしてレビューのフェーズで大量に時間を使ってしまったのがよくなかったなって感じです. 今の自分ができることと,できないことがはっきりしたのでそういう意味では良かったかなとおもっています.

前々から興味のあったミドルウェア開発を経験できたことは(しかもFluentdで,しかもTDで)とても幸運で,最高の経験だったと思っています. 開催されるかしらないですが,もし来年も開催されならとりあえず出してみると意外とインターン行けるかもしれないので,来年も学生の皆様はぜひ.

まとめ

特にまとめることもないですが,とても刺激的なインターンだったということが伝われば幸いです. 周りは全員超すごい人ばかりだったので,「(業務中自分の力の無さに)おちこんだりもしたけれど、私はげんきです。」という感じです. 社員のみなさん,同期の2人にはとてもお世話になりました.ありがとうございました.

付録1(愉快な仲間たち)

僕の他に2人,インターン同期がいました. 彼らが先に書いたブログがあって僕のより数倍いいのでそちらもぜひ.

@amay382 iPhone7とiOSのことをめちゃくちゃ煽る人(年下なのに優秀でつらい)

トレジャーデータでインターンしてた話 #td_intern - 水底

@takuti オタクかヤンキーかで言えばオタクの人(英語が引くほどうまい)

Treasure Dataインターンにみる機械学習のリアル #td_intern | takuti.me

2人とも機械学習(系?っていうの?あってる?)をやってたので,「インターンでは何やるの?」って聞いたんですけど,丁寧に教えてもらった割に何言ってるよくわからず「すごそう」くらいしか感想がなかったのできっとすごいんだろうなって思ってました.

付録2(食)

牡蠣が苦手だった僕も牡蠣が食べられるようになりました。

以下、 ログの重要性について真面目にディスカッションしていたときの図です!!!! f:id:ganmacs:20160930214523j:plain f:id:ganmacs:20160930194731j:plain f:id:ganmacs:20160930200710j:plain f:id:ganmacs:20160930214021j:plain