Takeshi Arabiki

自己紹介

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

関連 URL

主なスキル

Rails

そこそこの規模の Rails アプリケーションの開発に 2013 年 12 月から従事している。Rails と言っても、Rack アプリケーションよりもバックグラウンドジョブ等のアプリケーション開発が多く、Vue.js や React.js 等、モダンな JS フレームワークは業務で触れることはほとんどない。

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

Ruby

Ruby は 2013 年 12 月からメインの開発言語。Ruby コミュニティには全然顔を出さないので、その界隈で話題になっている最新の機能には精通していないが、一番速く読み書きできる言語。実際 OSS で不具合を見つけたら Pull Request を送るだけのことはできる。

以下、特筆すべき Pull Request

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

いくつか自作の gem もある

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

MySQL

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

AWS

2017 年 8 月から ECS on EC2 のアプリケーションの運用をしているので、ECS と EC2 のノウハウはけっこう持っているはず。

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

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

Datadog

監視サービスを CloudWatch Alarm から Datadog に移行し、実運用に乗せるところまでを行った経験があるので、Datadog の辛いところをどう解消したかなどは色々語れる知識がある。以下はその例。

ただし、Datadog は監視用途にしか使ってないので、APM, Logs 等他のサービスについてはノウハウがない。

Terraform

2017 年 8 月から AWS のリソース、Datadog のモニター等を Terraform で管理しているので、Terraform を使ったインフラ構築等はサクッとできるはず。

Fluentd

そこそこの規模のデータを扱う aggregator を 2017 年 8 月から運用しており、運用で問題が起きた時にソースコードを読み解いて 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 年以上の運用経験があり、書籍を読んだりソースコードを読んだり手元で動かしたりして色々ノウハウが溜まっている。

マネージメント

2018 年にチームリーダーになり、2019 年に開発組織の方針によりチームリーダーという役職を明示的には置かなくなったが実質チームリーダーのようなことをしていた。2021 年から正式にチームリーダー(ピープルマネジメントはしない)となり、2022 年からチームマネージャー(チームリーダー + ピープルマネジメント)となった。
マネージメント関連の公開資料としては例えば次のようなものがある

言語

日本語

ネイティブ

英語

CEFR B2

カランメソッドを全ステージ修了したり、2020 年 7 月から週 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)

執筆歴

登壇歴