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
430
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
58
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
54
8k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
230
Evolving SEO for Evolving Search Engines
ryanjones
0
110
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
110
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
52
Unsuck your backbone
ammeep
671
58k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
310
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
90
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
100
A Tale of Four Properties
chriscoyier
162
24k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
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コードから カジュアル面談募集しています!