2019年6月17日

ヤフーの黒帯インターンシップ紹介 〜 認証技術コースで標準化技術の開発体験

  • このエントリーをはてなブックマークに追加

こんにちは、認証技術黒帯 倉林 雅(@kura_lab)です。

この春に黒帯インターン、OSSデベロッパーインターンが実施されました。
倉林が監修した認証技術コースもあり、Yahoo! ID連携のシステムを設計、開発、運用する若手エンジニアと参加者とプログラムを通してヤフーの業務を体験してもらいました。

今回は認証技術コースで実施したプログラムの開発内容や技術について、参加者の感想も交えたインタービュー形式でご紹介します。文末で今後のインターンシップや採用についてもご案内します。

ヤフーのインターンシップについて

はじめにヤフーのインターンシップについて簡単にご紹介します。ヤフーのインターンシップではヤフーがミッションとして掲げる「課題解決」を実際の業務を通じて体験できます。専門性に優れた黒帯と呼ばれるプロフェッショナルやOSSへ貢献しているヤフーのOSSデベロッパーが監修したプログラムでヤフーの開発フローや最新の技術を学ぶことができます。
各コースで異なる部分もありますが、共通の特徴は以下になります。

  • 実施期間は5日間または10日間。業務時間は平日の午前10時から午後7時の8時間(昼休み1時間含む)
  • プログラムは黒帯やOSSデベロッパーが監修した開発案件やサービス改善など
  • 黒帯やOSSデベロッパーの他にも各領域を担当しているエンジニアのメンターがサポートするためわからないことも質問でき、昼休憩や休憩時間などに気軽に現場の生の声の聞くことができる

今回の認証技術コースでは倉林の他にもYahoo! ID連携のサーバーサイドやアプリの認証機能のSDKを担当する若手エンジニア2名に参加してもらいました。
続いて黒帯とメンターがどのようなプログラムで業務を体験したのかみていきましょう。

認証技術コースのプログラム

認証技術コースは2週にわたって合計9日間のプログラム構成にしました。設計から開発、テストまでの開発案件を3つ、それに加え黒帯による座学や1on1による相談会、標準仕様の輪読会、インターンシップ全体の成果発表会、最後にこのYahoo! JAPAN Tech Blogの寄稿までこなしてもらいました。
過密なスケジュールでしたがヤフーの開発や認証技術を十分に学んでもらえるプログラムになっていたと思います。

日程 時間 業務内容
1日目 10:30 参加者受け入れ

10:45 部署での自己紹介

11:30 開発環境のセットアップ

12:00 昼食

13:00 OpenID Connect入門・Yahoo! ID連携の解説

14:30 案件概要解説、システム概要説明、開発フローの解説

17:00 案件1)案件2)設計

18:30 日報入力

19:00 懇親会
2日目 10:15 RFC輪読会

11:00 開発

12:00 昼食

13:00 案件1)案件2)開発

18:30 日報入力
3日目 10:15 RFC輪読会

11:00 案件1)案件2)開発・テスト

12:00 昼食

13:00 案件1)案件2)開発・テスト

15:00 認証技術黒帯座学:FIDO

16:30 案件1)案件2)テスト

18:30 日報入力
4日目 10:15 RFC輪読会

11:00 案件1)案件2)テスト
案件3)設計

12:00 昼食

15:00 認証技術黒帯座学:ID連携

16:00 黒帯1on1相談会(エンジニアのキャリアなど)

17:30 案件1)案件2)テスト
案件3)設計

18:30 日報入力
5日目 10:00 案件1)案件2)テスト

12:00 昼食

13:00 案件3)設計

18:30 日報入力
6日目 10:00 案件3)設計・開発

12:00 昼食

13:00 案件3)開発

18:30 日報入力
7日目 10:00 案件3)開発

12:00 昼食

13:00 案件3)開発・テスト

18:30 日報入力
8日目 10:00 案件3)テスト
Yahoo! JAPAN Tech Blog寄稿

12:00 昼食

13:00 案件3)テスト

15:00 成果発表資料作成、Yahoo! JAPAN Tech Blog寄稿

18:30 日報入力
9日目 10:00 成果発表資料作成

11:00 成果発表会

12:00 昼食

13:00 ヤフー社員OB・OG訪問

17:00 Yahoo! JAPAN Tech Blog寄稿

18:30 日報入力

18:45 インターンシップアンケート回答

19:00 懇親会

参加者紹介

倉林)
今回は、以下の3名の方にインターンにご参加いただきました。

  • 赤星 桜良さん(金沢工業大学工学部情報工学科)
  • 鈴ヶ嶺 聡哲さん(電気通信大学大学院情報理工学研究科情報学専攻)
  • 吉田 享平さん(立命館大学情報理工学部情報理工学科)

