Githubにて初めてissueを投げたときの心境と振り返り
先日、初めて利用したライブラリに対してissueを投げました。
そこに至るまでの心境とか、経緯とかをまとめていきます。ライブラリのバグを見つける
Rubyでとあるサービスを利用するため、ライブラリを導入しサンプルコードを実行していました。
サンプルコードをほぼそのまま利用したため、特に問題なく動作。これで、準備は終わり・・・と思っていると問題が。
どうも2回目以降に実行するとエラーが起きるようでした。かなり有名なライブラリなので、おそらく私側の問題だろうと調査を開始しました。
調査1 : 自分の環境を確認
まずは、サンプルコードに変更を加えずに実行してみた。
結果、エラーは変わらず。ライブラリを一旦削除し、再度インストール。
それでもってサンプルコードを実行。
結果、エラーは変わらず。Rubyのバージョン自体はライブラリの推奨のものなので問題ないとし、
ここでライブラリ側の問題と決める。
調査2 : ライブラリ側の確認
エラー内容を改めて確認してみた。
(本来は、ここからやるべきだったでしょうか・・・)どうやら、エラーが起きているのは利用しようとしているライブラリではなく、
ライブラリの裏で動いているライブラリ(?)が原因のようでした。そこで、バックトレースをそのまま追ってみました。
そこで利用するのがGithub。
いろんなコードがただで読める魔法のサイトです。
エンジニアさん曰く、いろんなコードを読むのも学びである。ですが、やったことはない。 ここはやろうと。
調査3 : ライブラリのコードを追う
バックトレースの順番に、自分のコードから引数として渡されるものを含めて追っていきます。
コード自体は、シンプルだったので私でも無事に読んで追うことができました。バグを産まないためには簡潔なコードであれ、ということを改めて実感しました。
さて、実際にコードを読んでみるとエラーが起きている箇所は、どうも引数をクラス別に判定している箇所でした。
また、1年ほど前の更新で追加された箇所であることもわかりました。
そして、更新されたところをコメントアウトすると何事もなく実行でき、意図する動作になることがわかりました。
上記の更新箇所は、比較対象として標準添付ライブラリを追加していました。
しかし、ソレをrequireしていない、という状況。
原因がわかったところで、解決方法を考えます。
調査4 : 解決方法
解決方法としては、requireすれば終わり、という結果でした。
そして、その旨をGithubのissueとして投げておきました。
なお、このバグ修正は1日と経たないうちに修正されました。めでたしめでたし。
バグ報告までのあれこれと結果
- シンプルなコードはバグが見つけやすい
改めて、シンプルな構造のプログラムは初めて読んでも内容が流れがわかりやすいですね。
また、普段あまり使わないような書き方や、知らない書き方を多く見ることができました。
新しい発見、本を読むのと同じような感覚でプログラムを読めました。
先人の知恵が、手軽に読めるのはすごく便利だし、何より勉強になります。
OSSへの貢献とは、思っているよりもハードルは低い
また、これまではOSSへの貢献(というほど大きなものではないですが・・・)というものは、ハードルが高い印象がありました。
すごい人達が作り上げたプログラムに対して、ちょろっと触っている程度の自分がなにかできるんだろうか、全然知識も技術もない自分が口出しすべきなんだろうか、すでに認識されているものなんじゃないか、あれこれ思っていました。
実際今回のバグ自体もとても単純なものでした。
単純なバグですが、これから同じライブラリを使おうと思っている人たちの問題を解決することができたのは、これまでにない経験でした。
- もっと英語ができるようになると、情報が増える
最後に、今回の件について、もちろん日本だけではなく海外の情報に当たる機会が多くありました。
ライブラリ自体の導入やドキュメントはすべて英語です。
これらを読み、意味を把握した上でアレコレしなければいけないことを、改めて思い知らされました。
大まかには内容をつかめるとはいえ、見たことない表現や単語はたくさんあります。
さらに、バグ報告をするに当たり、状況や解決方法などを伝えるためには、英語で表現しなければいけません。
最近は、Google翻訳などを利用してもいい感じに翻訳してくれますが、やはり自分で表現できるようになっておくに越したことはありません。今後は、より多く英語に触れる時間を増やしたいと思いました。
まとめ
ここまで、あれこれつらつらと書いてきました。
何が言いたいかというと、「自分が思っているよりもハードルは低い」ということにつきます。なにか貢献したい、というように漠然と思っていました(7月あたり?)が、小さな一歩を踏み出すことができました。
ゆくゆくは、自分の作ったものを公開したりしたいと思いました。気軽に公開できる世の中は素晴らしいですね。
今回はここまで。
おわり