Skip to content

貢献ガイド

バグ報告

アクティブなコラボレーションを促進するために、Laravelはバグ報告だけでなくプルリクエストを強く推奨しています。プルリクエストは、「レビュー準備完了」(「ドラフト」状態ではない)とマークされ、新機能のすべてのテストがパスしている場合にのみレビューされます。「ドラフト」状態のまま放置された非アクティブなプルリクエストは、数日後にクローズされます。

ただし、バグ報告を提出する場合、あなたの問題にはタイトルと問題の明確な説明が含まれている必要があります。また、関連する情報をできるだけ多く含め、問題を示すコードサンプルも含める必要があります。バグ報告の目的は、自分自身と他の人々がバグを再現し、修正を開発するのを容易にすることです。

バグ報告は、同じ問題を抱える他の人々があなたと協力して問題を解決することを期待して作成されることを忘れないでください。バグ報告が自動的に何らかのアクティビティを見ることや、他の人々がすぐに修正に取り掛かることを期待しないでください。バグ報告を作成することは、自分自身と他の人々が問題の修正に向けて道を始めるのを助けるためのものです。もし貢献したい場合は、私たちの問題トラッカーにリストされているバグを修正することで手助けすることができます。Laravelのすべての問題を表示するには、GitHubで認証されている必要があります。

Laravelを使用中に不適切なDocBlock、PHPStan、またはIDEの警告に気づいた場合、GitHubの問題を作成しないでください。代わりに、問題を修正するためのプルリクエストを提出してください。

LaravelのソースコードはGitHubで管理されており、Laravelプロジェクトごとにリポジトリがあります:

サポート質問

LaravelのGitHub問題トラッカーは、Laravelのヘルプやサポートを提供するためのものではありません。代わりに、以下のチャンネルを使用してください:

コア開発の議論

LaravelフレームワークリポジトリのGitHubディスカッションボードで、新機能や既存のLaravelの動作の改善を提案することができます。新機能を提案する場合、その機能を完了するために必要なコードの少なくとも一部を実装する意思があることを示してください。

バグ、新機能、および既存の機能の実装に関する非公式な議論は、Laravel Discordサーバー#internalsチャンネルで行われます。LaravelのメンテナであるTaylor Otwellは、通常、平日の午前8時から午後5時(UTC-06:00またはアメリカ/シカゴ)にチャンネルに参加しており、他の時間帯には散発的に参加しています。

どのブランチ?

すべてのバグ修正は、バグ修正をサポートする最新バージョン(現在は10.x)に送信する必要があります。バグ修正は、次のリリースにのみ存在する機能を修正しない限り、決してmasterブランチに送信しないでください。

現在のリリースと完全に後方互換性のあるマイナーな機能は、最新の安定ブランチ(現在は11.x)に送信することができます。

メジャーな新機能または破壊的変更を伴う機能は、常に次のリリースを含むmasterブランチに送信する必要があります。

コンパイル済みアセット

laravel/laravelリポジトリのresources/cssresources/jsなどのコンパイル済みファイルに影響を与える変更を提出する場合、コンパイル済みファイルをコミットしないでください。それらのファイルのサイズが大きいため、メンテナーが現実的にレビューできないためです。これは、悪意のあるコードをLaravelに注入する方法として悪用される可能性があります。これを防御的に防ぐために、すべてのコンパイル済みファイルはLaravelメンテナーによって生成され、コミットされます。

セキュリティ脆弱性

Laravel内でセキュリティ脆弱性を発見した場合は、Taylor Otwellにメールを送信してください:taylor@laravel.com。すべてのセキュリティ脆弱性は迅速に対処されます。

コーディングスタイル

LaravelはPSR-2コーディング規約とPSR-4オートローディング規約に従います。

PHPDoc

以下は、有効なLaravelドキュメンテーションブロックの例です。@param属性の後には2つのスペース、引数の型、さらに2つのスペース、最後に変数名が続くことに注意してください:

/**
 * コンテナへのバインディングを登録します。
 *
 * @param  string|array  $abstract
 * @param  \Closure|string|null  $concrete
 * @param  bool  $shared
 * @return void
 *
 * @throws \Exception
 */
public function bind($abstract, $concrete = null, $shared = false)
{
    // ...
}

@paramまたは@return属性がネイティブ型の使用により冗長である場合、それらは削除できます:

/**
 * ジョブを実行します。
 */
public function handle(AudioProcessor $processor): void
{
    //
}

ただし、ネイティブ型がジェネリックである場合、@paramまたは@return属性を使用してジェネリック型を指定してください:

/**
 * メッセージの添付ファイルを取得します。
 *
 * @return array<int, \Illuminate\Mail\Mailables\Attachment>
 */
public function attachments(): array
{
    return [
        Attachment::fromStorage('/path/to/file'),
    ];
}

StyleCI

コードスタイリングが完璧でなくても心配しないでください!StyleCIは、プルリクエストがマージされた後、自動的にスタイル修正をLaravelリポジトリにマージします。これにより、コードスタイルではなく、貢献の内容に集中することができます。

行動規範

Laravelの行動規範はRubyの行動規範に基づいています。行動規範の違反は、Taylor Otwell(taylor@laravel.com)に報告することができます:

  • 参加者は反対意見に対して寛容であるべきです。
  • 参加者は、個人的な攻撃や個人的な発言がないようにする必要があります。
  • 他者の言葉や行動を解釈する際、参加者は常に善意を前提とするべきです。
  • 嫌がらせと見なされる行動は容認されません。

ユーザーノート