にこるの備忘

30代半ばでプログラミング始めました。成功が努力より先なのは辞書だけだ。何者にも媚びず 己を磨く

OSS Gateに参加しました🎉

 

 

現在私が在籍しているプログラミングスクール、フィヨルドブートキャンプ(以下、FBCと記載)とOSS Gateとのコラボレーション企画に参加しました。

 

OSS-*1活動未経験者のため「ビギナー」という枠で参加しましたが、

およそ6時間のワークショップの中で以下の3つを体験することができました🎉

 

  • 対象のOSSを決定する
  • 対象のOSSの改善点を見つける
  • 改善案に対してのプルリクエストを出す

当日の流れ

以下のプログラムに沿って進んでいきました。

 

時間 やること
10:00 講演「今日から参加できる!OSS開発」
10:30 アイスブレイク
10:55 ワークショップ開始(OSS開発手順を説明)
11:15 対象OSSを動かす
12:15 お昼休憩(雑談タイム)
13:15 午前の作業のふりかえり
13:40 プロジェクトにフィードバックする
15:40 小休憩
15:50 午後の作業のふりかえり
16:15 まとめ
16:25 アンケート記入
16:35 ワークショップのふりかえり
17:10 終了

【Special】OSS Gateオンラインワークショップ - フィヨルドブートキャンプ特別版 2023-09-30 - OSS Gate | Doorkeeperより

 

講演「今日から参加できる!OSS開発」

未経験者にとってOSS活動というのはハードルが高く感じられてしまうものかと思うのですが、

講演のタイトルにあるとおり「今日から参加できるものだよ〜」というメッセージを投げかけてくださる内容でした👏

 

特に記憶残ったのは以下の内容でした👀

 

  • OSSといってもすごいものばかりではない
    • 50行未満の小規模なライブラリもある
    • 脆弱性があるのに発覚まで8年かかったものもある
    • ツギハギだらけのスパゲッティコードだってある 
  •  OSSに関わるメリット
    • オープンなものであるため、実績として見せやすい
    • モジュールとして使いまわすこともできる
    • 恩返し・恩送りができる
  • 初学者だからこそ持ち寄れる物がある
    • 普通のユーザーの視点
    • 初学者の視点
  • OSS開発:自分たちが持ち寄れるものを持ち寄れる範囲で
    • 協力は自分にできる所まででいい
    • 自分にできない部分は他の人の協力に任せる

特に「初学者だから持ち寄れるものがある」、

「自分たちが持ち寄れるものを、持ち寄れる範囲でやるのがOSS活動」という言葉に背中を押されました😊

なんてpeaceで素敵な考え方🙌

 

仕事で社内用のマニュアルを作成した際に「前提知識を持った自分が書いた文章で0から聞く人にとって説明不足ではないか」という点を確認するために、

社内で展開する前に部署内でレビューを挟んでいるのと同じであることに気づきました。

対象のOSSを動かす

一言自己紹介でのアイスブレイク〜開発手順の説明を受けて、いよいよ対象のOSS決めに入ります。

今回はサポーター1名、ビギナー2名の3名でグループになって進めました✏️

(サポーターがFBCの駒形さんだったのと、

自動で同じ席に割り振られたのが同じくFBC生の夫だったのでなんだかファミリー感のある席でした😂)

対象のOSS決め

対象のOSSはビギナー自身で選びます。

事前にこれというものを決めていなかったのですが、

最近JavaScriptのプラクティスで使用した

enquirer - npmというnpmパッケージでIssueを探してみることにしました💪

 

まずは対象のライブラリがOSSであるのか確認するために、

GitHubのリポジトリでライセンスを見ます。

 

今回はLICENAEというファイルに「MIT License」という記述がありました。

オープンソース対象であるライセンスの一覧が載っているOSI Approved Licenses を見てみると、「MIT License」の記載があったのでOSSであることが確認できました💡

 

改善点を見つける

次に対象のOSSの改善点を見つけるため、実際にサービスをインストールして動かしてみます。

「一度使用しているnpmだし、改善点見つかるだろうか...」と不安に思いつつ、

README に沿ってインストール。

ここは問題なく進めることができました⭕️

 

ちなみに当日は作業メモとしてGitHubに逐一やったことや気づいたことを記録していきます。

このパートはこんな感じ✏️

 

次に新規ファイルを作成し、Usage のサンプルコードどおり記述→実行

 

 

すると...文法に関するエラーが出ました👀

(技術的な記事ではないので詳細は省きます)

 

 

エラーに沿ってコードに追記をし、再度実行したところ無事期待する結果を得ることができました✨

 

ラクティスで使用した際には以下の理由により気づかなかった部分でした👀

  •  自作のコードの中で使用したため、サンプルコードをそのまま入力→実行するという手順を踏まなかった
  • 文法の前提知識を持っていたため、エラーが出る書き方をしなかった

ということで、新たな気づきはあったのですがここで一つの不安がよぎります。

 

今回のエラーが出た原因はenquirerの仕様というよりは言語のルールだからissueの対象とは違うかも...🥺

 

この不安も含めて作業メモに残したところ、サポーターの駒形さんがすぐにコメントをくださいました!

 

 

なるほど!!たしかに!

これこそが冒頭の講義でお話にあった「初学者だからこそ持てる視点」かもしれないとピンときた瞬間でした☀️

 

