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
6.1k
アンドパッドのある開発チームでの 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
小規模 SRE チームで支える、 Atlantis で実現するインフラ管理のセルフサービス化
andpad
0
31
Go コードベースの構成と AI コンテキスト定義
andpad
0
190
「もっと正確に、もっと効率的に」ANDPADの写真書き込み機能における、 現場の声を形にしたエンハンス
andpad
0
880
複数チーム並行開発下でのコード移行アプローチ ~手動 Codemod から「生成AI 活用」への進化
andpad
0
270
Building the Real World with Ruby
andpad
0
63
Catch Up: Go Style Guide Update
andpad
0
320
OSS開発者という働き方
andpad
5
1.9k
Vue・React マルチプロダクト開発を支える Vite
andpad
0
190
プロダクト開発を支えるデータ利活用:中央集権から「民主化」までの軌跡
andpad
0
260
Other Decks in Technology
See All in Technology
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
260
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
670
20260204_Midosuji_Tech
takuyay0ne
1
160
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
200
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
430
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.4k
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
250
Context Engineeringの取り組み
nutslove
0
360
SREが向き合う大規模リアーキテクチャ 〜信頼性とアジリティの両立〜
zepprix
0
460
今日から始めるAmazon Bedrock AgentCore
har1101
4
410
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.6k
モダンUIでフルサーバーレスなAIエージェントをAmplifyとCDKでサクッとデプロイしよう
minorun365
4
210
Featured
See All Featured
Skip the Path - Find Your Career Trail
mkilby
0
57
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
170
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
70
Technical Leadership for Architectural Decision Making
baasie
2
250
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
55
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
HDC tutorial
michielstock
1
390
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
420
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.