今回、プロジェクトチームのうち吉田悟氏(外部サービスとの連携部分を担当)、河津正和氏(スマートフォンアプリ用のAPIを担当)、櫻井雄介氏(インフラを担当)の3名に集まっていただき、Yahoo! JAPAN年賀状のサービス開発や運用の裏側を語ってもらった。とくにエキスパートによるサーバーオペレーションと、印刷データの管理とチューニングを掘り下げ、 プロジェクトの中で若いエンジニアがどのような業務に携わりどんな仕事をこなしていったかにも焦点をあてる。
クリエイティビティを活用する場としての年賀状サービス
Yahoo! JAPAN年賀状は直近のサービス提供が4年目をむかえ、事業規模も成長を続けている。そもそも、同社はなぜ年賀状のサービスを始めたのか。
年賀状というのは人々の生活の中でだれもが経験するクリエイティブ活動である。近年は年賀状を出す人が減っているというが、それでも34億枚(2014年)の年賀状が発行されている。このうちネット利用のものは市場を拡大しているとはいえ、全体から見れば1%に満たない。ならば、逆に同社の技術とクリエイティビティを活用すれば、この市場を掘り起こすことができるのではないか。なにより、日本のクリエイティブ文化を新しい形で将来へつなぐことができる。
事業を始めた背景には、自社事業という目的の他にこのような同社の想いもある。
今年はスマホ対応――API開発は入社2年目のエンジニアが担当
例年、プロジェクトは前年の6月くらいからスタートするという。2014年の年賀状サービスのためのプロジェクトが始まったとき、新機能としてスマートフォン対応を決定すると、そのスマートフォンアプリのためのAPI開発に抜擢されたのが、新卒入社2年目のエンジニア河津氏だ。
まず、APIの仕様を考えライブラリの設計をするわけだが、河津氏は「スマートフォンのアプリ向けということで、まずいかに通信量を下げるかが重要なポイントでした」と語る。APIはiOS、Androidの両方に対応するが、遅い回線でも使えるように無駄な通信やデータのやり取りは極力抑えなければならない。
具体的には「画像のやりとりにはサムネイルを使ったり、非同期通信の利用やデータベースクエリーのチューニングを行ったりして工夫しました。(河津氏)」とのことだ。またAPIは、ネイティブアプリを対象とするため、ブラウザのクッキーは使えない。そのため、セッションIDを管理するAPIなども実装した。
開発中は、アプリ開発チームとのAPI仕様のすり合わせやデバッグも発生する。サーバーやネットワークなどインフラを管理・運用するチームとの連携も必要だ。河津氏は、これらの作業をチームの先輩たちの協力を得ながらこなしていった。
インフラ担当はサーバーオペレーションのエキスパート
年賀状サービスのローンチは11月1日からだ。APIやスマートフォンアプリはそれまでにリリースできるように開発が進み、実際のサーバーもこれに合わせて準備される。サーバーなどのインフラを担当したのは櫻井氏だ。
櫻井氏は入社2年目だが、その前はデータセンターのオペレーションセンターでの勤務経験がある。サーバーの監視や運用については中堅として活躍している。Yahoo! JAPAN年賀状のサービスは4年目なので、インフラの土台や運用ノウハウが蓄積されていた。しかも2014年度版からは、プライベートクラウドを構築し、昨年の構成などを生かしやすい環境を整えた。それまで毎年スクラッチで構成していたが、クラウド活用によりセットアップコストを下げ、ピーク時のスケーラビリティを向上させた。ちなみに、Yahoo! JAPAN年賀状のピークアクセスは100万PV/日に達する。
とはいうものの、Yahoo! JAPAN年賀状のサーバーは一般的なWebサイトと違い、利用者が年賀状のデザインを作る操作が必要なので、セッション数や扱うデータ量が多くなる。櫻井氏は「サーバーの構成管理やチューニングは難しいです。メモリはすぐになくなるし、CPUも喰います。ピーク時はリソース状況を確認しながら対応していました。また、今回はスマートフォン対応が追加されたりと、Yahoo! JAPAN年賀状の利用者も年々増えているので、トラフィックパターンなど予想が困難な面もありました」と、運用の難しさを語る。
実は2013年末に、Yahoo! JAPAN年賀状がテレビに取り上げられたことがあった。通常Webサービスがテレビで紹介されると、管理者はアクセス集中で悲鳴を上げるものだ。しかし、櫻井氏は「想定内の範囲」として、サーバーダウンなどトラブルなしでこの波を乗り切ったという。
そのサーバー構成は、ロードバランサー、Webサーバー、DBサーバーといった基本的な構成にストレージサーバー、管理サーバー、キャッシュサーバー、バッチサーバーを加えたかなり可用性の高いものとなっている(図参照)。このうちWebサーバーが6台からピーク前に12台、DBサーバー(参照系)が3台から同7台、バッチサーバー(印刷ジョブなど対応)が2台から同3台というスケーラブルな構成となっている。
これらをプライベートクラウドで構築しているため、自社管理のファイアウォール、ルータなどの内側に展開でき、セキュリティも高い。プライベートクラウドを導入しての構成は、同社が自社事業やサービスに対する本気度が表れている。
年賀状サービスの本質である「印刷」と「送付」
Yahoo! JAPAN年賀状の特徴の一つは、「印刷されたはがきのやりとりができる」というリアル世界につながったサービスであることだ。利用者が作成した年賀状を印刷するプロセスを担当したのは吉田氏だ。吉田氏は、システムの中で、年賀状データをPDF化し印刷所に送るコンポーネントの開発を担当した。
Yahoo! JAPAN年賀状は絵柄などの商材が豊富なのも特徴である。非常に多数の商材への大量な注文を処理し、PDFデータを生成して印刷所に送り、決済処理システムとのつなぎ込みなども担当した。
苦労した点は、例えば企業のギフト年賀状のような商材の場合、印刷物の色の管理がある。企業としては商品やキャラクターの色は細かく管理したい。そのニーズに応えるため、印刷所とPDFのチューニングや設定について詳細のやりとりが必要だったという。
それ以外にも、「印刷のピークもやはり12月25日前後の連休にぶつかるのですが、いわば印刷ジョブ、キューの管理も大変でした。商材によって注文が入る頻度やペースが異なります。Webでの年賀状作成と注文(印刷・発送依頼)はクリックで済みますが、印刷は効率よく機械を動かす必要があります。印刷所への発注タイミングをどれくらいの間隔で行うのがよいのか考えながらシステムを設定していました」と吉田氏は語る。
吉田氏は、元は医薬品関係企業の情報部門のSEだった。博報堂アイ・スタジオは6年目となり実務・SE経験ともに豊富な経験とスキルを持つ。印刷所や商材を扱う企業との折衝ややりとりなど、ベテランならではの知識と経験が求められる。さらに、最終的な品質や顧客満足度に直結する重要な部分といえる。
API開発はサービスインしてからも続く
システムが稼働を始め、実際のサービスが始まってしまえば河津氏のAPI開発は一区切りとなっただろう。と、思いたいところだが、実は11月にサービスインしてからも、商材の追加は段階的に発生し、商材提供企業とのやりとりの中でAPIの拡張や変更も発生していた。さらに、利用者からは機能についてさまざまなリクエストや生の声も寄せられる。河津氏は、これらのうちAPIに関わる部分の対応を担当しなければならなかった。
新卒2年目としてはかなり大変だったのではないかと想像されるが、櫻井氏と吉田氏に、このあたりの河津氏の仕事ぶりを聞いてみた。
「最初は依頼の技術的内容について不安を持っているようで、内容が伝わるまで時間がかかる部分もありましたが、開発が進むにつれ自身の能力に自信を持ち技術の向上も相まって、簡潔で的確な依頼・指示ができるようになっており、感心しました(櫻井氏)」
「エンドユーザーに直接かかわるサービスという今回のプロジェクトでは、他部署との連携やユーザーの声に接するといった経験に加え、システム設計や開発の全体も把握できる機会だったのではないでしょうか(吉田氏)」
と、それぞれコメントを寄せてくれた。
任されるうれしさと責任が「やりがい」につながった
当の河津氏は、今回のプロジェクトについて次のように語ってくれた。
「Yahoo! JAPAN年賀状のプロジェクトでは、APIというサービスにとって重要な部分を任せてもらい、自分の裁量で設計や開発ができたのはとてもありがたいことだと思いました。もちろん、仕事の規模が大きく要求仕様も難しいので責任の重さがありましたが、自分のシステムなので自分がやらなければ、ということでモチベーションも違いました。特に、一般の人が利用するサービスということで、みんなが使うシステムを作れるというのはエンジニアとしては喜びが大きいと思います。やはり、知り合いや家族に説明するとき説明しやすいし、素直にうれしいですよね。サービスの利用者からの声にも接することができたというのも貴重な経験でした」
自社事業であるYahoo! JAPAN年賀状の舞台裏を通じて、バックエンド構築のエキスパートと若手エンジニアのチャレンジを紹介いたしましたが、自社事業に関わらずチャレンジ意識の高いエンジニアを、博報堂アイ・スタジオでは積極的に募集しています(2014年3月現在)。Webアプリ開発、運用、ネットワーク管理と幅広いエンジニアの活躍の場がありますので、スキルアップを望む方は採用ページから奮ってご応募ください。博報堂アイ・スタジオは、エンジニアに対してセミナー受講、資格取得支援や、社内コンテストの実施など、エンジニアのキャリア形成を支援する取り組みも充実しています。