世界を動かす技術を、日本語で。

あなたのコンピュータサイエンス教育における欠けているセメスター – 2026年版

概要

  • IAP 2026 Classes はCSの高度なトピックとツール習熟を扱う特別講義
  • コマンドラインやバージョン管理、AIツール の実践的な使い方を徹底解説
  • AI技術の急速な進化 に対応した最新カリキュラム
  • 全講義はYouTubeで公開、OSSU Discordで議論も可能
  • MIT外部にも広く公開、多言語翻訳やコミュニティ参加も推奨

IAP 2026 Classesの概要

  • IAP 2026 Classes は、CSの専門知識だけでなく、日常的に使う ツールの習熟 に焦点を当てた特別講義
  • オペレーティングシステムや機械学習 などの高度な話題の他、 コマンドラインやエディタ、バージョン管理 などのスキル向上を目指す
  • 学生やエンジニアが 数百〜数千時間 使うツールの効率化が主目的
  • AIを活用した最新の開発環境やワークフロー も各講義に統合
  • AIツールの利点と限界 を理解し、実践的な知識を身につける構成

カリキュラムとスケジュール

  • 1/12/26: コース概要・シェル入門
  • 1/13/26: コマンドライン環境
  • 1/14/26: 開発環境とツール
  • 1/15/26: デバッグとプロファイリング
  • 1/16/26: バージョン管理とGit
  • 1/20/26: コードのパッケージ化と配布
  • 1/21/26: エージェンティックコーディング
  • 1/22/26: コード以外のスキル(ソフトスキル)
  • 1/23/26: コード品質

学習リソースとコミュニティ

  • 講義動画 はYouTubeで公開
  • OSSU Discord でのディスカッションが可能
    • #missing-semester-forum : 質問・議論用
    • #missing-semester : 雑談・交流用
  • スタッフ :Anish, Jon, Joseが共同担当
  • 問い合わせ先 :missing-semester@mit.edu

MIT外部への展開と多言語対応

  • MIT外部にも無償公開、他大学や個人も自由に利用可能
  • Hacker News, Lobsters, Reddit, X, Bluesky, Mastodon, LinkedIn, YouTube などで情報共有・議論
  • 多言語翻訳 (日本語含む)がコミュニティによって提供
  • 翻訳や資料の追加 はPull Requestで受付

コース改訂と新講義

  • 2026年版 は6年ぶりの大幅改訂
  • AIツールの普及開発現場の変化 を反映
  • 過去の4講義を刷新、さらに 5つの新講義 を追加
    • 開発環境とツール
    • コードのパッケージ化と配布
    • エージェンティックコーディング
    • コード以外のスキル(ソフトスキル)
    • コード品質
  • AI関連トピック は各講義に組み込み、 AIエチケット も明記

参加・貢献方法

  • 講義資料やノートの翻訳 を作成した場合はPull Requestで追加依頼可能
  • 貢献・翻訳ガイドライン も公開
  • ライセンス :CC BY-NC-SA

謝辞

  • Elaine MelloとMIT Open Learning による講義動画収録への協力
  • Luis Turino / SIPB によるSIPB IAP 2026サポート
  • ソースコード公開、コミュニティによる継続的な改善

コミュニティへのメッセージ

  • HN(Hacker News)コミュニティ からのフィードバックを歓迎
  • AI関連講義やエージェンティックコーディング への意見を特に募集中
  • 今後のコース改善 への積極的な参加を呼びかけ

Hackerたちの意見

