こんにちは。広報の石渡です。
突然ですが、マインディアではエンジニア職を(もちろんビジネス職も)積極採用中で、エンジニア向けの採用デックも公開しています。
今回は、普段マインディアのエンジニアがどのような仕事をし、どのようなことを考えているのか、CTOの松倉にインタビューしました。
※募集中のポジションについてはこちらをご覧ください。
POSITION|LIST | 株式会社マインディアcorporate.minedia.com
目次
- まず、松倉さんの経歴を教えてください
- どんなプロダクトの開発をしているんですか?
- マインディアのエンジニアにはどんな経歴の方がいますか?
- 現在のエンジニア組織は少人数ですが、どうやって複数プロダクトの開発をうまく並走させているんですか?
- 開発において、ビジネスサイドとはどのように関わっていますか?
- マインディアには全社で掲げている4つのバリューがありますが、それとは別にエンジニアの行動指針を定義している理由を教えてください
- 松倉さんはスタートアップだけでなく上場企業でもエンジニア経験がありますが、松倉さんから見てマインディアでエンジニア経験を積むことのメリットを教えてください
- マインディアに興味を持ったエンジニアの方へメッセージをお願いします
まず、松倉さんの経歴を教えてください
大学在学中はフリーランスとして様々なWebサービスの開発運用を行い、卒業後は、渡米してUCLA Extensionに通いつつ現地の会社で同様にWebサービスの開発に従事していました。
その後、帰国してからは複数社で新規サービスの開発、運用を担ったのですが、直近では、グリー株式会社にて内製ソーシャルゲームのテックリードや海外展開時のテックリードを歴任し、株式会社メタップスで新規事業のSPIKEという無料決済サービスの開発責任者を務めていました。
プライベートでは、新技術の勉強がてら、ビジネスにはならないけれど自分が欲しいWebサービスを構築するという生活を送っています。
振り返ってみると、ユーザの声が直接開発者に届き、それをいち早く実装してユーザとともに成長させてゆくようなサービスが好きです。いち早くユーザに機能を届けるためにはバックエンド、フロントエンドの両方を一人でできたほうが早くデプロイできるので、必然的にフロントエンドもある程度できる様になりました。
どんなプロダクトの開発をしているんですか?
MED(EC購買データプラットフォーム)に関するエンジニアのスコープは、メールや公開情報のデータを収集し、データアナリストが分析を行うためのDWHへデータを変換するデータパイプラインの開発とDWHの運用です。
データパイプラインでは、日々大量のデータを収集して正規化して保管しています。ここでは、その日のうちにしか取得できないデータがあったり、後続の処理の開始時間の制約があったりするので、タイムクリティカルな処理をコストを抑えながら時間内に終わらせることが重要です。また、扱うデータ量が多いのでデータ転送保管コストを考慮し、データのスケーラビリティを考えつつDWHの設計とリファクタリングを行っています。
MID(オンライン定性調査)に関しては、オンラインで定性調査を行うプロダクトの開発、運用がエンジニアのスコープです。毎日、並列してたくさんの定性調査の案件が進行しており、企業とユーザが利用しています。インタビューの様子は全件録画しており、その録画データを元に自動で文字起こしも行っています。マルチメディアに関する技術が発展すれば表情解析やリアルタイム翻訳などいろいろなことが可能になると考えています。
サービスについての詳細はこちらのnoteにも書いていますので、ぜひ併せてご覧ください。
マインディアのエンジニアにはどんな経歴の方がいますか?
現状は会社の規模が小さいので、システムの開発運用経験が豊富で自律的にビジネス要求から開発を進められるようなメンバーが中心のチーム構成です。
MEDのサービスでは、エンジニア歴20年以上でミッションクリティカルなシステムの開発運用、大規模トラフィックのあるWebサービス開発運用、ビッグデータを利用した機械学習によるプロダクト開発や運用経験のある方がリーダーです。弊社サービスで活用しているデータの元となるデータは近い将来数PB程度のデータ量になるので、それをどのように効率よくデータパイプラインを構築するかという課題にチャレンジしています。
MIDのサービスでは、こちらも20年以上のエンジニア歴があり、様々なプロダクト開発、運用経験のあるエンジニアが対応しています。こちらのサービスはWebアプリケーションを主として、ユーザ向け、クライアント向け、社内の管理者向けにサービスを提供しています。提供する端末は、Webブラウザ、Android、iOSです。よって、開発、運用にはフロントエンド、バックエンド、インフラの深い知識が必要です。
その中でも、去年ローンチしたユーザ向けアプリであるPintに関してはアプリのローンチまでの開発をエンジニア経験が1年未満の20代の若手に開発を一任していました。学習意欲が非常に高く、学習スピードがとても速かったため、本人にとっても会社にとってもチャレンジングではありましたが、見事にローンチを達成できました。
また、日々の開発、運用においては切り出しやすい機能開発を行う場合や専門的で深い知識が突発的に必要になった場合は副業の方にもお手伝いいただいています。
現在のエンジニア組織は少人数ですが、どうやって複数プロダクトの開発をうまく並走させているんですか?
プロダクトのフェーズによって重視するポイントは変わってくるのですが、共通して言えることはその時点での設計と実装に妥協しないことです。自社でのプロダクト開発だからこそ、この部分を妥協せずに行えています。
設計段階で一番重視しているのは、ビジネス要件がロジックやデータのスキーマにちゃんと反映できているかです。アジャイル開発ではいきなりゴールにたどり着くことはせずにインクリメンタルに開発をしていくので、それぞれのチームのリードエンジニアを中心にビジネスゴールを理解し、どのようなロードマップでゴールへ向かうかをビジネスサイドとすり合わせた上でそのロードマップを実現できる設計を作ります。具体的には、エンティティやアトリビュートの単位、パフォーマンスのスケーラビリティにこだわります。綺麗なエンティティの設計ができていればリファクタリングがしやすい状態を維持することができるのです。
最初の開発は少し大変ですが、後々の運用で大きな差になりやすいポイントです。要は、技術的負債となる要素を過去の経験から理解しているので、それを早いうちに排除しておきます。
実装の段階では、コードの品質を高く保っておくことを重視しています。昨今は静的コード解析ツールが充実しているので足元のミクロなところは可能な限りたくさんの静的コード解析ツールを導入してチェックルールの設定を育てていきます。また、ソフトウェアテストも必要最低限書くようにしてリファクタリングの難易度を下げつつリグレッションを防いでいます。もちろんCI/CDは必須です。
開発において、ビジネスサイドとはどのように関わっていますか?
ビジネスサイドとエンジニアサイドの関係は二人三脚です。どちらが欠けてもだめですし並走しながらゴールへ向かうというイメージです。また、要求定義、要件定義レベルでの決定事項はその後の設計や実装、運用に大きな差が出るところになるので相互理解とディスカッションが重要と考えています。
プロダクトの週1回の定例ではエンジニア、ビジネスサイドが全員参加して現状共有や方向性、プライオリティの意思決定などを行っています。
マインディアには全社で掲げている4つのバリューがありますが、それとは別にエンジニアの行動指針を定義している理由を教えてください
エンジニアの行動指針は以下の項目を挙げています。
- アンテナの感度を高くする
手法、テクノロジー、事例などを知ることにより近道ができたり失敗を回避できたりする。
アンテナの感度を高くすることでたくさんの情報を拾うこととなるが、フィルタも強化していってより質の高い情報をインプットする。 - 100点とは何かを理解できるように知識を深める
その領域のことを知らないとどういう状態が100点かがわからない。
Generatorと共同で開発するような未来になったとき、そのコードをそのまま使うのかそれとも再生成させるのかを判断できる能力が重要になる。 - 知識をGiveする
Webで事例やトラブルシューティングやまとめ記事などを見て知識を獲得している(Take)。自分の成果をTakeしながら努力の上に成り立っていることを認知する。
ナレッジの利用と提供(Give)を行い、良いフィードバックサイクルを回してIT業界全体を効率よく前進させる。
会社のバリューは、Go Global、Be a Hacker、Fail and Learn、Impact Drivenです。
それとは別にエンジニアの行動指針を設けた理由は、エンジニアが技術的なアプローチで会社レベルのバリューを実現するために日々意識することを定義したかったからです。
足元の開発ではGitHub CopilotやGPTの登場によって半自動コーディングが主流になっていくでしょう。そのときに、エンジニアがより高次元な判断をできるようにしておく必要があります。
例えば、Chat-GPTにとある機能のコードを自動生成させました。動くコードは出てきましたし、一見問題無いコードです。しかし、こういったケースには対応できないよねとか、どうせ書くならこうしておいたほうがユーザが便利だよねといったことをコードを見ながら判断するのがエンジニアの重要な役割だと考えています。
松倉さんはスタートアップだけでなく上場企業でもエンジニア経験がありますが、松倉さんから見てマインディアでエンジニア経験を積むことのメリットを教えてください
マインディアでは自社サービスの開発をしているので、自分が欲しい機能があったらチーム内で意思決定してすぐに開発できるアジリティの高い環境です。
自分が責任を持ってやらないと成功しない状態で必要なスキルを身につけ、自分の成長によってビジネスの成功へ向けて進める環境で働けると思います。
例えば去年リリースしたPintの立ち上げでは、エンジニアが主体となってビジネス要求を技術的要件に落とし、その要件を満たす最善の形としてFlutterの導入を進めました。このように、エンジニアが開発をリードし、最新の技術も挑戦的に導入できる環境です。
マインディアに興味を持ったエンジニアの方へメッセージをお願いします
マインディアが実現したい世界を作っていくためには、まだまだ多くのエンジニアの力が必要です。マインディアに興味を持っていただけた方は、ぜひまずカジュアル面談で私とお話しましょう!