Go ahead!

Memoization for Everything

Prestoソースコードリーディング #1

| Comments

Presto ソースコードリーディング #1のATND

@tagomorisさんに場所を確保してもらって,LINEで第一回をやりました.

開催の流れ

CROSS辺りでPrestoのソースコードリーディングしたいね,という話が出て, じゃあ俺が立てるので場所はLINE辺りで〜というその場のノリで決まった.

どうせ10人前後だろうということでかなり適当な感じで募集とかやってたんだけど, 応募人数が40人越え,当日参加が25人前後くらいだったので,予想より多かったかなという感じ.

やったこと

全体の概要

俺が軽めにやりました.Prestoの生まれた背景とか,依存している主要なライブラリ, @frsyukiのスライドを拝借しての主要なクラス群の紹介,現在サポートしている型, Slice使ってのデータの持ち方とか.後,最近の変更周りも少し紹介した

HTTPレイヤー

@tagomorisさんが担当で,クライアントが最初に到達するHTTP APIの /v1/execution/v1/statement 周りの 処理の話.ソースコード的にはpresto-server.この辺もairliftにがっつり依存しているので, パフォーマンスが気になるなど真面目に読みたい人はairliftも読みましょう.

Execution

当日のgist

@oza_x86が担当.Coordinator内部でPlanやStageが出来るまでの流れ, Workerで処理がどう進むかとかその辺の話.SplitsやそれぞれのRunnerの処理, 時間が掛かっているタスクの優先度下げるとか,工夫がいくつか見て取れた感じ.

感想

適当にやったわりにはそれなりに上手く進んで良かった.

第二回は,shot6さん,ashigeruさん,feeblefakieさん辺りが担当になってくれるかも? という感じです.またソース読みつつあーだこーだ言い合いましょう.

Fluentd v11 at Tokuben

| Comments

@特勉というイベントに呼ばれたので,Fluentd v11について発表してきました.

今現在見えている機能群について一通りその背景とか,v10ではどうだったのかを絡めて話したので,上のスライドだけ見ても少しわかりにくいかもしれません.新しい機能の確認みたいな感じで眺めて貰えると.

特勉は今回はログ・データ解析がテーマでしたが,色々とテーマを変えて定期的にやるようなので,随時チェックしておくと良いと思います.

その後…

Fluentd v11 なんてなかったんだ

で,実はこの発表の次の日にTwitterで色々とやりとりがあり,上記のスライドに書かれているいくつかの機能は,v10に取り込まれる可能性が高いです.というか,v11そのものが消える可能性は普通にあります.

Fluentdそのものの改善では色々と考えていることはあるので,定期的にチェックして頂けると!後「v10でこういうところが使いにくい」とかあると,開発陣にフィードバックして貰えると助かります.

それでは!

CROSS 2014

| Comments

CROSS 2014というイベントがあり, 分散処理システムCROSSというセッションのオーナーをやってきた.

分散処理システムCROSS

元々はログ収集で1セッションどうか,という話だった.が, もうFluentdとかの話は色々な所でやってるし,ここで1時間やってもあんま成果はないだろうということでやめた. そもそも日本でFluentd以外のログ収集プロジェクトで深い話を出来る人は希で,探すのがつらい.

その変わり分散処理でも話が来ていたので,そっち側でどうにかやることにした. 分散処理だとなんかアルゴリズムとかそっち系の色が強くなりそうなので,とりあえずシステムをつけた.

メンバ

@oza_x86,@kuenishi,@shot6の三人にお願いした.時間を作って頂いてありがとうございました! 人選に関しては,少し前にTwitterでつぶやいたけど,以下のような感じで選んだ.

  • 分散処理システムを研究・開発している人
  • 分散処理システムを開発・販売している人
  • 分散処理システムを運用・サービスとして展開している人
  • 分散処理システムの基盤を運用・提供している人

事前打ち合わせの飲み会をやったけど,自己紹介して結局はなんか適当に喋りましょうということに.

当日

セッションが始まる前に,Hadoopやデータベースとかの入門的な話には多分ならないし, 他に面白そうなセッションがあるので〜,と誘導したにも関わらず,なんか結構人が入ってて驚いた!

