QRコード一括作成ツールを公開してコントリビューションごっこをした話

はじめに

個人的に利用する目的で、QRコード一括作成のためのツールをgithubで公開しました。

github.com

公開やコードの修正を通してgitやgithubの使い方、OSSのコントリビューションについて知ることを目的として一人でコントリビューションごっこをしました。

コードの公開

最初に、ベースとなるツールのコードをgithubで公開しました。

まずは、githubに公開リポジトリを作成しリポジトリをローカルで編集するために、gitのpullコマンドを実行しました。次にローカルのコードを編集し、ローカルリポジトリにgitのcomitコマンドを実行しました。最後にpushコマンドでgithub上のリモートリポジトリにローカルで行ったcomitの反映をしました。

プル、コミット、プッシュの流れ

ベースとなるコードを公開する中で、コードの管理はターミナルからgitコマンドを通して実行することでコマンドについて知ることができました。また、コミットメッセージの先頭につけるタグを意識してコミットを行いました。

コミットメッセージの例

  • [add] QRコードのデコード機能を追加
  • [update] QRコード一括作成のエラー処理を更新
  • [fix] csvファイルの説明を修正

スクリプトの作成

ベースのコードだけでは環境構築やツールの起動に手間がかかるため、自動化スクリプトを作成しました。 スクリプトでは仮装環境の構築と有効化、pythonコマンドの実行を行っています。

スクリプトのアクティビティ図

自動化スクリプトではMacOSだけでなくWindowsで利用することを想定し、シェルスクリプトファイルとバッチファイルの両方を作成しました。また、仮装環境構築は実施済みであれば行わないように分岐を入れました。

ドキュメントの更新

README.mdファイルを更新し、機能や使用方法についてを記載しました。

ドキュメント内ではQRコード作成、デコード、一括作成の機能についての説明とツールの利用開始方法、環境構築方法を記載しました。

一括作成の機能説明ではテンプレートとなるcsvファイルへのリンクを追加しました。リンク先は同一のリポジトリ内にあるcsvファイルに設定しました。

ドキュメントの作成では、はてなブログで利用しているMarkdown記法の知識を活用することができました。

リリースとタグの作成

ここまで行った作業をバージョン1.0.0としてリリースを行いました。 新規でリリースを作成する時にタグを指定する必要があり、この時点のコードの状態をv1.0.0としてタグをつけました。

リリースを行うことでリリース時点のコードがassetとしてまとめられます。 また、タグをつけることでタグ付けを行った時点のコードの状態に戻すことが容易になります。

コードの修正

ツールを利用してみて、デコードを実行するとQRコードが認識されないケースがいくつか発生しました。

そこで、デコード精度の課題をissueとして挙げ、対応を検討し修正をおこないました。

元のデコード処理ではOpenCVのQRCodeDetectorを利用していました。対応として認識精度が高いQRCodeDetectorArucoを利用するように修正しました。

コードの修正は修正用のブランチを作成、修正を実施後にコード修正用のブランチからメインブランチへマージを行いました。

コード修正の流れ

修正実施後にv1.1.0としてタグ付けしリリースを行いました。

おわりに

コントリビューションごっこを通して、実際に手を動かしながらGitHubの機能やgitコマンドについて学ぶことができました。

OSSの世界では、チームで活動するためにコントリビューションの運用ルールを設定する必要があります。大規模なコードで複雑な問題に取り組んでいる人々を尊敬しています。

いつかOSSに貢献できるように知識をつけていきます。