🎥

コントリビュートチャンスを逃すな

に公開

どうもこんにちは
クラウドエースの妹尾です。

今回は弊社で起きたちょっとしたトラブルから始まった、オープンソースソフトウェア(以下 OSS)の開発活動についての記事を書きたいと思います。

Zenn 記事がデプロイされない

それは僕が Cloud Run の新機能についての記事を書いていた時のことでした。

push した記事が公開されなかった

弊社の技術ブログは Zenn というプラットフォームで展開されていますが、これは zenn-editor を活用して書かれています。
この記事も例に漏れず、 zenn-editor に含まれている zenn CLI で雛形の作成からプレビューまでお世話になっております。

いつもは爆速で公開してくれる Zenn のサービスでしたが、この日はなぜかデプロイが遅かったのです。
急いでレビューを通してもらった速報記事で、一刻も早く公開したいと思っていた矢先だったので焦りました。

10分経っても公開されないので、流石におかしいと思い社内の管理者さんに確認してもらったところ……

画像サイズがデカ過ぎる問題

なんということでしょう。
乗せた画像が 3MB を超えておりデプロイプロセスが止まっているではありませんか!

急ぎ修正をして無事記事は公開されたのですが、こういうエラーはプレビュー時に出して欲しいものですね……

いや出てるじゃん。僕がポンコツでしたすみません。

きちんと出ていました。画像が挿入される箇所にエラーが出るようです。
でも Zenn って、もっとリッチなエラーを出してくれていたような……

そうそうこれこれ。ヘッダーにわかりやすく纏めて表示してくれる機能があります。
なんで画像だけこんな形なんだろうな……

zenn-editor 側で予防できるのでは?

「わかりにくいから仕方ない、そのまま気をつけて使おう」というのは簡単ですが、一端のエンジニアとして改善したいと考えてしまうのが性です。
丁度良いことに、zenn-editor は OSS で改善や機能強化に誰でも参加できます。

できるんだからやることに越したことはありません。やってみましょう。

まずは確認

OSS は、ソフトウェア毎にルールが決まっていることが多いです。
Issue の発行が必須だったり、コミットメッセージの形式が決まっていたり、必ず手元でテストを通す必要があるなど、さまざまな指定があるはずです。
改善リクエストを送る前に、ルールをよく確認して指示に従いましょう。 だいたいの場合は README.md に記載があります。

例えば Zenn は、機能リクエストやバグはすべて zenn/zenn-community というレポジトリへ Issue の登録が必要だと明記してあります。
ガイドを読んでいないとほぼわからないので、事前調査の重要さがよくわかりますね。

プルリクエストを作る

ルールがわかったら、それに沿って Issue や PR、コードを書いていきましょう。

最近は生成 AI も発達してきて、既存コードの読み込みから改修まで沢山のタスクがこなせるようになってます。
ただすべてまかせてしまうと動作しなかったり、必要のないコードが混入したりと意図しないコードになる可能性があります。
そのままでは無責任なので、AIが改変したコードはきちんとレビューを行なって挙動を完全把握した PR を送るのが良いと思います。

そしてマージへ…

PR を作ったら後はメンテナのレビューを受けて、もらった修正点を直していきましょう。
何度もリレーが続くことがあったり、レスポンスが遅いなど辛い面があるかもしれませんが、もう一息なので頑張りましょう。

無事 LGTM をもらえれば晴れて導入です!お疲れ様でした!!
リリースまで待つケースもありますが、ここまで来れば導入されることは確定なので小躍りしながら待ちましょう。

LGTM をもらえないケースもありますが、それはそのプロダクトと相性が悪かったというだけです。
メンテナが書き直したコードが採用されても、そのコードはあなたが PR を出さなければ生まれなかったコードですから半分はあなたの手柄です。誇っていきましょう。

もし利用しているアプリケーションで PR が採用されないのであれば、もっとよくフィットするプロダクトがどこかにあるかもしれませんから、乗り換えを検討する良い機会になるかもしれません。

コントリビュートチャンスは逃すな

OSS は勝手に生えてくるものではなく、誰かのちょっとした心遣い(時よりとても大きな愛)で維持されるものです。
愛が足りなくなったソフトウェアは更新されなくなって使いづらくなるうえ、消えてしまうこともあります。

自分が使うツールですから、消えてしまっては困るのは自明ですし
もっと便利に使えるようになるなら、自分にとっても、誰かにとっても嬉しいことです。

更に積極的にコントリビュートしていくことによって、ハイレベルな様々なコードに触れる機会が増えます。
使える言語やパッケージ管理ツールが増える機会にもなり、エンジニアとしてのレベルアップにも繋がります。
曲がりなりにも「だって俺その開発者の一人だもん」とドヤれるようになることも自己肯定感に繋がり、ちょっとした不幸もへっちゃらになります。(効果には個人差があります)

良いことづくめなので遭遇したバグを積極的に直してみたり、欲しい機能は自分から実装してみましょう。
「あの機能があればな‥‥」と思ったその時がコントリビューションのチャンスです。

これ、記事にできるのでは?

記事執筆前の僕「そういえば、この取り組みも Zenn 記事にできるな……🤔」

コントリビュートチャンスは逃すな (大事なことなので2度)

そう、コントリビューションチャンスはすぐそこに

積極的に見つけて、貢献していきましょう!

Discussion