それでは、参加者の皆さんに伺ったインターンの内容や感想についてご紹介していきましょう。

参加者とメンターの集合写真
左上から倉林、赤星さん、メンター加賀谷、メンター都筑、左下から鈴ヶ嶺さん、吉田さん

黒帯座学について

倉林)
現在ヤフーには倉林を含め2名の認証技術黒帯がいるため、認証技術コースでは開発案件の他に認証やID連携の基礎講座として座学を取り入れました。
最初は五味さんの座学でしたがどのようなことが学べましたか?

赤星さん)
従来の認証は認証の3要素と言われる「知識」、「所持」、「生体」を用いたものが一般的であったことからお話がはじまりました。
しかし、それぞれの手段には課題が存在しています。「知識」については人の記憶に依存しているためIDやパスワードを忘れやすく、「所持」については無くした場合のケア、「生体」については漏洩などの非常時において変更が困難などの課題が残っているとのことでした。

吉田さん)
Yahoo! JAPANが取り組んでいるFIDOでは、ユーザーの利便性も高く、セキュリティも高い認証が期待されているというお話を聞きました。
FIDOは指紋などの生体情報をサーバー側に渡さない仕組みのため、生体情報の情報漏えいのリスクが減るという面でもメリットがあるようです。
パスワードを利用しないパスワードレスのログイン体験が普及するとユーザーにとってもより使いやすく安心したログイン体験を提供できるを思いました。

倉林)
認証の基礎や課題から最新の認証技術を教えてもらったのですね。ヤフーのID部門ではFIDOやパスワードレスに注力している最中で多くの人に安心して使ってもらえるように推進しているところです。
その他にはどんなことを学べましたか?

鈴ヶ嶺さん)
ライフスタイル認証と呼ばれる行動に基づく認証についても研究していることをお聞きしました。より良い認証体験が提供できればYahoo!ショッピングやYahoo!メール、ヤフオク!などいろいろな事業でその人にあった体験を与えられ、認証時間の節約も期待されるのではないかと思いました。
1ヶ月のアクティブYahoo! JAPAN ID 4800万 × サービス数 × ログイン画面へのアクセス数分の時間の節約が可能になるかもしれないというお話でした。

倉林)
Yahoo! JAPANはこれまで100を超えるサービスを提供していて多くのデータを持っているので、そのデータを活用した認証も提供できるかもしれないですね。

認証技術黒帯五味によるID連携の座学
認証技術黒帯五味によるFIDOの座学

倉林)
次に倉林の座学はどのようなことが学べましたか?

吉田さん)
OAuthやOpenID Connectについて実装面や事例を織り交ぜて学ぶことができました。
OpenID ConnectとはOAuth 2.0にユーザーの認証機能を追加した認証・認可の仕組みです。
多くのサービスはそれぞれのサービスごとにパスワードを登録しログインする必要がありますが、利用するサービスが増えるにつれて、ユーザーはパスワードを使い回してしまうケースが増えます。パスワードを使い回すと、セキュリティ対策が不十分なサービスでパスワード漏えいがおきた際に、他のサービスへも不正ログインされてしまうリスクが出てしまいます。
OpenID Connectを用いることで1つのIDでそれぞれのサービスにログインできるため、各サービスにパスワードを登録する必要がなくなり、パスワードの使い回しのリスクが減るとのことでした。

鈴ヶ嶺さん)
OpenID Connectにはユーザーの登録している情報を連携する機能もあり、他社のサービス登録時に氏名や生年月日、住所などのフォームへの入力の手間も省けてユーザー体験が向上すると伺いました。OpenID Connectの仕様にはCSRF対策やリプレイ攻撃の対策もあり不正の事例と解説も勉強になりました。最近、ID連携が普及してきていたことを何となく実感していたので、詳しく学ぶことができてよかったです。

倉林)
OAuthやOpenID Connectはヤフーで長年開発と運用を続けていていろいろなサービスへの導入を推進してきたので、安全で便利に利用してもらうための仕組みを理解してもらえたようでよかったです。


認証技術黒帯倉林によるID連携の座学
認証技術黒帯倉林によるID連携の座学

開発案件について

倉林)
続いて取り組んだ開発案件について紹介してもらますか?

吉田さん)
今回の開発案件はいくつかあるのですが、3人で取り組んだものの1つにOAuth 2.0 Token Introspectionを実装するという案件がありました。
これは標準化団体であるIETFで提供されるRFCに定義されている標準技術です。

