貢献ガイド

はじむプロジェクトへの貢献を歓迎します!このガイドでは、プロジェクトに貢献する方法を説明します。

貢献の種類

💻

コード貢献

新機能の実装、バグ修正、パフォーマンス改善など、コードによる貢献。

📝

ドキュメント

ドキュメントの追加、改善、翻訳、誤字脱字の修正など。

🐛

バグ報告

バグの発見と詳細な報告。再現手順の提供。

💡

機能提案

新機能のアイデア提案や既存機能の改善案。

📚

サンプルコード

実用的なコード例、チュートリアル、ベストプラクティスの共有。

🔍

コードレビュー

他の人のプルリクエストをレビューし、フィードバックを提供。

開発環境のセットアップ

1. リポジトリのフォーク

GitHubでリポジトリをフォークします。

2. クローン

git clone https://github.com/あなたのユーザー名/jp.git
cd jp

3. ビルド

make clean
make

4. テストの実行

# すべてのテストを実行
./nihongo test_all.jp

# 特定のテストを実行
./nihongo tests/stdlib.jp

5. 開発ブランチの作成

git checkout -b 機能名-または-修正内容

コード貢献のプロセス

ステップ1: Issue を作成または選択

ステップ2: コードを書く

コミットメッセージの規約

# 形式
<type>: <subject>

# 例
feat: リスト内包表記を実装
fix: 配列の境界チェックを修正
docs: チュートリアルに非同期処理の説明を追加
test: 文字列操作のテストケースを追加
refactor: パーサのコードを整理

Type の種類:

ステップ3: テストを追加

ステップ4: プルリクエストを作成

# 変更をプッシュ
git push origin ブランチ名

ステップ5: レビューと修正

コーディングガイドライン

C言語コード(インタープリタ本体)

// 良い例
Value* evaluate_expression(ASTNode* node, Environment* env) {
    if (node == NULL || env == NULL) {
        return NULL;
    }
    
    // 処理...
    
    return result;
}

はじむコード(サンプルやテスト)

// 良い例
関数 合計計算(配列):
    変数 合計 = 0
    各 数値 を 配列 から
        合計 = 合計 + 数値
    終わり
    戻す 合計
終わり

テストガイドライン

テストファイルの配置

テストの書き方

// tests/new_feature_test.jp

// テスト: 新機能の基本動作
変数 結果 = 新機能(10, 20)
もし 結果 != 30 なら
    表示("エラー: 期待値は30だが", 結果, "が返された")
終わり

// テスト: エッジケース
変数 空結果 = 新機能(0, 0)
もし 空結果 != 0 なら
    表示("エラー: ゼロケースが失敗")
終わり

表示("✓ すべてのテストが成功")

テストのベストプラクティス

ドキュメント貢献

ドキュメントの種類

ドキュメント改善のアイデア

バグ報告の方法

良いバグ報告には以下が含まれます:

1. 明確なタイトル

例: 「配列の境界外アクセスでクラッシュ」

2. 環境情報

3. 再現手順

1. 以下のコードを test.jp として保存
2. ./nihongo test.jp を実行
3. エラーが発生

4. 再現コード

// 最小限の再現コード
変数 配列 = [1, 2, 3]
表示(配列[10])  // ここでクラッシュ

5. 期待される動作

「エラーメッセージが表示されるべき」

6. 実際の動作

「セグメンテーションフォルトで終了」

7. エラーメッセージ(あれば)

Segmentation fault: 11

機能提案の方法

良い機能提案には以下が含まれます:

1. 問題の説明

「現在、並列処理のサポートがないため、複数のHTTPリクエストを同時に処理できない」

2. 提案する解決策

「スレッドプールまたは軽量なコルーチンを実装する」

3. 使用例

// 提案する構文
並列
    タスク1()
    タスク2()
    タスク3()
待つ  // すべてのタスクが完了するまで待機

4. 代替案(あれば)

「async/awaitの拡張でも実現可能」

5. 影響範囲

「既存のコードに影響なし、新しい構文の追加のみ」

コミュニティガイドライン

行動規範

コミュニケーション

よくある質問

Q: プログラミング初心者でも貢献できますか?

A: はい!ドキュメントの誤字修正、サンプルコードの追加、バグ報告など、コードを書かない貢献も大歓迎です。

Q: どのくらいの規模の変更から貢献できますか?

A: 1文字の誤字修正でも大歓迎です。小さな改善の積み重ねがプロジェクトを良くします。

Q: プルリクエストがマージされるまでどのくらいかかりますか?

A: 通常、数日以内にレビューが行われます。複雑な変更の場合はもう少し時間がかかる場合があります。

Q: レビューで修正を求められました。どうすればいいですか?

A: フィードバックを元に修正し、同じブランチにコミットしてプッシュしてください。プルリクエストは自動的に更新されます。

さあ、貢献を始めましょう!

あなたの貢献がこの言語を育てます。