本文へスキップ
W
WtLDL4b
コース
教材サンプル
このサイトについて
← すべてのコース
LANGUAGE COURSE
C#
C#の基本文法、.NET、オブジェクト指向、アルゴリズムに加え、安全な入力処理やセキュアコーディングまで学ぶ総合入門コースです。
学習できます
CURRICULUM
学習内容
0
/ 98 レッスン完了
学習の進み具合
0%
Foundation
変数とデータ型
01
変数とデータ型
値を保存する変数と、代表的なデータ型を学びます。
○
02
キーボードから入力を受け取る
Console.ReadLineで入力を受け取り、数値へ変換して計算します。
○
演算子と式
01
演算子と式
算術演算子、比較演算子、論理演算子と整数の割り算を学びます。
○
条件分岐(if / else / switch)
01
ifで条件分岐する
if、else if、elseで条件に応じて処理を切り替えます。
○
02
switchで複数の分岐を整理する
switch文とswitch式を使い、値に応じた処理を整理します。
○
03
演習:偶数か奇数か
剰余演算子で整数が偶数か奇数かを判定します。
○
04
演習:数値の符号
ifとelseを使って整数の符号を判定します。
○
05
演習:曜日名
switchを使って数字を曜日名に変換します。
○
06
人力実行:条件分岐
ifとelse ifの条件判定を順番に追跡します。
○
繰り返し(for / while / foreach)
01
繰り返し処理
for、while、foreachを使い、同じ処理を繰り返す方法を学びます。
○
02
演習:2つの整数の合計
2つの整数を読み取り、その合計を出力します。
○
03
演習:1からNまでの合計
繰り返し処理または数式で1からNまでの合計を求めます。
○
04
人力実行:累積値を追う
forループの各回で変数がどう変わるかを追跡します。
○
配列と基本的なデータ操作
01
配列で複数の値を扱う
配列の宣言、要素へのアクセス、Length、繰り返し処理を学びます。
○
02
演習:配列の最大値
配列の要素を走査して最大値を求めます。
○
Foundation
C#とプログラムの基本
01
C#でできることとコンソール出力
C#の用途を知り、Console.WriteLineで文字を表示するところから始めます。
○
02
出力とコメント
WriteとWriteLineの違い、改行、コメントを学びます。
○
03
はじめての提出
Console.WriteLineを使い、指定された文字列を出力して提出します。
○
Beginner
文字列の操作
01
文字列を操作する
stringの特徴、Length、Trim、Contains、Splitなどを学びます。
○
メソッドの基礎
01
メソッドで処理をまとめる
引数、戻り値、void、スコープを理解し、処理を再利用します。
○
02
演習:平方数を返すメソッド
引数を受け取り、計算結果を戻り値として返すメソッドを作ります。
○
引数と戻り値
01
引数と戻り値
メソッドへ値を渡す方法と、処理結果を呼び出し元へ返す方法を学びます。
○
スコープと変数の有効範囲
01
スコープと変数の有効範囲
ローカル変数のスコープと、変数を利用できる範囲を理解します。
○
多次元配列
01
多次元配列
二次元配列とジャグ配列の違い、要素へのアクセス方法を学びます。
○
基本的なアルゴリズム
01
全探索・探索・計算量
全探索を実装し、入力制約から計算量を考える方法を学びます。
○
02
アルゴリズムの考え方
配列・文字列・探索を組み合わせ、制約に応じた解法を選びます。
○
03
演習:指定した値の個数
配列を走査して指定された値が何回現れるか数えます。
○
04
総合演習:スコアを集計する
入力、List、クラス、繰り返し、条件分岐を組み合わせる総合課題の考え方です。
○
05
総合演習:最小値と最大値
数列を1回走査して最小値と最大値を求めます。
○
06
総合演習:スコアを集計する
入力、繰り返し、条件分岐を組み合わせてスコアを集計します。
○
Intermediate
Listとコレクション
01
Listで長さが変わるデータを扱う
List<T>の追加、参照、削除、繰り返し処理を学びます。
○
02
人力実行:Listの状態
Listに要素を追加した後のインデックスとCountを追跡します。
○
03
演習:Listで重複を除去する
ListとHashSetを組み合わせて、順序を保った重複除去を実装します。
○
DictionaryとHashSet
01
DictionaryとHashSet
キーと値の対応付け、重複を許さない集合を扱います。
○
02
名前空間とusing
名前空間で型を整理する方法と、usingによる型名の参照を学びます。
○
03
演習:Dictionaryで出現回数を数える
Dictionaryを使って指定された単語の出現回数を求めます。
○
クラスとインスタンス
01
クラスとオブジェクト
クラス、インスタンス、プロパティ、コンストラクターの役割を学びます。
○
02
人力実行:クラスとプロパティ
インスタンスの生成とプロパティの値を追跡します。
○
03
演習:Studentクラスで最高得点を求める
クラスとインスタンスを使って最高得点の生徒を管理します。
○
コンストラクタとプロパティ
01
コンストラクタとプロパティ
インスタンス生成時の初期化と、プロパティによる値の公開方法を学びます。
○
02
演習:コンストラクタで商品情報を初期化する
コンストラクタと読み取り専用プロパティで商品情報を管理します。
○
例外処理
01
nullと入力エラーへの対処
nullの意味、TryParse、例外処理を使って予期しない入力に備えます。
○
02
例外処理の基本
try・catch・finallyと例外の種類を理解し、回復可能なエラーを適切に扱います。
○
03
安全な入力処理の基礎
外部入力を信頼せず、型・範囲・長さを検証する基本を学びます。
○
04
演習:安全に整数入力を検証する
TryParseと範囲検証を組み合わせて入力を安全に扱います。
○
オブジェクト指向の基礎
01
カプセル化とstatic
publicとprivateで公開範囲を制御し、クラスの内部状態を守ります。
○
02
演習:カプセル化されたカウンター
privateフィールドと公開メソッドを使ってカウンターを実装します。
○
Advanced
継承とポリモーフィズム
01
継承とオーバーライド
既存のクラスを継承し、共通部分を再利用しながら振る舞いを拡張する方法を学びます。
○
02
人力実行:ポリモーフィズム
基底クラス型の変数から派生クラスのoverrideメソッドを呼び出したときの出力を追跡します。
○
03
演習:継承とポリモーフィズムで動物の鳴き声を出力する
基底クラスとオーバーライドを使い、型ごとの振る舞いを共通の方法で呼び出します。
○
インターフェースと抽象クラス
01
抽象クラス
共通の状態や処理を持つ基底クラスと、abstractメンバーの実装を学びます。
○
02
インターフェースとポリモーフィズム
インターフェースで型に共通の約束を定義し、異なるオブジェクトを同じ方法で扱う仕組みを学びます。
○
03
演習:抽象クラスとインターフェースで給与を計算する
抽象メソッドで派生クラスごとの計算を定義し、インターフェースで共通操作を扱います。
○
ジェネリクス
01
ジェネリクス
型をパラメーター化し、再利用性と型安全性を両立する方法を学びます。
○
02
演習:ジェネリックメソッドで最小値を求める
型に依存しないジェネリックメソッドを実装し、比較可能な値を扱います。
○
LINQ
01
LINQ
LINQでコレクションの検索・変換・並べ替え・集計を行います。
○
02
演習:LINQで条件抽出と並べ替えを行う
WhereとOrderBy系の演算子を組み合わせ、条件に合うデータを整列します。
○
デリゲートとラムダ式
01
デリゲートとラムダ式
メソッドを値として扱い、処理を引数として渡す仕組みを学びます。
○
02
演習:デリゲートで数値変換を切り替える
Funcデリゲートとラムダ式を使い、処理を値として受け渡します。
○
イベント
01
イベント
発生した出来事を購読者へ通知するイベントの仕組みを学びます。
○
02
演習:イベントでカウンターの変更を通知する
イベントを発行し、値が実際に変化したときだけ購読側へ通知します。
○
ファイル入出力
01
ファイル入出力
System.IOを使ったファイル操作と、パス・例外の扱いを学びます。
○
02
演習:テキストデータを1行ずつ読み取って集計する
テキストの各行を順番に解析し、レコードの中から最高点を求めます。
○
非同期処理の基礎
01
非同期処理の基礎
Taskとasync・awaitの役割を理解し、待ち時間を伴う処理を扱います。
○
02
演習:非同期タスクの結果をすべて待って集計する
Taskとasync・await、Task.WhenAllを使って複数の非同期処理の結果を集約します。
○
Expert
非同期処理の応用(Task / async / await)
01
非同期処理の応用
Taskの合成、キャンセル、例外伝播、ConfigureAwaitなどを理解します。
○
02
演習:キャンセル可能な非同期バッチ処理を実装する
CancellationTokenを各タスクへ伝播し、Task.WhenAllで結果を集約します。
○
並行処理とスレッド
01
並行処理とスレッド
並行処理・並列処理・スレッドの関係と共有状態の問題を学びます。
○
02
演習:Interlockedで並行加算を安全に行う
共有カウンターへの複数スレッドからの加算をInterlockedで安全に処理します。
○
メモリ管理とガベージコレクション
01
メモリ管理とガベージコレクション
マネージドヒープ、世代別GC、割り当てと回収の考え方を学びます。
○
02
演習:参照関係からGCの回収対象を判定する
GCの到達可能性解析を簡略化したモデルで、ルートから到達できないオブジェクトを求めます。
○
IDisposableとリソース管理
01
IDisposableとリソース管理
IDisposableとusingを使い、外部リソースを確実に解放する方法を学びます。
○
02
演習:IDisposableでリソースの寿命を管理する
usingによる確実な破棄とDisposeの多重呼び出しへの耐性を実装します。
○
Span<T>とメモリ効率
01
Span<T>とメモリ効率
Span<T>とReadOnlySpan<T>による連続メモリ領域の参照を理解します。
○
02
演習:ReadOnlySpanでCSVの整数を解析する
ReadOnlySpan<char>のスライスを使い、部分文字列を作らずに数値を解析します。
○
リフレクションと属性
01
リフレクションと属性
実行時に型情報を調べるリフレクションと、メタデータを付与する属性を学びます。
○
02
演習:属性とリフレクションで許可済み操作を呼び出す
独自属性で操作を登録し、許可リストに基づいてリフレクションで呼び出します。
○
パフォーマンス分析と最適化
01
パフォーマンス分析と最適化
計測に基づいてボトルネックを特定し、計算量と割り当てを改善します。
○
02
演習:HashSetで重複を除いて高速に数える
入力規模を意識し、線形探索を繰り返す方法ではなくHashSetで重複を管理します。
○
セキュアコーディング
01
プログラムの安全性と信頼できない入力
入力値を信頼しない考え方、入力検証、最小権限など、安全なプログラムの基本を学びます。
○
02
安全なデータ処理と依存関係
SQL・ファイル・秘密情報・外部ライブラリを扱う際に守るべき基本原則を学びます。
○
03
演習:許可リストで安全なファイル名を検証する
ファイル操作に使う識別子を厳格な許可リストで検証します。
○
Mastered
ソフトウェアアーキテクチャ
01
ソフトウェアアーキテクチャ
システムの責務・境界・依存関係を整理し、変更に強い構造を設計します。
○
02
演習:注文処理パイプラインを設計する
入力解析・検証・価格計算を分離し、インターフェースで依存境界を設ける。
○
SOLID原則と設計パターン
01
SOLID原則と設計パターン
SOLID原則と代表的な設計パターンを、適用条件とトレードオフから理解します。
○
02
演習:Strategyで料金計算を切り替える
共通インターフェースと料金戦略を分離する。
○
高度な非同期・並行処理
01
高度な非同期・並行処理
非同期パイプライン、バックプレッシャー、キャンセル伝播を設計します。
○
02
演習:キャンセル可能な非同期バッチ処理
TaskとCancellationTokenで非同期処理を分離し、結果を集約する。
○
スレッドセーフな設計
01
スレッドセーフな設計
不変オブジェクト、同期境界、競合状態の検出と回避を学びます。
○
02
演習:スレッドセーフな集計器
Parallel.ForとInterlocked.Addで共有状態を安全に更新する。
○
高度なメモリ・パフォーマンス最適化
01
高度なメモリ・パフォーマンス最適化
割り当て、データ局所性、プーリング、Spanを使った最適化の判断を学びます。
○
02
演習:Spanで区切り文字列を解析する
ReadOnlySpan<char>で分割配列を作らず整数列を解析する。
○
セキュリティ設計と脅威モデリング
01
セキュリティ設計と脅威モデリング
資産・信頼境界・脅威・緩和策を整理し、設計段階でリスクを評価します。
○
02
演習:最小権限のアクセス判定
明示的な許可ポリシーを定義し、未知の値は既定で拒否する。
○
テスト設計と品質保証
01
テスト設計と品質保証
単体・結合・システムテストと、境界値・異常系を含む検証設計を学びます。
○
02
演習:境界値を含む入力検証器
独立した検証関数で長さ・先頭文字・許可文字を検証する。
○
総合開発プロジェクト
01
総合開発プロジェクト
要件定義から設計・実装・テスト・運用レビューまでを統合する最終課題の進め方です。
○
02
演習:総合演習:注文管理システム
入力検証・注文モデル・重複判定・集計を統合する。
○