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
アンドパッドのある開発チームでの OSS への取り組み
Search
ANDPAD inc
February 29, 2024
Technology
2
5.3k
アンドパッドのある開発チームでの OSS への取り組み
tomtwinkle
@tomtwinklestar
テックリード
【CHIYODA Tech #3】OSSの活用と貢献 ~各社のOSSとの付き合い方を話します~
ANDPAD inc
February 29, 2024
Tweet
Share
More Decks by ANDPAD inc
See All by ANDPAD inc
マルチプロダクト開発の現場でAWS Security Hubを1年以上運用して得た教訓
andpad
0
19
rails stats で紐解く ANDPAD のイマを支える技術たち
andpad
1
280
本編では話さない Zig の話
andpad
2
180
"noncopyable types" の使いどころについて考えてみた
andpad
0
300
ANDPAD黒板のオフラインモード機能 リリースまでの軌跡
andpad
0
170
アンドパッドのマルチプロダクト戦略を支える SRE
andpad
1
180
Introduction of Cybersecurity with OSS (RDRC2024)
andpad
1
62
開発チームとともに進めるインフラセキュリティの継続的な改善
andpad
2
82
ANDPAD and Ruby
andpad
1
660
Other Decks in Technology
See All in Technology
データパイプラインをなんとかした話 / Improving the Data Pipeline in IVRy
mirakui
1
350
KubeCon NA 2024 Recap / Running WebAssembly (Wasm) Workloads Side-by-Side with Container Workloads
z63d
1
230
DevOps視点でAWS re:invent2024の新サービス・アプデを振り返ってみた
oshanqq
0
180
Password-less Journey - パスキーへの移行を見据えたユーザーの準備 @ AXIES 2024
ritou
3
1.4k
LINE Developersプロダクト(LIFF/LINE Login)におけるフロントエンド開発
lycorptech_jp
PRO
0
110
tokyo_re_Growth2024_yoshi
yoshi22
0
210
Wvlet: A New Flow-Style Query Language For Functional Data Modeling and Interactive Data Analysis - Trino Summit 2024
xerial
1
100
re:Invent 2024 Innovation Talks(NET201)で語られた大切なこと
shotashiratori
0
280
AWS re:Invent 2024 re:Cap CloudFront編
yoshimi0227
0
340
podman_update_2024-12
orimanabu
1
260
OpenShift Virtualizationのネットワーク構成を真剣に考えてみた/OpenShift Virtualization's Network Configuration
tnk4on
0
130
LINEスキマニにおけるフロントエンド開発
lycorptech_jp
PRO
0
320
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Thoughts on Productivity
jonyablonski
67
4.4k
Optimising Largest Contentful Paint
csswizardry
33
3k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
160
The Invisible Side of Design
smashingmag
298
50k
Faster Mobile Websites
deanohume
305
30k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Unsuck your backbone
ammeep
669
57k
The Cost Of JavaScript in 2023
addyosmani
45
7k
Designing on Purpose - Digital PM Summit 2013
jponch
116
7k
Transcript
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.
アンドパッドのある開発チームでの OSS への取り組み Copyright © 2023 ANDPAD Inc. tomtwinkle
Copyright © 2023 ANDPAD Inc. tomtwinkle tomoki.tsuchiya ANDPAD Inc. ANDPAD
Board Product Tech Lead 好きなOSS https://github.com/qax-os/excelize https://github.com/k0kubun/pp https://github.com/gizak/termui https://github.com/kubernetes/kubernetes https://github.com/cockroachdb/cockroach https://github.com/pingcap/tidb https://github.com/junegunn/fzf
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.
弊社千代⽥区ネタ
Copyright © 2023 ANDPAD Inc. 秋葉原駅前弊社ビル1Fに何も無くてdisられる(泣)
Copyright © 2023 ANDPAD Inc. 代わりに(?) 社内カフェ出来ましたハピハピハピ
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.
みなさん、OSS使っていますか?
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.
OSSのメリットってなんでしょう
Copyright © 2023 ANDPAD Inc. OSSのメリット ❌無料なのでコスト低く導⼊できる ⭕いざとなったら⾃分で直せる
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.
OSS参⼊ハードルを下げる
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.
テックブログにコメント書くノリでOSSに Issue/Pull Requestを投げる
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.
チームメンバーがコントリビュートした OSSの⼀例
Copyright © 2023 ANDPAD Inc. go-faker/faker https://github.com/go-faker/faker ⽒名、⽂章、数値、電話番号、住所などをランダムに作成 テストで毎回ランダムな値を渡すことで関数の意図しないバグを⾒つける いわゆるモンキーテストのためのツール
Copyright © 2023 ANDPAD Inc. go-faker/faker • コントリビュートしたのは正確にはgo-faker移⾏前の bxcodec/faker •
Shift-JISのCSVテストデータ作成を⾏おうとしたのが動機 • goのfakerは英語圏や中国圏のコントリビュータが多く、英語や中国語は対応 されているが⽇本語が対応されていなかった • ⽇本語出⼒対応を実施
Copyright © 2023 ANDPAD Inc. sqldef/sqldef https://github.com/sqldef/sqldef 1バイナリで動作する軽いRidgepoleライクなDB Migration Tool
DDLとDB Schemaの差分から変更するSchemaのDDLを作成&DBに反映する
Copyright © 2023 ANDPAD Inc. sqldef/sqldef • そもそもCIでRidgepole動かすのが重いので代価として検討 • まだ開発途中なため本家Ridgepole程フォーマットパターンが充実していない
がYaccによるDDLからASTへのParse、DDLの差分表⽰のロジックが⽐較的シン プルな実装であったためバグったら⾃分で治す前提で採⽤ • プロダクトでMySQLのGenerated Columnを利⽤する必要があったため Generated Columnに対応する修正を実施
Copyright © 2023 ANDPAD Inc. go-gorm/gorm https://github.com/go-gorm/gorm goのActiveRecordライクなORM
Copyright © 2023 ANDPAD Inc. • 不正なDSNを渡してDB connectionを作るとエラーにならずにpanicするバグ の修正 ◦
新卒社員が⾒つけて即座にコントリビュートしていました • v1, v2ドキュメント誤りの訂正 • コントリビュートではないですが「Gormにおける「仕様通り」なSQLイン ジェクションの恐れのある実装についての注意喚起」 go-gorm/gorm
Copyright © 2023 ANDPAD Inc. jinzhu/copier https://github.com/jinzhu/copier goの構造体をコピーするlibrary
Copyright © 2023 ANDPAD Inc. jinzhu/copier • 現在は使⽤していない • 当時、goのレイヤードアーキテクチャではレイヤー毎に異なるmodelを持つ必
要があったため構造体のコピーが必要であったため利⽤ • コードが読みにくかったのでリファクタリングを実施 • struct tag指定で別のfieldにコピーする機能を追加
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.
テックブログ書くノリでOSSのコードを書く
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.
⾃前で管理しているOSSの⼀例
Copyright © 2023 ANDPAD Inc. tomtwinkle/garbledreplacer https://github.com/tomtwinkle/garbledreplacer UTF-8から別の⽂字コード変換時に変換不可能な⽂字列を別の⽂字列に置き換える Transformer Golang標準の
japanese.ShiftJIS 等のEncoderでは変換出来ない⽂字が合った場合 rune not supported by encoding errorが出てしまい変換ができない Encoderを通す前に変換できない⽂字を事前に別の⽂字に置き換える為の Transformerを作成
Copyright © 2023 ANDPAD Inc. tomtwinkle/go-pr-release https://github.com/tomtwinkle/go-pr-release git commit差分から対象のPull Requestを抽出してリリース⽤Pull
Requestを作成 する git-pr-releaseが遅いので1バイナリで動くgoバージョンのgit-pr-releaseを作成 試験運⽤中
Copyright © 2023 ANDPAD Inc. tomtwinkle/excelizeam https://github.com/tomtwinkle/excelizeam ExcelizeのStreamWriterはExcelのXML構築の都合上必ずCellの書き込みは⾏の順番 に実⾏しないと構築されるExcelが壊れます StreamWriterを使⽤しつつランダムな順番でのCellの書き込みに対応させるために
作成
Copyright © 2023 ANDPAD Inc. 88labs/go-utils https://github.com/88labs/go-utils 88labsはANDPAD Organizationです。 旧社名オクトだから88なんだとか
OSS関連は https://github.com/andpad-dev に移動するかも? aws系 aws-sdk-go v2の共通処理をまとめたlibrary aws-sdkたまにガラッとインターフェース変わるので共通化しておくと対応が楽 envlookup よく使う環境変数のLookUp処理をまとめたlibrary
Copyright © 2023 ANDPAD Inc. 88labs/go-utils https://github.com/88labs/go-utils 88labsはANDPAD Organizationです。 旧社名オクトだから88なんだとか
OSS関連は https://github.com/andpad-dev に移動するかも? errgroup golang.org/x/sync/errgroup を利⽤してGoroutine処理を⾏う際にpanicを拾うた めにrecoverが必須ですが、それを共通化したlibrary ulid oklog/ulid/v2 をベースにULIDの発⾏処理を⾏うlibrary
Copyright © 2023 ANDPAD Inc. 88labs/go-utils https://github.com/88labs/go-utils 88labsはANDPAD Organizationです。 旧社名オクトだから88なんだとか
OSS関連は https://github.com/andpad-dev に移動するかも? cerrors プロダクト内でよく使うerror codeをまとめたlibrary sql-escape SQLのLIKE検索を⾏う際の⽂字列エスケープ処理をまとめたlibrary
Copyright © 2023 ANDPAD Inc. 88labs/go-utils https://github.com/88labs/go-utils 88labsはANDPAD Organizationです。 旧社名オクトだから88なんだとか
OSS関連は https://github.com/andpad-dev に移動するかも? utf8bom ⽂字列にUTF-8 BOMを付与するlibrary 主にテスト⽤
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.
OSSのメンテどうする問題
Copyright © 2023 ANDPAD Inc. OSSでのテストは資産 • どんな使い⽅をすれば良いか具体例はテスト⾒れば⼤体わかる • 新規参⼊者がPull
Requestを出す際Draft解除する基準として機能する • 依存libraryの定期バージョンアップをdependabotにある程度委譲出来る
Copyright © 2023 ANDPAD Inc. Semantic Versioningを意識する • v0.x.xはベータ版、インターフェースや内容が頻繁に変わる可能性があるよ •
Security fixの際にはpatch versionを上げる • 新規機能追加した際や既存の機能の内部ロジックが⼤きく変わった際はminor versionを上げる • OSS利⽤者としてはpatch versionだけ上がった場合はあまり意識せずに更新可 能、minor version上がってる場合はリリースノート参照
Copyright © 2023 ANDPAD Inc. プロダクトで使わなくなったらお掃除 • プロダクトで使ってるなら困ったら直すので基本的に問題なし • 使わなくなったlibraryはdeprecatedコメントを残しいずれ削除
or Repository ごとPublic Archiveする
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.
今後もぼちぼちOSS活動続けていきます
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.
OSS活動に興味あるGopherの皆さん! アンドパッドで⼀緒に働きませんか!!! (Rubyist, Nuxt.js, Flutter etc. の皆さんも募集しています)
Copyright © 2023 ANDPAD Inc. 35 Copyright © 2023 ANDPAD
Inc. いま建築‧建設業界で “ものづくり” に携わる⽅の⼈⼿不⾜や ⻑時間労働が社会問題となっています。 今後これらの課題に対して、デジタルシフトによる⽣産性向上や、 就労者数の底上げを急ぐ必要があります。 本来、ものづくりに携わる⼈々は、誰かに幸せを届ける⼈たちです。 そんな⽅々がもっとクリエイティブに、もっと豊かに働けるよう、 私たちは熱い想いで⽇々現場に向き合っています。
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.
ANDPADについて 36 Copyright © 2023 ANDPAD Inc.