Spear というヘッドレスCMSとの親和性の高いOSSの開発を通して
CMS(WordPressやヘッドレスCMS) Advent Calendar 2023 最終日の記事です。
去年に続いて思いつきでカレンダーを作ってみたところ、投稿者も購読者も去年よりも増えており非常に嬉しい限りです。
前日までの記事を読んでいないほうは、ぜひ以下のリンクからそれぞれの記事を読んでみてください!
(そして、必ず戻ってきてくださいね!)
各ネタが未定のまま枠だけ抑えたしだいですが、ふと今年 CMS で僕が頑張った内容を振り返ってみたくなったので、その内容を書いていきます。
題して「Spear というヘッドレスCMSとの親和性の高いOSSの開発を通して」です。
はじめに
世の中には OSS にあふれており、CMS として有名な WordPress もその1つです。
OSS 開発に憧れる人は多かれど、実際に OSS 貢献することはなかなか難しいものです。
そんな中、僕は Spear というヘッドレスCMSと親和性の高い SSG の OSS 開発に参加しました。
今回はその開発の中で得た知見を振り返っていきます。
Spear とは
Spearly CMS というヘッドレスCMSと親和性の高い SSG の OSS です。
細かい内容はコントリビューターの mantaroh さんの記事を参照ください。
OSS に貢献してみてわかったこと
OSS というとなんだか難しそうなイメージがありますが、実際にはコミュニティ活動であるということを忘れてはいけません。
issue を立てるのもコードを書くのも PR レビューをするのも、全て人間でコミュニティの一員です。
(最近だと AI が混ざっていそうですが笑)
そのため、OSS によっては合う・合わないがあるでしょうし、合わなければ別の OSS を探せばよいだけです。
自分にあったコミュニティ( OSS )を見つけることが OSS に貢献する第一歩です。
OSS に貢献する際に躓きそうなこと
上記の前提を踏まえての、OSS 貢献の際に躓きそうなことを挙げていきます。
内容は些細でも問題ない
Spear において、僕が初めてコントリビュートした内容は、 README の 文章追加 PR でした。
JetBrains で Spear を使う場合の注意点を追記しただけですが、無事に Approve & Merge されたことで初コントリビュート達成となりました。
すっかり忘れていたんですが、もっと昔に別の OSS にコントリビュートしたときには、 cache 制御の修正 PR を出していました。
PR の内容としはかなりずさんなものです…。
(それでもレビューしてもらってありがとうございます!)
そのため、どんなに些細な内容でも、コントリビュートすることでコミュニティに貢献できるということを忘れないでください。
英語ができなくても問題ない
OSS というと英語ができないと貢献できないというイメージがありますが、実際にはそんなことはありません。
今では翻訳ツールの拡充で、英語がで完璧にできなくてもコミュニケーションを取ることは可能です。
実際に僕もいくつかの PR では翻訳ツールを使って、概要文を作成しています。
もちろん、英語ドキュメントの翻訳などを翻訳ツールで行って、 PR 作成するのはまずいですが、
コミュニケーションを取るうえでは翻訳ツールを使っても問題ないでしょう。
使ってフィードバックしたり、 issue を立ててみたりするだけでも貢献になる
そうはいっても、「コードを読み解くのが難しくて、コントリビュートできない」という人もいることでしょう。
そんな人にも OSS に貢献する方法はあります。
OSS を使ってみてフィードバックしたり、 issue を立ててみたりするだけでも OSS に貢献できます。
Spear においても、使ってくれたり issue を立ててくれるだけでも貢献になります。
ドキュメントにもコントリビューターが掲載されていくようなので、コントリビュートしてみてください!
まとめ
CMS とは少しズレた内容になってしまいましたが、 Spear を活用することで、 ヘッドレスCMSを簡単に埋め込むことができます。
また、ここで得た OSS に貢献する際の知見は、 WordPress をはじめとした他の OSS にも活かせると思うので、ぜひ OSS に貢献してみてください!
もちろん、 Spear についてもコードとドキュメントのどちらもコントリビュートお待ちしています。
おまけ
余談ですが、僕自身も Spear を使ってサイトを作ってみました。
メタバースとの連携企画のサイトで複雑な要件がなかったため、サクッと作れました。
Vue や React を使うまでもないけど、素の HTML/CSS だと面倒なときにぜひ使ってみてください。
Discussion