YouTube2Text

layerx.go #1 〜最適化・効率化〜 — Transcript

by LayerX 公式 · 1,284 words · 1,284 segments · language ja · Watch on YouTube

Full transcript

  1. 0:00はいえ皆さんお集まりいただきありがとう
  2. 0:03ございます7時になったのでレアX5始め
  3. 0:06ていきたいと思いますよろしくお願いし
  4. 0:11ますはいまず私の軽い自己紹介なんです
  5. 0:15けどえっとパミュと申しましてえっと今は
  6. 0:18axの暴落事業部というところで
  7. 0:20ソフトウェアエンジニアをやってい
  8. 0:23ますはいでまず最初に簡単に会社の紹介
  9. 0:27だけさして
  10. 0:28くださいはいLXは全ての経済活動を
  11. 0:32デジタル化するというミッションのもやっ
  12. 0:34ている会社ででいくつか事業をやっている
  13. 0:37んですけどと暴落事業とFinTech
  14. 0:39事業とailllm事業がありましてで
  15. 0:43今日登壇する弊社の3名は全員爆事業に
  16. 0:47所属してるエンジニアになってい
  17. 0:50ますはいでAX5についてなんですが
  18. 0:54えっと今回シープ1なんですが実はシープ
  19. 0:570がありまして2ヶ月前にやったんです
  20. 0:59けど
  21. 1:01なんでやり始めたのかっていう話を
  22. 1:02ちょっとするとaxの5言語の実践的な
  23. 1:06あの活用事例を共有するだけじゃなくて
  24. 1:09社会の方からの試験も積極的に取り入れる
  25. 1:12場としたいっていうのが1つあってであと
  26. 1:15LAXの構造針ベッドテクノロジーって
  27. 1:17いうやつと得っていうのがあるんですけど
  28. 1:20その観点からこのイベントを継続的に開催
  29. 1:22することで合言語のそのを広げていきたい
  30. 1:25という気持ちからこれが始めましたって
  31. 1:28いう前提がありますはいで毎回毎回って
  32. 1:32言って2回目しかやってないですけどあの
  33. 1:34シャープ1今回のテーマは5の最適化効率
  34. 1:38化っていうテーマになっていますでそう
  35. 1:41そうですねTwitterの方ハッシュ
  36. 1:42タグはえっとシプレX5えっと全部文字で
  37. 1:46えアスコも何もないレ5ですなので皆さん
  38. 1:51是非ついて
  39. 1:53くださいはい今日のタイムテーブルなん
  40. 1:56ですけどこんな感じになっていてえっと
  41. 1:59そうですねえ10分の発表でえ最初の3名
  42. 2:02が弊社からの登壇でですね
  43. 2:07で後半の宇さんと藤原さんがえっと今回
  44. 2:10ゲストゲストとして来てくださっています
  45. 2:13でえっと7時55分から8時までえっと
  46. 2:17アンケートを取って取ってその後1時間懇
  47. 2:21L会という形になっています
  48. 2:24はいでは早速なんですがレアx5シプ1
  49. 2:28始まりますということで最初の登壇者の
  50. 2:31大森さんお願いしてもいいですかね
  51. 2:37[音楽]
  52. 2:51[音楽]
  53. 3:01大丈夫ですかあはいそれではえっと1番目
  54. 3:07ですねPプロフで見つけたアウトオブ
  55. 3:09メモリの真相と題しまして発表させて
  56. 3:12いただきますよろしくお願いし
  57. 3:18ますまず自己紹介っとレアXの暴落事業部
  58. 3:23で法人のクレジットカードですね爆
  59. 3:25ビジネスカードというところでエンジニア
  60. 3:27をえと6月までしておりますして今はAI
  61. 3:31UXっていうところでAIの体験を良く
  62. 3:33するためにえっと活動していますXは
  63. 3:36onsdアバーというIDでやってるので
  64. 3:39よろしければフォローしてくださいえっと
  65. 3:41えっとレXでは1つの機能を1人の
  66. 3:45エンジニアがバックエンドからフロント
  67. 3:46エンドまで一期通過して開発することが
  68. 3:48多くえっと自分もGOとタイプスクリプト
  69. 3:51でプロダクト開発をやっております
  70. 3:53よろしくお願いし
  71. 3:55ます今日話すことについてですねえっと
  72. 3:58プロファイリングツールを使って
  73. 4:00アプリケーションのアウトオブメモリの
  74. 4:02原因を調査する方法をご紹介しますこのお
  75. 4:05話はえっとブログの記事が元になっており
  76. 4:08ましてレアXのエンジニアリングブログ
  77. 4:11から見ることができますのでよろしければ
  78. 4:13そちらもご覧
  79. 4:17くださいはいまず背景ですねと暴落
  80. 4:21ビジネスカードはgqlgenenという
  81. 4:23ライブラリーを使ってグラフQLの
  82. 4:25サーバーを実装しておりますその中の1つ
  83. 4:28の機能としてユーザーからファイルを
  84. 4:30受け取ってS3にアップロードする機能が
  85. 4:33ありますでえっとタスクについてえっと
  86. 4:37ファイルサイズの上限が当時
  87. 4:4950mbar
  88. 4:50えっとスペッに出しているようなMAX
  89. 4:53アップロードサイズだったりMAXメモリ
  90. 4:56を変えてあげるとその上限を変えることが
  91. 4:59できます
  92. 5:01でさっきのように80MBにアップロード
  93. 5:04して手元で動作確認して80mJAの
  94. 5:07ファイルもアップロードできたのでマジし
  95. 5:09てみましたで開発環境の様子を見ていた
  96. 5:13ところたまに500のレスポンスを返して
  97. 5:15いるっていうことを見つけましたで実際に
  98. 5:18開発環境に向かって80mJAのファイル
  99. 5:21をアップロードすると500が返って
  100. 5:23くるってこを確認しましてコンテナのログ
  101. 5:26を見てみるとアオブメモリで死んでいたと
  102. 5:28いうことが分かりますこれが実際のAWS
  103. 5:31のコンソールのログスクリーンショットな
  104. 5:34んですけどこんな感じで死んでたよって形
  105. 5:36ですねでえっとアウトメモリの原因をP
  106. 5:41proofを使って調査することにしまし
  107. 5:44たPproofについて簡単に説明させて
  108. 5:47いただきますPプロフとはパフォーマンス
  109. 5:49分析や最適化に利用される
  110. 5:51プロファイリングツールです分析できる
  111. 5:54ものとしてはCPUの使用状況だったり
  112. 5:56メモリの使用状況ゴルチンの動作状況とか
  113. 5:59を分析することができます利用方法として
  114. 6:03は大きく2つありましてランタイムスピー
  115. 6:06プロフパッケージを使ってプロファイル
  116. 6:08データをファイルに出力する方法とネット
  117. 6:11スラhttpPプロフパッケージを使って
  118. 6:14http経由でプロファイルデータを取得
  119. 6:16できるようにするという方法の2つがあり
  120. 6:18ますえっと今回みたいなアプリケーション
  121. 6:21サーバーで分析をする場合は後者を使う
  122. 6:24ことが多いかなと思いますで取得した
  123. 6:27プロファイルデータはGOPProという
  124. 6:29コマンドを使って解析だったり貸し化など
  125. 6:32ができますちなみにえっとプロファイル
  126. 6:34データはプロトファフのこんな感じの
  127. 6:36フォーマットで保存することができて
  128. 6:38えっと実際に公開もされてるのでどんな
  129. 6:41感じになってるのかなっていうのは見る
  130. 6:42ことができ
  131. 6:44ますはいでまず1つ目ですねどこでえっと
  132. 6:48メモリが使われてアウトメモリになって
  133. 6:50いるのかっていうのを調査しましたで
  134. 6:52さっき言ったようにネトhtppプロフを
  135. 6:56使ってプロファイリングをします使い方と
  136. 6:58してはこんな感じでネットスラhttp
  137. 7:01プロフをまずブランクインポートした後に
  138. 7:03メイン関数の1番最初
  139. 7:05でえっとゴルチを使って6060番を
  140. 7:10リスンするみたいな書き方をしてあげます
  141. 7:12あとは既存のアプリケーションの処理を
  142. 7:14そのまま書くだけで大丈夫ですこの状態で
  143. 7:17実行するとプロファイリングが始まり
  144. 7:21ますで今回アウトメモリの原因を調べると
  145. 7:25いうところでメモリの使用量を見てみます
  146. 7:27えっとメモリ多使使っている関数から見
  147. 7:30たいというところでGOツルPプフ配分
  148. 7:33トップというオプコマンオプションを使っ
  149. 7:35て
  150. 7:38えっとプロファイリングの分析を行って
  151. 7:41おりますえっと青いとこま画面の真ん中の
  152. 7:44方ですね青いとこリードールがえっと
  153. 7:46154MB使っているということがここ
  154. 7:49から分かりまし
  155. 7:51たじゃあえっとどこでアオリドールを使っ
  156. 7:54ているのかっていうのをソースコードを
  157. 7:56ガっと見てみると先ほど言ったような
  158. 7:59えっとユーザーからファイルを受け取って
  159. 8:013にアップロードするっていう処理のま
  160. 8:04まんまなんですけどそこで使われてい
  161. 8:06るってことが分かりましたえっとデフ
  162. 8:09みたいな感じでえっと赤く出しているん
  163. 8:10ですけどえっとリドルを使って
  164. 8:13アップロードされたファイルを
  165. 8:15全部メモリに載せてからAWSputS3
  166. 8:20オブジェクトっていう関数でAWSに上げ
  167. 8:22ているって処理ですねでこれファイルに
  168. 8:25対して何か処理を行っているわけでは
  169. 8:27なかったのでAWSsdk5のS3
  170. 8:30マネージャーを使ってオンメモリで処理
  171. 8:32できるように修正をしましたこうすること
  172. 8:35でアリドールしなくなったのでえっと
  173. 8:38メモリを使うことはなくなったじゃないか
  174. 8:40なと思っていましたでこの状態でもう1度
  175. 8:44実行してプロファイリングを取ってみ
  176. 8:48ますで再度計測してみると以前アオリ
  177. 8:52ドールはいるんですよね75メカ使って
  178. 8:55るってことが分かります
  179. 8:58とこれじゃ誰が呼んでるんでしょうって
  180. 9:01いうところでこの状態でソースコードに
  181. 9:03リドAllは存在しないっていうとこは
  182. 9:06分かってますでてことは多分どっかの
  183. 9:08ライブラリーが呼んでいるんだろうとこと
  184. 9:10は分かるんですけどそれの調査するために
  185. 9:13資格的に呼び出しを追うためにpofの配
  186. 9:16PNGオプションを使ってみましたこれを
  187. 9:18使うと関数の呼び出し順を示した図が出力
  188. 9:21され
  189. 9:23ますちょっと見づらい図にはなるんです
  190. 9:25けど左がこうやってどんな順番で関数が
  191. 9:29呼ばれてるかっていう図になりますえっと
  192. 9:33矢印ついてるとこですね大きくしてみたの
  193. 9:35がえっと右にあるんですけどサブhttp
  194. 9:38からマルチフフDoが呼ばれてそん中でi
  195. 9:42reallが呼ばれているといった形に
  196. 9:44なり
  197. 9:48ますで結局アオリドールを呼んでいたのは
  198. 9:51gqlgenenのマルチ
  199. 9:52プラットフォームDoという関数でした
  200. 9:55この関数はえっと内部でMaxメモリーと
  201. 9:57ファイルサイズを比較して動が変わるよう
  202. 10:00になっていましたファイルサイズの方が
  203. 10:02大きい場合は一時ファイルを保存してそこ
  204. 10:04に保存作成してそこに保存しますで
  205. 10:07ファイルサイズの方がMAXメモリより
  206. 10:09小さい場合はIドルを利用してメモリに
  207. 10:12コピーするという形になっておりますで
  208. 10:15最初のタスクの対応の時に80mbbに
  209. 10:18受け付けで対応した時にMAXメモリも
  210. 10:2080mに対応変更したっていうのがま原因
  211. 10:23でこうなっているってことが分かりました
  212. 10:26でこれに対してECSのメモリが小さかっ
  213. 10:28たのがメモリの原因ということまで分かっ
  214. 10:31たのでメモリを増やす対応したという形に
  215. 10:33なり
  216. 10:35ますえっと駆け足だったんですがここで
  217. 10:38終わりにということでアトメモリが起きた
  218. 10:40メモリを増やそうではなくてどこがメモリ
  219. 10:42を使っているのかっていうのをきちんと
  220. 10:44調査して対応することができたってのは
  221. 10:46良かったなと思いますまたえっと
  222. 10:48プロファイリングツールを使うことで根拠
  223. 10:50を持った改善ができましたでPプロフだけ
  224. 10:53じゃなくて調査後にGPプロフっていう
  225. 10:56ツールを教えてもらいましたこちらはP
  226. 10:58proofでは測定でないofCPU
  227. 11:00例えばインプットアウトプットとかですね
  228. 11:02の測定ができるツールになっています
  229. 11:05えっとなんでDBアクセスとか含めた
  230. 11:07パフォーマンスチューニングとかをする
  231. 11:09ことがあったらこういうのを試してみたい
  232. 11:11なと思いましたまたえっと利用している
  233. 11:14ライブラリーのコードを実際に読んでみる
  234. 11:16ことでどんな挙動をするのかの理解が
  235. 11:18深まったので一石2長だったなと思って
  236. 11:20おり
  237. 11:21ますとパ最後にですねレアXの開発につい
  238. 11:25て興味ある方是非ぜひお話させてください
  239. 11:28この後の今新会でもよろしくお願いします
  240. 11:31はいちょっと駆け足でしたが以上になり
  241. 11:33ますありがとうござい
  242. 11:35[拍手]
  243. 11:35[音楽]
  244. 11:39ますはい発表ありがとうございましたでは
  245. 11:43次
  246. 11:44はPGOの話山さんお願いし
  247. 11:49[音楽]
  248. 11:51ます
  249. 11:53ああよいしょ
  250. 12:01はいえじゃ次の発表始めていきますCIC
  251. 12:04CDにPGを組み込んだ話というテーマで
  252. 12:07お話させてもらいますよろしくお願いし
  253. 12:12ますでえっと最初に軽く自己紹介で岩松
  254. 12:16翔太と申しますえっとレアのエンジニアを
  255. 12:19やっておりましてバラックビジネスカー
  256. 12:21ドっていうあの法人向けのクレジット
  257. 12:24カードを開発してますでえっとま全も決済
  258. 12:27系だったのでま割と際決済したキャリアに
  259. 12:31なっておりますま合歴は3年ぐらいですね
  260. 12:34はいでえっとま事業紹介飛ばしてえ今日の
  261. 12:39トピックなんですけどまPGOっていう
  262. 12:41ものについて説明しますでその後に実際に
  263. 12:44導入してみる時のあのどうやって導入する
  264. 12:47かっていう話とま導入してどうなった
  265. 12:49かっていうところをお話していければと
  266. 12:50思いますでえっとまずPGOとはっていう
  267. 12:54ところでまプロファイルガリッ
  268. 12:56オプティマイゼーションの略なんですけど
  269. 12:57コンパイラ一言言とコンパイラ最適化手法
  270. 13:00の1つですでえっともうちょっと具体的に
  271. 13:03言うとビルド時にコンパイラにあのさっき
  272. 13:05の話にも出てたプロファイルですね
  273. 13:07プロファイルを与えることであの実際の
  274. 13:10ワークロードに即した最適化を行うことが
  275. 13:12できるっていう方法のことですま平たくエ
  276. 13:15ばパフォーマンスを向上できるビルド方法
  277. 13:17になってますでまこれだけだとよくわかん
  278. 13:20ないと思うのでえっと例を交えて説明する
  279. 13:23とコンパイラ最適化の1つにあの関数関数
  280. 13:27のインライン化インライン展開っていう
  281. 13:29っていうのがありますでまその名の通りな
  282. 13:31んですけど関数予備出しを関数本体に
  283. 13:33置き換えるとことでことのことを指してて
  284. 13:37えっとまサムっていう例えばa+bをする
  285. 13:40関数があってでメインメイン関数の中で
  286. 13:43サムを呼び出して1+2をしてるコードが
  287. 13:45あるとしますとでえっとこれがビルド時に
  288. 13:48インライン展開されるとどうなるかって言
  289. 13:50とこのサムの呼び出しの部分がこんな感じ
  290. 13:53でA+Bに置き変わりますっていうのがま
  291. 13:56シンプルなんですけどインライン展開の
  292. 13:58説明です
  293. 13:59でこれの何が嬉しいのっっていう話だと
  294. 14:02思うんですけど2つあってま1個が関数
  295. 14:04予備出しのオーバーヘッドがなくなるって
  296. 14:06ところですねで通常関数呼び出す時ってま
  297. 14:09大体なあの秒レベルのあのオーバーヘッド
  298. 14:12が発生するんですけどこれがあの関数
  299. 14:14呼び出しが不要になることでなくなるので
  300. 14:16パフォーマンス上がりますっていうのが1
  301. 14:18個目ででもう1つがあのさらなる
  302. 14:20コンパイラー最適化が可能になりますとで
  303. 14:23これちょっと詳細は割愛するんですけどま
  304. 14:25インライン展開された後のコードに対して
  305. 14:28他の最適化適用できるようになったりする
  306. 14:30のであのパフォーマンスが上がりますって
  307. 14:31いうメリットがありますでここだけ見ると
  308. 14:34じゃあ全部インライン展開すれば良いので
  309. 14:37はっていう感じなんですけどまただし
  310. 14:40デメリットもあってまイメージしやすいと
  311. 14:41は思うんですけどバイナリサイズが増加
  312. 14:43するとかまビルド時間が長くなるっていう
  313. 14:46デメリットがありますとでまなので通常の
  314. 14:49ビルドする時にはあのま事前に決められた
  315. 14:53ルールに乗っ取ってあ単純な関数のみイン
  316. 14:55ライン展開するように対象を制限してます
  317. 14:59でまとはいえま1分間に何百回何十何千回
  318. 15:04とか呼び出される関数だったらま多少の
  319. 15:06デメリットを許容してでもパフォーマンス
  320. 15:08向上させたいみたいなのがあると思うん
  321. 15:10ですけどまただそれをやろうにも
  322. 15:12コンパイラとしてはソースコードしか情報
  323. 15:14がないんでま実際のワークロードにおいて
  324. 15:17どの関数がどんだけ呼び出されるのか
  325. 15:19みたいなのが分からないわけですねただ
  326. 15:22ここでプロファイルを与えることでまその
  327. 15:24辺りの情報が手に入るので実際のワーク
  328. 15:27ロードを加味した最適化ができるように
  329. 15:28なるっていうのがPGOの仕組みですで
  330. 15:31えっとGOでPGOを使う方法としてはと
  331. 15:34まずバージョンで言うとGO1.21で
  332. 15:36正式リリースされてるのでまその1.21
  333. 15:39以上使っていただいてでまあの適用するの
  334. 15:42は結構簡単でメインパッケージに
  335. 15:45defor.PGOっていうファイル名で
  336. 15:47CPUプロファイルを配置すればまビルド
  337. 15:49時に勝手にコンパイラーがプロファイル
  338. 15:51読み込んでくれてPGOが適用されますで
  339. 15:54公式ドキュメント曰2から14の
  340. 15:56パフォーマンス向上が見込めるっていう
  341. 15:58ところでですでは実際にマラビジネス
  342. 16:02カードの一部のサーバーに導入してみたん
  343. 16:04ですけどまその時にまいくつか考えないと
  344. 16:06いけないことがあってえままずどのように
  345. 16:09プロファイルを収集するかっていうところ
  346. 16:11でとまPGOでいい結果を得るための一番
  347. 16:15大事なのは実際のワークロードに近い
  348. 16:18プロファイルを収集できるかどうかって
  349. 16:19いうのが加になってますとまなので基本的
  350. 16:21には本番環境のプロファイルを取得する
  351. 16:24ことが推奨されててであのさっきの発表で
  352. 16:27もあったようにネhttppプロフとか
  353. 16:30使えば取得できるんですけどま自前でや
  354. 16:32るってなるといくつか考えないといけない
  355. 16:34ことがあってまなんかどこのポートを開け
  356. 16:36てどこからリクエスト送るのかとかいつ
  357. 16:39取得するのかとかま取得時にたまたま極端
  358. 16:42にリクエスト少ない状態だったらどうする
  359. 16:45かみたいなところがあのま考えないといけ
  360. 16:47ないですとでこういう時は継続的プロ
  361. 16:50ファイラーっていうのを使うと結構便利で
  362. 16:52ま名前の通りなんですけど常時
  363. 16:54プロファイルを収集して定期的に管理用の
  364. 16:56バサーバーに送信してくれるサービスの
  365. 16:59ことで必要な時に2位のプロファイルを
  366. 17:01ダウンロードすることができるんであの
  367. 17:04さっき言ったような課題は解決されますと
  368. 17:07で有名どころだとデータドッとか
  369. 17:10GoogleCloudとかグラファなと
  370. 17:12かが出してるんですけどまレXとしては
  371. 17:14オブザーバビリティ周りはあの基本的に
  372. 17:16データドックに集約してるんで今回は
  373. 17:18データドックを使ってますでまこれデータ
  374. 17:21ドックの画面なんですけどこんな感じで
  375. 17:23プロファイルがバーって一覧で並ぶんでま
  376. 17:26よさのやつをピックしてダウンロードでき
  377. 17:28ますとでまこれ以外にもパフォーマンス
  378. 17:31解析に便利ななんかフレームグラフとか
  379. 17:34プロファイル同士比較したりとかそういう
  380. 17:36ビジュアライズも用されてるんでまPG
  381. 17:38PG関係なくまこれ単体でも結構便利です
  382. 17:40とでえま導入も簡単ですって話なんです
  383. 17:44けどまちょっとこれ飛ばしてえっとじゃ次
  384. 17:48にまどのようにビルドプロセスに組み込む
  385. 17:50かっていうところですでまPGOにおいて
  386. 17:53プロファイルは1回収集して終わりじゃ
  387. 17:55なくてま当然あの日々の開発でソース
  388. 17:58コードはどんどん変化してくので
  389. 18:00プロファイルもできればやっぱ毎回直近の
  390. 18:02ものを使いたいわけですただまビルドの度
  391. 18:06に毎回テペでプロファイルを画面から
  392. 18:08ダウンロードしてきてコミットするのは
  393. 18:10面倒なのでこれ自動化したいよねっていう
  394. 18:12話でえまデータドッグの場合はデータ
  395. 18:16doogPGOっていうツールが用意され
  396. 18:18てるのでこれ使うと便利ですまあの結構
  397. 18:22単純でプロファイルをダウンロードする
  398. 18:23cliツールなんですけどえと具体的には
  399. 18:26直近72時間でCPU量が大きい
  400. 18:29プロファイルを5個選んでマジして
  401. 18:31吐き出してくれるっていうツールですねな
  402. 18:34のでまなんかgitHUBアクションズと
  403. 18:36かで5ビルドやってるところの手前に
  404. 18:38DATAドPGOを実行するあの一業を
  405. 18:41入れとけばdefor.PGOが作成され
  406. 18:43てでビルドのタイミングであのPGOが
  407. 18:46適用されるっていうような感じになります
  408. 18:49でここまでで準備は終わったので実際に
  409. 18:51本番環境に導入してどうなったかっていう
  410. 18:53ところを見ていきますでこれが結構下がっ
  411. 18:57たんですけどまCPU使用率が平均
  412. 19:0013.5%下がってますでこのグラフは
  413. 19:04あの1週間前のCPU使用率との比較で
  414. 19:08比較の変化率を表してるグラフなんです
  415. 19:10けどPGを適用したしてから結構ガクっと
  416. 19:13下がってますとでこれはCPUですけど
  417. 19:15メモリもま同じ感じで下がってて大体
  418. 19:1999.5%ぐらい下がってますっていうの
  419. 19:22だけ見ると結構すごいなという印象なん
  420. 19:25ですがまもうちょっと見てみると
  421. 19:27パフォーマンス工場の大部分は
  422. 19:30プロファイラーの処理の部分でまつまり
  423. 19:32あのPGOのために入れたプロファイラー
  424. 19:34がPGOによって早くなるみたいなあ
  425. 19:38ちょっとマッチポンプ的な結果になっ
  426. 19:40ちゃってますとあとはいえあの
  427. 19:42プロファイラーは別にPGO専用ってわけ
  428. 19:44じゃなくてパフォーマンス分析には欠かせ
  429. 19:46ないツールなのでまパフォーマンス除した
  430. 19:48のはま嬉しいは嬉しいですとでま実際の
  431. 19:51エンドポイントに限定するとま大体5%
  432. 19:53ぐらいのパフォーマンス工場でま実際時間
  433. 19:57で言うと1分あたりのCPU使用時間が約
  434. 19:594mm秒短縮されたくらいの
  435. 20:01パフォーマンス工場でしたとなのでま
  436. 20:04決して劇的な改善ではないんですけどま
  437. 20:06導入の手軽さを考慮すると十分な結果かな
  438. 20:09と思いますしまパフォーマンスが結構
  439. 20:11シビアなアプリケーションとかだったらま
  440. 20:12こういった改善も結構嬉しいのかなと思い
  441. 20:15ますでまその他の留意点としてはあのPG
  442. 20:19の説明のところでも言ったんですけど
  443. 20:20バイナリサイズが増加するとかビルド時間
  444. 20:22が長くなるみたいなのはあるんですがまあ
  445. 20:25今回やった感じだとそんなに気にならない
  446. 20:27ぐらいの像でしたというところですはいで
  447. 20:31はまとめでまPGOによりソースコードを
  448. 20:34変更しなくても2から14PAぐらい
  449. 20:36パフォーマンス控除が見込めますよって
  450. 20:37いうのとまプロファイルの収集は継続的
  451. 20:40プロファイラー導入すると結構便利ですっ
  452. 20:42ていうのとまcicdに組み込む場合はま
  453. 20:45データドックの場合はデータドックPGを
  454. 20:46使うと簡単に組み込めますよっていうお話
  455. 20:49でしたはいえ発表以上になりますご清聴
  456. 20:52ありがとうございました
  457. 20:54[拍手]
  458. 20:59はい発表ありがとうございましたなんか
  459. 21:01面白いおちでしたけどプロファイラーは
  460. 21:04あった方がいいですからねプロファイル
  461. 21:06ははいじゃあ次は
  462. 21:10えっと北郎さんのテストの差分実行という
  463. 21:13ことで発表お願いし
  464. 21:15[音楽]
  465. 21:20ますはいではえっとモノレポにおけるGO
  466. 21:24テストの差分実行というタイトルでえ発表
  467. 21:26させていただきますよろしくお願いします
  468. 21:29えっと自分の名前は鬼太郎と言いますえ
  469. 21:32株式会社レアXでえ暴落事業部の申請経費
  470. 21:35生産チームで働いていますでま経歴として
  471. 21:38はえっと新卒で株式会社メルカリに入社し
  472. 21:41てでえっと今年の4月からえ株式会社レX
  473. 21:45の方にえ入社しまし
  474. 21:48たはいえ今日の目次ですえっとまずこの
  475. 21:51えっとスライドのテーマになっている
  476. 21:54えっとモノレポにおけるえっと5テストの
  477. 21:57差分実行においてっていうなんですけどえ
  478. 21:59そもそもモノレポていうのはどういうもの
  479. 22:00なのかってのを簡単にご説明したいと思い
  480. 22:03ますであとはえっとなぜサブテストがモノ
  481. 22:06レポにおいて必要になってくるのかって
  482. 22:08いうところだったりとかえっと今回え自分
  483. 22:11たちが採用したサブテストのアプローチと
  484. 22:14実際にえっとサブテストを適用してみて
  485. 22:17どうだったかっていうのとま課題について
  486. 22:19えご紹介したいと思い
  487. 22:22ますはいではまずモノレポートはという
  488. 22:25ところなんですけどえっとこれはサークル
  489. 22:28Cのブログの定義が分かりやすかったので
  490. 22:30そのまま引用しているんですけどえっと
  491. 22:32モノレポとはえアプリケーションや
  492. 22:34マイクロサービスの全行動をえ単一の
  493. 22:37モノリシックなリポジトリーま通常は
  494. 22:39ギットに保存するようなパターンを差し
  495. 22:41ますとありますでAXでも大体同じような
  496. 22:44え感じになっていてえWebアプリとか
  497. 22:47マイクロサービスとかライブラリーとか
  498. 22:49スキーマー定義といったものが全て同居し
  499. 22:52てるような形になっていますで元々こう1
  500. 22:55つのリポジトリーとして作られていた
  501. 22:57プロダクトのエンドとかもあるんですけど
  502. 23:00まそういったものも
  503. 23:01えっと最近はこのリポジトリにえ動かして
  504. 23:05きている感じですで具体的にはえっと
  505. 23:08レイヤー1というえ大きいモノレポの
  506. 23:10リポジトリがあってまその配下にいくつか
  507. 23:13えっと言語ごとにディレクトリーが切れて
  508. 23:16いて例えばWebであればえっとその配下
  509. 23:19にえWebアプリケーションの
  510. 23:21ディレクトリーとえライブラリーが含まれ
  511. 23:23ていますであとはま5のえっと
  512. 23:26ディレクトリーであれば同じくえっとま
  513. 23:29パッケージが含まれていたりとかえっと
  514. 23:31元々1つのリポジトリーだったえレポスて
  515. 23:34いうディレクトリーだとかあとはえっと
  516. 23:37マイクロサービスが入っているサービス
  517. 23:38ズっていうえディレクトリーが存在してい
  518. 23:43ますでえモノレポにおけるメリットとえ
  519. 23:46デメリットの例ですえまメリットとしては
  520. 23:50まコードや仕組みをえっと簡単に共有
  521. 23:52できることだったりとかあとはま全てが1
  522. 23:55つに入ってるのでま横断的な改善がし
  523. 23:57やすいというところだったりとかあとはま
  524. 24:00フロントエンドも入っているのでま
  525. 24:01フロントエンドバックエンド関係なくま1
  526. 24:03つのプルリクエストでえっとあらゆる
  527. 24:05コードに手を入れることができるといった
  528. 24:07ものがありますでえっとデメリットとして
  529. 24:10はまコードベースがやっぱ全部入っている
  530. 24:12のでどんどん大きくなってしまういう
  531. 24:14ところだったりとかまえっとテストを全て
  532. 24:16実行するとえっとまテストに時間がかかっ
  533. 24:19てしまったりとかあとはビルドに時間が
  534. 24:21かかってしまうってことがおきますでえ
  535. 24:24あともう1つはえっと1つのリポジトリー
  536. 24:26を複数人がえ編集するか形になるのでま
  537. 24:29コンフリクトがえ増えやすくなり
  538. 24:33ます
  539. 24:35えでは次にえなぜ差分実行が必要なのかと
  540. 24:38いうところについてえご紹介しますえっと
  541. 24:42先ほど話した通りま全てのコードが1つの
  542. 24:44リポジトリに収まっているのでまポリレポ
  543. 24:47に比べて非常にえっとコードベースの大き
  544. 24:50さが大きくなっていきますえまそうすると
  545. 24:53えっとどんどんテストコードも追加されて
  546. 24:55いくのでテストの実行時間っていうのもま
  547. 24:58どどん遅くなっていってしまいますでこの
  548. 25:00図はえっと過去1年間のえっとテストの
  549. 25:04実行時間をま平均化してえプロットした
  550. 25:07ものなんですけどこの赤丸の2つのところ
  551. 25:10でそれぞれテストの高速化がえ行われて
  552. 25:13いるんですけどまただそれをした後もまた
  553. 25:15すぐえっとテストの実行時間が増加して
  554. 25:17しまっているっていうのが分かるかなと
  555. 25:19思い
  556. 25:22ますでまえっと今見たようにまある程度
  557. 25:25テストを高速化したとしてもいずれまたえ
  558. 25:28どんどん遅くなってしまいますでそうする
  559. 25:30とまテストコードがどんどん追加されてい
  560. 25:33たとしてもま実行時間が比例して伸びない
  561. 25:35仕組みっていうのが必要となってきますで
  562. 25:37ここで今回採用したのがテストの差分実行
  563. 25:41ですはいでは次にえっと実際にえっと採用
  564. 25:46したえ差分テストがどういったものだった
  565. 25:48のかについてえご説明しますまず前提が
  566. 25:52あるのでえっとここに書いていますま1つ
  567. 25:55目がえCIでのテスト環境を短縮する
  568. 25:58えっとローカルでのテストに関しては個別
  569. 26:00に実行できるのでま今回は問題ないものと
  570. 26:02してえ最適化をしないことにしましたで
  571. 26:06あとはえっと今回は5テストによる単体
  572. 26:08テストのみを対象にしていますでえっと
  573. 26:12プルリクエストをトリガーとしたテスト
  574. 26:13実行にえ適用していますなので例えばま
  575. 26:17メインにマジした際とかえっと
  576. 26:19スケジュール実行でえマシン屋に動かし
  577. 26:21てるようなテストに関しては引き続き
  578. 26:23えっと全てテストを実行するような形に
  579. 26:26なっていますでえあとはえっとパッケージ
  580. 26:29単位での差分実行を行うようにしましたま
  581. 26:32別のアプローチとして完成単位で実行
  582. 26:35するってのもあると思うんですけどま今回
  583. 26:37はえっとそちらの方法は見送りましたま
  584. 26:40えっとこれの1番大きな理由としては実装
  585. 26:43難度が跳ね上がってしまうっていうところ
  586. 26:45ですま逆に言うとまパッケージ単位だと
  587. 26:47えっとシトできまし
  588. 26:52たでえっとここから実際にえっと大きく3
  589. 26:56つのステップに分けてえどういう風にに
  590. 26:58差分テストを実行しているのかについてえ
  591. 27:00ご紹介しますまず1つ目がえ差分の特定
  592. 27:04ですえ今回はえっとプルリクエストのみを
  593. 27:06対象にしているのでえプルリクエストの
  594. 27:08情報を使ってえサブを取得することができ
  595. 27:10ますえっとま実際にはえっとこのGH
  596. 27:14コマンドをえ使わずにGHコマンドの
  597. 27:17ラッパーの5ライブラリーを使っているん
  598. 27:19ですけどえっとこういったコマンドに相当
  599. 27:21することをえっとコードで実行していてえ
  600. 27:24これによってえっとそのプルリクエストで
  601. 27:26え影響を受けた5のファイルを列強する
  602. 27:29ことができ
  603. 27:32ますでえ2つ目にえ影響範囲の特定ですで
  604. 27:37これに関してはえっと性的解析の方を使っ
  605. 27:39ていますえっと5の準標準ライブラリーに
  606. 27:42え5スラパッケージライブラリーがあるん
  607. 27:45ですけどまこちらの方を使ってえ
  608. 27:47パッケージの依存グラフを作成しています
  609. 27:50でこの作成されたえ依存グラフを元にえ
  610. 27:54影響を受けるパッケージっていうのをえ1
  611. 27:56つずつ洗い出していくような形になっい
  612. 27:59ますでえ3つ目はえテスト実行ですね
  613. 28:03えっと2番目のステップでえっと影響を
  614. 28:06受けたパッケージってのが全てえ列強でき
  615. 28:08たのでまそれを引数に与えることでえ普通
  616. 28:11にテストを実行してい
  617. 28:13ますでえ効果測定と課題についてですでま
  618. 28:19グラフで見てもらうと分かりやすいと思う
  619. 28:21ね書いているんですけどま平均で1分以上
  620. 28:23高速化することができましたまこの赤丸2
  621. 28:26つがえ先ほどのグラフに加えま2ヶ月分
  622. 28:29反映したものなんですけどこの1番最初の
  623. 28:31赤丸のところでえっと差分実行の方を適用
  624. 28:35していますでまそっからえっとまだ
  625. 28:38ちょっと1ヶ月ちょっとしかえ計測できて
  626. 28:40いないんですけどま今のところは大きく
  627. 28:42問題がなく高速化できていたかなと思い
  628. 28:45ますはいで実際に得られた効果としてはま
  629. 28:48先ほど言った通りテストの実行時間が
  630. 28:51大きく改善しましたで依存の少ない変更で
  631. 28:54あればえっと2分台とかでテストが完了
  632. 28:56するようなこともできるようになりました
  633. 28:59であとは複的な効果としてえっと変更に
  634. 29:02対して影響のないフレーキテストを回避
  635. 29:05できるようになりましたま今まではえっと
  636. 29:07全てのテストをえ地位実行していたのでま
  637. 29:10その中にフレーキテストが入っているとま
  638. 29:12頻繁に全体のテストがこけてしまうって
  639. 29:15ことが起きていたんですけどもしえっと
  640. 29:17そのフレキテストが今回の変更に影響が
  641. 29:19なければえ実行されないようになったため
  642. 29:22えっとまそういった落ちるようなケースが
  643. 29:24少なくなりましたまただフレキテストての
  644. 29:27は絶対直した方がいいなのでえっといずれ
  645. 29:30はい1つずつ直していこうと思ってい
  646. 29:32ますでえ課題についてもいくつかありまし
  647. 29:36たまず1つ目がえっとパッケージ構成に
  648. 29:38より大きく実行時間が変わってしまうって
  649. 29:40いうところですねま例えばあるパッケージ
  650. 29:43に大量の重いテストが入っている時にま
  651. 29:45そのパッケージにちょっとした変更する
  652. 29:47だけでもまそのパッケージにに影響があっ
  653. 29:50たという風に判定されてしまってえ思い
  654. 29:52テストを全て実行しないといけないという
  655. 29:54ことがえ起きますでもう1つねの方が
  656. 29:58えっと外部パッケージの変更をどう扱う
  657. 30:00かっていうところですねでこれに関しては
  658. 30:02えっと現在はGO.modのファイルが
  659. 30:05更新された時はえ一律全てのテストを実行
  660. 30:07するような特殊な処理を入れてい
  661. 30:11ますはいまとめですえレイアXのモノレポ
  662. 30:15ではえテストの実行時間がえ課題となって
  663. 30:18いましたでこれに対してえ差分実行を
  664. 30:20取り入れることでえ改善を測りましたで
  665. 30:23具体的には変更ないように影響される
  666. 30:25パッケージの身をテストするという手法
  667. 30:27ですでこれによってえっとテストが1分
  668. 30:30以上高速化できたのとあと今後テストが
  669. 30:33増えていったとしても実行時間の増加が
  670. 30:35緩やかになるはずですで差分実行の課題と
  671. 30:39してはえパッケージ単位なのでテスト対象
  672. 30:42のパッケージによっては引き続き時間が
  673. 30:43かかってしまうっていうことがありますま
  674. 30:46ただえっと現在ここが深刻な問題にはなっ
  675. 30:49ていないのでえっとしばらくはこの方法を
  676. 30:51採用し続けるかなという風に思っています
  677. 30:55はいちょっと駆け足になってしまったん
  678. 30:56ですけど発表は以上となりますもしえっと
  679. 30:59詳しく知りたい方がいたら今心会でお話し
  680. 31:02しましょうありがとうございまし
  681. 31:07たはい太郎さんありがとうございました
  682. 31:09レポ快適なんですけどこういうなんか
  683. 31:12困り事がぼちぼちあるんで早くなったら
  684. 31:14嬉しいのとあと皆さんフレキテスター直し
  685. 31:17ましょうはいじゃあ次はえっと内生
  686. 31:22オブジェクトストレージB3B3を支える
  687. 31:24ミラティブの合技術ということでうさん
  688. 31:27発表をよろしくお願いいたし
  689. 31:33[音楽]
  690. 31:39[音楽]
  691. 31:56ますはい
  692. 32:05[音楽]
  693. 32:09えっとはい出てます
  694. 32:12[音楽]
  695. 32:17ね
  696. 32:22えっと来てるあそうか刺さなきゃダメじゃ
  697. 32:25ないですか
  698. 32:32これ
  699. 32:35かはいはい大丈夫そうですねよかったはい
  700. 32:39えっとじゃあちょっとミラティブからこの
  701. 32:41動画発表させていただきますえ福岡から
  702. 32:45今日来まして普段は5でみのを開発したり
  703. 32:50していますあと本本訳しましたえ今日は
  704. 32:54あのオトスージを内した話をします一応
  705. 32:58ソフトウェアの名前はB3と言いますはい
  706. 33:01ちょっとアジェンダは書いてある通りでま
  707. 33:03ザクザクと言えければなと思いますはいで
  708. 33:07まずそもそもオブジェクトストレージを
  709. 33:09使っていますよね皆さんま最近の
  710. 33:13インターネットつではそれをま使うなとか
  711. 33:17作るって何みたいな感じだと思うんですよ
  712. 33:19ねあのまず配としてミラティブていう会社
  713. 33:23の結構固有な事情というかありましてあの
  714. 33:27ライブ配信の
  715. 33:28サービスなんですねミラティブってちなみ
  716. 33:32にミラティブってサービス自体にご存じの
  717. 33:34方ってどれがいますかありがとうござい
  718. 33:36ますあの遊ばれたり配信されたりしたこと
  719. 33:39ある方ってもしかしていらっしゃいますか
  720. 33:42そうまさすがになんか若者が結構多い
  721. 33:47らしいでえなんでもないですそそうZ世代
  722. 33:50のZ世代の方とかが多いと聞いてるんです
  723. 33:53けどはいまあでも
  724. 33:55配信あのライブ配信って大量いろんな
  725. 33:59ファイルを配信してるんですよねまなんか
  726. 34:02配信がダブルメニュですけどなんかなんか
  727. 34:05画像とかまそれこそ動画録画色々配信して
  728. 34:09ますでその中で配信をしたら録画すること
  729. 34:13ができる機能があるんでその話がメインに
  730. 34:15なりますで録画した録画のあの動画
  731. 34:20ファイルをHSという形式で配信してるん
  732. 34:23ですよねでこれは要するにプレイリスト
  733. 34:27ファイルから小さいチャンクの動画
  734. 34:29ファイルを1個1個落としてクライアント
  735. 34:31で落としてくっていう感じなんですけど
  736. 34:33ポイントは動画をま細かく切って小さ
  737. 34:36小さいファイルたくさん使ってるところに
  738. 34:37ありますでちなみにあの動画普通に
  739. 34:42ダウンロードボタンを押すと結合された
  740. 34:43動画が帰ってくんですよねこれもまず録画
  741. 34:46で小さく切ってからくっつけて結合して
  742. 34:49MF4として返していたりしますはいで
  743. 34:53HSだからこういう感じでHSっていう
  744. 34:56形式でやるとファイルがとても小さい
  745. 34:58ファイルをたくさん扱う必要があります
  746. 35:01そうするとどうなるかって言うとま一般的
  747. 35:04なパブリッククラウドのオブジェクト
  748. 35:05ステージだとちょっとあの相性が悪い
  749. 35:08ところがありまして具体的にはまあの
  750. 35:12オブジェクトステージの課金があの容量
  751. 35:15以外にもえ例えオペレーションにも課金さ
  752. 35:17れるというのはご存知だと思うんですけど
  753. 35:19これが例えばま2gの録画のファイルに
  754. 35:23対してま2万回2万個2万個に分割して
  755. 35:27プッシュしてでダウンロードする場合も
  756. 35:292万回のあのゲットオブジェクトが走る
  757. 35:31みたいな感じでちょっと細かい操作が
  758. 35:33たくさんんであの容量に対して費用は重ね
  759. 35:37がちという問題がありますま色々ま
  760. 35:40チャンクのサイズを調整した色々CDのを
  761. 35:42そもそも使ったり工夫はしてるんですけど
  762. 35:45もう少しいい感じにできないかなという
  763. 35:47ところでままずは例えばま飛行実験的に
  764. 35:51オブジェクト正治を自前で自前でサーバー
  765. 35:54立てて何かサーバー立てて運用するとし
  766. 35:57たらそのオペレーションごとの費用はいま
  767. 35:59全部なくなるわけなんですね純粋にま
  768. 36:03CPUとハードディスクの値段だけになる
  769. 36:05とまあとまハードウェアがま自分でれるの
  770. 36:08で色々工夫できるんじゃないかなってこと
  771. 36:10でオブジェクトスページをあの自前で
  772. 36:14やろうという話が出てきましたで要件を
  773. 36:17少し整理するとまバックアップとかの話は
  774. 36:20するんですけど今回主に3つに絞ってあの
  775. 36:23まずファイルは一定期間しか保持しないと
  776. 36:26いうことにしていますまこれは例えばあの
  777. 36:28ユーザーさんの録画は3日しか保持しない
  778. 36:30とかそういう感じで制限ができるものなの
  779. 36:33でま逆に言うと無限に容量をあの溜め込ん
  780. 36:36でいくっていう答にはではないって感じ
  781. 36:40ですでま逆にでさらに言うと一定期間しか
  782. 36:46保持しないということは一定期間後に削除
  783. 36:47するということでもありますでなおかつ
  784. 36:50先ほど言ったように書き込みの操作が
  785. 36:53すごく多いんですね15秒ごとにちゃ切っ
  786. 36:56たとしたら当然ですけど15秒ごとに
  787. 36:58フットオブジェクトが走るとなのでしかも
  788. 37:01な何台も並列で走るはずなんですねなので
  789. 37:05たくさん書き込まれるっていう前提で工夫
  790. 37:07する必要がありますで最後にあのまIO
  791. 37:11ベアメタルだったり自分自前のあの
  792. 37:14インスタンスを管理するのででiをなんと
  793. 37:17ちゃんとコントロールしないといけないと
  794. 37:19いうところはありますあのま普通にえ
  795. 37:22ハードディスクの限界以上の愛が来て
  796. 37:26しまうとまってしまうとかIが
  797. 37:29めちゃくちゃ溜まるとか問題が起きますし
  798. 37:31ま公述するようにあの内部操作でiが
  799. 37:34大きいものもあるのでそういう即事性を
  800. 37:36求められないIを分けるとか色々やる必要
  801. 37:39があります他にもまあのハードディスクと
  802. 37:42ソフあのソリッドSSDを使い分けるとか
  803. 37:45色々やりたいことがあったりしましたで
  804. 37:49最初はま当然自前よりもまあのミニオだっ
  805. 37:52たりCだったりま色々あるんですけどいく
  806. 37:55つかosssのものを試したんですけどま
  807. 37:58検証結果はブログ
  808. 38:01を書いてるんでそちらにを後で参照して
  809. 38:04欲しいんですけどま基本的にはあの特にミ
  810. 38:06は実際にファイルを作ってしまうので
  811. 38:10書き込みがちょっと弱いなとかあとま
  812. 38:12さっき言ったバキみたいなあの圧縮操作が
  813. 38:15ちょっと遅くなるとかちょっと要件に合わ
  814. 38:18ない感じがしたんですねなのでちょっと
  815. 38:20自前で開発を考えてましたということでb
  816. 38:243って言んですけどま基本的な機能はS3
  817. 38:285かのhttpAPIっていうとま
  818. 38:31レプリケーションとア制御という感じです
  819. 38:34なんで概要なんかこんな感じでhttp
  820. 38:38APIの層があってその使用にバケットを
  821. 38:40コントロールするコンポーネントがあって
  822. 38:43あのディストリビュートってそう1個挟ん
  823. 38:45で実際のDBファイルになってるなって
  824. 38:48いるとでこのDBのファイルのデータ構造
  825. 38:52にまず工夫がありますあのこのデータ構造
  826. 38:56はあのライトヘッドルグ割とLS3
  827. 38:59インデックスをベースにしたものなんです
  828. 39:02ねまこれ横文字で言われてもよくわから
  829. 39:05ないかなと思うんですけど要するに書こ
  830. 39:07全部基本的に全ての操作は基本的に追金に
  831. 39:11なってるっていうものですま図すると
  832. 39:14こんな感じでまデータ123と書きあの
  833. 39:19まみどんどん追されていくんですけどこの
  834. 39:21時にアップデート操作も同じキでの追求だ
  835. 39:24し作者も作者マークのええデータの追って
  836. 39:28感じで全部追で表現してるんですねそう
  837. 39:31するとあのまハードディスクとかはシシル
  838. 39:34書き込みでやれば結構パフォーマンスが
  839. 39:36出るんでそういう風に最適化された操作が
  840. 39:39できるとでインデックスを別に持っておく
  841. 39:42んですけどまちゃんと操作を操作上から
  842. 39:45どんどんヘッただけ飼育して戦闘会
  843. 39:48読み直すばインデックス採構築はできます
  844. 39:52はいでなおかつデータにヘッダでベッド
  845. 39:56あのを持たせているのでまあの
  846. 39:59バキューム操作って言うんですけど
  847. 40:02あのんですかね定期的にパージまトム
  848. 40:07ストーンあの削除マークトムストーンを
  849. 40:10置いていって
  850. 40:13えその上で元のDBとなんですかねまこ
  851. 40:18この見た方がいいなえっと景的にデータシ
  852. 40:22を行っていてあの応の不要領域の部分を
  853. 40:27無視してあの緑の生きてる領域だけを別の
  854. 40:29ファイルに一旦全部コピーしてから
  855. 40:31アトミックに置き換えるっていう感じで
  856. 40:33あの定期的なデータシが可能になってます
  857. 40:37はいで一応やっぱり普通にファイルを
  858. 40:41なんか作り続けるよりも追で書き込む方が
  859. 40:44早いというのも早いというのもちょっと
  860. 40:47軽くあの過去の発表で検証していますま
  861. 40:50システムコーとかもすごく減りますで次は
  862. 40:545らしい話を少しするとなんか内部で
  863. 40:57リーダーと
  864. 40:58ライターであのちょっとコドを綺麗にする
  865. 41:01工夫をしていますまこの2つの
  866. 41:04インターフェイスは5の1番基本となる
  867. 41:06インターフェイスなのでちょっと説明は
  868. 41:09省きますが例えばTリーダーってのがあっ
  869. 41:13てオブジェクトをプットしたら一緒に発値
  870. 41:16を計算してあのEタグの値を計算しないと
  871. 41:19いけないわけですねオブジェクト
  872. 41:20ストレージなんでそれもあのTリダーで
  873. 41:23あのDBDBとMD5の計算構造体の両方
  874. 41:29をくっつけてまとめてプットするみたいな
  875. 41:32ことをすればあのま両方に同時に書き込む
  876. 41:35のであのスマートに端が計算できるみたい
  877. 41:39なことができますあとまあの内部で対の
  878. 41:44ファイルな場合とファイルていうか対日の
  879. 41:47オブジェクトの場合と複数のオブジェクト
  880. 41:48をくっつけてる場合ってのがあのママチ
  881. 41:52パーとAPIを実装する都合で存在してる
  882. 41:54んですけどもそれもIリーダーでッする
  883. 41:57ことであのゲットオブジェクト側の実装は
  884. 42:00あのま1個の1個のFだけでまとめるよう
  885. 42:03にしたりして
  886. 42:04ますはいこんな感じであの
  887. 42:07インターフェイスを工夫してんですねで
  888. 42:09もう1つがI制御をしていますこあの
  889. 42:14要するにいわゆるIシェーピング
  890. 42:16をしていますでこれにはえあののタイム
  891. 42:21レイトライブラリってのがあるんでそれを
  892. 42:23使っていますなんていうかこんな感じで
  893. 42:27リミッタっていうのを作って
  894. 42:31あの最大どれぐらいっていうのRで指定し
  895. 42:35てあのリコピーNのコピーNのループで中
  896. 42:38で
  897. 42:39えっと書き込んだ数だけウイNを呼び出し
  898. 42:42てあげるとまポイントポイントで回の
  899. 42:45レートリミットできるみたいな使い方が
  900. 42:46でき
  901. 42:47ますまこれはあのさっきさっき紹介した
  902. 42:51ビッキスクDBってやつのあのの
  903. 42:54バキューム操作ってたくさんコピーをする
  904. 42:55んでたくさん用が発生するんですよねそれ
  905. 42:58をあのまあのアリミッターじゃないです
  906. 43:01けど内生のリミッターで10m秒と30m
  907. 43:04秒であの実行したあのその結果のタット
  908. 43:09経由の結果ですちゃんと制限あの一瞬だけ
  909. 43:12バーストしちゃうんですけどどうしても最
  910. 43:14ちゃんと制限できてることは確認できます
  911. 43:17はいでここまでね時間
  912. 43:21がああと2分ですかねなのでこうあの
  913. 43:27ちょっとロックをロックを小さくするため
  914. 43:30にDBを内部であの分割してるんですよね
  915. 43:33とかいう話を軽くするとあのDBの分割に
  916. 43:37あの基本的にただキーバリストアなんで
  917. 43:40キーをコンシステンシーを使って後ろの
  918. 43:43DBに振りまけばあの分割できますよって
  919. 43:47話をしたかった感じです
  920. 43:50はいえっとてかあの正直10分ではは語り
  921. 43:55切れないトがいっぱいあってあのラッツの
  922. 43:57話とかあとアダプティブLAD3とか色々
  923. 44:02やってるんですがあのちょっと気になった
  924. 44:04話があれば心会で教えてくださいで最後に
  925. 44:08軽くまB3の振り替えなんですけどあのま
  926. 44:10さっきアたのB3じゃないですはい
  927. 44:14えっと一応録画アーカイブダウド機能は今
  928. 44:17100%B3ユーザーさんの実際の録画の
  929. 44:21アーカイブをBに乗っけていますはいでま
  930. 44:24今とま問題なく運用できてる感じです問題
  931. 44:26は全部してますで録画自体の
  932. 44:30あの保存もB3にしようと今え検証中です
  933. 44:36で某でやっぱア作るのってすごく有性がる
  934. 44:39なと思ってて基本的な道具が揃っている
  935. 44:42あと文法がシンプルなんでアルゴリズムを
  936. 44:45素直に実装できるその上でまあの普通に
  937. 44:47書いたらかなりパフォーマンスが出
  938. 44:48るってのは魅力的だなと思いましたはい
  939. 44:52なんでまちょっと色々工夫アルゴリズムや
  940. 44:56データ構図色々夫をしていったらま
  941. 44:58オブジェクト正助ある程度内生もでき
  942. 45:00るってことをあの今回お伝えしたかった
  943. 45:02です
  944. 45:04はいまそんな感じでご深掘りした人を募集
  945. 45:07してますああとあなんか8月19日私東京
  946. 45:12来るんであでもこれマニオらしいですけど
  947. 45:16あの少し拡張するという話もあるんであの
  948. 45:185もいいけどebpfもよろしくお願いし
  949. 45:20ますありがとうございました
  950. 45:23[拍手]
  951. 45:33らさん発表ありがとうございました結構
  952. 45:36オブジェクトストレージのlsm釣り回り
  953. 45:38はあのデータ試行アプリケーション
  954. 45:40デザインで読んだやつだってなったんです
  955. 45:41けどちょっと気になること色々あるんで
  956. 45:43今心会で聞いてみたいと思いますはいでは
  957. 45:46次は5で実装された高速なAWSCL1
  958. 45:49大体品を作ったということでフジさん
  959. 45:51よろしくお願いいたします
  960. 46:05はいこれ配信映ってますかね大丈夫大丈夫
  961. 46:09ですかはいえじゃあ始めますえ5で実装さ
  962. 46:13れたawcの代替品を作った話をしますえ
  963. 46:16自己紹介藤原ですこんなアイコンでSNS
  964. 46:19ではいると思います面白方人火というとこ
  965. 46:21におりますえイスコンを昔からやってて1
  966. 46:24回目からえっと優勝を4回したりととか
  967. 46:27運営を4回したりとかしててえイスコン
  968. 46:29今年もあるみたいで本当良かったですね
  969. 46:31はいであとosssを作っててえカヤの
  970. 46:34エスプレッソっていうやつあのレイヤX
  971. 46:36さんでも使われてるらしくてありがとう
  972. 46:37ございますあとラムロールっていうラム
  973. 46:39ダウンデプロイするとかえを作ってたりし
  974. 46:42ますあと本を強調でいくつか昔もう結構前
  975. 46:46ですけどみんなの合言語っていうのも書い
  976. 46:47てますはいでえっといきなり本題なんです
  977. 46:51けどawcってあのAWS使い方皆さん
  978. 46:54あのご利用だと思うんですけどこれ
  979. 46:55とっても重いんですねでどれぐらい重い
  980. 46:58かって言うとえヘルプを出すだけで1秒
  981. 47:00かかるっていう重さでえしかもこれCPU
  982. 47:02バウンドなんですよ通信とかじゃなくて
  983. 47:04CPUをめっちゃ使うのでえまたまに手元
  984. 47:07で打つのは別にまあ1秒かかってもそんな
  985. 47:09にいいんですけどこれをシレスクリプトに
  986. 47:11組み込んでぐるぐるループを回したりする
  987. 47:13と毎1回1秒かかるんですねあと最近その
  988. 47:15ECSとかラムダとかで結構CPUが1は
  989. 47:17ない環境ってのもあってコスト減らすため
  990. 47:19にえ0.25vcpというとこれ1/4個
  991. 47:22はしかないので1秒かかることは4秒
  992. 47:23かかった3秒かかったですえでこういう
  993. 47:26ことがあるとあの本当にちょっとしたこと
  994. 47:28をCLでやりたいだけなのにこれが3秒
  995. 47:32かかったらこ辛いわけですねでえこういう
  996. 47:35時僕はあのAWSsdkと5を使ってま
  997. 47:39コード書いてたんですけどそうすると
  998. 47:40すごい早いのでただそのいちいち書くとね
  999. 47:43あの大変ま何十行ぐらいかになるしビルド
  1000. 47:46もいるしめんどくさいんですよでAPI個
  1001. 47:491個呼ぶだけとかなんかモニタリングの
  1002. 47:50ために1個メトリックトだけとかそういう
  1003. 47:52ことをするのにですね全部いいここで
  1004. 47:54書き直すのも面倒くさいということがあっ
  1005. 47:56てえまこれ多分AWScliを使っと5を
  1006. 48:00使ったことがある人が100人いたら
  1007. 48:02100人思ってるはずだと思うんですけど
  1008. 48:035で実装したシングルバイナリーして
  1009. 48:05欲しいなとあのpyonなんですね今の
  1010. 48:07フト実装はね思ってるはずだと思ってます
  1011. 48:11でえである日ねちょっと気が付いたんです
  1012. 48:14けどなんか行動の呼び出し方みんな一緒だ
  1013. 48:16なみたいなsdkのえS3でもこれSSM
  1014. 48:19の例書いてますけどニフコンフィグして
  1015. 48:22そいつに対してAPIを読んでそのAPI
  1016. 48:24の読み方がコンテキストとえなんとかイン
  1017. 48:26ットってのを渡すでなんとかアウトプット
  1018. 48:29が書いてくるこれの構造が全部一緒で命名
  1019. 48:31規則も全部一緒なんですよえでこの下にま
  1020. 48:34ちょっと雑に書いてますけどで全部これ
  1021. 48:36一緒だからえこれ同生成できるんじゃない
  1022. 48:39かということをふと思いついてでえつまり
  1023. 48:42このsdkのですねえサービスパッケー
  1024. 48:44ジってとこにいろんなエスのサービスを
  1025. 48:46呼び出すえ3だとかECSだとかEC2だ
  1026. 48:49とかあるんですけどこのパッケージないし
  1027. 48:51て全部同じ方でクライアントなんとか
  1028. 48:53クライアントってのがあってその
  1029. 48:55クライアントに対して全部同じ方形で
  1030. 48:57呼び出せるのでこれはもうあとはメソッド
  1031. 48:59一覧だけ全部なんとかして取り出せたら
  1032. 49:00コードが自動生成できるなと思いついたん
  1033. 49:03ですねでえまチャットGPTに聞いたん
  1034. 49:06ですよねうん聞いたらあのこんな風に書け
  1035. 49:08ばできるよってのすぐ出してくれてこれ
  1036. 49:09あのリフレクトを使うんですけど
  1037. 49:11リフレクトを使って
  1038. 49:12えそのなんだクライアントオブジェクト
  1039. 49:16からメソッドを取り出してメソッドの名前
  1040. 49:18とか方とか引数の方とかそういうのを
  1041. 49:20グラグラグラっとこう取り出してくれるま
  1042. 49:23これあの聞けば出てくるような行動です
  1043. 49:25はいということでええあとですねその引数
  1044. 49:28を出さなきゃいけないじゃないですねあの
  1045. 49:29API時にえいろんなawcあったら
  1046. 49:34コマンドライン引数で渡すような引数を
  1047. 49:36渡すんですけどまそこを解釈するのが面倒
  1048. 49:39くさいのでえとりあえずJSでいいやろう
  1049. 49:41とえどうせあの1つのオブジェクトになっ
  1050. 49:44て1つのオブジェクトになって帰ってくる
  1051. 49:45のでえJSONを渡してそいつをアン
  1052. 49:47マーシャルしてその方にバコと入れてで
  1053. 49:50それでえコードをサービスのコードを
  1054. 49:53呼び出してアウトプットをジェソンで
  1055. 49:54マーシャルして返してやればえどっちも
  1056. 49:56えっと場バイトを取ってバイトを受け取る
  1057. 49:59変えてくるっていうコでできるなという
  1058. 50:02ことでこんな風なコでこれあの5の
  1059. 50:04テンプレートを使ってそれにさっきの
  1060. 50:06メソッド1段とかの情報を食わせて
  1061. 50:08ぐるぐるぐるっと回すとコードがダーと
  1062. 50:10できるとでできたものがこれですえっと
  1063. 50:13osimというやつがありますえこれはま
  1064. 50:17その単純なAWSsdkのラッパーだよっ
  1065. 50:19てことになってますでモチベーションとし
  1066. 50:21てはえcliはとっても便利なんだけど
  1067. 50:24ちょっと遅いんでえ限定的なええまやつを
  1068. 50:27作ったよということですねで使い方ですえ
  1069. 50:31AWSコマンドじゃなくてオス
  1070. 50:33STREAMコマンドになってあとその次
  1071. 50:35にサービス名ですねSTSゲットコーラー
  1072. 50:37アイデンティティっていうあのこれは僕が
  1073. 50:391番好きなコマンドなんですけどえま何を
  1074. 50:41するかをちょっといいとしてえまこれを
  1075. 50:44呼ぶ時には普通にAWCLみたいにえ2番
  1076. 50:47目の引数にサービス名次にメッドってやっ
  1077. 50:50てやれば呼べますでこのメソッドがあの
  1078. 50:52パスカル計算なのはももsdkのメソッド
  1079. 50:55をそのまま使えるようにしてるからなん
  1080. 50:57ですけどえそこにちょっと変換できるよう
  1081. 50:59にしてあってあのケバブケースでも
  1082. 51:01受け付けるようにするともうものすごく
  1083. 51:02エベスCLっぽくなるでさらにえ先ほど
  1084. 51:05言ったようにあの引数が必要なやつですね
  1085. 51:08インプットが必要なやつはJSONで渡す
  1086. 51:10ことになってんでJSON文字列かJS
  1087. 51:12ネットの文字レスのを渡してくださいって
  1088. 51:14いうちょっとこれ使いにくい感じがします
  1089. 51:16よねこれ1個ならいいんですけどいっぱい
  1090. 51:18やるとここにJS文字列をずらずらと書か
  1091. 51:20なきゃいけなくてちょっとめどくさいなと
  1092. 51:22いう感じなんですがえ実はですねあの今朝
  1093. 51:25を思いついて今日実装できたら来たんで
  1094. 51:26あのリリースしたんですけどえこういう風
  1095. 51:28にクラスターみたいなえっと2位の
  1096. 51:31コマンドライン引き数で値を埋め込める
  1097. 51:33ようになりましたただあのちょっと現時点
  1098. 51:35ではまだあの文字列しか入らないので
  1099. 51:37マックスリザルト10みたいなあの数値が
  1100. 51:40必要なとこはちょっとまだできないんです
  1101. 51:42けどまそのうちなんとかしようと思って
  1102. 51:44ますはいとなるともうこうなるとほぼエス
  1103. 51:47Cと一緒みたいなことになりますねで
  1104. 51:48スークはジェソンでエシラみたいな
  1105. 51:50ジェソンが降ってき
  1106. 51:51ますはいでえ課題なんですけどえバイナリ
  1107. 51:54サイズがでかい問題ってのがあってえス
  1108. 51:56ムって言ってるのに全然スリムじゃないっ
  1109. 51:58ていう問題があるんですけどえ500
  1110. 52:00mbb以上ありますでなんでかって言うと
  1111. 52:02あのAWSsdkのサービスって今数え
  1112. 52:05たら384サービスあってえそれを全部
  1113. 52:08あのそれのさらにその全部のメソッドを
  1114. 52:11コド生成で生成してビルドして詰め込ん
  1115. 52:14だらこのサイズになってしまってあの
  1116. 52:15ビルドがしかも5なのに10分かかります
  1117. 52:17えでえっとADcliはチップ展開口に
  1118. 52:20125mなので倍ぐらいなんでちょっと
  1119. 52:22これはちょっと悔しいとことですねという
  1120. 52:24ことであのどうせ全部使うことはないので
  1121. 52:26特定サービスだビルドできるようにしてみ
  1122. 52:28ましたっていうのであのこれだけ使いた
  1123. 52:31いってのを指定してビルドするとこれだけ
  1124. 52:32組み込んだバイナリーができるであの僕が
  1125. 52:35ちょっと使ったことがある40サービス
  1126. 52:36だけで作ったら92MBになったのでま
  1127. 52:39こんぐらいなら強要範囲かなぐらいですね
  1128. 52:42でビルドの方法ちょっとあのドキュメント
  1129. 52:44書いてあるので見てもらいたいんですけど
  1130. 52:45どっかでやると4秒ぐらいでできますはい
  1131. 52:48でパフォーマンスの比較なんですけどどれ
  1132. 52:50ぐらい早いかって言うとえこれは0.25
  1133. 52:52vcbのわざと細いところでえタイム
  1134. 52:55コマンドをわせて比較したんですけど
  1135. 52:57awcはCPU時間が760MSで実質
  1136. 53:01時間はその4倍なので3秒かかりますえで
  1137. 53:05スリムは全部入りのそさっきの500
  1138. 53:07mbbのやつでもえCPU時間が110
  1139. 53:10MSですね大体7倍速ですね7倍のCPU
  1140. 53:13勝率でできるただメモリがちょっと多くて
  1141. 53:15メモリが倍くらい食っちゃうんですよ全部
  1142. 53:16リだとでこれを40サービスに絞ると
  1143. 53:19もっと早くてえま実時間でもあの10mm
  1144. 53:22セックとかで書いてくるでメモリも少ない
  1145. 53:25ということでえ非常に効率的に動くように
  1146. 53:27なってますはいであと便利機能色々時間
  1147. 53:30大丈夫かなはいえっとあのhelpsdk
  1148. 53:34のドキュメントURLがまると出るように
  1149. 53:36なってますはいこれとても便利であのこれ
  1150. 53:38をポチっと開くとですねあのブラウザで
  1151. 53:40見ればいいあの全部sdkのラッパーなの
  1152. 53:42で自分で確率ないんでこれですねあと
  1153. 53:45クエリーてあのジェムスパァスってあのバ
  1154. 53:47シリアにあるやつとえっとローっていう
  1155. 53:50あのJQの配Rローアウトプットと同じ
  1156. 53:52ようなのが入ってるんでえ具体的にやると
  1157. 53:55あのこれは僕はすごくよく書くコードなん
  1158. 53:58ですけど自分のアカウントIDを知りたい
  1159. 54:00時のコードですねえゲットコール
  1160. 54:01アイデンティティを読んでその中の
  1161. 54:03アカウントっていう要素を取り出してきて
  1162. 54:05それをロケ式でやってやるとシェル編数に
  1163. 54:07アカウントIDが入りますよってやつ
  1164. 54:09コードはいであとインプットSTREAM
  1165. 54:11とプットスムとがあってこれはですねあの
  1166. 54:13まつさんが先にあの最初に出した時に
  1167. 54:16フルリもらっておっと思って考えて入れた
  1168. 54:18やつなんですけどえこれはあのS3の
  1169. 54:21プットとかゲットの時ってIOリダーとと
  1170. 54:24iioリードクローザーがあのストラクに
  1171. 54:27入ってんですけどまそれを使ってファイル
  1172. 54:29をアップロードするさっきもありましたよ
  1173. 54:30ねあの
  1174. 54:31Iリーダーを使ってやるとなんだ小
  1175. 54:35メモリーでできるって話がありましけどま
  1176. 54:36それと同じ話ですねまこれを使うとえ
  1177. 54:40ファイルこれとファイルをくっつけて
  1178. 54:42くくれるのでえ要するにプット
  1179. 54:44オブジェクトとゲットオブジェクトが
  1180. 54:45できるこですねはいえであとフォロー
  1181. 54:48ネキストであのページングがあるAPI
  1182. 54:49ってあると思うんですけどあの1ページに
  1183. 54:51は1000件しか来なくて次はこれこの
  1184. 54:53トークンを食わせてやると次のページが
  1185. 54:55取れるよっっていう例えば3のリスト
  1186. 54:56オブジェクトみたいなやつこういうやつは
  1187. 54:58あの自動で追ってくれるような
  1188. 55:01え引数をつけてありますえこれあのどの
  1189. 55:05引数がどのフィールドがっていうのが
  1190. 55:07サービス生全部違うので自分で指定し
  1191. 55:08なきゃいけないんですけどあのS3だっ
  1192. 55:10たらNEXTコンティニュエーション
  1193. 55:11トークンっていう値を次のリクエストの
  1194. 55:13コンティニュエーショントークンに入れて
  1195. 55:14やると次のページが取れるみたいですねで
  1196. 55:17これは内部でループするので高速ですはい
  1197. 55:21えあとJSネット感想ちょっとこれはいい
  1198. 55:23やはいえっとあとですねえっと設定
  1199. 55:27ファイルを作れるようにしていてオープン
  1200. 55:29コマンドを指定しておくとヘルプの時に
  1201. 55:31ブラウザがボンと開いたりだとかあとア
  1202. 55:33ですねあのえっとですねsdkとcliで
  1203. 55:37コマンドが違うやつがあってログスcli
  1204. 55:40だとAWSlogsなんですけどえSD
  1205. 55:42ギアAWSあosimCloud
  1206. 55:45WatchログログスなんですねとかCE
  1207. 55:47がコストエクスプローラーだったりとか
  1208. 55:49ちょっと違うのがあるんでこれはエアで
  1209. 55:51ちょっと自分で解決してねってことにして
  1210. 55:53ますあと短縮が名ができるのでフアIとか
  1211. 55:57やるとえ同じことができるはいで
  1212. 56:00オプションを組み合わせるとですねS3
  1213. 56:01プットとかS3ゲットができるようなやつ
  1214. 56:03がコマンドができたりとかですねえあと
  1215. 56:06ちょっと複雑な例なんですけどクエリーと
  1216. 56:08かをうまく組み合わせてえリスト
  1217. 56:10オブジェクトV2のえぐにょぐにょぐ
  1218. 56:13にょってやるとえ要するにS3のリストが
  1219. 56:16取れるようなコマンドができるはいという
  1220. 56:19ことであと最後これこれだけえっと
  1221. 56:22ちっちゃくなんないかなと思ってupxを
  1222. 56:24使ったんですけどちょっと微妙な結果に
  1223. 56:25なっちゃったんでえこれはちょっと要研究
  1224. 56:27かなっていう感じですはいえじゃあまとめ
  1225. 56:29ですえっとスリムていうのを作りました
  1226. 56:32起動速度は7倍でえ早いですあと必要な
  1227. 56:35サービスだけ見るとするとちっちゃくなり
  1228. 56:37ますということでえサーバーで使う場合は
  1229. 56:39これはおすすめなのではいどうぞって感じ
  1230. 56:41ですねえあと今日リリースしたやつで文字
  1231. 56:43列をフラグで渡せるようになってすごく
  1232. 56:45便利になりましてえ便利機能を
  1233. 56:47組み合わせると最強コマンドが構築できる
  1234. 56:49ということですねあとえっと最後にこれは
  1235. 56:52ADSにお願いしたいんだけど公式が豪華
  1236. 56:54ラスで実装してくれたらこれいらなくなの
  1237. 56:56でえんとかしてくれと思ってますはい以上
  1238. 56:59[音楽]
  1239. 57:00[拍手]
  1240. 57:04です藤原さん発表ありがとうございまし
  1241. 57:07たすごい追従大変そうと思ったんすけど
  1242. 57:11自動生成が使れてすごいいい感じなんで
  1243. 57:13ちょっと私も明日から使いますはい皆さん
  1244. 57:17発表ありがとうございまし
  1245. 57:22たで会前にちょっとおらなんです
  1246. 57:27けどはいえっと8月ニモさんとえ車AXで
  1247. 57:335合同イベントやりますでえっと8月9日
  1248. 57:387時からえこのオフスでやるんでえっと今
  1249. 57:42すぐカレンダーに予定を追加しておいて
  1250. 57:44くださいでえっとまだイベントページでき
  1251. 57:47てないのでえっとレXの公式テック
  1252. 57:50アカウントあとニさんのテックアカウント
  1253. 57:52もあると思うんでえっと2つフォローし
  1254. 57:54てれば絶対分かると思うのでえ今すぐ
  1255. 57:57カレンダーに予定売れて今すぐ公式のテク
  1256. 58:00アカウントフォローしてくださいはいお
  1257. 58:03知らせでしたではい最後にあの今新会前に
  1258. 58:07アンケートがあるので是非よろしくお願い
  1259. 58:10し
  1260. 58:11ますQRコードを読み取ってアンケートに
  1261. 58:17回答よろしくお願いし
  1262. 58:21[音楽]
  1263. 58:22ますえ皆さんがアンケートに答えて
  1264. 58:25くださっい間
  1265. 58:27にどうしようか
  1266. 58:30な松さんどうでした
  1267. 58:33かPGの話をしてくれた岩松
  1268. 58:43さん自分今日初登壇でめちゃめちゃ緊張し
  1269. 58:47てたんですけどま登壇終わった後はすごい
  1270. 58:49気楽に聞けてめちゃめちゃ面白い話が
  1271. 58:51たくさん聞けたのではい楽しかったです
  1272. 58:53ありがとうございましたありがとうござい
  1273. 58:55ます
  1274. 58:58なかなかPGO実運用でやってるって話
  1275. 59:01あんまり聞かないので是非今新会でPGO
  1276. 59:04の話聞いてみてくださいはいじゃあ
  1277. 59:07アンケートはいじゃあ皆さんあのドリンク
  1278. 59:10とフード後ろに用意してるのでアンケート
  1279. 59:13を記入しよった方から是非あの皆さんで
  1280. 59:16公式会でワイワイしましょうはいオン
  1281. 59:18ラインの方はここまでですねはい皆さん
  1282. 59:21ありがとうございまし
  1283. 59:22[音楽]
  1284. 59:25たJA

About this transcript

This page contains the full transcript of layerx.go #1 〜最適化・効率化〜 by LayerX 公式, generated from the public captions YouTube serves with the video. The transcript has 1,284 words across 1,284 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.

What you can do with it

Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.

Free YouTube transcript tool

YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.