- WEKO3は研究成果の公開を行うためのリポジトリソフトウェアである。Git等の所謂コードのためのリポジトリとは異なるソフトウェアで、ウェブデータベースアプリケーションに近い概念のソフトウェアである。基本的な機能は研究成果とメタデータと呼ばれる研究成果の説明情報を一緒に保存し、表示、検索、配布する機能がある。外部システム連携のためのAPIを備える。
- フレームワーク(バックエンド): Invenio 3. Invenio3は Flask 1.0.4 をベースにしている。(Python 3.6)
- フレームワーク(フロントエンド): React, Anguler JS, JQuery
- 利用ミドルウェア: PostgreSQL 12.x(データベース), Pgpool-II 4.2.2(データベースクラスタ用), Elasticsearch 6.8.23(検索用),Redis 7.4.1(セッション、キャッシュ管理用),RabbitMQ 4.0.2(メッセージキューイング用), nginx 1.20.1(ウェブサーバ用), shibboleth-sp(認証用),CNRI Handle Server(CNRIハンドル発行用)
- 主要ライブラリ: Invenio 3 Framework(API,Web API用), Celery + RabbitMQ(タスクキュー)
- 環境設定: 環境変数は
docker-compose2.ymlファイルで管理(機密情報はコードに直書きしない)。サーバ固有の設定はscripts/instance.cfgに記載する。
- dockerを利用する。
- リポジトリのクローン後、
install.shコマンドを実行すると、環境構築が開始される。 - 環境構築後、
https://127.0.0.1/でサーバにアクセスすることができる。
- ユニットテストを実行:
python manage.py test
(またはpytest使用時:pytest) - 新機能を追加した際は必ず対応するテストコードを追加してください
- テストが全てパスすることを確認してから変更を確定します
- コーディング規約: PEP8に準拠 (スタイルガイドの遵守)
- フォーマッター: Black を使用(
black .でソースコードを整形) - リンター: Flake8 を使用(
flake8で静的解析チェック) - インポート順の整理: isort を使用(
isort .でインポート並び替え) - これらのフォーマットチェックはコミット前に必ず実行し、指摘がない状態にしてください
- 秘密情報は厳重に管理: APIキーやパスワードなど秘密情報は
.envや環境変数から読み込み、絶対にGitに含めないでください - ユーザ入力の検証: フォームやAPIで受け取る入力はDjangoのバリデーション機構で適切に検証してください
- デバッグ設定: 開発中以外では
DEBUG = Falseに設定し、エラーページや機密情報が漏洩しないようにします - 依存パッケージ: 新しいパッケージを導入する際はセキュリティ面を確認し、必要に応じてチームの承認を得てください
- タイトル形式:
feat: 機能概要のように、プレフィックスと簡潔な説明を書いてください - 事前チェック: コードを提出する前に
flake8やpytestを実行し、エラーやテスト失敗がないことを確認しましょう - 差分の範囲: 1つのPRは関連する変更に留め、小さくまとまった変更を心がけてください(大規模な変更は分割を検討)
- 説明コメント: PRの説明欄には変更内容と目的、動作確認の方法を簡潔に記述してください