まずはOAuth 2.0 Token Introspectionの前に関連するOAuth 2.0についてお話しします。
OAuth 2.0とは、RFC6749で定義されている認可のプロトコルです。ここでの認可とは、あるサービスが全ての情報にアクセスするのではなく、ユーザーの同意に基づき限定的にアクセスを許可することです。
ユーザーのIDとパスワードを共有してしまうと全ての情報にアクセスできてしまいます。OAuth 2.0はIDとパスワードを共有することなく、3rd Partyアプリケーションがユーザーの情報に安全にアクセスするための仕組みです。

OAuthの仕様にはAccess Tokenが有効であるか、ユーザーの情報や認可に関するメタ情報を得るためのプロトコルが定義されていません。そのため属性情報を保持できるJWTを利用したり、独自の仕組みによって対応していました。
これらを標準化して、Web APIによってユーザーのメタ情報を取得できるようにしたものがRFC7662に定義されているOAuth 2.0 Token Introspectionです。
今回の開発案件はYahoo! ID連携にこのOAuth 2.0 Token Introspectionのエンドポイントを追加しました。

倉林)
OAuth 2.0やOAuth 2.0 Token Introspectionの解説ありがとう。インターンシップに参加する以前からこれらの技術について知っていましたか?

赤星さん)
OAuthの技術については初めて知りました。登場する役割のサーバーが複数あるため時間はかかりましたが、みなさんにサポートをしてもらいながら概念を理解し、実装をやりきることができました。
特にOAuth 2.0 Token IntrospectionのRFCの輪読はとても難しく感じました。はじめは文章が長く要点がつかめない部分が多かったのですが、要求レベルを統一するための助動詞が定められていたり、RFC特有のルールで記述されていることを知り、読み方を学ぶことができました。

倉林)
学生のときはなかなかRFCなどのインターネットの標準仕様書を読む機会はないですよね。はじめてみたときは文章量が多いように思うかもしれないけれど、RFC7662はまだ文章量も少なく、関連しているRFCも少ない方なのですよ。このRFCよりも文章量が長い複雑な仕様もあるけれど、読み方を覚えるとそこまでストレスなく読めるようになるので、興味があれば他の仕様書も読んでもらえたらと思います。
輪読後にこの仕様を実装してもらいましたが、設計から開発、テストまでやってみてどうでしたか?

鈴ヶ嶺さん)
取り組んだ内容をお話しすると、まずRFCの輪読を行い仕様の認識をチームで共有しました。ここでは、なぜこの機能が必要なのかやセキュリティ上の懸念点などをディスカッションすることで仕様の深掘りをしました。
次に、共有した仕様を設計書に落としこむ作業をしました。仕様には実装がMUST(必ず実装しないといけない)、MAY(実装してもよい)のように要求レベルが定められているため、Yahoo! JAPAN IDやYahoo! ID連携に必要な機能を考慮して適切に取捨選択をしました。
設計書ができた段階で各自で開発と単体テストのタスクを割り振り、最終的に結合テストをして全体の整合性を確認しました。
チーム開発を経験する機会はあまりありませんでしたが、チームで1つの課題を解決することの重要性を理解できた気がします。

倉林)
プロジェクトの規模にもよりますが、Yahoo! JAPANの多くのサービスでは今回体験してもらったように数人でのチーム開発を実施しています。IDの部門でも、RFCなどの標準仕様を読み解きながら設計、実装しているので普段の開発も同じような流れで進めています。
設計書やプログラムのレビューは考慮漏れをなくす以外にもお互いに気づきがあり、エンジニアとしての成長につながるため、短期間でしたがそれを体験して重要性を感じてもらえてよかったです。

ヤフーという環境について

倉林)
ヤフーで働いてみてどうでしたか?

赤星さん)
ヤフーは聞いたことがある通りカラフルで、エンジニアとしてとても快適な環境で仕事ができると感じました。
1on1では自身の悩みや業務について話を聞くことができました。より便利なID体験、ログイン体験を提供することでユーザーの属性や情報など広告事業やeコマース事業に連携し費用対効果の高い戦略を打てるのではと思いました。そのためにFIDOのようなUXの高い認証が整った環境を提供したいと思いました。5年、10年後のメインユーザーを想定し、使いやすい環境を作ることで、よりYahoo! JAPANのサービスを使ってくれるユーザーを増やすことができるとよいと思いました。
1on1はそういった自身の考えを具体化できるいいミーティングだと感じました。インターンシップを通してより一層Yahoo! JAPANが好きになりました。

