このページでは、Fess の開発における標準的なワークフローを説明します。 機能追加、バグ修正、テスト、コードレビューなど、 開発作業の進め方を学ぶことができます。
開発の基本フロー
Fess の開発は、以下のような流れで進めます:
各ステップについて詳しく説明します。
Step 1: Issue の確認・作成
開発を始める前に、GitHub の Issue を確認します。
既存の Issue を確認
Fess の Issue ページ にアクセス
取り組みたい Issue を探す
Issue にコメントして、作業を開始する旨を伝える
Tip
初めての貢献の場合は、good first issue ラベルが付いた Issue から始めることをお勧めします。
新しい Issue の作成
新しい機能やバグ修正の場合は、Issue を作成します。
New Issue をクリック
Issue のテンプレートを選択
必要な情報を記入:
タイトル: 簡潔で分かりやすい説明
説明: 詳細な背景、期待される動作、現在の動作
再現手順: バグの場合
環境情報: OS、Java バージョン、Fess バージョンなど
Submit new issueをクリック
Issue の記載例
以下は Issue を作成する際の記載例です。
バグレポート:
機能リクエスト:
Step 2: ブランチの作成
作業用のブランチを作成します。
ブランチ命名規則
ブランチ名は、以下の形式に従います:
type の種類:
feature: 新機能の追加fix: バグ修正refactor: リファクタリングdocs: ドキュメントの更新test: テストの追加・修正
例:
ブランチの作成手順
最新の main ブランチを取得:
新しいブランチを作成:
ブランチが作成されたことを確認:
Step 3: コーディング
機能の実装やバグ修正を行います。
コーディング規約
Fess では、以下のコーディング規約に従います。
基本的なスタイル
インデント: スペース 4 つ
行の長さ: 140 文字以内を推奨
エンコーディング: UTF-8
改行コード: LF(Unix スタイル)
命名規則
クラス名: PascalCase(例:
SearchService)メソッド名: camelCase(例:
executeSearch)定数: UPPER_SNAKE_CASE(例:
MAX_SEARCH_SIZE)変数: camelCase(例:
searchResults)
コメント
Javadoc: public なクラスとメソッドには必須
実装コメント: 複雑なロジックには日本語または英語で説明を追加
例:
null の扱い
可能な限り
nullを返さないOptionalの使用を推奨nullチェックは明示的に行う
例:
例外処理
例外は適切にキャッチして処理する
ログ出力を行う
ユーザーに分かりやすいメッセージを提供
例:
ログ出力
適切なログレベルを使用します:
ERROR: エラー発生時WARN: 警告すべき状況INFO: 重要な情報DEBUG: デバッグ情報TRACE: 詳細なトレース情報
例:
開発中のテスト
開発中は、以下の方法でテストします:
ローカル実行
IDE で org.codelibs.fess.FessBoot クラスを実行し、動作を確認します。 詳細は ビルドとテスト を参照してください。
デバッグ実行
IDE のデバッガーを使用して、コードの動作を追跡します。
単体テストの実行
変更に関連するテストを実行します:
詳細は ビルドとテスト を参照してください。
Step 4: ローカルテストの実行
コミット前に、必ずテストを実行します。
単体テストの実行
統合テストの実行
コードフォーマットのチェック
すべてのチェックを実行
Step 5: コミット
変更をコミットします。
コミットメッセージの規約
コミットメッセージは、以下の形式に従います:
type の種類:
feat: 新機能fix: バグ修正docs: ドキュメントのみの変更style: コードの意味に影響しない変更(フォーマットなど)refactor: リファクタリングtest: テストの追加・修正chore: ビルドプロセスやツールの変更
例:
コミット手順
変更をステージング:
コミット:
コミット履歴を確認:
コミットの粒度
1 つのコミットには 1 つの論理的な変更を含める
大きな変更は複数のコミットに分割する
コミットメッセージは分かりやすく、具体的に
Step 6: プッシュ
ブランチをリモートリポジトリにプッシュします。
初回プッシュの場合:
Step 7: プルリクエストの作成
GitHub でプルリクエスト(PR)を作成します。
PR の作成手順
Fess リポジトリ にアクセス
Pull requestsタブをクリックNew pull requestをクリックベースブランチ(
main)と比較ブランチ(作業ブランチ)を選択Create pull requestをクリックPR の内容を記入(テンプレートに従う)
Create pull requestをクリック
PR の記載例
以下は PR を作成する際の推奨フォーマットです。
PR の説明
PR の説明には、以下を含めます:
変更の目的: なぜこの変更が必要か
変更内容: 何を変更したか
テスト方法: どのようにテストしたか
スクリーンショット: UI の変更の場合
Step 8: コードレビュー
メンテナーがコードをレビューします。
レビューの観点
レビューでは、以下の点がチェックされます:
コードの品質
コーディング規約への準拠
テストの充実度
パフォーマンスへの影響
セキュリティの問題
ドキュメントの更新
レビューコメントの例
承認:
修正依頼:
提案:
Step 9: レビューフィードバックへの対応
レビューコメントに対応します。
フィードバックへの対応手順
レビューコメントを読む
必要な修正を行う
変更をコミット:
プッシュ:
PR ページでコメントに返信
コメントへの返信
レビューコメントには必ず返信します:
または:
Step 10: マージ
レビューが承認されたら、メンテナーが PR をマージします。
マージ後の対応
ローカルの main ブランチを更新:
作業ブランチを削除:
リモートブランチを削除(GitHub で自動削除されない場合):
よくある開発シナリオ
機能追加
Issue を作成(または既存の Issue を確認)
ブランチを作成:
feature/xxx-description機能を実装
テストを追加
ドキュメントを更新
PR を作成
バグ修正
バグレポートの Issue を確認
ブランチを作成:
fix/xxx-descriptionバグを再現するテストを追加
バグを修正
テストが通ることを確認
PR を作成
リファクタリング
Issue を作成(リファクタリングの理由を説明)
ブランチを作成:
refactor/xxx-descriptionリファクタリングを実行
既存のテストが通ることを確認
PR を作成
ドキュメント更新
ブランチを作成:
docs/xxx-descriptionドキュメントを更新
PR を作成
開発のヒント
効率的な開発
小さなコミット: 頻繁にコミットする
早期のフィードバック: Draft PR を活用する
テストの自動化: CI/CD を活用する
コードレビュー: 他の人のコードもレビューする
問題の解決
困ったときは、以下を利用します:
GitHub の Issue コメント
次のステップ
ワークフローを理解したら、以下のドキュメントも参照してください:
ビルドとテスト - ビルドとテストの詳細
コントリビューションガイド - コントリビューションガイドライン
アーキテクチャとコード構造 - コードベースの理解