Upgrade to Pro — share decks privately, control downloads, hide ads and more …

アンドパッドのある開発チームでの OSS への取り組み

ANDPAD inc
February 29, 2024

アンドパッドのある開発チームでの OSS への取り組み

tomtwinkle @tomtwinklestar テックリード
【CHIYODA Tech #3】OSSの活用と貢献 ~各社のOSSとの付き合い方を話します~

ANDPAD inc

February 29, 2024
Tweet

More Decks by ANDPAD inc

Other Decks in Technology

Transcript

  1. Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.

    アンドパッドのある開発チームでの OSS への取り組み Copyright © 2023 ANDPAD Inc. tomtwinkle
  2. 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
  3. Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.

    みなさん、OSS使っていますか?
  4. Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.

    OSSのメリットってなんでしょう
  5. Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.

    テックブログにコメント書くノリでOSSに Issue/Pull Requestを投げる
  6. Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.

    チームメンバーがコントリビュートした OSSの⼀例
  7. Copyright © 2023 ANDPAD Inc. go-faker/faker • コントリビュートしたのは正確にはgo-faker移⾏前の bxcodec/faker •

    Shift-JISのCSVテストデータ作成を⾏おうとしたのが動機 • goのfakerは英語圏や中国圏のコントリビュータが多く、英語や中国語は対応 されているが⽇本語が対応されていなかった • ⽇本語出⼒対応を実施
  8. Copyright © 2023 ANDPAD Inc. sqldef/sqldef • そもそもCIでRidgepole動かすのが重いので代価として検討 • まだ開発途中なため本家Ridgepole程フォーマットパターンが充実していない

    がYaccによるDDLからASTへのParse、DDLの差分表⽰のロジックが⽐較的シン プルな実装であったためバグったら⾃分で治す前提で採⽤ • プロダクトでMySQLのGenerated Columnを利⽤する必要があったため Generated Columnに対応する修正を実施
  9. Copyright © 2023 ANDPAD Inc. • 不正なDSNを渡してDB connectionを作るとエラーにならずにpanicするバグ の修正 ◦

    新卒社員が⾒つけて即座にコントリビュートしていました • v1, v2ドキュメント誤りの訂正 • コントリビュートではないですが「Gormにおける「仕様通り」なSQLイン ジェクションの恐れのある実装についての注意喚起」 go-gorm/gorm
  10. Copyright © 2023 ANDPAD Inc. jinzhu/copier • 現在は使⽤していない • 当時、goのレイヤードアーキテクチャではレイヤー毎に異なるmodelを持つ必

    要があったため構造体のコピーが必要であったため利⽤ • コードが読みにくかったのでリファクタリングを実施 • struct tag指定で別のfieldにコピーする機能を追加
  11. Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.

    テックブログ書くノリでOSSのコードを書く
  12. Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.

    ⾃前で管理しているOSSの⼀例
  13. 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を作成
  14. 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を作成 試験運⽤中
  15. 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
  16. 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
  17. 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
  18. 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 主にテスト⽤
  19. Copyright © 2023 ANDPAD Inc. OSSでのテストは資産 • どんな使い⽅をすれば良いか具体例はテスト⾒れば⼤体わかる • 新規参⼊者がPull

    Requestを出す際Draft解除する基準として機能する • 依存libraryの定期バージョンアップをdependabotにある程度委譲出来る
  20. Copyright © 2023 ANDPAD Inc. Semantic Versioningを意識する • v0.x.xはベータ版、インターフェースや内容が頻繁に変わる可能性があるよ •

    Security fixの際にはpatch versionを上げる • 新規機能追加した際や既存の機能の内部ロジックが⼤きく変わった際はminor versionを上げる • OSS利⽤者としてはpatch versionだけ上がった場合はあまり意識せずに更新可 能、minor version上がってる場合はリリースノート参照
  21. Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.

    今後もぼちぼちOSS活動続けていきます
  22. Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.

    OSS活動に興味あるGopherの皆さん! アンドパッドで⼀緒に働きませんか!!! (Rubyist, Nuxt.js, Flutter etc. の皆さんも募集しています)
  23. Copyright © 2023 ANDPAD Inc. 35 Copyright © 2023 ANDPAD

    Inc. いま建築‧建設業界で “ものづくり” に携わる⽅の⼈⼿不⾜や ⻑時間労働が社会問題となっています。 今後これらの課題に対して、デジタルシフトによる⽣産性向上や、 就労者数の底上げを急ぐ必要があります。 本来、ものづくりに携わる⼈々は、誰かに幸せを届ける⼈たちです。 そんな⽅々がもっとクリエイティブに、もっと豊かに働けるよう、 私たちは熱い想いで⽇々現場に向き合っています。
  24. Copyright © 2023 ANDPAD Inc. Copyright © 2023 ANDPAD Inc.

    ANDPADについて 36 Copyright © 2023 ANDPAD Inc.