倉林)
黒帯活動で大学へ講義へ行ったり、内定者や選考中の学生さんとお話しする機会があるのですが、それ以外でもヤフーの社員は直面している課題の解決や自身の成長のための内省につながるように日常的に上長と1on1をする機会があるのです。今回も赤星さんの悩みの解決やYahoo! JAPANの業務について興味を持ってもらえたようでうれしいです。

鈴ヶ嶺さん)
コーヒーやサーティワンアイスクリームがある社内カフェテリアのCAMPやオフィスグリコなど、どこでもPayPayを使うことができるので便利だと思いました。
フリーアドレスなので気分を変えて働く事ができるのでストレスなく働ける環境だなと思いました。スーツを着なくても仕事ができるのでとても過ごしやすい環境だなと感じました。
黒帯の制度を作りコミュニティー活動を支援しているところが素晴らしいと感じました。

倉林)
よく業務の合間にPayPayで買ったコーヒーやアイスクリームを片手に社員同士でコミュニケーションをとっていたりしますね。多くのエンジニアやデザイナーはラフな服装で、フリーアドレスでのびのびと仕事をしていますよ。
黒帯制度はできてから8年目になっていて、社内外で各領域の最新技術の発信や教育をおこなっています。もしヤフーに入社したらスキルを磨いて黒帯を目指してみてほしいですね。

吉田さん)
主に開発を行うフロアでも女性が多い印象でした。デザイナーの方も同じフロアで働いているからだそうです。そのような会社を見たことはなかったのでとても新鮮でした。
働いている中で作業場所を変えられたことはとても魅力的でした。一日中座っているのはツライので高めのテーブルで立って作業することもできて楽になりました。
社員のみなさんもとても優しくしてくださり、とても働きやすい環境でした。

倉林)
同じサービスを担当している営業や企画、デザイナーが同じフロアで密にコミュニケーションをとることでスピーディーによりよいサービスが提供できているのだと思っています。デザイナーだけでなく、女性エンジニアもたくさんいますよ。短い期間でしたが、働きやすさを実感してもらえて何よりです。

認証技術のインターンシップについて

倉林)
最後に認証技術のインターンシップを通じてどんなことが学べたのか感想を聞かせてください。

赤星さん)
2週間という短い時間の間でしたが、FIDOやID連携、OAuthなど認証について細かく学べたことが良かったです。
技術的に未熟な部分がありましたが、今回のインターンシップで残りの学生の期間で補うべき課題が多く見つかったと感じています。
インターンシップ期間中、社員さんたちが忙しい中時間を作って教えてくださったり、ランチに連れて行ってくれたりして楽しい時間を過ごせました。
社会人になる前にこのようなインターンシップに参加できたことは自身の成長につながり、大きな財産になったと思います。
そして何より今回の機会をくださったことにとても感謝しています。ありがとうございました。

鈴ヶ嶺さん)
大規模な認証基盤であるYahoo! JAPANのシステムにOAuth 2.0 Token Introspectionを実装できたので楽しかったです。
あらゆるサービスのUXに認証は大きな影響を与えるので認証基盤サービスの重要性を再認識しました。
加えて、次世代の認証技術として生体認証を利用したFIDOや歩き方などの行動を用いて認証をするライフスタイル認証を新たに学ぶことができたので充実したインターンシップでした。

吉田さん)
「認証」というジャンルでインターンシップがあること自体が珍しかったので、非常に貴重な経験となりました。
OAuthやOpenIDのプロバイダーに機能追加を行ったり、認証についての標準仕様が決められている「RFC」を読み解く技術を得たりし、私にとって大きな財産となりました。
また、今回の黒帯メンターである倉林さんとの1on1で自身の課題を見つけることができ、今後にいかしていきたいと考えています。
最後になりましたが、このような最高の環境を用意してくださった社員の皆様、ありがとうございました。

倉林)
インターネットの技術に触れヤフーでの開発を実際に体験してもらいそれぞれ今後にいかせる経験ができてインターンシップを開催したこちらとしても嬉しい限りです。


社食でのランチの様子
社食でのランチの様子

最後に

現在、夏のインターンシップの参加者を絶賛募集中です。
締め切り間近ですが、興味のある方はぜひチェックをしてみてください。

また、ヤフーでは通年採用を実施していますので、現時点で2021年4月入社の方のご応募を受け付けています。

この記事をきっかけにインターネットサービスの開発やエンジニアに興味を持ってもらい、さらにヤフーのインターンシップや採用にチャレンジしてもらえれたら幸いです。最後までこの記事を読んでくださりありがとうございました。

Yahoo! JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。

  • このエントリーをはてなブックマークに追加