Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Goで社内オペレーションを少し改善できた話
Search
Osamu
November 08, 2024
2
400
Goで社内オペレーションを少し改善できた話
Asakusa.go #4のLT資料です
https://asakusago.connpass.com/event/334004/
Osamu
November 08, 2024
Tweet
Share
More Decks by Osamu
See All by Osamu
CursorとObsidianで実現する次世代メモ管理術
osamu_000
0
18
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
Optimizing for Happiness
mojombo
379
70k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Faster Mobile Websites
deanohume
309
31k
Writing Fast Ruby
sferik
628
62k
Documentation Writing (for coders)
carmenintech
73
5k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
GraphQLとの向き合い方2022年版
quramy
49
14k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
Balancing Empowerment & Direction
lara
3
600
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Transcript
©2024 Dr.’s Prime ,Inc. Goで社内オペレーションを 少し改善できた話 株式会社ドクターズプライム 石山 理
石山 理(Osamu Ishiyama) 株式会社ドクターズプライム エンジニr H 物理浅草のD H 2024年4月ドクターズプライム入g H
新規プロジェクトの開発してま5 H 最近ポケモンカード始めたのでやり方教えてください @osamu_000
なぜ改善する必要があったのか? どう改善したの? 実装イメージ ©2024 Dr.’s Prime ,Inc. 話すこと
なぜ改善する必要があったのか?
©2024 Dr.’s Prime ,Inc. なぜ改善する必要があったのか? - 前提 弊社では医師向けの勉強会プラットフォームを開発して ます 医師からもらった録画とスライドを編集して使用します
なので、以下の対応をする必要がある ・動画をストリーム用の形式にする ・勉強会の動画に対してスライドを登録する必要がある → 1枚1枚見れるようにするので分割して保存したい → スライドの容量もなるべくWeb最適化したい https://drsprime.com/service/academia
©2024 Dr.’s Prime ,Inc. なぜ改善する必要があったのか? - 生まれた課題 そこで自動処理したい作業が生まれた ・MP4/MOV →
HLSへの動画変換 ・HLSをCloudflareにアップ(ストレージサービス) ・PDFを一枚一枚WebPに変換する ・WebPをMicroCMSのassetsにアップ(CMS) でもあまりお金かけたくないな。。。
どう改善したの?
©2024 Dr.’s Prime ,Inc. どう改善したの? - 概要 自社でPCを組み立てて、稼働させました ・自動処理プログラムをGoで書く ・ビルドファイルをSSH経由でPCにアップ
・Cronで1分毎にビルドファイルを叩く ・環境構築周りはMakefileである程度楽に ・バージョン管理もできるようにビルドファイルもいい感じに分けた └ /.build/v1.0.*/build_file 名前はSynchan(しんちゃん)となりました ※自動でsyncしてくれるちゃん → Synchan
©2024 Dr.’s Prime ,Inc. どう改善したの? - アーキテクチャ The Go gopher
was designed by Renee French.
実装イメージ
©2024 Dr.’s Prime ,Inc. spf13/cobraを使用して実装 サブコマンドで”cron”を設定 flagは環境変数のパスを指定 Use: コマンド名 Run:
実行func 以下で実行できる % go run . cron video-upload --env <env_path> https://github.com/spf13/cobra 実装イメージ - コマンドライン実装
©2024 Dr.’s Prime ,Inc. HLSは解像度ごとにgoroutineで変換 ※HLSは帯域に応じて解像度を調整できるので 実際の変換はFFmpegを使用してます ※動画や音声をいい感じに変換してくれるやつ goroutineのエラーハンドリングは errgroupで
※goroutine内でエラーが起きた時に最初のエラーを返 してくれるやつ https://www.ffmpeg.org/ https://pkg.go.dev/golang.org/x/sync/errgroup 実装イメージ - MP4/MOV → HLS変換
©2024 Dr.’s Prime ,Inc. PDFのページごとにgoroutineをして WebPに変換 変換はimagickを使用してます ※画像をいい感じに処理してくれるやつ (ImageMagickのGoバインディング) filepathを使用するといい感じにパス操
作できます https://pkg.go.dev/gopkg.in/gographics/imagick.v2/ imagick https://pkg.go.dev/path/filepath 実装イメージ - PDF → WebP変換
©2024 Dr.’s Prime ,Inc. 採用情報 We are hiring! 職種 プロダクトエンジニア
現在、積極採用中です! 右のQRコードから カジュアル面談募集しています!