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
490
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Goで社内オペレーションを少し改善できた話
Asakusa.go #4のLT資料です
https://asakusago.connpass.com/event/334004/
Osamu
November 08, 2024
More Decks by Osamu
See All by Osamu
Claude Codeを"もう一人の自分"として運用するまでにやったこと
osamu_000
1
15
CursorとObsidianで実現する次世代メモ管理術
osamu_000
1
96
Featured
See All Featured
Bash Introduction
62gerente
615
220k
Scaling GitHub
holman
464
140k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Odyssey Design
rkendrick25
PRO
2
750
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
570
The Curse of the Amulet
leimatthew05
2
14k
Chasing Engaging Ingredients in Design
codingconduct
0
260
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
330
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
420
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
How to Talk to Developers About Accessibility
jct
2
490
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
360
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コードから カジュアル面談募集しています!