ぱと隊長日誌

ブログ運用もエンジニアとしての生き方も模索中

デブサミ2018「【16-A-2】ヤフーを支える社内システム」聴講メモ

はじめに

Developers Summit 2018 (Developers Summit 2018)
【16-A-2】ヤフーを支える社内システム
スピーカー:伊藤 康太 さん [ヤフー]
の聴講メモです。

メモは口頭説明を中心にまとめています。資料を併せてご参照ください。

Twitterのつぶやきがtogetterでまとめられています。併せてご参照ください。
【デブサミ2018】16-A-2「ヤフーを支える社内システム」 #devsumiA #devsumi - Togetter

【参考】としている個所は私が挿入しています(補足や参考資料など)。登壇者の講演内容ではありませんので、その旨ご了承ください。

聴講メモ

自己紹介

所属は「プラットフォーム開発本部」だが、業務と気持ちは情シスだと思っている。

クリエイターエバンジェリストはクリエイターとして働く楽しさを伝えるのが役目。

社内システムのクリエイター

社内システムでも公開システムと同じレベルのテストなどを行っている。

技術の変化

2008年頃から社内システムも公開システムと同じ構成(CentOS + PHP)になってきた。

現在、バックエンドはJavaとNode.jsで開発している。

システム/アカウント

システムを管理するためのシステムがあり、スライドでの数値はこのシステムに登録されている数。登録されていないシステムはもっとたくさんある。

アカウント数はグループ会社も含めた数字となっている。

省コストで社内システムが作れる/使えるからこそ、これだけ多くのシステムが作られた。

WORK

"4,500UB/日"の"UB"は「ユニークブラウザ」の意味。

IP表

IPアドレスの自動管理を活かし、設定ファイルの自動生成を行っている。

毎年およそ3,000台のiPhoneが入れ替わっているが、設定ファイルの自動生成により、新しい端末で社内ネットワークへすぐに接続できる。

Air-con / pozzy

【参考】
今回の発表者である伊藤さん(@)が Yahoo! Tech Blog でスライドより詳細な説明をまとめています。
ヤフーの社内システムを紹介します - Yahoo! JAPAN Tech Blog

MYM

Slackみたいなもの。

改修したい人は各自がGitHubでPRし、承認されれば即リリースされる。

ヤフー本社紀尾井町移転

移転の際は情シスがCADで図面から起こした。

それまでの固定席からフリーアドレスへと移行し、全てが無線接続となった。その結果、1万を超えるコネクションが発生した。が、なんとか乗り切った。

ヤフーは拠点を全て自分たちで作っている。
それゆえ、自分のPCさえ持っていけば、全国どの拠点でも同じ水準で仕事ができる。

情シスの楽しさ

社内システムであれば、新しい技術を使うために古いブラウザのサポートを切り捨てるという決断ができる。

やりたい施策を筋を通して説明すれば承認してくれる。

(社外の顧客向け)サービスを担当していても、ありがとうの言葉を聞くことはできるが、顔を直接見ることはできない。社内システムであれば、直接顔の知っている相手からありがとうと言ってもらえる。

所感

キラキラしていて、うらやましく感じる発表でした。会社は違えど同じ情シス担当として、よりそう感じたのかもしれません。

ただ、だからといって自分の立場を卑下する必要はないなとも感じています。移転の図面を起こすなんて自分には無理だろうけど、でもそれが自分のやりたい事かというとちょっと違うなと。必要とされることで自分が最もパフォーマンスを引き出せることで貢献できればいいじゃないかと思うのでした。

デブサミ2018「【15-E-5】最新技術に挑戦し続けるLIFULL HOME'Sアプリの開発について」聴講メモ

はじめに

Developers Summit 2018 (Developers Summit 2018)
【15-E-5】最新技術に挑戦し続けるLIFULL HOME'Sアプリの開発について
スピーカー:高橋 庸介 さん [LIFULL]
の聴講メモです。

メモは口頭説明を中心にまとめています。資料を併せてご参照ください。

Twitterのつぶやきがtogetterでまとめられています。併せてご参照ください。
【デブサミ2018】15-E-5「最新技術に挑戦し続けるLIFULL HOME'Sアプリの開発について」 #devsumiE #devsumi - Togetter

【参考】としている個所は私が挿入しています(補足や参考資料など)。登壇者の講演内容ではありませんので、その旨ご了承ください。

聴講メモ

イデア評価 - 新技術アイデアを評価する

新技術は今月とか今期とかそういう短期目線ではなく、長期目線で提案する必要がある。

iOS版のHOME'Sアプリでマイページの最下部にいるホームズくんをタップすると…。
「そろえて!LIFULL」はエイプリルフール企画で作った。ブロックは社名にちなんでL/I/F/Uしか落ちない。攻略のコツは"F"を互い違いに組み合わせること。
LIFULLはこういう企画が通るぐらい提案のハードルが低い。

イデア評価 - 風土づくりにつながる活動

提案をしにくい組織でも社内勉強会などを行うことで新技術への認知度を高めることができる。

