見出し画像

人材流動性を高めます (概ね6年ぶり3回目)

(5/20 に FAQ を追記しました)

こんにちは、もしくははじめまして。KOMIYA Atsushi です。

バックエンドエンジニアとして 6 年弱勤めた SmartNews を離れて新しい挑戦をしてみようと思い立ち、この記事 (言い換えるならば履歴書というか職務経歴書というか求職票?) を書いています。端的に言えば「転職先を決めずに退職を決意したので、オポチュニティください!」というお話です。「ちょっとバックエンドエンジニアを探しているんだよねー」みたいなことを考えていらっしゃる採用担当の方がおりましたらご笑覧いただけますと幸いです。

前職含めたこれまでの職務経歴などをざっくりと知りたい方は LinkedIn を、また普段どのようなコードを書いているのかを知りたい方は GitHub を、ここ最近のイベント・勉強会での登壇でどのような話をしているのかを知りたい方は SpeakerDeck を、普段取り組んでいる技術や興味ある技術を知りたい方は ブログ をご覧いただくとして、この記事ではまず現職でやってきたお仕事や今現在の自身の技術スタックについて多少詳しく記していきたいと思います。

その後に (paywall の向こう側になりますが) 今回の転職活動に関しての諸々を記載していきます。

現職でのお仕事その1: 広告事業

SmartNews には 2014 年 8 月に入社しました。ちょうど事業立ち上げの準備をしていた広告事業に当初から関わり、4〜5 年ほど広告事業のバックエンドエンジニアとして仕事をしてきました。

主に運用型広告の広告配信サーバ (Java) を実装する開発者の一人として、以下のようないわゆる「アドテク」を支えるお仕事をしてきました。

・アドテクに関する知識もリファレンスコードも何もない状態から先行事業者や論文などを参考に、運用型広告の配信の仕組みと価格決定メカニズムを考える
・広告オークションのあれこれを広告配信サーバに組み込む
・配信最適化を実現する各種機能 (クリエイティブ最適化や oCPC 配信) を考案して組み込む
・機械学習を利用した各種オンライン予測機能を広告配信サーバに組み込む
・広告配信サーバ内部での制御からログ集計にいたるまでの A/B テストパイプラインを整備する
・各種改善施策を A/B テストしてその結果を分析・評価する

他にも、Redshift を利用して広告主・広告代理店の方々向けの広告パフォーマンスを集計するシステムを構築したり、月次の請求処理に用いる広告利用料金を集計するバッチアプリケーションといった、ちょっと地味だけどちょっとした間違いも許されないシビアなシステムの開発などもやっていました。

ここで、広告事業で関わっていた部分のうち公になっている情報を以下にまとめておきます。

そのほか、低レイテンシが求められる広告配信サーバで利用することを想定して開発したプロダクトを OSS で公開しています。なお前者の OSS プロダクトについては 私家改良版が Yelp にて使われている そうで、開発者冥利に尽きます。

現職でのお仕事その2: ユーザフェイシングな機能開発その他

ここ直近の 1 年ちょっとは広告事業から離れ、SmartNews のアプリ上で利用できるユーザフェイシングな新しい機能を開発・運用したり、marketing tech 的なことに取り組む組織に所属しています。

当組織ではバックエンドエンジニアとして (また昨年の秋ぐらいからはテックリードなる立場で)、タイムセールや今年 6 月ぐらいに GA 予定のとある新機能の開発において以下のようなお仕事をしてきました。

・新機能の PRD (Product requirements document) から、それを実現するのに必要なシステム要件を PdM (Product manager)とともに具体化する
・フロントエンドからバックエンドまでを含むシステム全体の設計をする
・バックエンドシステムが提供する各種 API の設計をする
・サービスの KPI 測定などを目的としたアクティビティログの設計をする
・バックエンドシステムを Spring Boot 2.x w/ Kotlin で開発して運用する

そのほか、サービス運用担当者の諸々の手作業を減らしオペミスを防止することを目的として専用の Airflow 環境を整備して DAG を書いたり、新機能に関してユーザからカスタマーサポートに寄せられるお問い合わせについて裏付けの調査をするための仕組みを Jupyter notebook や Chartio を利用して構築したりと、こちらでも色々やっていました。

なおタイムセールについては、JSUG の勉強会で登壇したときにその裏側についてお話をしています。そのときの資料はこちらです。

現職でのお仕事その3: ファクトチェックの技術支援プロジェクト

会社のお仕事とは完全に切り離された取り組みではありますが、ファクトチェック・イニシアティブ (FIJ)、東北大学 乾・岡崎研究室 (当時) と SmartNews の共同プロジェクトにエンジニアとして参加していました。その成果物として fact-checking console というシステムを開発し、現在まで運用を続けています。当該システムの詳細は FIJ の旧ページをご覧ください。

またデブサミ 2018 に登壇したときに、このシステムに関してお話をしました。

このシステムは技術的には Google Cloud Platform (Kubernetes engine), Vue.js, Spring Boot w/ Kotlin, Python, scikit-learn あたりを利用していて、(プロジェクトに参画しているエンジニアが僕以外にいないこともあって) 一人で開発・運用しています。

なお機械学習を用いた予測モデルのアルゴリズム開発そのものは東北大学 乾・岡崎研究室の学生の方に担当していただいています (学生の方によるプロトタイプコードをもとにプロダクションコードを書き起こし、日次でモデルを更新する仕組みを整えるところを僕が担当しています)。

-

…こんな感じで入社当時からここまでのお仕事を振り返ってみましたが、手短に言えば、バックエンドエンジニアとして手広くいろんなことに携わってきた、となります。

現時点の技術スタック

SmartNews で長いこと仕事をしてきたため、基本的には同社の技術スタックに沿って自身の技術スタックが築かれています。同社の技術スタックについては同僚がまとめてくださった資料があるので、そちらをご参照ください。

この会社の技術スタックに挙げられている・いないに関わらず、自身の技術スタックと言えそうなのは以下になります (分類は Thoughtworks が提供している tech radar のそれに概ね沿っています)。

言語/フレームワーク: Java, Kotlin, Python, Spring Boot, JUnit5, AssertJ
プラットフォーム: MySQL, Redshift, Redis, AWS, Docker
ツール: Gradle, Flyway, Apache Airflow, CircleCI, Micrometer, Datadog

ここに挙げているもの以外でも、普段ちょっとした処理の自動化を実現するときに Ruby を使っていたり、Terraform とか Chef とかで諸々をプロビジョニングしていたり、はたまたフロントエンドは完全に専門外だけど Vue.js なども触っていたりもします。ただ使いこなしているとは言い難いので、上記の技術スタックには含めていません。

あと機械学習・自然言語処理も仕事で扱える程度に理解しているつもりですが、ML エンジニアみたいに専門で取り組んでいるわけではないのでこちらも技術スタックには含めていません。

-

ここまでは、すでに公になっている情報をまとめたりもしくはインターネット上に広く公開しても差し支えない内容を記載してきましたが、以降はもうちょっと踏み込んだ内容を記載しているので paywall の向こう側に置くことにしました。ここまで読んでいただいて興味を持たれた方はぜひご購入ならびに続きを読んでいただければと思います。

-

ここから先は

4,818字

¥ 500

期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?