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

研究の場においてのRust 製ソフトウェアのバージョン管理について

研究の場においてのRust 製ソフトウェアのバージョン管理について

puripuri2100

June 08, 2023
Tweet

More Decks by puripuri2100

Other Decks in Programming

Transcript

  1. 研究の場においての Rust 製ソフトウェアの
    バージョン管理について
    筑波大学情報科学類 2 年
    puripuri2100
    アークエッジ・スペース Rust 勉強会
    2023 年 6 月 7 日

    View Slide

  2. 1/6
    自己紹介
    インターネットネーム: puripuri2100

    View Slide

  3. 1/6
    自己紹介
    インターネットネーム: puripuri2100
    筑波大学情報科学類 2 年

    View Slide

  4. 1/6
    自己紹介
    インターネットネーム: puripuri2100
    筑波大学情報科学類 2 年
    SATySFi/Rust/OCaml が好き

    View Slide

  5. 1/6
    自己紹介
    インターネットネーム: puripuri2100
    筑波大学情報科学類 2 年
    SATySFi/Rust/OCaml が好き
    ドキュメントの整備・処理
    構文解析

    View Slide

  6. 1/6
    自己紹介
    インターネットネーム: puripuri2100
    筑波大学情報科学類 2 年
    SATySFi/Rust/OCaml が好き
    ドキュメントの整備・処理
    構文解析
    筑波大学情報科学類産学間連携推進室という研究室で研究している

    View Slide

  7. 1/6
    自己紹介
    インターネットネーム: puripuri2100
    筑波大学情報科学類 2 年
    SATySFi/Rust/OCaml が好き
    ドキュメントの整備・処理
    構文解析
    筑波大学情報科学類産学間連携推進室という研究室で研究している
    「法律文書の自動解析」というテーマ

    View Slide

  8. 1/6
    自己紹介
    インターネットネーム: puripuri2100
    筑波大学情報科学類 2 年
    SATySFi/Rust/OCaml が好き
    ドキュメントの整備・処理
    構文解析
    筑波大学情報科学類産学間連携推進室という研究室で研究している
    「法律文書の自動解析」というテーマ
    成果を情報処理学会で発表したところ大会奨励賞と学生奨励賞を受賞

    View Slide

  9. 2/6
    研究の話
    法律文書を解析していろいろなデータを抽出する
    読替規定分
    参照表現
    略称の定義

    View Slide

  10. 2/6
    研究の話
    法律文書を解析していろいろなデータを抽出する
    読替規定分
    参照表現
    略称の定義
    解析ソフトウェアを多数作っていく上で出てきた要求

    View Slide

  11. 2/6
    研究の話
    法律文書を解析していろいろなデータを抽出する
    読替規定分
    参照表現
    略称の定義
    解析ソフトウェアを多数作っていく上で出てきた要求
    よく使う機能をライブラリ化(例:数百万の条文を探索)

    View Slide

  12. 2/6
    研究の話
    法律文書を解析していろいろなデータを抽出する
    読替規定分
    参照表現
    略称の定義
    解析ソフトウェアを多数作っていく上で出てきた要求
    よく使う機能をライブラリ化(例:数百万の条文を探索)
    他の解析ソフトウェアでの解析結果を利用したい

    View Slide

  13. 2/6
    研究の話
    法律文書を解析していろいろなデータを抽出する
    読替規定分
    参照表現
    略称の定義
    解析ソフトウェアを多数作っていく上で出てきた要求
    よく使う機能をライブラリ化(例:数百万の条文を探索)
    他の解析ソフトウェアでの解析結果を利用したい
    論文化して再現実験できるようにするには解析ソフトウェアごとに独立して
    管理する必要がある

    View Slide

  14. 2/6
    研究の話
    法律文書を解析していろいろなデータを抽出する
    読替規定分
    参照表現
    略称の定義
    解析ソフトウェアを多数作っていく上で出てきた要求
    よく使う機能をライブラリ化(例:数百万の条文を探索)
    他の解析ソフトウェアでの解析結果を利用したい
    論文化して再現実験できるようにするには解析ソフトウェアごとに独立して
    管理する必要がある
    なぜ Rust

    View Slide

  15. 2/6
    研究の話
    法律文書を解析していろいろなデータを抽出する
    読替規定分
    参照表現
    略称の定義
    解析ソフトウェアを多数作っていく上で出てきた要求
    よく使う機能をライブラリ化(例:数百万の条文を探索)
    他の解析ソフトウェアでの解析結果を利用したい
    論文化して再現実験できるようにするには解析ソフトウェアごとに独立して
    管理する必要がある
    なぜ Rust
    cargo・ tokio・ serde・ anyhow があるから

    View Slide

  16. 3/6
    依存関係のグラフ
    法令データ
    法令解析用ライブラリ
    lib.rs
    判例データ
    解析ソフトウェアA
    main.rs
    解析ソフトウェアB
    lib.rs
    main.rs
    解析ソフトウェアC
    main.rs
    解析ソフトウェアD
    lib.rs
    main.rs
    解析ソフトウェアE
    main.rs
    JSON JSON

    View Slide

  17. 4/6
    ところで
    頻繁に各ライブラリが更新される
    解析手法のアップデート
    新しい解析手法のための新しい関数追加
    実験のサイクルを高速に回すにはリリース作業は邪魔
    どうする?
    法令データ
    法令解析用ライブラリ
    lib.rs
    判例データ
    解析ソフトウェアA
    main.rs
    解析ソフトウェアB
    lib.rs
    main.rs
    解析ソフトウェアC
    main.rs
    解析ソフトウェアD
    lib.rs
    main.rs
    解析ソフトウェアE
    main.rs
    JSON JSON

    View Slide

  18. 5/6
    現在の依存関係の管理
    リポジトリと commit タグを指定
    jplaw_text = { git="https://github.com/japanese-law-analysis/
    jplaw_text.git", rev="f98b48e" }

    View Slide

  19. 5/6
    現在の依存関係の管理
    リポジトリと commit タグを指定
    jplaw_text = { git="https://github.com/japanese-law-analysis/
    jplaw_text.git", rev="f98b48e" }
    メリット

    View Slide

  20. 5/6
    現在の依存関係の管理
    リポジトリと commit タグを指定
    jplaw_text = { git="https://github.com/japanese-law-analysis/
    jplaw_text.git", rev="f98b48e" }
    メリット
    実験を気軽に回せる

    View Slide

  21. 5/6
    現在の依存関係の管理
    リポジトリと commit タグを指定
    jplaw_text = { git="https://github.com/japanese-law-analysis/
    jplaw_text.git", rev="f98b48e" }
    メリット
    実験を気軽に回せる
    「適切な設計」で時間を浪費しないで済む

    View Slide

  22. 5/6
    現在の依存関係の管理
    リポジトリと commit タグを指定
    jplaw_text = { git="https://github.com/japanese-law-analysis/
    jplaw_text.git", rev="f98b48e" }
    メリット
    実験を気軽に回せる
    「適切な設計」で時間を浪費しないで済む
    うまくいったらたまにリリースすれば良い

    View Slide

  23. 5/6
    現在の依存関係の管理
    リポジトリと commit タグを指定
    jplaw_text = { git="https://github.com/japanese-law-analysis/
    jplaw_text.git", rev="f98b48e" }
    メリット
    実験を気軽に回せる
    「適切な設計」で時間を浪費しないで済む
    うまくいったらたまにリリースすれば良い
    デメリット

    View Slide

  24. 5/6
    現在の依存関係の管理
    リポジトリと commit タグを指定
    jplaw_text = { git="https://github.com/japanese-law-analysis/
    jplaw_text.git", rev="f98b48e" }
    メリット
    実験を気軽に回せる
    「適切な設計」で時間を浪費しないで済む
    うまくいったらたまにリリースすれば良い
    デメリット
    たまに破壊される
    同じ構造体を使っているつもりでも互換性が無いことがある

    View Slide

  25. 5/6
    現在の依存関係の管理
    リポジトリと commit タグを指定
    jplaw_text = { git="https://github.com/japanese-law-analysis/
    jplaw_text.git", rev="f98b48e" }
    メリット
    実験を気軽に回せる
    「適切な設計」で時間を浪費しないで済む
    うまくいったらたまにリリースすれば良い
    デメリット
    たまに破壊される
    同じ構造体を使っているつもりでも互換性が無いことがある
    パッケージマネージャの恩恵が半減(submodule 時代へ逆戻り)

    View Slide

  26. 6/6
    まとめ
    研究で作るソフトウェア群の管理が難しい
    実験のしやすさ
    他の人にとっての再現のしやすさ
    互換性の維持

    View Slide

  27. 6/6
    まとめ
    研究で作るソフトウェア群の管理が難しい
    実験のしやすさ
    他の人にとっての再現のしやすさ
    互換性の維持
    モノは https://github.com/japanese-law-analysis に全てあります

    View Slide

  28. 6/6
    まとめ
    研究で作るソフトウェア群の管理が難しい
    実験のしやすさ
    他の人にとっての再現のしやすさ
    互換性の維持
    モノは https://github.com/japanese-law-analysis に全てあります
    俺ってどうしたらいいですか状態

    View Slide