イデア評価 - モックで提案する

モック作りの速さは若さに比例している。新技術の発表後、モックを即作ってきていたりする。

また、ディレクターがモックできないの~?と煽り気味に聞いてくることもある。

Instant Apps

ネイティブアプリはインストールしてもらわないと良さが伝わらない。Instant Apps はこのギャップを埋める。

HOME'Sアプリはかなり大きいサイズになっている。賃貸検索だけでなく、やることリストのような他機能もあるため。

Instant Apps に対応する書き直しに1ヶ月かかった。前半に一人のエンジニアが全体設計を行い、後半にみんなでテストや動かない機能の対応に力を注いだ。

Tango - 早すぎた

TangoはGoogleのAR技術。でも、2018年3月1日にサポートが終了する。
新技術への挑戦にはこういうこともある。

【参考】
GoogleはTangoを収束し、ARCoreへ一本化する方針を明らかにしています。
Google、AR技術「Tango」サポート終了~1億台で動作する「ARCore」に移行 - ケータイ Watch

ARKit - WWDC後のブレスト

ARKitを利用した開発を検討していく中で問題になったのが、3D技術の分かるエンジニアがいないこと。でも、Tangoの担当者が助け舟を出してくれた。

ARKit - ホームズくんのモデルで可能になったこと

一般ユーザはARKitの使い方が分からない。例えば、床を認識させてください、とメッセージを出してもやり方が分からない。
これについて、アップルのガイドラインにはアプリの世界観の中でユーザフレンドリーに案内すること、とある。
LIFULLのアプリの場合、ホームズくんを活用した。まず、僕を探してね、とユーザを誘う。ユーザが戸惑って操作に時間がかかっているようであれば、床を探して、と案内し、さらにホームズくんと追いかけっこしてもらうことで床を認識させてもらうように誘導した。

【参考】
ARKitのガイドラインから該当すると思われる箇所を引用します。

If you must display instructional text, use approachable terminology. AR is an advanced concept that may be intimidating to some users. To help make it approachable, avoid referring to technical, developer-oriented terms like ARKit, world detection, and tracking. Instead, use friendly, conversational terms that most people will understand.

Augmented Reality - Technologies - iOS Human Interface Guidelines

AppleTV - ライブラリが対応していないなら自力で実装

AWSSDKを使えず自力実装を余儀なくされた。
issueは上がっているが、対応されていない。

技術的負債の返済 - iOS HOME'S Architecture

クリーンアーキテクチャを採用した。
ユースケースリポジトリプロトコルにのみアクセスしており、それ以下のレイヤーの影響を受けない。

【参考】
クリーンアーキテクチャの解説の翻訳記事。
クリーンアーキテクチャ(The Clean Architecture翻訳) | blog.tai2.net

検索テーマとは

HOME'Sアプリの検索条件は細かく設定できる半面、どんな検索条件にすればよいか迷いやすい。そこで、検索テーマという検索条件のレコメンドを導入した。

検索テーマの配信手段

RemoteConfigはConditionで条件をつけることができる。
これは例に挙げたようなOS対応だけでなく、ユーザの属性に合わせることもできる。例えば、若い人向けに新生活に向けたリコメンドを行うこともできる。
配信先の切り替えの難しさをSDKが吸収してくれる。また、導入も簡単。

所感

LIFULLの環境は恵まれています。それと比べれば、私やあなたの環境は制約されているかもしれません。でも、それで諦めてはいけません。制約の中でも変えられることはあり、チャレンジすることが必要です。発表前半にそのためのヒントがちりばめられていました。

私も少しずつ変えていくチャレンジをしていきます。

デブサミ2018「【15-C-4】多様なビジネスドメイン、サービスフェーズが混在する中での組織戦略と技術戦略」聴講メモ

はじめに

Developers Summit 2018 (Developers Summit 2018)
【15-C-4】多様なビジネスドメイン、サービスフェーズが混在する中での組織戦略と技術戦略
スピーカー:宮川 典久 さん [リクルートテクノロジーズ]
の聴講メモです。

メモは口頭説明を中心にまとめています。資料を併せてご参照ください。

Twitterのつぶやきがtogetterでまとめられています。併せてご参照ください。
【デブサミ2018】15-C-4「多様なビジネスドメイン、サービスフェーズが混在する中での組織戦略と技術戦略」 #devsumiC #devsumi - Togetter

【参考】としている個所は私が挿入しています(補足や参考資料など)。登壇者の講演内容ではありませんので、その旨ご了承ください。

聴講メモ

リクルートの主な事業

リボン図はユーザと企業をつなぐビジネスを表している。

【参考】
リボン図(リボンモデル)を解説した記事があります。
すべての事業の基盤は「リボンモデル」 : 日経BizGate

ライフイベント領域は人生の大きなイベント、ライフスタイル領域は日々のイベントをターゲットにしている。

リクルートの文化

リクルートボトムアップの文化であり、下から提案し、上はそれを承認する。また、失敗から学ぶ文化がある。

