Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ソニーでの事例から考えるプラットフォーム開発

Shun Satou
January 23, 2024

 ソニーでの事例から考えるプラットフォーム開発

「今から予測する2024年のPlatform Engineering」で発表した資料です。
https://forkwell.connpass.com/event/303922/

Shun Satou

January 23, 2024
Tweet

More Decks by Shun Satou

Other Decks in Technology

Transcript

  1. 自己紹介 • 佐藤瞬 • 経歴 • 2011-2016 SI企業 • 基幹システムからWebシステムまで色々

    • 主にAWS上でのシステム開発・構築 • 2016- ソニー入社 • TVやAudio製品向けのサービス開発に従事 • 過去の発表スライド • https://speakerdeck.com/shunsato123 • 書籍 • AWS関連の書籍の執筆 • 同人誌の作成 商業誌 (出版:SBクリエイティブ株式会社) 同人誌 顔
  2. TV番組メタ情報配信サービス TV SideView Music Center BRAVIA BD Recorder/Player Meta Service

    • 主にTV/レコーダー向けにテレビ番組情報を配信するサーバー • 視聴履歴に基づく番組推薦や予約・視聴ランキングなども生成・配信しています
  3. Creators' Cloud Creators’ App ファイル転送、リモート撮影やクラウドストレージ へのアクセス、「Discover」などが 利用できるモバイルアプリ Creators’ Cloud (Web)

    クリエイターの撮影から制作全般を サポートするプラットフォーム Master Cut (Beta) カメラのメタデータとクラウドAIにより、高速・高精 度に動画補正できるクラウドサービス Ci Media Cloud 使いやすいUIで、メディア共有や共同作業における 制作ワークフローを効率化するクラウド制作プラット フォームサービス Discover 撮影・制作した作品を世界中へ発信し、また 他ノクリエイターの作品を閲覧できるサービス Creators' Cloud カメラユーザー向けのクラウドサービス
  4. SEEDS Cloud SEEDS Cloud • HES製品向けのサービスプラットフォーム • ユーザー認証、IoT基盤、データ配信、データ分析・ML基盤など クラウドを利用する際に必要な機能を提供 •

    WWで1000万以上のアカウントを支えるプラットフォームとなっています SEEDS Cloud HES製品 • HES:Home Entertainment and Sound products • テレビやヘッドホン、サウンドバーなど 主に動画や音楽を楽しむためのデバイス
  5. Platform Engineeringの観点で考えるSEEDS Cloud • SEEDS Cloudは社内でもうまくいっている方 • ソニーの中でもプラットフォームは数多く生まれては消えている • そういった中でなぜSEEDS

    Cloudは残せているか • Platform Engineeringの観点から振り返る • SEEDS Cloudの開発をはじめたのは4年前なので、当時はPlatform Engineeringという言葉は聞かなかった • 結果論ですが、Platform Engineeringで語られるプラクティスに照らし合わせて、 SEEDS Cloudがうまくいっている要因やそれぞれの意味について考えていきたいと思います • CNCF Platforms White Paper • https://tag-app-delivery.cncf.io/whitepapers/platforms/ • 基本的にはこちらの”Attributes of platforms”をベースに振り返っていきたいと思います。 • Platform as a product/User experience/Documentation and onboarding/Self-service Reduced cognitive load for users/Optional and composable/Secure by default
  6. Platform Engineeringの観点で考えるSEEDS Cloud • CNCF Platforms White Paperで上げられているプラットフォームの成功要因 1. Platform

    as a product 2. User experience 3. Documentation and onboarding 4. Self-service 5. Reduced cognitive load for users 6. Optional and composable 7. Secure by default 上から順に振り返っていきたいと思います ※まだまだ勉強中ではあるので、あくまで自分の解釈と振り返りという点はご了承ください
  7. Platform as a product • 概要 • Platformをプロダクトとして捉え、プロダクトを通じて顧客(=開発チーム)に対して価値を届けるのと 同様のアプローチで開発する •

    SEEDS Cloudでの取り組み • クライアント(アプリ、デバイス開発チーム)と一緒にユーザーに対してどういう体験を届けるか、 それに対して何が必要かという部分を議論しながら開発を行っています。 • 項目に対する考察 • 使われることが重要になる。開発して終わりにならない • 技術先行で作り始めたプラットフォームでは開発が目的になりがち • プラットフォーム開発の目的がコストダウンになることを防ぐことができる • プラットフォームによって共通化することで効率化し、コストダウンしようという目的で開発されるプラットフォームが 多いと感じているが、ゴールをコストに置いてしまうと、プラットフォームの品質がおろそかになってしまう (それで失敗したプラットフォームを見るように思う) • ”価値”を届けることを最優先目的にすることで品質に重きを置くことができる
  8. User experience • 概要 • Platformは一貫したインターフェースを提供し、ユーザー体験に重きを置き、それぞれの立場に応じた手段を提供 する。開発者に対してはIDEから、テスターにはCLIから、プロダクトオーナーにはGUIからなど。 • SEEDS Cloudでの取り組み

    • 基本的にはAPIを提供しているのみで、他はJIRAのチケット等での申請ベースになっている • 開発チームとの距離が近く、まだ対応しきれる規模であるためそれでも成り立っている状況で、 ここは今後の課題になってくる • 項目に対する考察 • プラットフォーム開発側の視点で利用手段を強いることがなくなる • 社内基盤では特にこう使ってくださいと決まっていて、融通が効かないケースが多い • 同じ価値が提供されるのであれば、使いやすいほうをユーザーは選択する。 機能提供がゴールになってしまいがちだが、その先のユーザー体験まで目を向けることで、 代替サービスが出てきても使い続けてもらえる
  9. Documentation and onboarding • 概要 • ドキュメントはソフトウェアの成功にとって重要な要素であり、プラットフォームは適切なドキュメントともに提供される必 要がある。加えて、ユーザーがサービスを迅速に利用できるようなオンボーディングの仕組みも必要。 • SEEDS

    Cloudでの取り組み • ドキュメントサイトを用意し、API仕様やSEEDS Cloudで実現できるユースケースやシーケンス図を公開している • 項目に対する考察 • オンボーディングまで考慮する • ドキュメントを作らないケースは現在はほとんどないと思います。 ただAPI仕様だけでなく、どのように利用すればいいのか、利用イメージまでつくことが大切に思います プラットフォームを利用する側はその機能や技術に対して明るくないケースが多いため
  10. Self-service • 概要 • プラットフォームはセルフサービスであり、ユーザーが自律的に利用できる必要がある • SEEDS Cloudでの取り組み • User

    Experienceの項目にもかかってくるが、ここはあまりできていない • 基本的にはSEEDS Cloudのチームがサポートして立ち上げている • 項目に対する考察 • 目指すべき姿が明確になる • そうあるべきというのは理解できるが現実的には難しい部分がある • たいていもっとやることがあり、自動化するより都度手動の方が効率がよかったりする • ただし、ここに項目としてあることで目指すことは忘れないでおける
  11. Reduced cognitive load for users • 概要 • 開発チームの認知負荷を軽減する。実装をカプセル化し、複雑性を隠蔽する必要がある •

    SEEDS Cloudでの取り組み • プラットフォームを作る目的の一つでもあり、ソニー内でも例えばソニーアカウントを利用するための実装を 請け負っていたり、他社のサービスをWrapしている • また、証明書の管理や社内申請、セキュリティ対策など、実装以外の認知負荷も多く存在する • そういった部分を肩代わりすることもプラットフォームの一つの価値になっているに感じる • 項目に対する考察 • 「認知負荷」がスポットライトを浴びて対策が考えられるようになった • 現代の開発で必要となる知識が多すぎるという問題はあったが、 認知負荷という言葉は開発現場では最近使われはじめた • 言語化されることで問題が見えやすくなり、対策ができるようになったことは大きなことに感じる • プラットフォームが解決すべき重要な課題として認識された • 認知負荷を軽減できているかという観点でプラットフォームを評価できる • 一方で、前述したように実装以外の部分にも目を向けてもよさそう
  12. Optional and composable. • 概要 • プラットフォームの各機能は選択可能で、一部のみを使用できるようにする必要がある • SEEDS Cloudでの取り組み

    • 特に制限していない。いくつかあるサービスの内一部だけを使うプロダクトも多くあり、 Firebaseなど他サービスを使うケースも許容している。 • 項目に対する考察 • 機能の依存性を考慮して開発する • 各機能が選択可能であれば、他サービスと組み合わせるケースもあり、プラットフォーム内の機能の依存度は 下げておく必要がある • プラットフォームを運用していく中では、不要となっていく機能も出てくるため、そういった際にサービス終了もしや すくなってくる
  13. Secure by default • 概要 • プラットフォームが提供する機能はデフォルトでセキュアであり、組織が定義したルールとコンプライアンスに 準拠していること • SEEDS

    Cloudでの取り組み • 社内のルールや一般的なセキュリティ基準は満たす形で提供している • 特にWWでの機能提供になるので、各国の法対応は法務や開発チームとも協力して実施 • 項目に対する考察 • ガバナンスを効かせる強い要素になる • 機能面だけ見れば他にも選択肢は多く存在するが、それがセキュアであるか、法的に問題がないかは専門的 な判断が必要なケースがある • 組織としても重要なプラットフォームになる • それを利用することでセキュリティやコンプライアンスを満たせるプラットフォームとなっていれば、 ユーザー目線で利用する強いモチベーションになるだけでなく、そういったプラットフォームがあることは 組織としても価値が出てくる(予算などを含め継続性が高くなる)
  14. まとめ • Platform Engineeringの観点から既存のプラットフォームである SEEDS Cloudについて振り返ってみました • Platform Engineeringによりプラットフォーム開発の知見が整理され、 自分たちのプラットフォームの見直しに利用することができる

    • プラットフォーム開発という活動で継続すべき点が明確になる • 価値に重きを置く(Platform as a Product)ことや、セキュリティの意識など、 当たり前ではあるものの、今後も継続すべきものについて改めて明確化できた • 機能提供が目的になっており、ユーザー体験や自動化といった部分には対応できていない • 価値のあるものを作るという部分は意識していても、特に社内のプラットフォームだと ユーザー体験といった部分まで手が回っていない現状がみえてきた • 自動化についても理想としてはわかるものの、手を付けられていない
  15. Platform Engineeringへの所感と今後 • 体系化・言語化されていなかった知見が明確化されている • 「プラットフォーム開発」という観点に着目して知見が語られることは今まであまりなかった • 意識しているしていないに関わらず既にやっていたことも多いはずだが、 体系化・言語化されてこなかったために広まっていない重要な考えがある •

    この辺は"SRE"が流行ったときと同様に思います • Platform Engineering が広まることで、プラットフォーム開発の成功率、品質の向上が期待できる • サーバーサイドからもっと広がっていってもよい • ”開発者”という観点であればサーバーサイドのエンジニアだけでなく、 様々なエンジニアがいて、様々なプラットフォームが必要になります。 • Platform Engineering考えはもっといろんな領域で利用できるのではないかと思いました • せっかく盛り上がっているので、色んな事例と知見が出てくればよいと思います • 今回話した内容もPlatform Engineeringなのか?というと微妙な部分もありますが、 今回こういう機会をいただいたのでプラットフォーム開発というテーマで何か共有できればと思いました。 • 今は盛り上がっているときなので、細かいことは気にせず色んな事例や知見を公開していけばいいのかなと思います。 その中でさらに整理され、洗練されたPlatform Engineeringができていくと考えています。