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

goindexSearch: enum型の導入に伴う後方互換性調査ライブラリ

speed
March 17, 2023

goindexSearch: enum型の導入に伴う後方互換性調査ライブラリ

Knowledge Work主催Gopher Enablement Internshipの成果発表会で発表したスライドです。
インターンではgoindexSearchという、go vetコマンドやgrepコマンドをインターネット上の大量のGoのパッケージに対してかけるツールを開発しました。
本スライドではgoindexSearchの詳細や開発の工夫などについて述べます。

speed

March 17, 2023
Tweet

More Decks by speed

Other Decks in Programming

Transcript

  1. Gopher Enablement Internship 2023.03
    成果発表 - Gopher Enablement Internship
    チームA speed(@strayer_13)

    View Slide

  2. Gopher Enablement Internship 2023.03 2
    成果物情報
    タイトル
    選んだテーマ
    リポジトリURL
    enum型の導入に伴う
    後方互換性調査ライブラリ
    ② 新しいGoの機能
    https://github.com/speed1313/goindexSearch

    View Slide

  3. Gopher Enablement Internship 2023.03 3
    開発したツールについて
    ツール概要
    解決したい
    課題
    goindexSearch
    https://index.golang.org/index にあるパッ
    ケージに対して go vet や grep をかけるツール
    Go言語に新たな機能を追加するたびに
    後方互換性のチェックをする手間を省き
    たい。
    e.g.) enum型の導入時、enumが識別子として
    使われていると互換性が崩れる。
    実行結果や図を貼る

    View Slide

  4. Gopher Enablement Internship 2023.03
    見つかったenum(golang.org/x/text)
    https://cs.opensource.google/search?q=enum&sq=&ss=go%2Fx%2Ftext

    View Slide

  5. Gopher Enablement Internship 2023.03 5
    開発する中で工夫したこと
    課題
    工夫
    go vetの処理時間が長すぎる!
    goroutineを最大10個で回して並行処理
    拡張性を広げたい
    -vettoolやgrepのpatternをコマンド引数で与えれる
    ようにした

    View Slide

  6. Gopher Enablement Internship 2023.03 6
    インターンシップに参加した感想
    できるように
    なったこと
    感想
    ● net/http, sync/atomic, goroutineなどGoの様々な機能を組み合わせて使う
    ● 拡張性を考えてコードを書く
    ● 低レイヤ自作が好きでnet/httpや並行処理は使う機会があまりなかったため、
    今回静的解析と組み合わせて使えてよかった。
    ● go vetは、grepに比べてより細かいチェックができるが、
    遅いというトレードオフがあることがわかった

    View Slide

  7. Gopher Enablement Internship 2023.03 7
    今後の取組み
    ● 並行処理を最適化する
    ○ goroutine最大実行数のパラメータチューニングなど
    ● 探索パッケージ対象をカスタマイズしたい
    ● downloadするpackageのセキュリティチェック

    View Slide

  8. できる喜びが巡る日々を届ける
    Deliver the joy of enablement
    Gopher Enablement Internship 2023.03

    View Slide