こんにちは。CTO室アプリ統括部でヤフーのアプリの技術的な課題解決や新規技術の検証と開発をしている田中です。iOSアプリ黒帯※1 としても活動しています。
ところで、ヤフーのiOSアプリがApp Storeにいくつ公開されているかご存じですか? 現時点では31個のiOSアプリが公開されています。
そのような数多くのアプリを開発・運用していくために、アプリエンジニアが増えてチームも分かれると、さまざまな弊害が起こりがちです。ですがヤフーでは、それらを円滑に連携していくためにいくつかの試みを実践しています。
この記事ではiOSアプリにフォーカスして、ヤフーのエンジニアがどのようにナレッジ共有の工夫をしているか紹介していきます。
※1 黒帯制度とは:各領域において突出した専門性を持つ社員を黒帯として任命し、社内外における活動を会社として支援する制度
ヤフーのアプリ開発体制
基本的にはアプリごとに開発チームが分かれています。
また、アプリ間で実装を共通化するためのSDKを開発するチームもあります。 (ログインSDKなど)
そして、それぞれで意思決定をして何を開発するか、どうやって開発するかを決めています。そのため、アプリごとに開発手法や設計などは異なります。
GitHubでプルリクエストを送って、レビューするというよくあるスタイルで開発しているアプリもあれば、ヤフオク!やPayPayフリマでは開発手法としてペアプログラミングを採用していたりします。
開発チームが分かれることの弊害
チームが分かれていることによりミニマムに意思決定ができたり、チームに合わせた方法で開発ができるメリットがありますが、チームが複数あることで、一般的に下記のような問題が起こります。
- 対応すべき案件の漏れ
- チームごとのノウハウのギャップ
- チーム間の連携不足
いわゆる縦割りによる弊害です。
ヤフーではその問題に対して、いくつかの試みを実践していますが、今回は「チーム横断案件の推進」「新技術のキャッチアップ」「技術コミュニティ」の3つの視点で紹介します。
1.チーム横断WGで、全アプリを健全に保つ
iOSの世界ではUXやセキュリティ、プライバシー等の観点で対応しなければアプリをストアに公開できなくなることがあり、対応を忘れていることに直前で気づき、リリースできないという自体になると非常に困ります。
また、XCFrameworkやSwift Package Managerなどの対応すると開発効率が上がる新技術も次々に追加されていきます。
そこで、それらの情報のキャッチアップや対応の推進のためにアプリを横断で管理するチーム (WG: Working Group) があります。
そのWGのメンバーのほとんどがアプリやSDKを作っている開発者で構成されているため、コミュニケーションが円滑に進みます。
WGのメンバーは定期的に集まり、アプリ開発中に発生した問題を報告したり、新しい技術への対応や対応しなければならない案件を共有しています。
そこで決まった対応方針などを各アプリやSDKのチームに伝え、対応状況をトラッキングすることで全アプリが健全な状態になるようにしています。
2.有識者が新技術をキャッチアップし、ノウハウを社内に広げる
iOSアプリの利用者は比較的若い人が多く、新しい技術にも敏感です。そのため、ヤフーはiOSの新技術にも積極的に対応しています。
iOSの新技術のほとんどはWWDCというAppleの開発者向けイベントで公開され、3カ月ほどのベータ公開期間を経て、App Storeにその技術を実装したアプリをリリースできるようになります。
発表された新情報はその領域のエキスパートや関心のある有志によってキャッチアップされ、社内WWDC報告会というかたちでチームをまたいで情報が共有されます。
ただ英語の情報を日本語に翻訳して報告するのではなく、実際に動かしてみた結果やヤフーのアプリでの利用例なども紹介されるため、時間がなくてWWDCの情報を追えない人でもこれを見るだけで重要なトピックに関しては詳しくなれます。
Widget Suggestions対応とヤフーの新OS対応 より引用
また、SlackにはほとんどのiOSアプリエンジニアが入っているiOSの情報チャンネルや雑談チャンネルなどがあり、常に新情報が得られますが、新バージョンのOSが発表されるとそれについて試したことや困っていることなどをみんなに共有できるチャンネルも開設され、毎年わいわいと盛り上がっています。
一般的によくあるのが、新技術の対応がしたくても技術的な課題や開発リソースの問題で難しいというケースです。
そのようなアプリには、情報をキャッチアップしたWGのメンバーがペアプロをしたり、プルリクエストを送ったりするなどのサポートをしてくれるため、どのアプリでもスムーズに対応が進み、またその際にさまざまなノウハウが得られます。
3.技術コミュニティを育て、ノウハウ差の解消や相談相手を増やす
チームが分かれていると誰が何について詳しいのか、他のチームが何をしているのかがわからなくなったり、チーム外の知り合いが増えないということもあったりします。
それらを改善するためにも社内iOS LT会を開催し、担当しているアプリでの近況を話したり、副業や個人開発で得た知見などを話したりする機会を用意しています。
最近ではLINEのエンジニアとも一緒に社内iOS LT会を開催することもあり、先月には社外向けにも「ヤフー x LINE iOS Meetup」を開催しました。
このようなLT会やiOS雑談チャンネルなどのチームをまたいだコミュニケーションによって、ノウハウの差の解消や相談できる相手を増やせるようにしています。
まとめ
ヤフーのアプリエンジニアは複数のチームが存在し、さらにフルフレックス制で無制限なリモートワーク環境で働いています。
しかしコミュニケーションツールやLT会などによる積極的な情報の共有や、横断チームのサポートにより誰も取り残されないような環境を用意しているため、安心して開発ができ、最新情報や動向もいち早くキャッチアップできます。
また、connpassのメンバーになると先ほど紹介したアプリの技術イベントなどの情報を受け取ることができます。みなさまの参加お待ちしております。
https://yj-meetup.connpass.com/
(この記事に関連する採用情報「アプリ開発エンジニア」もぜひご覧ください)
こちらの記事のご感想を聞かせください。
- 学びがある
- わかりやすい
- 新しい視点
ご感想ありがとうございました