JavaScriptプログラミング学習のための問題集です。テストコードが付属しており、自分の回答が正しいかどうかを自動的に確認できます。
このリポジトリは、JavaScriptを初めて学ぶ方向けの段階的な学習教材です。以下の特徴があります:
- ✅ テスト駆動開発(TDD)形式の学習
- 📈 基礎から応用まで段階的に学べる構成
- 🔍 自動採点機能付き
- 📝 詳細な問題説明(日本語)
問題は以下の4つのセクションに分かれています:
- 変数の使い方
- 配列の操作
- 関数の作成方法
- 基本的なループ処理
- など
より発展的な問題を解いていきます
実践的な問題に挑戦します
Reactを使用したフロントエンド開発を学びます
- リポジトリのクローン
git clone [リポジトリURL]
cd aid-on-js-training- 依存パッケージのインストール
npm install全てのテストを実行:
npm test特定のセクションのテストを実行:
# 000-019のテスト
npm run test1
# 020-039のテスト
npm run test2
# 040-059のテスト
npm run test3
# 060-079(React)のテスト
npm run test4src000_019(他のセクションも同様)ディレクトリ内の問題ファイル(例:knock000.js)を開きます- ファイル内の
knock関数を実装します(全ての問題で関数名はknockで統一されています) npm testを実行して、実装が正しいかテストで確認します
例:
/**
* No. 00 ごあいさつ
* 実行するとHello World!と表示するプログラムを作成せよ。
* @returns {string} "Hello, World!" + 改行文字
*/
export const knock = () => {
// ここに実装を書く
return "Hello, World!\n";
};各問題には、JSDoc形式のドキュメントが付いています:
- 問題の説明
- 関数の引数(@param)の説明(引数がある場合は必ず型情報を含める)
- 戻り値(@returns)の型と説明
test000_019(他のセクションも同様)ディレクトリ内のテストファイルで、各問題の期待される動作を確認できます:
describe("No. 00 Hello World", () => {
test("基本的なケース", () => {
expect(knock()).toBe("Hello, World!\n");
});
});- 未実装の問題は
TrainingSkipErrorを返すようになっています - これにより、未解答の問題がスキップされる仕組みになっています
src/common/TrainingSkipError.jsに定義された独自のJest Reporterを使用- 問題を解く際は、
TrainingSkipErrorを適切な実装に置き換えてください
-
一つずつ順番に:
- 基本的な問題(000)から順番に取り組むことをお勧めします
- 各セクションは難易度順に並んでいます
-
テストを活用:
- テストケースを読むことで、期待される動作を理解できます
- 自分の実装が正しいかすぐに確認できます
-
ドキュメントを読む:
- 各問題のJSDocには重要な情報が書かれています
- 引数の型や戻り値の形式をよく確認しましょう
問題の追加や改善案がある場合は、プルリクエストを歓迎します。その際は以下の点に注意してください:
- 新しい問題を追加する場合は、対応するテストも作成してください
- JSDocによる問題の説明を必ず含めてください
- 引数がある場合は、型情報とドキュメントコメントを追加してください
- 関数名は
knockで統一してください