これはNota Advent Calendar 2021の14日目の記事です。
こんにちは、Notaのエンジニアのbalarです。私は昨年11月まではGyazoの開発、それから約1年Scrapboxの開発をしています。その開発スタイルは、Scrapboxを活用した非同期コミュニケーションを軸にしており、リモートワークでの開発にとても適しています。
そんなScrapboxの開発スタイルについて以下の2点について紹介していこうと思います。
・思ったことをとりあえずScrapboxのページに書く
・GitHubのIssueを使わずScrapboxのページを使う
思ったことをとりあえずScrapboxのページに書く
実装したい内容や不具合、困ってることや欲しい機能までなんでも書きます。この時に丁寧に書く必要はまったくありません。タイトルも後から修正できるので本当に何でもいい。Scrapboxは他の人が編集することが出来るので理解できた人が手直しすればよいです。また、書いていくうちに言語化できていきます。例としてYouTube再生リストの埋め込みを公開してみました。
ページが作られるとNota社員から実装される内容についての意見や質問だったり技術的な知識の共有だったり色々なコメントをしてくれます。
Notaの社員はScrapboxをよく見てるので他のプロダクトメンバーから営業メンバーなど開発メンバー外からも「この機能欲しい!」や「私もこれ困ってた」など気軽にコメントしてくれます。
色んな意見が出て議論が盛り上がってくると自分の中で言語化がより補強され実装の方向性も見えてきます。
また、実装している時にも、こういうAPIが存在する、どういった点で躓いたのかなどログもメモとして残したりしています。
躓いた点なども書いておけば解決案がコメントされることもあり、非常に助かってます。また、調べたことは決して無駄にはならず、最初の方向性がうまくいかなかったなども残しておくと後々別の実装の時に助かることもあるのでメモするようにしています。
そして、基本的にScrapboxでの議論がメインとなって、Slack上で議論することはほぼありません。
Slackではこのページを見てください。とURLとともにメンションするだけです。同じような理由でScrapboxメンバー間でのミーティングも存在しません!
また、要望をScrapboxに書くというのは社内に文化として浸透しており、Scrapboxの開発メンバー外からも欲しい機能などの要望がScrapboxのページが作られて届きます。
GitHubのIssueを使わずScrapboxのページを使う
ScrapboxのコードはGitHubで管理しているのですが、Issueは使っていません。全てScrapboxに書いています。
上記の議論されたページをそのままIssueとして使っています。
また、Issueは1つのIssueに対して1つのスレッドで構成されるため、複数の議論を展開しにくいですが、Scrapboxだとページ内でどこからでもコメントができ、並列に複数の議論をすることができます。
他にも、議論してるページの文中の語などをリンクすることで関連ページに他の議論されたページが出てくることがあります。そのため、別々で議論していたもの同士の関係性に気が付くことができます。
※:Scrapboxは文中を[]で囲むことでリンクになり、同じリンクを持つページを関連ページとして表示します
※:GitHub Issueを捨てる にScrapbox プロダクトオーナーのshokaiが詳しくまとめています
GitHubでIssueを解決するPullRequestを作るときは概要欄に fix #1214 などを書くと思いますが、ScrapboxのPullRequestを作るときは、概要欄にScrapboxのリンクを貼るようにしています。
逆にScrapboxの該当ページにもPullRequestのリンクを貼っておきます。そうすることでGitHub上のコードとScrapboxのページのどちらからでもアクセスが出来て後から参照しやすくなります。
以上がScrapboxの開発スタイルの簡単な紹介になります。
Scrapbox内でやり取りするため、メンバーの勤務時間がずれても問題がなく、口頭でやり取りすることもほぼ無いのでリモートワークに適していると思います。
もしよかったらみなさんもScrapboxを使って開発してみませんか?
いかがでしたでしょうか。Notaでは、エンジニアを積極採用中です!
ご興味のある方はぜひ採用情報をチェックしてください。