その後もこのコード周りを動かして調査を進め、最終的に「サンプルコードをそのまま実行すれば動くものに変更する提案」で進めることに決めました!

 

午前の振り返り

お昼休憩を挟んで、4つのテーブルに分かれて午前中の振り返りを行いました。

自身の作業メモに沿って

  • 対象のOSSを何にしたか?
  • 午前中に動かしてみて見つけた改善点

等を各自発表していきました。

他の方の発表を聞いて、さまざまな対象OSSやIssueがあることを改めて実感しました!

また発表に対してサポーターの方がポジティブなコメントやアドバイスをくださり、勉強になりました💡

私の場合は改善案として2つのアプローチがあったので、

2つのアプローチ案をIssueとしてあげるのと、一方に絞るのとどちらがよいか質問をしてみました。

OSSに対して知見のある方に直接質問をし、回答をいただけるのもまたOSS Gateの魅力の一つだと感じました✨

 

その時のメモ✏️

 

 

プロジェクトにフィードバックする

振り返りの後はフィードバックする際のポイントを説明いただき、

実際に午前中に見つけたIssueに対しての改善案を作成していきます。

 

フィードバックの準備

まずは以下の3点をまとめました✏️

  1. 「〜なので報告したい」とメモを残す
  2. リポジトリで報告の方法を探す
  3. 既存のissueで同じ報告があるか確認する(キーワードで検索する)

 

1.「〜なので報告したい」とメモを残す

READMEのUsageが、そのまま実行してエラーが出ないサンプルコードだと嬉しいので報告したい!

2.リポジトリで報告の方法を探す

GitHubでissueを立てればよいとのことでした💪

3.既存のissueで同じ報告があるか確認する(キーワードで検索する)

エラー文から単語をピックアップして3回パータンで検索してみましたが、

特にヒットするものはなかったので新規でIssueを立てることに決定しました💡

 

Issueのドラフト作成

まずは日本語でIssueのドラフトを作成します。

以下の内容をまとめました!

 

  • 状況
    •  何が起こっているのかを一言で
  • 実行環境
    •  コードを実行した環境(バージョン)
    •   インストールしたライブラリのバージョン
  • 実行した手順
    • インストールからエラーが出るまでの手順
  • 改善案
    • どうしたらIssueが解決するかの提案
  • 期待すること
    • どうなったら嬉しいのかを一言で

 

このドラフトに対してサポーターの駒形さんから頂戴したアドバイスをもとに修正版を作成しました✏️

 

英語でのIssueの作成

次に完成した日本語のドラフトを翻訳し、 DeepL 先生にお世話になりながら英語でのIssue文面を作成✍️

英訳した文面に対して、駒形さんから英語でよく使われる表現を教えていただきました!

翻訳ソフトを使えば英語で文章を作ることはできても、よく使われる表現までは知ることができないのでとても勉強になります☀️

修正を進めていたところで時間になったので、再び4つのテーブルに移動して午後の振り返りを行いました。

午後の振り返り〜アンケート記入

午前中の振り返りと同様、それぞれ午後に行なった成果を発表していきます。

既にIssueを立てた方や、Issueだけでなくプルリクエストまで出した方もいらっしゃいました!みなさんすごい✨

実際にみなさんの作業メモやIssueを見ることができ、学び多き時間でした😊

 

最後にアンケートを記入して、本日のプログラムは終了です⏰

ワークショップ修了後

サポーターの駒形さんより、今回の私の改善案はサンプルコードの修正点が複数あることからプルリクエストのほうが良いかもしれない。とご提案をいただきました。

 

現状と改善案の差分がわかりやすいということもあり、ご提案どおりプルリクエストを作成、送ってみました🚀

 

今回作成したPRは以下です📮

github.com

 

こうして無事初めてのOSS活動を終えることができました🙌

参加してみての感想

ワークショップ開始までは自分がIssueを立てるところまで辿り着けるイメージが全くわかず、わくわくと同じくらい不安がありました🥲

しかし冒頭の講義やサポーターの方々が背中を押してくださったり、

一緒に進めているビギナーのみなさんとの振り返りに良い刺激をいただき、

学びも多かったですし楽しみながら進めることができました!

ありがとうございました🙇‍♀️

勇気を出して参加してみてよかったです😊

 

【後日談】送ったプルリクエストについて

プルリクエストを送ってから半日とたたずに作者の方からメンションをいただきました😭

「This is great, thank you」という光栄なお言葉と共に、

(ここは深く反省している点なのですが...)不要な差分が生まれてしまっていたので「その点のみ元に戻してみてもらえますか?」という内容でした👀

こんなに早々に内容を確認してコメントをいただけなんて思ってもみなかったので、とても感激してしまいました🥲!

早速お礼とお詫びを添えて修正版のコードを提出しました🙏

 

ラクティスでお世話になったライブラリの作者とこうしてやりとりできるなんて、

OSS活動ってすごい...!

 

プログラミングを通して世界が広がったのを感じました🌎

今後学習を進める中でOSSに触れる機会はたくさんあると思うので、

気づいたことがあれば関わってみたいと思います!

 

改めてこうした機会をくださったOSS GateとFBCに感謝します🙇‍♀️

ありがとうございました🌸

*1:オープンソースソフトウェア、Open Source Software)の略称。ソースコードが公開されており、誰でも自由に変更や再配布ができる無償のソフトウェアのこと。