見出し画像

"今"の技術を導入し、挑戦への制限がない――CTO・池田達郎が語るeiicon独自の開発環境とは

eiiconではたらく様々なメンバーにインタビューする #eiiconなひとびと 。今回はeiiconが提供するプラットフォーム「AUBA」やメディア「TOMORUBA」といった各サービスをシステム面から支えるCTOの池田達郎が登場!数々の言語を使いこなしつつ、複数の企業でリードエンジニアや技術顧問として実績を残してきた池田が、eiiconにジョインした理由から、エンジニアがやりがいを持って働けるeiiconならではの環境について語ってもらいました。

池田達郎 eiicon company CTO
ソフトウェア工学を専攻し2008年IT業界に席を移す。その後、ライブ動画配信・Web/Mobile UI/UX解析・E-Mail配信/解析・ADTech・EdTech・HRTechなど多方面の技術・ノウハウを取得。多用なプログラミング言語とSRE, Frontend, Backend, iOS, Androidを扱う。
経歴:株式会社レアジョブEdTechLab技術顧問/株式会社日本経済新聞SRE/株式会社Gunosy リードエンジニア/株式会社BePROUDリードエンジニア

■何でもチャレンジできる環境に惹かれた

――池田さんがeiiconにジョインされたのが2017年ですが、それまではどのようなキャリアを歩まれてきたのでしょうか?

前職では情報キュレーションサービスやニュース配信を行っているIT企業のリードエンジニアとして、広告配信プラットフォームをメインに担当していました。さらにその前の会社では、Python業界ではパイオニアともいえる企業で開発をしていました。その時は受託開発でしたね。

――受託開発からサービスを提供するIT企業に転職したのは、サービスなどに関わってみたかったからと。

そこは特にこだわりはなかったですね。どちらかというと、Goで開発できる環境があったのが一番の理由でした。当時は毎年新しい言語を覚えていたので(笑)。自分の興味がある言語で仕事ができる場所を探していました。

――その後、eiiconにはどのような形でジョインされたのでしょうか。

eiiconにジョインする前に正社員から個人事業主、いわゆるフリーランスエンジニアになって、これからどうしようかなと考えていました。ある程度は、自分のスキルをいかせる案件に関わりたいなと。そうした中で、eiiconに出会いました。

――eiiconに参画されたときの印象は、いかがでしたか?

やりたいことがあれば自由にチャレンジできる環境だと感じました。当時、eiiconのシステムはScala, Go, Ruby, Python, などを様々な内部サービスで使用していたのですが、私が新しいサービス開発を任された時には、当時eiiconが使用している言語に縛られずにサービス内容にマッチした言語を選択しました。ちなみにその時はメッセージ配信サービスという事だったのでElixirを選択しました。そうした意思決定をエンジニア自身の裁量で決めることができ本当に自由度が高く、必要であればなんでも挑戦させてもらえるなと。

――当時のeiiconのシステムは、池田さんから見ていかがでしたか。

そうですね、大分多言語でやっているイメージがありましたね。Scala, Go, Ruby, Python, Kotlin, TypeScriptが既に使われていて、各サービスの開発言語がバラバラでした。ユーザー画面はScala・Go、管理画面はRuby、集計はPython、配信はElixir, メディアはKotolinといった感じです。インフラに関しては、基本はコードに落としておくのですが、当時はそれが出来ていない部分もあって。これはちゃんとしていく必要があるなと思い、Terraformや当時はAnsibleなどを使用して私がコードに落としていきました。

――システムが多言語で構成されていたことについては?

それ自体は全く悪いこととは思わないのですが、大所帯の開発チームではないので、サービス開発したエンジニアがいなくなってしまうとコードを書ける人がいなくなってしまうんですね。「この言語、誰か書ける?」みたいな(笑)。幸いにも私が全ての言語を書けたので開発が停滞することはありませんでしたが、そういった意味だとリスクもあったのかなと思っています。

画像1

■大規模リニューアル時に、全てのアーキテクチャを刷新

――eiiconのCTOとして意思決定することも多いと思います。判断において大切にしている基準はありますか。

現在システムのベースはしっかりしており、どんな機能を載せても全く問題ありません。全ての情報をコード上に落とすようにしているので、何かあればGitHubで検索すれば出てくるといった具合です。なので基盤が壊れなければ、「何でもチャレンジOK」といったスタンスです。そこは以前と同じですね。

以前はシステムの機能追加・変更をするにしても、言語特性・サービス内容に合ったコード、アーキテクチャにはなっていない箇所が多く仕様理解が難しいためストレスを感じることもありました。しかし、今ではストレスなくコードが書けるように整備はできています。新機能以外はエラー対応も全くなくなりましたからね。

――2020年夏、eiiconが提供するプラットフォームやメディアがリニューアルされました。このプロジェクトに関してお話を聞かせてください。

