このページでは、Fess 開発の全体像と、開発を始めるための基本情報を提供します。
概要
Fess は、Java で開発されたオープンソースの全文検索サーバーです。 エンタープライズ検索を簡単に構築できることを目指し、 強力な検索機能と使いやすい管理画面を提供しています。
Fess の特徴
簡単なセットアップ: Java 環境があればすぐに起動できる
強力なクローラー: Web サイト、ファイルシステム、データベースなど多様なデータソースに対応
日本語対応: 日本語の全文検索に最適化
拡張性: プラグインによる機能拡張が可能
REST API: 検索機能を他のアプリケーションから利用可能
技術スタック
Fess は以下の技術を使用して開発されています。
対象バージョン
このドキュメントは、以下のバージョンを対象としています:
Fess: 15.3.0
Java: 21 以降
OpenSearch: 3.3.0
Maven: 3.x
主要な技術とフレームワーク
Java 21
Fess は Java 21 以降で動作するアプリケーションです。 最新の Java 機能を活用し、パフォーマンスと保守性を向上させています。
推奨: Eclipse Temurin 21(旧 AdoptOpenJDK)
最小バージョン: Java 21
LastaFlute
LastaFlute は、 Fess の Web アプリケーション層で使用されているフレームワークです。
主な機能:
DI(依存性注入)コンテナ
Action ベースの Web フレームワーク
バリデーション
メッセージ管理
設定管理
学習リソース:
Fess のコードを読むことで実践的な使い方を学べます
DBFlute
DBFlute は、 データベースアクセスのための O/R マッピングツールです。 Fess では OpenSearch のスキーマから Java コードを自動生成するために使用しています。
主な機能:
タイプセーフな SQL ビルダー
スキーマからのコード自動生成
データベースドキュメントの自動生成
学習リソース:
OpenSearch
OpenSearch は、 Fess の検索エンジンとして使用されている分散検索・分析エンジンです。
対応バージョン: OpenSearch 3.3.0
必須プラグイン:
opensearch-analysis-fess: Fess 専用の形態素解析プラグイン
opensearch-analysis-extension: 追加の言語解析機能
opensearch-minhash: 類似ドキュメント検出
opensearch-configsync: 設定の同期
学習リソース:
Maven
Maven は、Fess のビルドツールとして使用されています。
主な用途:
依存ライブラリの管理
ビルド処理の実行
テストの実行
パッケージの作成
開発ツール
推奨される開発環境
Eclipse
公式ドキュメントでは Eclipse を使用した開発方法を説明しています。
推奨バージョン: Eclipse 2023-09 以降
必要なプラグイン:
Maven Integration for Eclipse (m2e)
Eclipse Java Development Tools
IntelliJ IDEA
IntelliJ IDEA でも開発が可能です。
推奨エディション: Community Edition または Ultimate Edition
必要な機能:
Maven サポート(デフォルトで含まれています)
Java サポート
VS Code
軽量な開発には VS Code も利用できます。
必要な拡張機能:
Java Extension Pack
Maven for Java
バージョン管理
Git: ソースコード管理
GitHub: リポジトリのホスティング、Issue 管理、プルリクエスト
必要な知識
基礎知識
Fess の開発には、以下の知識が必要です:
必須
Java プログラミング: クラス、インターフェース、ジェネリクス、ラムダ式など
オブジェクト指向: 継承、ポリモーフィズム、カプセル化
Maven: 基本的なコマンドと pom.xml の理解
Git: clone、commit、push、pull、branch、merge など
推奨
LastaFlute: Action、Form、Service の概念
DBFlute: Behavior、ConditionBean の使い方
OpenSearch/Elasticsearch: インデックス、マッピング、クエリの基本
Web 開発: HTML、CSS、JavaScript(特にフロントエンド開発の場合)
Linux コマンド: サーバー環境での開発・デバッグ
学習リソース
初めて Fess の開発に取り組む場合、以下のリソースが役立ちます:
公式ドキュメント
コミュニティ
GitHub Discussions: 質問や議論
Issue Tracker: バグ報告や機能リクエスト
Fess Forum: 日本語コミュニティフォーラム
ソースコード
実際のコードを読むことが最も効果的な学習方法です:
まずは小さな機能から読み始める
デバッガーを使ってコードの動作を追う
既存のテストコードを参照する
開発の基本フロー
Fess の開発は、一般的に以下のような流れで進めます:
Issue の確認・作成
GitHub の Issue を確認し、取り組む内容を決めます。 新しい機能やバグ修正の場合は Issue を作成します。
ブランチの作成
作業用のブランチを作成します:
git checkout -b feature/my-new-feature
コーディング
機能の実装やバグ修正を行います。
テスト
単体テストを作成・実行し、変更が正しく動作することを確認します。
コミット
変更をコミットします:
git add . git commit -m "Add new feature"プルリクエスト
GitHub にプッシュし、プルリクエストを作成します:
git push origin feature/my-new-feature
詳細は 開発ワークフロー を参照してください。
プロジェクト構造の概要
Fess のソースコードは、以下のような構造になっています:
fess/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/codelibs/fess/
│ │ │ ├── app/ # Web アプリケーション層
│ │ │ │ ├── web/ # 検索画面
│ │ │ │ └── service/ # サービス層
│ │ │ ├── crawler/ # クローラー機能
│ │ │ ├── es/ # OpenSearch 関連
│ │ │ ├── helper/ # ヘルパークラス
│ │ │ ├── job/ # ジョブ処理
│ │ │ ├── util/ # ユーティリティ
│ │ │ └── FessBoot.java # 起動クラス
│ │ ├── resources/
│ │ │ ├── fess_config.properties
│ │ │ ├── fess_config.xml
│ │ │ └── ...
│ │ └── webapp/
│ │ └── WEB-INF/
│ │ └── view/ # JSP ファイル
│ └── test/
│ └── java/ # テストコード
├── pom.xml # Maven 設定ファイル
└── README.md
主要なパッケージ
app
Web アプリケーション層のコードです。 管理画面や検索画面の Action、Form、Service などが含まれます。
crawler
Web クローラー、ファイルクローラー、データストアクローラーなど、 データ収集機能のコードです。
es
OpenSearch との連携コードです。 インデックス操作、検索クエリの構築などが含まれます。
helper
アプリケーション全体で使用されるヘルパークラスです。
job
スケジュール実行されるジョブのコードです。 クロールジョブ、インデックス最適化ジョブなどが含まれます。
詳細は アーキテクチャとコード構造 を参照してください。
開発環境のクイックスタート
最小限の手順で開発環境をセットアップし、Fess を実行する方法を説明します。
前提条件
Java 21 以降がインストールされていること
Git がインストールされていること
Maven 3.x がインストールされていること
手順
リポジトリのクローン
git clone https://github.com/codelibs/fess.git cd fessOpenSearch プラグインのダウンロード
mvn antrun:run
実行
Maven から実行:
mvn compile exec:java
または、IDE(Eclipse、IntelliJ IDEA など)から
org.codelibs.fess.FessBootクラスを実行します。アクセス
ブラウザーで以下にアクセスします:
検索画面: http://localhost:8080/
管理画面: http://localhost:8080/admin/ - デフォルトユーザー: admin / admin
詳細なセットアップ手順は 開発環境のセットアップ を参照してください。
開発のヒント
デバッグ実行
IDE でデバッグ実行する場合、FessBoot クラスを実行します。 ブレークポイントを設定することで、コードの動作を詳しく追跡できます。
ホットデプロイ
LastaFlute は、一部の変更について再起動なしで反映できます。 ただし、クラス構造の変更などは再起動が必要です。
ログの確認
ログは target/fess/logs/ ディレクトリに出力されます。 問題が発生した場合は、ログファイルを確認してください。
OpenSearch の操作
組み込みの OpenSearch は target/fess/es/ に配置されます。 直接 OpenSearch API を呼び出してデバッグすることも可能です:
# インデックスの確認
curl -X GET http://localhost:9201/_cat/indices?v
# ドキュメントの検索
curl -X GET http://localhost:9201/fess.search/_search?pretty
コミュニティとサポート
質問や相談
開発中に質問や相談がある場合は、以下を利用してください:
GitHub Discussions: 一般的な質問や議論
GitHub Issues: バグ報告や機能リクエスト
Fess Forum: 日本語フォーラム
貢献方法
Fess への貢献方法については、コントリビューションガイド を参照してください。
次のステップ
開発環境をセットアップする準備ができたら、開発環境のセットアップ に進んでください。
詳細な情報については、以下のドキュメントも参照してください:
アーキテクチャとコード構造 - アーキテクチャとコード構造
開発ワークフロー - 開発ワークフロー
ビルドとテスト - ビルドとテスト
コントリビューションガイド - コントリビューションガイド