色々と予防線は張ったものの,個人的には1時間それなりに話題は出せたんじゃないかと思ってます. RaftやPaxosのような合意周り,Jepsenなどの分散処理システムの検証ツール, Hadoopやその他のシステムの運用的な話,などなど.
分散処理システムにおけるモデルの検証とかはやはり鬼門なので,今後色々と勉強したい所.

しかしモデレータというのは色々と疲れますね…

その他のセッション

エンジニアの恋・愛・セックスのDevOps、ホントのところどうしたらいいの

間に合わなくて参加出来なかったが,かなり反響があったセッションっぽい. 後で録画を見る.

ぶつかり稽古

セッションオーナーが登壇しないという酷いセッションだったw けど内容そのものは,他社のレビュースタイルとか色々と知れて面白かった.

アンカンファレンス

Fluentd v11の話で登録したけど,雨の予報でも出社しないと噂の某モリスさんが一人でセッションの時間全部使い切り, 何も話せなかった.

まとめ

去年と違ってRed Bullガールがいないのが残念だった!来年は期待したい.

全体としては,Tシャツや雑誌の新刊も貰えたし,何人かリアルで合えたしで,色々とドタバタしたけど楽しかったので良し.皆さんお疲れ様でした!

"CROSS 2014 photo"

2013年の振り返り

| Comments

転職したのもあり,色々と取り組むものが増えた年だった.

D言語

ちょっと割ける時間が減ったのもあり,全体的にD言語のコードを書く量は減ったかなと. 自分が欲しかった小さなライブラリはいくつか書いたりしたけど, 他にも書きたいのがあるので,2014年はガッツリ時間を取りたい.

その変わり,D言語の日本語書籍の出版に携わったりと,その他の活動はちょくちょくやった.

Fluentd

会社の関係もあってメインメンテナ的な立場になった. Fluentdそのものの機能開発・メンテナンス含め,MLでの対応,イベントでの発表など色々やった. 2014年は,Windows対応にv11,それにtd-agentのRubyのバージョンアップなど,色々と課題は見えてたり.

MLに関しては,今かなり俺とkiyoto-sanの二人の独壇場な感じになっているので, もう少し他の方の協力も欲しいと思ってたりします(その方が盛り上がっているように見えて良い).
特に日本は早期にヘビーユーザがついて色々と記事が増えたのもあり,他の国の人達より使いこなしているユーザが多いです. なので英語の練習も兼ねて,簡単な質問にでも答えてくれる人が増えるといいな,と思ってます.
日本の人はTwitterで質問し,海外の人はMLで質問する,というのがOSSやってて思う傾向ですね.

あと,Treasure DataではFluentdの開発者を募集しているので,興味のある人は応募してみるといいかもしれません!

さらに,年末発表したモニタリングシステムのβユーザも随時募集しているので, 興味のある人は @repeatedly にでも連絡して貰えればと思います.

発表

とりあえず覚えている分だけリンクを貼ってみた.会社に関しての大きめな発表が増えたなと.

発表以外でも色々なイベントに参加して,FluentdやTDに関しての要望とかを聞いたりしていた. これらで得たフィードバックは,ちゃんと吟味して取り込んでいきたい.

まとめ

ざっと振り返ってみた. Fluentdに関しては,v10はもうコアでほぼやることがないので,次はv11が中心. 中心とは言っても,安定版として正式にリリースするのは当分先になる.多分.

2014年もOSS含め対外的な活動は積極的にしていきたいし,色々な人達と交流を増やして行きたい所.

今後も宜しくお願いします :)

D言語の現状

| Comments

「FacebookがプロダクションでD言語の利用を始めた」ことに関する記事が少し話題になってます.で,これだけだとD言語が他の言語のようにプロダクションreadyと勘違いする方もいるかもしれないので,今の現状について書いておきます.

この記事の一言まとめ

手軽にプロダクションで使えるわけではありません!

詳細が知りたい方は以降をお読みください.

今回の話

FacebookのAndreiはTDPLという本を出した,D言語界隈でも主要なコミッタです.その一方,C++界隈でも有名な人物で,そういう人物がついにC++をやめてプロダクションでD言語を使った,というのが一つの大きなニュースです.