バージョン管理についての章があるのはいいね。ほとんどのコンピュータサイエンスのプログラムがちゃんとしたバージョン管理を教えてないのは残念だよ。VCSやコミット履歴は、正しく使えばすごく価値のあるツールになるのに。VCを面倒な作業や後回しにしてしまうと、git bisectやblame、revert、rebase…が全然役に立たなくなる。結局「機能は完成、俺の仕事は終わり、git commit -am "changes"して終わり」みたいになっちゃうんだよね。コミットメッセージについてはもう言わなくてもいいけど、業界の大部分でこれが普通ってのは恥ずかしいよ。自称ソフトウェアアーキテクトや信頼性エンジニアなんてかっこいい肩書きを持ってるプロたちが、gitの使い方をほとんど理解してないのも恥ずかしいし、git add/commit/push/pullがうまくいかないときに肩をすくめて、リポジトリを削除して再クローンするだけなんて…。バージョン管理は丁寧に扱うべきだし、細部に気を配ることが大事。ちゃんと管理されたコミット履歴は、自分のPRを見直すのが楽しくなるよ。もし「git commit -am "try fix"」を26回繰り返して、最後に残るのが泥の塊みたいな状態だったら、最悪だよね。

ほとんどの人がgitを学ぶのは必要に迫られてからだよね。「ただコードを書きたいだけで、周辺のことは気にしない」って言ってる人もいるし。JIT学習は実際のアプリケーションに役立つスキルを身につけるのに良い方法だけど、bisectやgitオブジェクト、gitログなどを学ぶためのJITプルはないんだよね。これらは、ドキュメントを読むための時間を取るか、コースで教わることでしか学べないと思う。だから、gitを教えることの重要性を主張するのはいい考えだと思う。多くの人が自分からその取り組みをしない可能性が高いし、gitが得意になることのメリットは明らかだからね。

これは厳しい感じがするな。エンジニアは、もっと重要だと言えることを学ぶための無限のリストを抱えてるし、ほとんど出てこない変なエッジケースを理解する価値があるとは限らないからね(Gitの使いづらくて迷路のようなUXについては何も言わないけど)。

ほとんどの人がツールを正しく使えてないなら、それは彼らのせいじゃなくてツールのせいだよ。Gitは前のものよりはマシだし、やってることでは一番かもしれないけど、それが良いってわけじゃない。 - インターフェースが直感的じゃない。 - 専門用語が多すぎる。 - 機能の発見が難しい。 - 一度問題が起きると、回復するのが難しいことが多い。もしGitに不慣れでその状況に陥ったなら、抜け出すのも難しいってことだよ。これらの問題の多くはGitがコマンドラインインターフェースだからだけど、一般的なアンドゥがないとか変な名前が多いのは単にデザインが悪いからだと思う。そろそろ再挑戦して、もっと良いバージョン管理ツールを作るべきだと思うけど、Gitがあまりにも根付いているのかもしれないね。

そうそう、基本を超えると、GitはエディタやIDEと同じくらいコード編集ツールになるよね。

それぞれのツールは聞いたことあるけど、実際に使ったことはないな。良いコミットメッセージを書こうとして、変更を小さくて明確で理解しやすい形でステージするようにしてるけど、それぐらいかな。でも、Gitの周りの高度なツールはちょっと怖いよね、正直。

あなたのワークフローはFOSSプロジェクトには合ってるけど、プロのチームではPRが作業の単位になることが多いよ。PRはCI/CDパイプラインをトリガーするし、チケットにマッピングされる。意味のあるコミットは、スカッシュマージで共有のdev/mainブランチに行く。PRのためにこういう風にコミットをステージしたこともあるけど、レビューしやすくするためだね。通常は別のPRに分けたいけど、意味のない3つのMRのパイプラインができるなら、1つのMRのために履歴を書き換えるのもアリだと思う。自分のフィーチャーブランチのコミット履歴は自分のためのもので、他の人のためではないと思ってる。履歴を書き換えるのは、PRの説明やタスクの分解がちゃんとできていれば必要ないはずだし、どうせコミットはスカッシュされるからね。それに「MRコメントを修正する」コミットも含まれるし。あなたのワークフローがチームやツール、プロセスに合うなら、それを取り入れるのは全然構わないよ。ただ、あなたのやり方が唯一の正しいやり方じゃないことを考慮してほしい。あなたの好みも大事だけど、他の人の好みも同じくらい大事だから。私が本当に気になるのは絶対主義。「私のやり方か、さもなくば道を外れろ」っていうのはね。あなたの書き込みを見て、過去にいた特に嫌な同僚を思い出したよ。あなたがその人じゃないか確認するために、コメント履歴をざっと見たけど…過度な堅苦しさは魅力的じゃないよね。とはいえ、私はGitのツリー構造の基本を学ぶために1時間か3時間もかけられないYoEが多すぎる人たちには常にイライラしてる。彼らはGUIの杖に頼りすぎて、何か問題が起きたら修正できないんだ。水を飲ませようとしても、資料を送って質問に答えるって言っても、全然飲まない。意図的な無知は頑固さよりもずっとイライラするよ。彼らがbisectとcherry-pickの違いを覚えているとは期待しないけど、Claudeが必要なサブコマンドを英語で説明すれば教えてくれるからね。でも、基礎的なデータ構造を理解していなければ、それすらできないんだ。

