「プログラミングの本質的な知見を、Goという言語を通して習得する」という方針に基づき、カリキュラムを再構成しました。
各項目において、「単なる文法の習得」ではなく「コンピュータサイエンス・設計のどのような原理を学んでいるのか」を明確にしています。
| 週 | カリキュラム内容 | 取得目的(なぜこれを学ぶか) | 関連項目(汎用的知見・計算機科学) |
| 1 | 環境構築・基本文法 | ソースコードが「実行バイナリ」に変換され、OS上でプロセスとして動き出すまでの流れを理解する。 | コンパイル、静的リンク、OSプロセス、標準出力(stdout) |
| 2 | データ構造(スライス・ポインタ) | メモリ上の連続した領域の管理と、データの「実体」と「参照(住所)」の区別をマスターする。 | スタックとヒープ、メモリのアドレス、CPUキャッシュ、配列の計算量 |
| 3 | 構造体とメソッド | 関連するデータをメモリ上に集約し、それに対する「振る舞い(関数)」を定義するカプセル化の基礎を学ぶ。 | メモリのアライメント、データ構造の設計、カプセル化 |
| 4 | インターフェースとエラー | 具体的実装に依存しない「抽象(型)」の定義と、予測可能な例外状態の制御方法を学ぶ。 | ポリモーフィズム、疎結合、依存性の逆転(DIP)、例外処理の哲学 |
| 5 | 標準I/Oとコンテキスト | プログラムの外側(ファイル、ネットワーク、時間)とのやり取りと、処理の寿命(ライフサイクル)を管理する。 | システムコール、ファイル記述子、ストリーム処理、タイムアウト管理 |
| 6 | テストと計測 | 書いたコードが意図通り動くかの「数学的証明」に近い検証と、性能(プロファイリング)の客観的評価。 | ユニットテスト、リグレッション、ベンチマーク、計算量評価 |
| 7 | 並行処理の基礎 | CPUのマルチコアを効率よく使い、I/O待ちによる無駄を排除する非同期制御の基本を学ぶ。 | プロセスとスレッド、コンテキストスイッチ、非同期プログラミング |
| 8 | 並行処理の実践 | 複数の処理間での安全なデータ共有と、デッドロックを防ぐ通信デザインパターンを習得する。 | CSPモデル、レースコンディション、排他制御(Mutex)、セマフォ |
| 9 | Web通信プロトコル | ステートレスな通信の仕組みと、バイト列(JSON等)へのシリアライズ/デシリアライズを学ぶ。 | HTTP/TCPプロトコル、クライアント・サーバーモデル、REST、DNS |
| 10 | データベースと永続化 | 揮発性のメモリから、非揮発性のディスクへのデータ保存と、データの整合性保持を学ぶ。 | ACID特性、SQL、インデックス、コネクションプーリング、トランザクション |
| 11 | 実践的システム設計 | 大規模なコードを「変更に強く、読みやすい」状態に保つための、依存関係とディレクトリの構造化。 | クリーンアーキテクチャ、レイヤードアーキテクチャ、SOLID原則 |
| 12 | デプロイと運用 | 開発環境以外(クラウド・コンテナ)での実行と、プログラムの可観測性(ログ・監視)を整える。 | Docker/コンテナ化、仮想化、CI/CD、オブザーバビリティ |