> For the complete documentation index, see [llms.txt](https://coky-t.gitbook.io/owasp-devsecops-guideline-ja/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://coky-t.gitbook.io/owasp-devsecops-guideline-ja/v0.3/2-purosesu-process/22-kai-fa-develop/2-2-1-komitto-pre-commit/2-2-1-1-pre-commit.md).

# 2-2-1-1-プレコミット (Pre-commit)

コミット前 (pre-commit) のフェーズは重要です。中心となる (Git) リポジトリに送信される前にセキュリティの問題を防ぐことができるためです。

コードにシークレットがないこと、およびコードが特定の (Linter ルールによる) ガイドラインに準拠していることを確認することが、より質の高いコードにつながります。

以下では、次のようなさまざまなタイプのコミット前 (pre-commit) アクションについて説明します。

1. シークレットの管理
2. コードのリンティング

**pre-commit** は **シフトレフトセキュリティ** アプローチの一部として活用できる git 機能です。これは開発者が SDLC プロセスの早い段階でソースコードの問題を確認できるようになります。開発者が git-commit コマンドを実行してローカルリポジトリにコードをコミットする際、**pre-commit hook** チェックをセキュリティスキャンツールと統合して、コード品質の問題、ハードコードされたシークレット、安全でないコード、脆弱な依存関係/オープンソースライブラリなどを探すことができます。

pre-commit hook は開発者のローカルリポジトリレベルにあり、同じプロジェクトやアプリケーションで作業しているすべての開発者が共通に使用するリモートリポジトリではないことに注意してください。このような場合、セキュリティ上の問題がリモートや中央の (Git) リポジトリに送信される前に防止する必要があるときには、**pre-push hook** または **git-push** チェックを構成できます。参照: <https://git-scm.com/docs/git-push>

セキュリティ上の問題 (ハードコードされたシークレット、安全でないコード、脆弱な依存関係/オープンソースライブラリなど) のためにソースコードをスキャンする別の代替アプローチは **SAST/SCA IDE プラグイン** を使用することです。これは開発者がコードを書く際に使用する IDE と連携して機能します。一方、git-commit および git-push アクションは開発者がコードを書いた後に使用されます。要件に基づいてさまざまなレベルで適切なセキュリティコントロールを実装するには、これらの明確なユースケースを識別する必要があります。

以下の画像は pre-commit が何を意味し、なぜそれを考慮しなければならないかをよりよく理解するためのものです。

![Pre Commit](/files/rGZl0kugMPpjU9rK9LKQ)

***

## ツール

### オープンソース

* [Pre-Commit](https://pre-commit.com/) - 多言語の pre-commit フックを管理および維持するためのフレームワークです。

### リンク

* [Wikipedia - Lint (software)](https://en.wikipedia.org/wiki/Lint_\(software\))


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://coky-t.gitbook.io/owasp-devsecops-guideline-ja/v0.3/2-purosesu-process/22-kai-fa-develop/2-2-1-komitto-pre-commit/2-2-1-1-pre-commit.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
