226 Views
May 26, 26
スライド概要
会津大学公認の技術系サークルZli(ジライ)主催の「大LT 2026 春 in Aizu」でのLT資料です。Goのコードを「gomobile」というライブラリを使って、モバイルアプリから利用する仕組みについて発表しました。
1997年の設立以来、動画配信を主軸に事業展開。コーポレートメッセージ「もっと素敵な伝え方を。」を掲げ、テクノロジーを通じて世の中のコミュニケーションをよりよくすることを目指しています。 自社で保有・運営する独自のコンテンツ配信ネットワーク(CDN=Content Delivery Network)を活用した動画配信に加え、長年のノウハウを活かした動画の企画・制作・運用やWebサイト制作、システム開発、動画広告による収益化支援まで総合的なサービスとソリューションを提供。取引実績はメディア、大手企業をはじめ年間1,200社・10,000案件以上です。手がける技術領域は、ネットワークの物理層からアプリケーション層にわたり、日本屈指の大規模配信や最先端案件の実績も多数あります。 エンジニア向けオウンドサイト「Voice」公開中! https://voice.stream.co.jp/
Golangで書いたコードを モバイルアプリで動かせるらしい 大LT2026春 in Aizu 5/16 株式会社Jストリーム プラットフォーム本部 技術開発部 鈴木 啄斗 1
自己紹介 鈴木 啄斗(すずき たくと) プラットフォーム本部 技術開発部 アソシエイトエンジニア • 芝浦工業大学大学院卒 • 新卒2年目 • 学生時代 • WebフロントやReact Nativeでの モバイルアプリ開発 • 現在は動画プレイヤーの開発担当 2
技術選定どうしてる? WebならJavaScript, PHP… UnityならC# iOSならSwift AndroidならKotlin 3
技術選定どうしてる? WebならJavaScript, PHP… UnityならC# iOSならSwift 慣れた言語で開発したい、、、 AndroidならKotlin 4
gomobile GolangのコードをSwift, Kotlinのライブラリに変換 .xcframework Go Package gomobile build ビルドコマンド .aar ※使える型に制限有り string, int, bool, []byte, *Struct, error 5
gomobile 注意 • まだ実験的なライブラリ • 現状そこまで活発に開発されてなさそう • 使うとしても研究開発や趣味の範疇まで 6
せっかくだし、、、 これで遊んでみたい!!! 7
何を作ったか HTTP/3でHLS動画を再生するiOSアプリ • golang製のhttp/3サーバー • データの並列配信 • golang製のhttp/3クライアント(Fetch関数) • gomobileでSwiftライブラリ化 • golang製のhttp/1.1サーバー • iOS上でローカルサーバーとして使い、 http3クライアントとSwift側を繋ぐ • Swiftアプリ • 動画データのリクエスト、再生 Claude Opus4.7をモリモリ使用 8
HTTP/3 従来 アプリケーション層 HTTP/3 HTTP セキュリティ層 TLS トランスポート層 TCP ネットワーク層 HTTP/3 QUIC TLS1.3 UDP IP 9
QUIC TCP クライアント サーバー 1 1 2 1 2 3 QUIC クライアント 1 1 2 1 サーバー 2 3 10
HLS 動画データ マニフェストファイル セグメント(.tsファイル) に分割 セグメントを受信し、 順番に再生 11
アーキテクチャ iPhone HTTP/3サーバー HTTP/3クライアント キャッシュ ローカルHTTPサーバー AVPlayer 12
アーキテクチャ iPhone HTTP/3サーバー セグメントファイルを並列で送信 HTTP/3クライアント キャッシュ ローカルHTTPサーバー AVPlayer 13
アーキテクチャ iPhone HTTP/3サーバー 受け取ったセグメントファイルのデータ をキャッシュに保存 (キャッシュといってもGoの変数) HTTP/3クライアント キャッシュ ローカルHTTPサーバー AVPlayer 14
アーキテクチャ iPhone HTTP/3サーバー ローカルHTTPサーバーがキャッシュ から取ったデータをプレイヤーに渡す。 プレイヤーは渡されたデータを再生。 HTTP/3クライアント キャッシュ ローカルHTTPサーバー AVPlayer 15
デモ 16
Wireshark上でも確認 17
まとめ • gomobileでGoを使ったモバイルアプリ開発ができる • 実験的なライブラリだから使用には注意、、、 • Goでしかできない or Goの方が扱いやすい領域があるなら便利かも • ネイティブでできるなら、多分最初からネイティブの方が楽、、 18