はじめに
こんにちは!エンジニア1年目があっという間に終わろうとしている河瀨です!
今回はオープンソースに実際にプルリクエストを送って、マージされるまでの一連の流れを記事にしてみます。
プルリクエストを送るのは、弊社でメインプロダクトとして利用している国産オープンソースCMSの「baserCMS」
自分の書いたコードが公開されて、処理の一部になる。ロマンしかないですね✨️
これを読んであなたも、オープンソースの開発者になりましょう!
開発環境を準備
さて、早速開発するぞー!と言いたいところですが、OSSの改修をするにあたって準備しなくてはいけないことがあります
それが、「リポジトリのフォーク」です
以下のマニュアルを参考にやってみてください
https://baserproject.github.io/5/contribution_developer/develop
今回の記事ではフォークについては省略しますが、基本的にOSSの開発には必要な工程ですので、baserCMS以外にも、「🔍️ オープンソース フォーク」とかでググったらそれなりに参考になると思います!
対応するIssueを探そう
baserCMSはどうやら「Issue駆動開発」を前提としているらしい…
Issueドリブン開発(課題駆動開発、チケット駆動開発とも)とは
issueつまり実装における課題をタスクとして管理・運用する開発手法です。 新規機能の追加やバグ修正などをissueとして立て、それを解決するためのブランチを切り、コミットやPRで適宜issueを参照しながら開発を進めるというフローを取ります。(GitHubより引用)
なるほどね、それなら今立っているIssueを見てみようじゃないか
おぉぉ、たくさんありますね…!これは選びがいがありそうです!(?)
[Bug]や[Ver5.0]など、タグがつけられているようですが、
なにか頃合いのものはないかしら…
(筆者は新卒1年目の駆け出しエンジニアですので、対応できるIssueのほうが少なかったりします)
頭の中で議論を重ねた結果、今回はこちらの改修をすることに
https://github.com/baserproject/basercms/issues/3997
バージョン5.1.xの「カスタムコンテンツ」は最近よく触っていたので、なんとなく仕様を把握していたのだ、これはちょうどいい…
5.1.xブランチからIssueの番号で作業ブランチを切って作業開始しよう!
再現確認
さて、対応するIssueも決まったことだし、まずはこの不具合は具体的にどんなものなのか知る必要がある…
ということでまずは、ローカル環境で再現確認することに
ふむふむ、カスタムエントリーでグループを使用しているときにレイアウトが崩れると…
同じ条件でエントリーを作成したところ確かにレイアウトが崩れている…!
対象のページを表示しているファイルを見てみよう
このページを表示しているファイルはどこでしょうか?
baserCMS5.1.xでは、管理画面のテーマは/plugin/bc-admin-thirdの中に入っています。更に対象のプラグインやメソッド名からviewファイルを探したところ
plugins/bc-admin-third/templates/plugin/BcCustomContent/Admin/CustomEntries/add.php
plugins/bc-admin-third/templates/plugin/BcCustomContent/Admin/CustomEntries/edit.php
↑↑横スクロールで詳細確認できます↑↑
この辺りが怪しいですね…
内容を見てみると、上の2つのファアイルの中に
$this->BcBaser->lement('CustomEntries/form')
という記述を発見、element/CustomEntries/form.phpを呼び出しているみたいなので覗いてみる
ループ機能を使うグループとループ機能を使わないグループ、それ以外のタイプでエレメントが分かれているみたい
今回は、ループ機能を使わないグループだったので、CustomEntries/form_group.phpファイルが改修の対象ファイルのようです!
ファイルを変更して表示の確認をしてみる
改修するファイルが決まったので、中身を見つつ、どのように変更すればいいか考えてみる
とりあえず画像のように変更してみた、考え方としては
ループ機能を使うか使わないかで表示が変わっていた
→ループ機能を使わないときのレイアウトを、使うときのレイアウトに揃えれば良さそう
ループ機能を使う場合、CustomEntries/form_loop.phpファイルを表示しているので、確認しながら同じHTML構造になるよう調整
プルリクエストを送ろう!
プッシュしてgithubにアクセスすると、プルリクエストを作成できます。
どのように変更したか、なぜその変更をしたかを記載してプルリクエスト送信!
プルリクエストのタイトルにfix {課題番号}とつけることで、マージされたタイミングでIssueが自動でクローズされるため忘れずつけておく必要があります!
問題なければマージされるのでこれにて作業完了です!
…ちなみに後日談ですが、
今回のものはバグではなく仕様だったみたいです…
ぴえん。まぁ、そんなこともある!!
終わりに
いかがでしたか?
オープンソースの開発に携わることは、ハードルが高く見えますがやってみると楽しいですよ!
まずは簡単なものから、みなさんも挑戦してみましょう!
今日からあなたもオープンソースの開発者です!
ということで、また次回お会いしましょう!
baserCMSやWebサイト構築のご相談など
お気軽にお問い合わせください