リニューアルするにあたりシステムはどこまで手を加えても問題ないか確認したところ、「すべて変更してもいい」とのことだったのでこの際に色々と手を加えたいと思いました。データベース・言語・フレームワークからネットワークアーキテクチャに掛けてですね。当時からKubernetesを使用していましたが、一部はまだEC2上で動作していました。全てのサービスをコンテナ上で動作させる決断をしたのもこの時ですね。あとデータベースの設計も変えていきたかったので、スキーマーを変更してデータマイグレーションをして対応するようにしました。バックエンドはGo(gRPC), フロントエンドはTypeScript(Next, gRPC-Web), 管理画面はRuby(Rails)といった、よくある構成になったのもこの時ですね。なので思い返すとほぼフルリプレイスだったかと思います。

そういえば、頑張ってデータベーススキーマを整備しても、その分データマイグレーションコードを自分で書かないといけないので、やる気を出して整備すればするほどタスクが増えていったのはいい思い出です(笑)

並行してバックエンドとフロントエンド開発も進んでいたので、早くAPIインターフェースを決めないといけないので、ここはeiiconで実績の合ったProtocolBuffers(gRPC)にして網羅的にI/Oを決めていきました。そういった対応をリニューアル初期の段階で、かなりのスピード感を持って作り上げたのが大変でしたね。

不具合が起きた時用のシステムロールバックもリニューアル要件に入れている手前、前面にProxyサーバーを立てて新旧システムを切り替えるつもりだったので、ついでと言ってはなんなんですがWebサイトのURLルーティングもイマイチだったので整備しました。なのでやはり気になるところ所総入れ替えですね。

そういった細かい部分までリニューアルの際に対応したんです。こうすることで、サイトの基盤をしっかりと整備できました。ここまでやっていなければ、いまだにストレスを感じながら開発しているエンジニアがいたと思っています(笑)

ネットワーク・システム構成・ソースコードをパット見て理解しやすい、頑張らない、無理をしない、各サービスと言語の特性がマッチした「あっなるほどね!そりゃそうだよね!」と思えるような形にしていきました。

――eiiconはエンジニアにとって、どんな環境だと思いますか。

昔から"今"の技術が使われていて、新しいことにチャレンジするのも制限がない環境です。現在採用しているgRPC-Webは当時はGAになったか、なっていないか、くらいだったかと記憶しています。導入の際には、gRPC-Webの不具合に付き合いながら、色々調べながら進めてきました。

あとGCPのGKEにはASM(Istio)というコンテナネットワーク機能を管理するフルマネージドサービスがあるのですが、AWSのEKSにはそういった仕組みはまだありません。ある意味何もないKubernetesVanilla構成から始まるんですが、その状態からIstio、ExternalDNS、AWSLoadBalancerControllerなどのアドオン・プラグインを導入してAWSリソースをTerraformで別管理することなく、使いやすいように仕上げています。そういった当たり前の部分にも対応しています。コンテナネットワーク管理ツールはKustomize, Helmfileの併用にしている状況ですね。

他にも、フロントエンドではServer-Side Rendering(SSR)にはせずDynamic Renderingを採用しています。SSRにしてしまうとソースコードが複雑になりやすい、せっかくのユーザーPCのリソースが使えなかったりとデメリットが大きいと感じたためです。こうした対応をすればサーバリソースを使わずに済みますからね。

フリー

■"今"の技術知識を深めることができる

――どんなエンジニアであればeiiconにマッチすると考えていますか。

エンジニア自身が何をしたいかによりますね。好きな技術だったり、挑戦したことがある人の方が合うかもしれません。サーバ、SRE、フロント・バックエンドなどに、今の技術を導入しています。言語・フレームワーク・ネットワーク知識も深められますし、逆に身につけている方はその経験をいかせます。

この他にもスキルセットがたくさんあるエンジニアは、すぐに活躍することができるでしょう。今年、来年とチームの人員を増やしながら、学びの機会も作っていこうと考えています。経験豊富な業務委託の開発メンバーもいますので、彼らの経験やスキルも共有していければと思っています。

――エンジニア組織のこれからのビジョンや戦略についてお聞かせください。

昔から唐突もなく、メディアにKotlin+SpringBootを採用したり、Elixir+Phoenixをメッセージ配信に採用したり、制約がない環境なのでこれからもそういったものにどんどん挑戦したいですね。今は昔と違いシステム基盤も安定した上、gRPCを採用しているので、新しいチャレンジがし易くなっています。すでにRustの内部サービスがあるくらいなので、恐らくまた多言語環境に戻る可能性が高いかもしれません(笑)

適材適所にスケール可能な技術を採用できれば良いのかなと思っています。そちらの方が楽しいですからね。

――最後に、2017年から長年にわたってeiiconのCTOとして活躍されている理由などあれば教えてください。

ジョインした当初は、多言語な開発環境だったのに面白味を感じていました。私は当時使われていた言語全てに対応できたので、スキルもフルに活用することができました。恐らく普通は多くても、一つの現場で開発言語は3つ程度しか使わない事が多いのに、eiiconは6、7以上は使っていましたからね。

今はオープンイノベーションという、国も推進している成長分野に関わっていけるのも魅力だと感じています。成長性のあるビジネスに関われるのは、やりがいがあると感じています。


eiicon companyでは一緒に働く仲間を募集しています。少しでも興味をお持ちの方は、ぜひこちらからエントリーください!


いいなと思ったら応援しよう!

この記事が参加している募集