Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OSS Gate Workshop: online: 2023-09-30: shirotamaki: rubicure: Work log #1666

Closed
shirotamaki opened this issue Sep 30, 2023 · 27 comments
Closed

Comments

@shirotamaki
Copy link
Contributor

This is a work log of a "OSS Gate workshop".
"OSS Gate workshop" is an activity to increase OSS developers.
Here's been discussed in Japanese. Thanks.

作業ログ作成時の説明

以下のテンプレートを埋めてタイトルに設定します。埋め方例はスクロールすると見えてきます。

OSS Gate Workshop: ${LOCATION}: ${YEAR}-${MONTH}-${DAY}: ${ACCOUNT_NAME}: ${OSS_NAME}: Work log

タイトル例↓:

OSS Gate Workshop: Tokyo: 2017-01-16: kou: Rabbit: Work log

OSS Gateワークショップ関連情報

  • スライド:ワークショップの進行に使っているスライドがあります。
  • チャット:OSS開発に関することならなんでも相談できます。ワークショップが終わった後もオンラインで相談しながら継続的にOSSの開発に参加しましょう!
  • シナリオ:ワークショップの目的・内容・進め方の詳細が書いています。
  • 過去のビギナーの作業ログ:他の人の作業ログから学べることがいろいろあるはずです。
@shirotamaki
Copy link
Contributor Author

作業メモができました。

@shirotamaki
Copy link
Contributor Author

@shirotamaki
Copy link
Contributor Author

shirotamaki commented Sep 30, 2023

rubicure を選択
https://github.com/sue445/rubicure

ライセンスを確認する
https://github.com/sue445/rubicure/blob/master/LICENSE.txt

MIT ライセンスであることを確認しました
https://opensource.org/license/mit/

@shirotamaki
Copy link
Contributor Author

shirotamaki commented Sep 30, 2023

やりたいこと

  • インストールする
  • irbでrubicureを起動する

わからないこと

  • 自分が開発する時にirb で rubicure を起動するにはどうしたらいいか?
    • READMEには手順が書いていない

@shirotamaki
Copy link
Contributor Author

❯ rake test
/Users/shiro/.rbenv/versions/3.2.1/bin/ruby -I/Users/shiro/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rspec-core-3.12.2/lib:/Users/shiro/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rspec-support-3.12.1/lib /Users/shiro/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rspec-core-3.12.2/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb

An error occurred while loading spec_helper. - Did you mean?
                    rspec ./spec/spec_helper.rb

Failure/Error: require "sengiri_yaml"

LoadError:
  cannot load such file -- sengiri_yaml
# ./lib/rubicure/girl.rb:2:in `<module:Rubicure>'
# ./lib/rubicure/girl.rb:1:in `<top (required)>'
# ./lib/rubicure.rb:20:in `<top (required)>'
# ./spec/spec_helper.rb:31:in `<top (required)>'
No examples found.


