【1】HDFSと分散ストレージ
──Hadoop/鯵坂明
まず登壇したのは、Hadoop黒帯の鯵坂(あじさか)明。「黒帯というよりOSS屋として活動している」と言う鯵坂は2018年9月にヤフーに中途で入社したOSSデベロッパー(Apache HadoopおよびApache YetusのPMC[Project Management Committee] memberおよびcommitter)。その言葉通り、業務時間の3割はパッチを書いたりレビューしたりといったOSSコミュニティでの活動にあてており、これまでにHadoopで700個以上のパッチをコミットしています。
- Hadoop/鯵坂明
- NTTデータにてApache Hadoopおよび関連OSSの評価、導入支援およびサポートに従事したのち、2018年にヤフーに入社。Apache Hadoopおよび関連OSSの検証やトラブルシューティングを担当。Apache Hadoop、Apache Yetus、Apache IncubatorのcommitterおよびPMC member。
HDFSの長所はディレクトリのrename(mv)やlisting(ls)が比較的高速であることや、1ファイルを複数のブロックに分割することによって、複数のworkerから並列に読めるため、シーケンシャルアクセスのスループットが高速であること。そして14年の歴史があり、非常に枯れていることがあげられます。
一方、短所としてはシーケンシャルアクセスが比較的高速なことに対してランダムアクセスが遅いこと。名前空間に対する変更処理を1台のマスターがすべて処理するためTPS(transactions per second)がある程度のところで頭打ちになること、また、名前空間とブロックの情報をすべてマスターのJavaヒープ領域内で管理するため、ファイル数が増えるとヒープサイズが肥大化してマスターがGCの負荷で悲鳴をあげてしまうことだといいます。
「先ほど紹介した短所のうち、ランダムアクセスが遅い以外の問題を解決するために近日導入予定なのが、RBF(Router-based Federation)という機能です。ただ、これも万能なわけではありません。クラスタまたぎのrenameができない、データとクラスタのマッピングを気軽に変更できない、クラスタ・コンポーネントが増えることによる運用コストの増加というつらさもあります」

目利き力を鍛えるためには「とにかく勉強すること」と鯵坂は言い切り、「今時の最新動向やOSSの新機能に関する論文が読めるようになり、分散ストレージを選ぶ際に役立ちます」と、書籍「データ指向アプリケーションデザイン(Martin Kleppmann、オライリー・ジャパン)」を勧めました。
最新動向については、「Object Storage」が盛り上がっていると語ります。
「Amazon Simple Storage Service(Amazon S3)が流行したことで、実はEventual Consistencyでも多くのケースでは大丈夫だったとみんなが思うようになった。またHadoopコミュニティにおいてもOzoneというサブプロジェクトでObject Storageを開発、HDFSの開発者の多くがそこに移籍したこともあって、かなり盛り上がっています。OpenStack SwiftやCephがすでにいる世界に殴り込みをかけているので面白い。社内でもDragonという内製のオブジェクトストレージを開発しており、DragonがHDFSのいくつかのユースケースを奪っていくような状況が今後見られるかもしれません」
最後に鯵坂は「分散ストレージやその上で動作する分散処理に興味のある人はデータプラットフォーム本部に(社内異動制度で)ぜひ来てください」と呼びかけました。
【2】End-to-Endモデルによる音声認識
──音声処理/藤田 悠哉
続いて、音声処理黒帯の藤田悠哉が登壇しました。藤田のLTタイトルは「音声処理技術の最新動向 End-to-Endモデルによる音声認識」。
- 音声処理/藤田 悠哉
- 2007年に日本放送協会に入局。2011年から2014年までNHK放送技術研究所にて音声認識技術(Speech-to-Text)の研究開発に従事。2014年ヤフーに入社後も、音声認識技術の研究開発を続ける。

とはいえ、精度とレイテンシーを両立するモデルにするのが難しいという課題があります。End-to-End音声認識にはCTC、RNN-Transducer、Attentionの3つの代表的な手法があります。そのなかでも藤田はAttentionベースのモデルに着目しており、ここではAttentionモデルの一つであるTransformerというモデルについて解説を行いました。
Transformerは、精度は高いが計算量が多いモデル。Self-Attentionという構造がボトルネックになっています。Self-Attentionは1つの出力を得るためにT個の入力の重みづけの和を計算するため、T回の計算が発生します。
それをT回繰り返すため、Tの二乗の計算が発生。また「Tの値が事前にわからないという課題もある」と藤田は言います。


「Adaptive Spanは最適なカーネル長(窓幅)をモデルとともに学習するというアプローチで、このモデルもTは事前にわからなくてもOK。この2つのモデルを音声認識に適用して実験をしており、いずれもTransformerと同等か若干劣る程度の精度で演算量を削減できました」

