メリークリスマス!
決済金融カンパニーの技術責任者をしております、藤門(@mikanmarusan)と申します。
Yahoo! JAPANとしては初めての試みとなりましたAdvent Calendarですが、みなさんお楽しみいただけましたでしょうか?
私個人としましては、大規模インフラ開発からアプリ開発、さらにはデータサイエンスといった広範囲にわたる技術領域の話を日々眺めることができて、Yahoo! JAPANが挑戦している技術課題の広さと深さをあらためて実感できる、充実したAdvent Calendarになったのかなと思っています。
Yahoo! JAPAN Tech Advent Calendar 2014 も本日でいよいよ最終日となります。本日は、決済金融カンパニーにおける技術的な取り組みについて紹介いたします。
決済金融カンパニーの特徴とその技術
決済金融カンパニーでは、会員・認証基盤であるYahoo! JAPAN IDや、お財布機能のウォレット、ネットでもリアルでも使えるTポイントやクレジットカードといった決済領域から、リアルタイム株価でもおなじみのファイナンスや取引高世界第3位のFX事業であるYJFX! といった金融領域を担当しており、「人生のマネーコンシェルジュになる」というミッションを掲げて日々まいしんしています。
取り扱っている技術の観点からいうと、Yahoo! JAPAN IDのログインサービスやリアルタイム株価検索といった高いパフォーマンスが要求されるところもありますし、お客様の大事な金融資産を扱う点でミッションクリティカルな処理が要求されるところもあります。そのため、利用するソフトウエアやハードウエアが特殊なものになるケースも少なくありません。また取り扱っている情報においても、セキュリティレベルの高いエリアに格納しなければならないものが多く、Yahoo! JAPANの他の組織と比べても少々特徴のある組織だと思っていただければと思います。
さらに決済や金融という領域は、名前からも想像できるように「お堅い」ビジネス領域ということで、インターネットを利用した新しい挑戦をするときは苦労する事がたくさんあります(このあたりもご想像におまかせします)。こういった環境のなかで取り組んだ新しい挑戦についても紹介いたします。
技術的負債を返済せよ
2012年4月からの新体制を契機に、決済金融カンパニーは「爆速」で多くのチャレンジをしてきました。一方で、開発組織からの視点から見ると、
- テストコードがなくて手を加えるのが怖い問題
- テストが手動でつらい問題
- 古いバージョンのライブラリに依存していて最新のオープンソースなどが使えない問題
- コードが属人化している問題
- ベアメタルマシンの調達に時間がかかる問題
- …
など、レガシーなシステムと未熟な開発組織文化が相まって「技術的負債(Technical debt)」が満載な状態が続き、メンテナンスコストの増加により爆速なビジネス要求についていけない状況が出てきました。
そこで、「アプリケーション・ライフサイクル・マネジメントを実現する」、わかりやすく言うと「Yahoo! JAPANのソフトウエアを最新のOSやミドルウエア上で継続的に動作させられるようにする」ために、時間や人を割くという大きなプロジェクトがスタートします。やるべきことはたくさんありましたが、下記の通りゴールをフォーカスすることで進めました。
- クリアオーナシップ
- ソフトウエアやライブラリの所有者を明らかにしメンテナンスが放棄されないようにする
- リファクタリング
- 最新のテクノロジーへの置き換えや設計の見直しを行いメンテナンスをしやすくする
- CIの推進
- テストの自動化によってアプリケーションに手を加えやすくする
- 仮想化の推進
- 仮想環境を活用しシステムを変更(ホストの追加、削除など)しやすくする
成功の鍵=文化を作る事
と始めたものの、決済金融カンパニーの中だけでも多くのソフトウエアやホストを保有しているので、当然のように
- 「なにコレ怖い」
- 「これ本当に期日までにできると思っているの? 無理でしょ」
- 「動いたら負けかなと思っている」
- 「隣のチームがやるまで様子見しよう(チラッ)」
という感じになるわけです。さらに決済金融カンパニーの場合は、特殊なハードウエアを保有していることやセキュリティレベルの高いネットワークにデータを保管していることもあり、無理ゲー感が漂うことになります。
人には「損失回避性」や「現状維持バイアス」が働くと言われています。これは、良くなる場合の満足度の上昇よりも、悪くなる場合の満足度の低下の方がずっと大きく感じることから、未知な物は受け入れがたく、現状のままでいる方が好まれるというものです。したがってこの現状維持バイアス=無理ゲー感を払拭するためには、
- 変化を受け入れる方がベネフィットが大きいことを認識してもらうこと
- 変化を受け入れる方が心地よいこと、楽しいこと
- それがどんどん伝播されていくこと
が重要であると感じ、決済金融カンパニーでは以下のような取り組みを実施してみました。
(1)「営業」活動をする
例えばCIの推進では、CIエバンジェリストチームと呼ばれるバーチャルな組織(といっても2人ですが)を作り、各チームの会議やスクラムに勝手にお邪魔してCIの重要性や有効性を説明して回るという、まさに足で稼ぐ「営業」スタイルをとりました。また実際にJenkinsを構築しテストコードを走らせてみるCI実践講習を何度も開催しました。極めつけは他のチームの開発プロセスに乗り込んで、CIの仕組みを導入して帰ってくるという強引な方法をとったこともあります。「CIでテストを自動化をしなければならないらしい」「スプレッドシートでテストコードを管理するのはやめた方がいいかもしれない」「テスト自動化をしないとモテないらしい」といった文化を作りにいったわけです。非常にベタな手法だとは思いますが、地味に効いたのがこのやりかたです。
もともとCIを実践していたチームもありましたし、実践したかったけれど業務の都合でできなかったエンジニアも少なくなかったことも成功のファクターでした。彼らが次のエバンジェリストとなってくれたおかげもあり、半年以内に全てのチームにCIの仕組みが導入されていきました。「同期がいるあのチームはCIができているんですが」という若手メンバーの鋭い指摘は、チームマネージャの心に深く刺さります。
さらにいうと、CIの推進を大きく後押ししたのは全社導入しているGitHubでした。GitHubのWebhookを利用してJenkinsのビルドを実行するというのがカンパニー内のスタンダードな方法になりましたし、GitHub Flowを取り入れた開発スタイルも定着しています。pull requestベース開発ということもあり、ソースコードのレビューも簡単になり、ソースコードの属人化というこれまた大きな問題も徐々に解消されつつあります。
(2)結果を「過剰」に見せる
XFD(eXtreme Feedback Device)というものをご存じでしょうか? Jenkinsでのビルドに失敗したときにランプを派手に点灯させたりするようなデバイスが有名ですが、これは異常が発生した事を誰もがわかるように「過剰に」可視化する装置のことです。しかもちょっとユニークな感じでやるのがコツなようです。
決済金融カンパニーでは技術的負債の返済状況(進捗度合い)を、議員選挙で党首が当選した議員にバラの花を付けるアレを真似たものでやってみました。
このボードは誰もが目に付く場所に設置されており、対応が完了したソフトウエア・ライブラリ・ホストについてバラの花をメンバーが自ら付けていくので、アナログ感が満載な取り組みです。ただ、自分のチームの進捗度合いが問答無用で可視化されるわけですから、チームマネージャにとっては大きな脅威です。「あのチームが終わっているのにうちのチームは終わってない」というのがさらされるため、チーム一丸となって取り組んでくれるケースもありました。
技術的負債の返済自体はお客様への課題解決に短期的には関与しないため、メンバーのモチベーションの維持が難しいところもあります。こういうときに一致団結して楽しんでやっていこうよ、それを過剰にやってみるというのも文化の作り方の一つではないかと感じました。
1年ほどかけて、決済金融カンパ二ーが保有する3,000台以上のホストすべての対応が完了したところで、女子エンジニア達と記念写真も撮りました。100%というのはやはり気持ちいいものですね。
この過剰な試みは、Yahoo! JAPANの他の組織においてもいくつかまねされていたと聞いています。費用が紙代だけで済むというメリットもあると思います。
(3)ビジネス側の「理解」
実はこのプロジェクトは、全社プロジェクトとして進められたことも達成の大きな要因でした。社長の宮坂、副社長の川邊の号令ということもありますが、特に決済金融カンパニーの場合は、カンパニー長の谷田の理解があった事がとても大きかったです。
Yahoo! JAPANはインターネットでお客様の課題を解決するために存在している企業です。システムのリファクタリングを行うということは、短期的にはお客様の課題解決にかけるべき時間や人をかけられないということ意味するので、非常に痛みの伴う行為でもあります。したがってビジネス側の理解は、プロジェクトの大きな成功のファクターであったことは間違いないです。ビジネス側がテクノロジーを理解している事、それも重要なテクノロジー組織文化の1つだと考えています。
新しい挑戦
お堅い印象のある決済金融カンパニーですが、2014年もたくさんの挑戦をしてきました。
2013年より取り組み始めているeコマース革命、Y!mobileでのYahoo! JAPAN IDの利用、O2O(Online to Offline)を実現するズバトク、ふるさと納税もサポートする公金支払い、2015年から本格参入するカード事業など、ここではまだ紹介できないことも含めて新しい挑戦をたくさんしてきました。今回は、次世代認証方式についての取り組みについて紹介させていただければと思います。
覚えやすいパスワードは簡単に破られやすく、破られにくいパスワードは覚えにくいという相反する関係をもつ事から、「パスワードの限界」については以前から言及されていました。2014年においては、インターネットバンキングにおいてもマルウエアによるBITM(Browser In The Middle)攻撃による不正送金が横行するなど、パスワードの考え方に対して大きな転換点となる1年だったのではないかと考えています。
決済金融カンパニーでも、Yahoo! JAPAN IDやジャパンネット銀行を運営しているため決してひとごとではありません。そこで新たな取り組みとして、Advent Calendar 2014の15日目の記事、アイデンティティ管理とその動向 でも紹介があった通り、パスワードなどの記憶認証に頼らない新認証技術の標準化を目指すFIDO(Fast IDentity Online)Allianceに2014年より参加し、この問題に取り組み始めています。
2014/2/6からスペインのバルセロナで開催された、Mobile World Congress 2014で紹介されたモバイルデバイスでのFIDO認証について紹介を視察したり、FIDO Allianceのボードメンバーとして参画されている企業とディスカッションを重ねたりしています。
最近ではFIDO公式のインターオペラビリティテストに参加し、FIDOで規定されているU2F(Universal 2nd Factor)と呼ばれるプロトコルを実装した認証サーバについて、FIDO ReadyTM プロダクトとして認定を受ける事ができました。ロゴが非常に残念な感じですが、近いうちに正しいロゴに変更されることを期待しています。
近い将来、Yahoo! JAPANが提供する認証の仕組みにおいても次世代認証を利用できるように開発を進めていく予定です。
さいごに
決済金融カンパニーの技術的な取り組みについてご紹介いたしました。今回紹介させていただいたことは私たちの取り組みの一部分に過ぎませんので、また別の機会でお話させていただけると幸いです。
Yahoo! JAPAN Tech Advent Calendar 2014を最後まで読んでいただきありがとうございました。
それではみなさん良いお年をお過ごしください。
こちらの記事のご感想を聞かせください。
- 学びがある
- わかりやすい
- 新しい視点
ご感想ありがとうございました