Takeshi Arabiki

自己紹介

SRE とデータエンジニアリングとアプリケーション開発を足して 2(not 3!)で割ったような役割のチームでテックリードとプレイングマネージャーを足して 2 で割ったようなことをしているエンジニア。主に Rails / AWS / MySQL / Presto / Fluentd / Cassandra / Kafka。R言語上級ハンドブック共著者。

関連 URL

主なスキル

Rails

そこそこの規模の Rails アプリケーションの開発に 8 年程度従事している。ただし、Vue.js や React.js 等、モダンな JS フレームワークはまともに触ったことがない。Vue.js は多少コードレビューができる程度。Rails とは言っても、Rack アプリケーションよりもバックグラウンドジョブ等のアプリケーション開発が多い。

また、大半の不安定な system spec は直すことができる。
cf. Rails アプリケーションの不安定なテストを撲滅したい 〜system spec のデバッグ方法とテストを不安定にさせる要因〜

Ruby

Ruby 歴 8 年ぐらい。Ruby コミュニティには全然顔を出さないので、その界隈で話題になっている最先端な情報は把握していないが、一番早く書ける言語であり、OSS で不具合を見つけたら Pull Request を送るだけのことはできる。

以下、特筆すべき Pull Request

ridgepole は PR を何個も出していたら、かつての同僚ということもあってかコミット権をもらえたが、最近は全然コントリビュートできていない。

いくつか自作の gem もある

Ruby のアプリケーションを運用する上ではメモリ管理周りの知識も必要なので、その辺もそこそこ理解しているつもり。

MySQL

MySQL がどのように動いているかや、パフォーマンスを出すための SQL のチューニングやインデックスの張り方についてはそこそこ詳しいはず。以下、主な執筆記事。

AWS

4 年以上 ECS を使っているので、ECS と EC2 のノウハウはけっこう持っているはず。

あとは S3, SNS, SQS, Lambda, Route53, EMR, EventBridge 辺りを組み合わせたアーキテクチャだったらすぐ構築できると思う。

Savings Plans, Spot instance を使ったコスト削減や、アーキテクチャの改良によるコスト削減も得意。

Datadog

監視サービスを CloudWatch Alarm から Datadog に移行し、実運用に乗せるところまでを行った経験があるので、Datadog の辛いところをどう解消したかなどは色々語れる知識がある。ただし、Datadog は監視用途にしか使ってないので、APM, Logs 等他のサービスについてはノウハウがない。

Terraform

AWS のリソース、Datadog のモニター等を Terraform で管理した経験があるので、Terraform を使ったインフラ構築等はサクッとできるはず。

Fluentd

そこそこの規模のデータを扱う aggregator の運用経験が 4 年以上あり、運用で問題が起きた時にソースコードを読み解いて Pull Request を出せる程度には理解している。

Pull Requests の一覧

特に、v0.14 の安定バージョンのブロッカーになっていたバグを直したのは自分である。

We got a bug report about output plugin deadlock with several plugins. @abicky fixed this bug and several users tested the patch on their environment. Many thanks for working on this issue.

cf. Fluentd v0.14.22 has been released | Fluentd

Fluentd 入門 〜運用に必要な基礎知識〜 はその時の産物。

Presto/Trino

4 年以上は自分が中心になって運用した経験があるので、安定化やパフォーマンスチューニングに関するノウハウは国内だとけっこう持っている方だと思う。Pull Request を送るほどの Java の知識はないが、connector にちょっと手を入れることはできるし、挙動を理解する際にどの辺のコードを読めば良いかは主要部分に関しては把握している。

Amazon Elastic MapReduce (EMR) ではじめる Presto/Trino 入門のように入門者向けの記事や、Presto における Service Discovery の動作原理のように運用者向けの記事も執筆している。

対外発表には次のようなものがある

Go

Go で書かれているサービスをコードレビューすることがたまにあるのと、簡単な処理であれば Go で書くこともある。次のように、Go の習得も兼ねて Go 製の運用ツールの開発経験もある

ただし、普段読み書きする機会はほとんどないので、Ruby に比べると開発速度はかなり劣る。

Java

書くことはほとんどないが、Presto, Cassandra, Kafka, Kafka Streams 等、運用している OSS のコードは挙動を理解するために頻繁に読むことがあるし、普段 Kafka Streams アプリケーションのコードレビューもしている。
以下、Java で書かれたソースコードを読んだりブレークポイントを設定したりして挙動を理解した例

BigQuery

パフォーマンスが出ない場合やメモリエラーが起きた時に原因を調査して解消したり、数百行規模の分析クエリを書いて複雑めの集計を行うこともできる。

Kafka

2 年以上 Kafka broker を運用しているし、ruby-kafka のほぼ全てのコードを読んだ上で ruby-kafka を使った producer アプリケーションも consumer アプリケーションも書いたことがあるし、Kafka Streams をソースコードレベルで理解した上で Kafka Streams アプリケーションのコードレビューをできるし、librdkafka もトラブルがあればソースコードレベルで調査できる。

また、ruby-kafka には積極的にコントリビュートしている

Pull Requests の一覧

Cassandra

3 年以上の運用経験があり、書籍を読んだりソースコードを読んだり手元で動かしたりして色々ノウハウが溜まっている。

言語

日本語

ネイティブ

英語

カランメソッドを全ステージ修了したり、2 年以上、週 2 回 1.5 時間の英会話を続けているので、1 対 1 であればある程度コミュニケーションが取れる(元々英語は苦手なので、勉強している割にはできない方かもしれない)

  • TOEIC L&R 935 (2021 年 8 月)
    • Listening 455 (CEFR B2)
    • Reading 480 (CEFR C1)
  • duolingo english test 105 (CEFR B2)

執筆歴

登壇歴