Abstract
2014年9月に正式リリースした、はてなのサーバー管理・監視サービスであるMackerelでは、サーバーサイド言語にScala、そして、ユーザーがホストにインストールする監視agentやそのpluginはGoで書かれています。
このようにプロジェクトにおけるメインの開発言語はScalaとGoですが、部分的にはPerlやRubyも使われてもいます。もちろんクライアントサイドでJavaScriptも使っていますし、TypeScriptを使っている部分もあります。このようにMackerelはひとつのプロジェクトでありながら多様な言語が使われているというユニークな特徴を持っています。
これは面白がってたくさんの言語を使っているわけではなく、それぞれ必然性を持ってそれぞれの言語を選択しています。それらの言語がどのように適材適所に使われているか実例を交えながら紹介したいと思います。
例えば、Mackerelの中でPerlはどこで使われているのでしょうか?それは自動化スクリプトであったり、ツールであったり、テストスクリプトだったりします。別言語のプロジェクトであっても、リポジトリにおいておくちょっとしたツールを書くのにPerlは非常に適しています。特に優れた特徴として、スクリプト自体に対してテストを書きやすいことが挙げられます。
そして、生粋のPerl Mongerである私自身がMackerelに携わってScalaやGoを書く中で、Perlでの知見がどのように生きたのか、また、ScalaやGoで得られた知見をどのようにPerlにフィードバックしているか、いこうと考えているか、そしてエンジニアの私自身にどのような変化があったのかについてお話ししたいと思っています。
実は、ScalaとGoは両方Perl Mongerにとって馴染みやすい言語だと思います。
ちょっと待って下さい。ScalaとGoは共にPerlと異なる静的型付け言語であり、それでいて正反対の性質を持った言語です。それなのになぜ、Perl Mongerにとってそれらの言語が馴染みやすいのでしょうか。それについてはトークの中でお話したいと思います。
また、Mackerelはmackerel-agentというユーザーがホストにインストールする監視エージェントやその他のツールがOSSとして公開されているという面白い特徴を持っています。それらは何故OSSなのでしょうか?
そして、これらをOSSとして運用していく中で、私自身がOSSプログラマーとしてCPANに多くのコードをリリースしてきた経験が役に立つ機会もありました。それらについてもお話できればと思います。
全体として以下の様なトピックを取り上げようと考えていますが、他にも聞きたい話などがあれば盛り込みたいと思いますので是非お知らせください。
- Mackerelのプロジェクト構成
- MackerelにおけるScala/Go/Perl/Ruby/TypeScript
- それぞれの言語をどのように適材適所で使っているのか
- Scalaにおけるリスト処理や関数の扱い、それらのPerlとの類似点
- Goの型の考え方や設計上の割り切りや節度、それらのPerlとの類似点
- Perl開発の知見がどのようにScalaやGoで役立ったか
- GoやScalaの文化でPerlに持ってくると良さそうなもの
- 小回りの効く自動化推進言語としてのPerl
- 自動化の仕組みをちゃんとテストする
- 自動化をブラックボックスにせず、負債化しない仕組み
- mackerel-agentをOSSにしている理由
- プロジェクトコードをOSSにする上での運営ポリシー
- Perlで書かれたagentリリースの自動化・可視化の仕組みについて
Talk Details
Venue | トラックC (703) |
---|---|
Starts On | 2015-08-22 10:00:00 | -pc.html
Talk Category | Applications |
Language | Japanese |
Interpretation (En→Ja) | NO |
Slide Subtitles | Japanese |
Talk Duration | 60 minutes |
Material (Difficulty) Level | Beginner |
May we take your photo? | allow |
May we record your talk? | allow |