今後の展開としては「レイテンシーについての分析をし、さらなる高速化・低レンテイシー化に取り組んでいく」と藤田。最近は機械翻訳の世界でNon-autoregressive Transformer(NAT)が盛んに研究されており、これにも注目していると語りました。
【3】Appleプラットフォームの技術動向
──iOSアプリ/林 和弘
iOSアプリ黒帯の林和弘は、「ここ数年のAppleプラットフォーム向けアプリの技術トレンド」をテーマにLTを行いました。Apple製プラットフォームのアプリ開発という観点から、直近でどんな変化が起きているのか、主に「アプリのポータビリティ」のトピックスについて語りました。
- iOSアプリ/林 和弘
- 大手SNS企業でのバックエンド開発、新規事業開発などを経て、2014年にヤフー入社。入社後はiOSアプリ開発を専門として、Yahoo!ショッピング、GYAO!、Yahoo! JAPANなどのアプリ開発に従事。社外ではGithub、Qiita、Speaker Deckなどで技術情報を発信。
「アプリのポータビリティについては、Apple製のOSはつかず離れず。各OS間の統合を懸命に模索しています。現在、Apple製OSはiOS、iPadOS、watchOS、tvOS、macOSの5種類でいずれも、プログラミング言語はSwiftを採用していますが、UI用のフレームワークが微妙に異なります」

「さらにそれを推し進め、 iPad上で動くOSは2019年にiPadOSという名前へリブランディングされました。マルチタスキングが提供されたことで、地図と時計のアプリをiPadでは横に並べることができるが、iPhoneではできないなど、iPhoneとiPadとで機能が著しく変わってきました。iPadはどんどんMacに近づいてきています」
また19年にCatalystが発表となり、iPadアプリをMacアプリとしてビルドできるようになり、20年macOSのデザイン刷新により、「見た目はiPadアプリになった」と林は続けます。さらにApple Siliconが発表となり、iPhoneアプリ。iPadアプリをmacOS上で動かせるようになり、コードに手を入れる必要がなくなったと言われています。
このように個別の統合を活発に取り組んでいるAppleに対し、「デザインレベルでは違いを作りつつ1ソースで全プラットフォームのアプリを作れる状態を目指している」と林は自身の考えを明かします。
そのカギを握っているのが「SwiftUI」。19年に発表された新しいUIフレームワークの存在です。SwiftUIは宣言的にコードでUIを記述でき、1ソースで全プラットフォームのアプリを作ることができます。またプラットフォーム間のUIの差異を吸収するため、「SwiftUIはそのAppleの戦略を実現するためのUIフレームワークとして捉えることができる」と林は力強く語ります。

「まとめるとAppleのプラットフォーム環境は次のような方向性となっている。UIのレベルではデバイスごとに最適化する。コードのレベルでは1ソースで全デバイスへ対応する。各デバイス上でのUIを妥協せずにコードレベルの統合を新フレームワークで模索している」と林。最後に、「興味のある人は、社内で開催予定のSwiftUIセミナーに参加してほしい」と呼びかけました。
【4】最近のAndroid界隈の技術動向
──Androidアプリ/森 洋之
Androidアプリ黒帯の森洋之のLTテーマは、「最近のAndroid界隈について」。はじめに、Android11ではどんなことができるのか、新しく追加された機能から、語りはじめました。
- Androidアプリ/森 洋之
- Androidアプリの個人開発などを経て、2012年にヤフー入社。ヤフオク!のアプリ開発などに従事、2014年にAndroid分野での黒帯に認定。 Droid Kaigi、Droidcon Berlin、Droidcon Transylvania、Devoxxx Moroccoなどに登壇。
「そうした条件を満たせる場合には、Bubblesという機能を実装することで、別のアプリを開いていても通知時に表示され、タップをすると即座に返信できるようになりました」

「Media Styleを通知に設定し、Media browser servicesを実装することで容易な切り替えが可能になります」

「アプリがバックグランドで位置情報にアクセスする場合は、目的などをユーザーに明示的に表示し、承認を得るというポリシーが追加されると言われていました。しかし、そのポリシーの適用は、2021年まで後ろ倒しになることになりました。この間に対応するようにしてほしいということです」
「Developer friendliness」の機能により、開発者オプションが増え、無線adbデバッグがやりやすく、実用的になったと森は言います。
「ただし、互換性のない機能についてはターゲットSDKバージョン30にしない限りは有効にならないので余裕をもって対応することができます」

「内部テスト版でSlackにエラーのトレース情報を流したり、実リリース版でもログを送信し、アプリが終了する理由などの集計が容易になります」
続いて、Jetpack とその他のライブラリや裏技についても紹介されました。
「『ContentProvider』はプロセス間でデータを送受信するためのコンポーネントですが、アプリケーション起動時に、Applicationクラスよりも先に生成されることを利用して、データの送受信のためではなく、ライブラリの初期化用コンポーネントとして利用されてきました。しかしこれは速度面でデメリットがあり、また生成順序を制御できないため、これに代わるApp Startupというライブラリが作られました」
さらに、Google製のDIライブラリ「Hilt」、「Paging3」、「Compose」などの最新動向が紹介されました。
今回の黒帯LT会では、上記4名のほかに、プログラミング言語「Go」黒帯の加藤優介がGo言語の最新動向について語りました。加藤は社内のGoコミュニティの育成にも注力しており、毎月Go LTを開催しています。
このように黒帯たちは、社内外問わず、専門技術の動向や取り組みについて発信しています。興味を持った方は、ぜひ黒帯たちが登壇するセミナーやSNSでの発信情報などをチェックしてみてください。