ツナワタリマイライフ

日常ネタから技術ネタ、音楽ネタまで何でも書きます。

友人とOSSを作っている

まだ1st releaseまでこぎついてないので、キリのいいところでまたエントリーを書こうと思うけど、とりあえず今の段階で文章を書きたくなったので何か書く。

Go言語で、gitのsquashを自動化するCLIツールを作っている。

自分はよく、ブランチを切って、WIPでPR出して、CIが通るまでオラオラと修正を続けて、最後にコミットをまとめてPRのWIPをはずす、という方法で(業務でも)開発することが多い。そのときのsquashするためにrebaseしてエディタを開いてpickをsなりfなりに変更するのがめんどくさい、というのがモチベーションだ。

その友人とは、先月あたりから一緒に開発をしていて、その前は彼が練習用に作ったJavaのアプリを彼が借りたVPS上にCI/CDの整備と監視のお手伝いをした。Docker化したり。

で、第二弾としてサービスじゃなくて何かツール作りませんか、ということで今回。

現職では「できない」「失敗した」の連続で、「わからない」「だけどやらなきゃ」そして「また失敗した」「迷惑かけた」のループの中ですっかりメンタルが憔悴していて、業務外の自主学習も一切止まってしまった。そんな中、友人との開発ではちゃんと貢献できるので、それでなんとか自尊心を保っている感じだ。感謝。

ちゃんと(?)したOSS開発をしたことも、contributionしたこともないので、コードを書いて、それなりに動きそうなモノができそうなのは楽しみだ。現職にならってissueでネタを貯めたり議論して、PRで修正出す。英語で。というOSS開発ではもちろん当たり前だが、そういうことも実践できているのは、現職での経験のおかげだ。

この友人は大学の友人で、何年か前も一緒に作ろうとしたが、途中で頓挫してしまった。(細かい理由は忘れてしまった)だけど、今それなりにうまく続いているのは、タイミングというのもあるだろうが、お互いの技術力が当時よりは向上したとか、OSS開発のやりかたみたいなのをなんとなく身についたとか、そういうところがあると思っていて、強くなって再開した感があってなんだかうれしい。

学びや気づきはあって。開発に割ける時間がバラバラなので、テストや本体実装の大きな変更が、相手の開発に影響を与えたりしてよくないので、リズムとPRの単位に関しては適切じゃないシーンがぼちぼちあって反省だったり。 この規模で、わりとはやく出したい!というモチベーションが高い中で、PRが溜まってしまうと相手がbranchを切った時点での状態と乖離してしまってマージにrebase & conflict解消が必要でダルいとか。

悪いところだけじゃなくて、最初はVScodeのLiveShare機能を使って、リモートペアプロで最初のinitialなcommitまでを一緒にやれたのはすごいよかった。これ、週1ぐらいで何か1つの機能を作るとかやればよかったね。

と、まだ作り終えてないのに振り返りみたいなことをしてしまったが、はじめての経験なので完成が楽しみだ。