アーキテクトとして、システム全体を俯瞰し、そのシステムの理想像やフェーズ・コストを考え、設計を決定するまでが現在のミッションです。業務としては、設計だけではなく状況に応じて実装も行います。さらに、これは開発者全員が協力して行っていることですが、デプロイやテストなどの一連の流れに必要なツールの準備、設定も業務の一つです。


“ 状況に適したシステムと言語の選定”

現在関わっているシステムを構成する要素として大きなものは、AWSです。AWSはHWの選定や保守管理が無い分、かなり楽ですね。ほとんどパフォーマンスとコストのことだけに専念できます。私がジョインしたときには、チームではAWSを使い倒して任せられるところは任せていこうというスタンスが確立されていて、現在でもそれは変わっていません。データストアから静的リソースの配信まで、まさにAWSベッタリです。

開発言語としては、認証やリソースサーバ、広告配信サーバなどの基幹システムにはScalaを採用しています。その他ビジネスサイドとの連携が密であったり、改善運用が多くなる箇所についてはNodeJSを採用している部分もありますね。最初の設計さえきちんとしておけば、クライアントサイドのスキルセットを持ったエンジニアが一気通貫で開発できるというところが強みです。


“ やりたいこと、できること、求められることを上手くマージして自分で考え、仕事を取りに行く ”

私は仕事をする上で、「自走できる技術者であろう」という意識を常に持つようにしています。「やりたいこと、できること、求められることを上手くマージし自分で考えて仕事を取りに行くという姿勢」が大切だと思っています。もちろん事業から期待される役割や仕事もあるのですが、それを機械的にこなしているだけでは技術者としての成長は難しいと考えています。この点は、技術者が大切にされ、且つ裁量の大きいサイバーエージェントでは重要な考え方であり、また私達が求めている人材像です。