さまざまな大規模なWebアプリケーションを多数開発しているサイバーエージェントにおいても、
Amebaの各サービスが使う基盤部分の開発を推進
- ―― 現在はどういった業務を担当していますか。
Amebaではさまざまなサービスを提供していますが、
その基盤部分のシステムを作るチームを担当しています。具体的には、 画像を扱うためのAPIや掲示板のような機能を提供するためのシステム、 コンテンツにフィルタリングを適用する仕組みなどになります。 たとえば画像系のモジュールで言えば、
Amebaのブログサービスで使っている画像フォルダのシステムは、 アメーバピグでも使っています。さらにデータを保存する領域も共通化しているため、 アメーバピグでスナップショットを撮ると自動的に画像フォルダに保存されるといった連携を実現しています。 - ―― 各サービスで共通して利用する機能をまとめて開発するというチームは以前からあったのですか。
こういった基盤部分を開発するチームができたのはつい最近です。それまで別のサービスの機能を使いたい場合には、
担当者同士で個別に調整していましたが、 モバイルゲームの開発やスマートフォンへの対応など、 新しく開発するたびにそうした調整を行うのは面倒だという話がありました。そこで基盤的なものをまとめて管理するチームがあれば便利だということで、 基盤チームを発足させることになったわけです。 - ―― 現状はどういった作業を?
まだチームが発足して間がないこともあり、
それまで個別に開発されていたモジュールの集約や、 将来的なサービス展開を見据えた新規の基盤システム開発を行っています。 新規の開発としては、
最近、 「OAuth」 の仕組みを作りました。もともとは 「Amebaなう」 などの既存サービスの機能を外部から利用するための認証の仕組みとして、 セキュリティ上の観点から用意したものです。その仕組みをスマートフォンでも活用できるのではと声がかかったり、 別の部署から新規のシステムで使わせてくれないかという連絡が来たりと、 事業の展開にもつながったことには驚きました。 - ―― それ以前の業務と比べて変わったところは?
まず仕様の違うシステムをたくさん見なければならないということですね。直接的なサービスにつながる開発をしていたときは、
自分が関わるサービスだけを見ていればよかったのですが、 現在はモジュールが使われるさまざまなサービスを見る必要があります。
このように基盤チームのエンジニアとして働く吉川氏は、
それでは、
入社後の技術研修と現場での開発の違い
- ―― Web上で提供しているサービスの開発に携わりたいと考えた理由は、
どういったものだったのでしょうか。 学生時代にインターネットを利用していたとき、
全然知らない人とマニアックな趣味の話で盛り上がるということがありました。そのとき、 こうして同じ趣味を持つ人とつながりが持てるインターネットは面白いなと感じたことがまず1つ目の理由ですね。また、 もともとエンジニアとして働きたいという気持ちがあり、 何かを作るなら周りの友達が喜んでくれそうなものを作りたいと考えました。そのあたりがWebエンジニアとして働きたいと思った理由です。 - ―― 入社後の研修はどういった内容でしたか。
6月までいわゆる技術研修を受けました。これは座学と新卒のエンジニアで簡単なシステムを作るといった内容です。それが終わった7月には、
現場に配属されて案件を担当することになったのですが、 驚いたのは配属されたその日に上長のところに挨拶に行くと、 その場ですぐに案件を任されたことです。 「2週間後くらいにリリースね」 と言われ、 「本当ですか」 という (笑) そのスピード感にはビックリしました。 - ―― 研修と現場での開発ではどういったところが違っていましたか。
もう全部と言えば全部ですね。たとえばエラーハンドリングで、
例外発生時のログの出力の仕方やハンドリングした後のフェイルオーバーの処理などはやはり研修だけではなかなか学べないことだと思います。時に教科書通りの内容が現場では通用しないという状況にも直面することもあります。たとえば、 正規化されているテーブルを結合 (join) するということを学ぶのですが、 現場では 「join禁止」 というシーンもあり得るということです。 はじめはそういうギャップに戸惑ったことを覚えています。やはり、
座学も必要ですが、 現場で実際の業務を通じて得られる経験値は非常に大きいと感じています。 - ―― エンジニアとしてのスキルを高めるうえで、
コードレビューは有用だと聞きます。サイバーエージェントでもコードレビューは行われているのでしょうか。 もともと私が所属していたチームは、
ずっとコードレビューをしていました。その文化がすごくいいなと感じていたので、 現在のチームでもコードレビューをやっています。 やはりコードレビューは、
見るほうも見られるほうもスキルアップにつながります。もう1つは、 ほかの人のソースを見ていると、 その部分を自分で担当する場面で取り掛かりやすいですし、 自分の担当領域外の把握につながるのもメリットではないでしょうか。さらに、 便利なライブラリがあるということを他人のソースを見ていて初めて気付けるのも大きなメリットですね。 - ―― 最後に今後の目標を教えてください。
まずチームとしては、
基盤がAmebaのサービスにおいて全方向で揃えられていないので、 いろいろなニーズに対応できる体制を固めることですね。それに基盤チームから先行して開発したOAuthのお話をしましたが、 これと同様にAmebaのサービスとビジネスに貢献できるシステムを開発していきたいと考えています。
これまで、
- サイバーエージェント公式エンジニアブログ
- URL:http://
ameblo. jp/ principia-ca
エンジニアの生の声を週替わりでお届け中!