アンドパッドのある開発チームでの OSS への取り組み
by
ANDPAD inc
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc. アンドパッドのある開発チームでの OSS への取り組み Copyright © 2023 ANDPAD Inc. tomtwinkle
Slide 2
Slide 2 text
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
Slide 3
Slide 3 text
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc. 弊社千代⽥区ネタ
Slide 4
Slide 4 text
Copyright © 2023 ANDPAD Inc. 秋葉原駅前弊社ビル1Fに何も無くてdisられる(泣)
Slide 5
Slide 5 text
Copyright © 2023 ANDPAD Inc. 代わりに(?) 社内カフェ出来ましたハピハピハピ
Slide 6
Slide 6 text
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc. みなさん、OSS使っていますか?
Slide 7
Slide 7 text
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc. OSSのメリットってなんでしょう
Slide 8
Slide 8 text
Copyright © 2023 ANDPAD Inc. OSSのメリット ❌無料なのでコスト低く導⼊できる ⭕いざとなったら⾃分で直せる
Slide 9
Slide 9 text
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc. OSS参⼊ハードルを下げる
Slide 10
Slide 10 text
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc. テックブログにコメント書くノリでOSSに Issue/Pull Requestを投げる
Slide 11
Slide 11 text
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc. チームメンバーがコントリビュートした OSSの⼀例
Slide 12
Slide 12 text
Copyright © 2023 ANDPAD Inc. go-faker/faker https://github.com/go-faker/faker ⽒名、⽂章、数値、電話番号、住所などをランダムに作成 テストで毎回ランダムな値を渡すことで関数の意図しないバグを⾒つける いわゆるモンキーテストのためのツール
Slide 13
Slide 13 text
Copyright © 2023 ANDPAD Inc. go-faker/faker ● コントリビュートしたのは正確にはgo-faker移⾏前の bxcodec/faker ● Shift-JISのCSVテストデータ作成を⾏おうとしたのが動機 ● goのfakerは英語圏や中国圏のコントリビュータが多く、英語や中国語は対応 されているが⽇本語が対応されていなかった ● ⽇本語出⼒対応を実施
Slide 14
Slide 14 text
Copyright © 2023 ANDPAD Inc. sqldef/sqldef https://github.com/sqldef/sqldef 1バイナリで動作する軽いRidgepoleライクなDB Migration Tool DDLとDB Schemaの差分から変更するSchemaのDDLを作成&DBに反映する
Slide 15
Slide 15 text
Copyright © 2023 ANDPAD Inc. sqldef/sqldef ● そもそもCIでRidgepole動かすのが重いので代価として検討 ● まだ開発途中なため本家Ridgepole程フォーマットパターンが充実していない がYaccによるDDLからASTへのParse、DDLの差分表⽰のロジックが⽐較的シン プルな実装であったためバグったら⾃分で治す前提で採⽤ ● プロダクトでMySQLのGenerated Columnを利⽤する必要があったため Generated Columnに対応する修正を実施
Slide 16
Slide 16 text
Copyright © 2023 ANDPAD Inc. go-gorm/gorm https://github.com/go-gorm/gorm goのActiveRecordライクなORM
Slide 17
Slide 17 text
Copyright © 2023 ANDPAD Inc. ● 不正なDSNを渡してDB connectionを作るとエラーにならずにpanicするバグ の修正 ○ 新卒社員が⾒つけて即座にコントリビュートしていました ● v1, v2ドキュメント誤りの訂正 ● コントリビュートではないですが「Gormにおける「仕様通り」なSQLイン ジェクションの恐れのある実装についての注意喚起」 go-gorm/gorm
Slide 18
Slide 18 text
Copyright © 2023 ANDPAD Inc. jinzhu/copier https://github.com/jinzhu/copier goの構造体をコピーするlibrary
Slide 19
Slide 19 text
Copyright © 2023 ANDPAD Inc. jinzhu/copier ● 現在は使⽤していない ● 当時、goのレイヤードアーキテクチャではレイヤー毎に異なるmodelを持つ必 要があったため構造体のコピーが必要であったため利⽤ ● コードが読みにくかったのでリファクタリングを実施 ● struct tag指定で別のfieldにコピーする機能を追加
Slide 20
Slide 20 text
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc. テックブログ書くノリでOSSのコードを書く
Slide 21
Slide 21 text
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc. ⾃前で管理しているOSSの⼀例
Slide 22
Slide 22 text
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を作成
Slide 23
Slide 23 text
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を作成 試験運⽤中
Slide 24
Slide 24 text
Copyright © 2023 ANDPAD Inc. tomtwinkle/excelizeam https://github.com/tomtwinkle/excelizeam ExcelizeのStreamWriterはExcelのXML構築の都合上必ずCellの書き込みは⾏の順番 に実⾏しないと構築されるExcelが壊れます StreamWriterを使⽤しつつランダムな順番でのCellの書き込みに対応させるために 作成
Slide 25
Slide 25 text
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
Slide 26
Slide 26 text
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
Slide 27
Slide 27 text
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
Slide 28
Slide 28 text
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 主にテスト⽤
Slide 29
Slide 29 text
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc. OSSのメンテどうする問題
Slide 30
Slide 30 text
Copyright © 2023 ANDPAD Inc. OSSでのテストは資産 ● どんな使い⽅をすれば良いか具体例はテスト⾒れば⼤体わかる ● 新規参⼊者がPull Requestを出す際Draft解除する基準として機能する ● 依存libraryの定期バージョンアップをdependabotにある程度委譲出来る
Slide 31
Slide 31 text
Copyright © 2023 ANDPAD Inc. Semantic Versioningを意識する ● v0.x.xはベータ版、インターフェースや内容が頻繁に変わる可能性があるよ ● Security fixの際にはpatch versionを上げる ● 新規機能追加した際や既存の機能の内部ロジックが⼤きく変わった際はminor versionを上げる ● OSS利⽤者としてはpatch versionだけ上がった場合はあまり意識せずに更新可 能、minor version上がってる場合はリリースノート参照
Slide 32
Slide 32 text
Copyright © 2023 ANDPAD Inc. プロダクトで使わなくなったらお掃除 ● プロダクトで使ってるなら困ったら直すので基本的に問題なし ● 使わなくなったlibraryはdeprecatedコメントを残しいずれ削除 or Repository ごとPublic Archiveする
Slide 33
Slide 33 text
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc. 今後もぼちぼちOSS活動続けていきます
Slide 34
Slide 34 text
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc. OSS活動に興味あるGopherの皆さん! アンドパッドで⼀緒に働きませんか!!! (Rubyist, Nuxt.js, Flutter etc. の皆さんも募集しています)
Slide 35
Slide 35 text
Copyright © 2023 ANDPAD Inc. 35 Copyright © 2023 ANDPAD Inc. いま建築‧建設業界で “ものづくり” に携わる⽅の⼈⼿不⾜や ⻑時間労働が社会問題となっています。 今後これらの課題に対して、デジタルシフトによる⽣産性向上や、 就労者数の底上げを急ぐ必要があります。 本来、ものづくりに携わる⼈々は、誰かに幸せを届ける⼈たちです。 そんな⽅々がもっとクリエイティブに、もっと豊かに働けるよう、 私たちは熱い想いで⽇々現場に向き合っています。
Slide 36
Slide 36 text
Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc. ANDPADについて 36 Copyright © 2023 ANDPAD Inc.