また,Facebookにはこの記事を書いたBenなど,D言語を使えるエンジニアが他にもいます.

プロダクションでつかえるのか?

簡単に言うと,「品質的には問題が無い,が今広まってる言語ほど楽ではない」です.JavaやRuby/Python/PHPなどWebで広く使われているような言語のように,たくさんのライブラリがある訳ではありません.

Dubというパッケージマネージャが最近出てきましたが,登録されているライブラリはまだ多くなく,なければ自分で書く必要があります.また,ライブラリにバグがあっても他の誰かが報告してくれるほどコミュニティも大きくないので,その辺も気をつける必要があります.まぁ大抵github/bitbucketなので,今時のエンジニアには楽だとは思いますが…

今プロダクションでD言語を使っている会社はFacebook以外にももちろんありますが(広告配信,ゲーム,社内システム,Webサーバなど),そういう会社は大抵D言語でライブラリを書いてるような精通した人物が開発陣の中にいるのが現状です.まぁ,メジャーではない言語ではよくある光景だと思います.

プロダクション以外だと,研究とかでつかっている人は増えている感じがします.数値計算系,言語処理系,自然言語処理系,などなど書きやすさとパフォーマンスのバランスで選ばれているようです.

互換性

D言語を使ってない方からよく「D言語は互換性を維持しないからクソだ」という意見を聞くのですが,これにはいくつか理由があります.

シェアがない

当たり前ですが,シェアがない言語が律儀に互換性を維持してリリースすることのメリットはほぼありません.ライブラリも多くない言語では,互換性がなくなって困るライブラリはほとんどなく,ライブラリ開発者もほとんどが言語仕様の議論に参加しているので,基本問題は起きません.

コミュニティの方向性

上と関わりがありますが,今コミュニティとして,互換性よりも言語を良くしよう,という流れの方が強いです.

  • この機能あった方がライブラリとかアプリが書きやすい
  • 新しい機能でよりよいAPIが出来たのでこっちに移行
  • この機能は誰も使ってないから削除
  • この機能使うとこういう危険なコードになるので削除

みたいな.これは今後プロダクションでの利用が増え,「互換性は保った方がいいんじゃないか?」という開発者が増えれば,流れは変わると思います.この辺はPythonやScalaなど,今時の言語と同じような感じかなと.

今後に備えて,「bug fixリリースも考慮した開発フロー・バージョニングにした方がいいんじゃないか?」という提案はあがったりしてます.

開発の流れ

現状はD2しかメジャーバージョンがないんですが(D1のメンテナンスは終了),これが開発版/安定版みたいになってます.昔と違って

  • リグレッションがあったらリリースしない
  • リリース前にβ版を公開してフィードバックを得る
  • 削除/変更するAPIは数ヶ月以上前から警告が出る

などなど利用者がいきなり非互換にぶち当たるようなことが起きないように配慮はされてます.D言語はコンパイル時にシンボルやシグネチャをチェック出来る機構があり,ライブラリ開発者としても,多少の変更があってもそれで対応出来てます.
なので,互換性に関しては少し寛容なのかもしれません.

「D2に入れるには大きすぎるかもしれない変更はD3で議論しよう」という流れになってるので,D2で今後パラダイムに関わるような大きな変更は起きないとは思います.

まとめ

記事で言及されている通り,言語,ライブラリ,開発環境,などなど昔に比べて成熟してきているのは確かですが,ご利用は計画的に,というが本当の所です. ポジション的にはHaskellやGoに近い所にいて,メジャーとは言い切れないがパワーユーザが使っていて,コミュニティが大きくなりつつあるという感じです.Facebookはこれからも利用箇所を増やすでしょうし,海外では他の事例もちょくちょく出てきそうです.日本は…よく分からんですw

とはいえ,日本はアクティブなコミッタが3人いたりと,実はD言語をする環境としては恵まれていたりしてます.困ったら #dlang をつけてTwitterでつぶやくと,誰かが助けてくれるかもしれません.日本語情報については,このtweetを参考にしてください.

追記

@yasei_no_otoko さんがエディタ・IDEの現状について書いてくれました