各部門でバラバラにテーマを決めて取り組んでおり、その一つとしてオフショア開発にも積極的に取り組んでいる。

行ってきた取組

エンジニア採用の拡大により、150人が6年で700人を超えた。

現場で上がる声

メンバーがボトムアップで提案しても、複数いるステークホルダーの意見の相違により前に進まないことがある。

ビジネス観点

飲食店向けのサービスであれば、クライアントはお店であり、カスタマーは来店者といえる。

SoEはゴールが見えないため、アジャイルが向いているといわれる。

各ビジネスが100億を超え、かつ成長しているためにリソースを集中させにくい。

関連組織が機能別に分かれており、ステークホルダーが多いために仕様調整が難しい。

アーキテクチャ観点

型化とは、全員が平均以上のことをできるようにするということ。だが、型化ゆえに基本構成から外れることが困難になった。

【参考】
「型化」についての説明を引用します。

私が考えたのは「型化」。つまり、仕事のやり方の型・ベースを徹底的に身に着けるという事です。

スマート開業事例 ~ 3万社への営業から導き出した行動概念をマニュアル化し「型化」するサービス。株式会社Gifted(ギフテッド) 杉田 恵美氏 | 先輩起業家インビュー | 開業事例 | 開業計画ナビ

リクルートは見込みのあるプロダクトに対して一気に投資を行うことで、成長期を短期間に通過しようとする。それゆえに技術負債がたまりやすい。

これまでの開発体制

カスタマー(Web)はいろいろ改善をしたい。これに対してクライアント(Web)は変更の頻度が低い。
だから、カスタマーはScrum開発チーム、クライアントはオフショア開発チームが担当するという体制になっていた。
だが、カスタマーとクライアントはそれぞれにSoR/SoEの両方の要素がある。ScrumでSoRの要求(納期)、オフショアでSoEの要求(高速リリース)という、本来であればチームに向かない要求に応える開発を行う中で元々の強みが失われていった。

現在目指している体制

SoEの領域はScrum開発チームが担当し、SoRの領域はオフショア開発チームが担当することで、各開発チームの強みを活かせるようにしていく。

開発体制

様々な組織から発生する開発案件に対し、開発チームのマネージャーやリーダーが調整業務に奔走することになった。だが、リーダーの調整業務をエンジニアに任せるのではなく、エンジニアには開発に集中して欲しい。そこで、ディレクション組織が開発案件をコントロールすることにした。

学び

苦手を克服しようとして強みを失ってしまう。

ビジネスフェーズによる組織戦略

導入期・成長期はSoE、成熟期はSoRの要素が強い。
成長期にエンジニアが疲弊してしまう。技術的負債がたまったり、SoEからSoRへと要素が変化することに対応しなければいけないため。

マネジメント層がフェーズに応じてチームの構成を変えていく必要がある。

Airシフトとは

Airシフトは飲食店のシフト調整を効率化するサービス。

【参考】
Airシフトの紹介ページです。
Airシフト(エアシフト)|やりとりも作成もラクになるシフト管理サービス

開発プロセス

Airシフトはウォーターフォールスクラムを組み合わせた炎上しやすいプロセス。でも、炎上を回避できた。

アーキテクチャ方針

課題に対してアーキテクチャで対応した。
BFFサーバを採用して、バックエンドはシンプルにし、BFFで画面とのギャップを吸収する。

【参考】
BFF(Backend For Frontend)の解説です。
Sam Newman - Backends For Frontends

Consumer Driven Contract でフロントエンド(利用)側がAPI仕様を決定するようになると、変更が頻発してバックエンド(提供)側が疲弊する。この対応としてAgreedを開発した。フロントに対してはモックとして機能し、バックエンドに対してはテストケースとして機能する。

【参考】
Agreedのもう少し詳しい解説が記載されています。
リクルートテクノロジーズのフロントエンド開発 2016 - from scratch

BFFはフロントエンド/バックエンドの双方が開発に携わる。

想定外の変更がないようにディレクション組織が管理する。

FWなどを担当する技術基盤チームを機能として独立させるのではなく、開発チームに組み込んだ。

アーキテクチャ戦略

マイクロサービスのように細かく分離しすぎると、これまでのモノリシックとのギャップが大きく、エンジニアがついていけなかったり活用できないことになる。

技術方針

長期的な視点で技術の開拓を行い、サービスに採用していく。

リクルートの文化

ボトムアップをバラバラで終わらすのではなく、経営層がそれを踏まえてディレクションすることが大切。

失敗する場を作り、経験を積ませるのも大切。

所感

リクルートテクノロジーズは転職活動の際にお世話になったことがあります。その際に非常に印象的だったのが、面接官のエンジニアの方も採用担当の方もとてもエネルギッシュで、仕事を楽しんでいることが伝わってきました。今回のお話のテーマの一つである組織戦略がそこに寄与しているのではないかと感じます。

仕事を楽しめる文化と環境を作ることは私個人のテーマでもあり、チーム作りの参考にしたいと考えています。