「ほとんどのCSプログラムは適切なバージョン管理を教えていない」ってのは単なる間違いだよ。イギリスでは、最初の週にバージョン管理を学んで、その後はコース全体を通してすべての作業をバージョン管理で提出するんだ。アメリカの学校でバージョン管理を使わないなんて信じられないよ。全然意味がわからない。

学期全体ではないけど、うちの大学でこのテーマのコアなCSコースがあったのは本当に嬉しい。今まで受けた中で一番役に立ったコースの一つで、今でもその授業のノートを参考にしてるよ。

うちの大手企業のクライアントは、全ての技術スタッフに18時間(そう、18時間!)の「アジャイルトレーニング」を受けさせることを求めてるんだ。それに加えて、14の必修オンラインコースも速攻で受けなきゃいけない。この時間を使って、9時間の講義を見た方がずっと有意義だと思う。

これは、サンが大学にJavaを使わせたり教えたりするためにお金を払ったのと同じ感じになるのかな?今度はAnthropicとLLMで?

2026年の学生がLLMを使うことに対して特に励ましは必要ないと思うけど、LLM企業が学生プランを安く提供しないのは変だよね。

sedやawkも含めるべきだと思う。これらのツールはどこにでもあって、他の言語で長いプログラムを書く代わりに、数行で済ませられることが多いから。多くの人がsedやawkを知らなかったり、使い方を知らなかったり、プロジェクトの言語でやる必要があるからそうしてるだけだと思う。実際、適切なツールを選ぶスキルを教えることは、無駄に金槌を使うのを防ぐために重要だと思うよ。

「コードを超えて」というセクションがあって、コメントについて話しているのを見て嬉しいな。私がプログラミング入門の学生にいつも言ってたことは、良いコメントはコードに対する洞察を与えるってこと。コードを読むだけでは「何をするか」しか分からないから、コメントは「なぜそうするのか」を説明するべきなんだ。例えば「i+=1; /* iを増やす */」みたいなコメントはあまり価値がないけど、「ループの途中でiを増やすのは、次の値を見てスワップの可能性を探るため」っていうコメントはもっと役立つよ。コメントを書くときは、まるでおじいちゃんやおばあちゃんにコードを説明しているみたいに、物語調で書くといいよ。そうすると理解しやすくなるからね。コードはその大半の時間を保守フェーズで過ごすし、その分のコストもかかるから、理解しやすくすればするほど、コストも下がって長持ちするんだ。

個人の衛生についても触れておくべきだね。

ちょっと気になったんだけど、面接、給与交渉、マネジメントとのコミュニケーション、チームのリーダーシップ、キャリアの進展についての情報も含まれてる?大学時代にこれがあればすごく役立ったと思う。

ソフトウェアテストとQAも追加することをお勧めするよ。特にAIやエージェントコーディングが進化して、より良いテストスキルが求められるようになってるから、これには別のコースが必要だと思う。

これは素晴らしいけど、AIの時代には関係ないね。