Finished in 0.00004 seconds (files took 1.02 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples

/Users/shiro/.rbenv/versions/3.2.1/bin/ruby -I/Users/shiro/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rspec-core-3.12.2/lib:/Users/shiro/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rspec-support-3.12.1/lib /Users/shiro/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rspec-core-3.12.2/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb failed

@shirotamaki
Copy link
Contributor Author

shirotamaki commented Sep 30, 2023

インストール後の開発向けのset upの情報がREADMEには書かれていない。
bundle installが必要

@shirotamaki
Copy link
Contributor Author

shirotamaki commented Sep 30, 2023

3.2.1だと警告が発生。

warning: parser/current is loading parser/ruby32, which recognizes 3.2.2-compliant syntax, but you are running 3.2.1.

❯ rake test
/Users/shiro/.rbenv/versions/3.2.1/bin/ruby -I/Users/shiro/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rspec-core-3.12.2/lib:/Users/shiro/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rspec-support-3.12.1/lib /Users/shiro/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rspec-core-3.12.2/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb
warning: parser/current is loading parser/ruby32, which recognizes 3.2.2-compliant syntax, but you are running 3.2.1.
Please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.

Randomized with seed 29780
................................................................................................................................................チェインジ!プリキュア・ビートアップ!
真っ赤なハートは幸せの証!
熟れたてフレッシュ、キュアパッション!
レッツプリキュア!
.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................プリキュアスマイルチャージ!
GO! GO! Let's GO ピース!
ピカピカピカリンジャンケンポン! キュアピース!
.プリキュアスマイルチャージ!
GO! GO! Let's GO ピース!
ピカピカピカリンジャンケンポン! キュアピース!
..........プリキュアスマイルチャージ!
GO! GO! Let's GO ピース!
ピカピカピカリンジャンケンポン! キュアピース!
プリキュアピースサンダー!
.プリキュアスマイルチャージ!
GO! GO! Let's GO ピース!
ピカピカピカリンジャンケンポン! キュアピース!
.プリキュアスマイルチャージ!
GO! GO! Let's GO ピース!
ピカピカピカリンジャンケンポン! キュアピース!
....プリキュアスマイルチャージ!
GO! GO! Let's GO ピース!
ピカピカピカリンジャンケンポン! キュアピース!
..プリキュアスマイルチャージ!
GO! GO! Let's GO ピース!
ピカピカピカリンジャンケンポン! キュアピース!
..プリキュアスマイルチャージ!
GO! GO! Let's GO ピース!
ピカピカピカリンジャンケンポン! キュアピース!
.......スカイローズ・トランスレイト!
青いバラは秘密のしるし! ミルキィローズ!
.プリキュア!メタモルフォーゼ!
はじけるレモンの香り、キュアレモネード!
希望の力と未来の光!
華麗に羽ばたく5つの心!
Yes!プリキュア5!
.....................................................ピカピカピカリン
ジャンケンポン!
(チョキ)
.ピカピカピカリン
ジャンケンポン!
(チョキ)
.スターカラーペンダント!
カラーチャージ!
煌めくー
星の力でー
憧れのー
私えがくよー
トゥインクル!トゥインクル!プリキュア!
トゥインクル!トゥインクル!プリキュア!
トゥインクル!トゥインクル!プリキュア!
スター☆トゥインクル!
スター☆トゥインクル!プリキュア!
あー!
銀河に光る虹色のスペクトル!キュアコスモ!
スター☆トゥインクル!プリキュア!
.レインボーパフュームいくニャン!
.レインボーパフュームいくニャン!
...プリキュア!プリンセスエンゲージ!
深紅の炎のプリンセス!キュアスカーレット!
強く、やさしく、美しく!
Go!プリンセスプリキュア!
冷たい檻に閉ざされた夢、返していただきますわ!
お覚悟決めなさい!
..レッツプレイ!プリキュアモジュレーション!!
爪弾くは魂の調べ! キュアビート!
届け4人の組曲!スイートプリキュア!
................................................................

Finished in 1.37 seconds (files took 3.29 seconds to load)
1420 examples, 0 failures

Randomized with seed 29780

rubydoctest README.md
=== Testing 'README.md'...
1.  ERR  | Default Test
           LoadError: cannot load such file -- rubicure
             from README.md:49
           require "rubicure"
118 comparisons, 1 doctests, 0 failures, 1 errors
rake aborted!
Command failed with status (1): [rubydoctest README.md...]
/Users/shiro/oss/rubicure/Rakefile:8:in `block in <top (required)>'
Tasks: TOP => test => rubydoctest
(See full trace by running task with --trace)

@shirotamaki
Copy link
Contributor Author

shirotamaki commented Sep 30, 2023

@shirotamaki
Copy link
Contributor Author

shirotamaki commented Sep 30, 2023

ふりかえり1

  • 他の人の視点での考え方を知る
    • フィードバッグもらう
  • 作業ログが役に立つことを実感する

メモ

  • ライセンスを置いていないプロジェクトもある
  • 分かりづらいところにライセンスが書かれていることもある
  • package.jsonにライセンスが書いている
  • GitHubにあってもOSSであるとは限らない
    • GitHubにプライベートで公開しているという事は、プライベートで使うことは問題ないが再利用はできない。
  • ラインセンスの書き方に慣習がある
    • gemspecにもライセンスを書くところがある

@shirotamaki
Copy link
Contributor Author

shirotamaki commented Sep 30, 2023

フィードバッグ

upstream(開発元)にうまくいかなかったことを報告すること

例えば...

  • こここで詰まった。と伝える
  • こうだったら良かった。と伝える

フィードバック手順

  1. 整理する
    フィードバックする内容を整理する
    サポーターに確認する

  2. 編集する
    開発者にとってわかりやすく
    相手がわかるように、省略しないように。
    開発環境を報告
    導入しているプラグイン等
    載せられる情報は全部載せる意識

まとめると...

  • 詳細を書く
  • やったことを書く
  • やっていないことを書く
  • 期待した結果を書く
  1. 報告する
    適切な場所に報告
    GitHubじゃないこともある
    OSSによって報告場所は違う
    既存のIssueを検索し同じ内容のIssueがある場合はそこへ追加する方が好まれる

@shirotamaki shirotamaki changed the title OSS Gate Workshop: online: 2023-09-30: shirotamaki: ${OSS_NAME}: Work log OSS Gate Workshop: online: 2023-09-30: shirotamaki: rubicure: Work log Sep 30, 2023
@shirotamaki
Copy link
Contributor Author

疑問点

どうやったらsh "rubydoctest README.md"を実行することができるか?
$LOAD_PATH.unshift File.expand_path("./lib", __dir__)を実行したい

require "rspec/core/rake_task"

RSpec::Core::RakeTask.new(:spec)

desc "Run rubydoctest"
task :rubydoctest do
  sh "rubydoctest README.md"
end

desc "Run tests"
task :test => [:spec, :rubydoctest]

task :default => :test

require "yard"

YARD::Rake::YardocTask.new

@shirotamaki
Copy link
Contributor Author

shirotamaki commented Sep 30, 2023

rubydoctest
https://github.com/tslocke/rubydoctest/tree/master

ユニットテストの一部
READMEに対してテストを実行している
https://github.com/tslocke/rubydoctest

@shirotamaki
Copy link
Contributor Author

開発中だとテストが通らない。
すでにリリース済みの内容でしかテストが通らない。

@shirotamaki
Copy link
Contributor Author

Issueの内容

  • Forkし、rake testを実行するとエラーになる
  • 開発者が日本の方なので日本語でもOK

@shirotamaki
Copy link
Contributor Author

shirotamaki commented Sep 30, 2023

Upstreamに報告しました。

Issue

@shirotamaki
Copy link
Contributor Author

shirotamaki commented Sep 30, 2023

修正したが上手くいかなかった結果

rubydoctest README.md --require=/Users/shiro/oss/rubicure/spec/spec_helper.rb
<internal:/Users/shiro/.rbenv/versions/3.2.1/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:88:in `require': cannot load such file -- [/Users/shiro/oss/rubicure/spec/spec_helper.rb] (LoadError)
	from <internal:/Users/shiro/.rbenv/versions/3.2.1/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:88:in `require'
	from -e:1:in `<main>'
rake aborted!
Command failed with status (1): [rubydoctest README.md --require=/Users/shi...]
/Users/shiro/oss/rubicure/Rakefile:8:in `block in <top (required)>'
Tasks: TOP => test => rubydoctest
(See full trace by running task with --trace)
❯ cat Rakefile
require "bundler/gem_tasks"
require "rspec/core/rake_task"

RSpec::Core::RakeTask.new(:spec)

desc "Run rubydoctest"
task :rubydoctest do
  sh "rubydoctest README.md --require=#{File.expand_path('./spec/spec_helper.rb', __dir__)}"
end

desc "Run tests"
task :test => [:spec, :rubydoctest]

task :default => :test

require "yard"

YARD::Rake::YardocTask.new

@shirotamaki
Copy link
Contributor Author

以下コマンドでテストがパスした

$ bundle exec rake rubydoctest

sue445/rubicure#292

@zonuexe
Copy link
Contributor

zonuexe commented Sep 30, 2023

READMEの末尾にこういう記述があるので

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

bundle exec rake testをチェックしてくださいという項目を追加するという改善はできそう

@shirotamaki
Copy link
Contributor Author

まとめ

  • 常にメモの理由
    • スルーしている内容に気づくこと大事
    • 詰まったところにフィードバックするポイントがある
  • みんがポジティブに直し合うことで次の人はうまくいく
  • コードを書くだけがOSS活動ではない
    • 詳しくないユーザーだからこそできることがある
  • ユーザーとして動かす
  • 気になったことをまとめる
  • フィードバックしてみる

@shirotamaki
Copy link
Contributor Author

@github-actions
Copy link

おつかれさまでした!

ワークショップの終了にともないissueを閉じますが、このまま作業メモとして使っても構いません 👌

ワークショップの感想を集めています!

ブログなどに書かれた際は、このページへリンクの追加をお願いします 🙏

またの参加をお待ちしています!

@shirotamaki
Copy link
Contributor Author

shirotamaki commented Sep 30, 2023

Pull Request 手順

@shirotamaki
Copy link
Contributor Author

shirotamaki commented Sep 30, 2023

@zonuexe
本日はサポートいただきありがとうございました!

その後いただいたアドバイスを参考にPRを作成してみました。
sue445/rubicure#293

レビューいただけますと幸いです。よろしくお願いします🙇‍♂️

@shirotamaki
Copy link
Contributor Author

@zonuexe
※メンションが重複しておりましたらすみません!念のため再送させていただいております🙇‍♂️


本日はサポートいただきありがとうございました!

その後いただいたアドバイスを参考にPRを作成してみました。
sue445/rubicure#293

レビューいただけますと幸いです。よろしくお願いします🙇‍♂️

@daipom
Copy link
Contributor

daipom commented Oct 4, 2023

なるほどなるほど。
bundle execを付ける必要があったんですね。
Bundlerという便利な仕組みがRubyにはあります。

ここで依存するgemの定義がなされています。

https://github.com/sue445/rubicure/blob/master/rubicure.gemspec

bundlebundle installを実行すると、この定義に従った依存gemを自動で揃えてくれます。
そして、bundle execを付けてコマンドを実行することで、この定義に従った依存関係で実行してくれます。
(Bundlerを使わなくても、自分で必要なgem一式をgem installなどで揃えれば動くはずです。でもそれは大変ですし、動かしたいソフトウェア毎にgemを揃え直すのはとても面倒です。なのでこういう便利な仕組みがあるわけですね)

慣れている人には当たり前なのですが、慣れていない人にはハマるポイントだと思うので、確かにREADMEにテストの実行方法を明記するのは良い提案だと思います!
(ワークショップでも言いましたが、開発者にとっては当たり前なので盲点になっている部分というのはよくあります。ユーザー視点でそういう部分をみんなで改善していけると、より多くの人が使いやすく、開発に参加しやすいOSSになっていきます!)

レビューを待たずにDraftを外してしまっても良いのではないかなとも思いますよ。

@daipom
Copy link
Contributor

daipom commented Oct 4, 2023

今の提案みたいにコントリビュート手順にテスト実行方法を入れ込むのももちろん良さそうだし、How to Testみたいな項目を追加するのもよいかもしれませんね

Contirbuting

...

How to Test

$ bundle
$ bundle exec rake test

@shirotamaki
Copy link
Contributor Author

shirotamaki commented Oct 4, 2023

@daipom
PR内容ご確認いただきありがとうございます!
解説参考になります。Draftを外しPR送らさせていただきました。
sue445/rubicure#293

よろしくお願いします!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants