プログラミング入門(1) 作業分解
講座目標、狙い
- プログラミングで重要なことは「データ構造」と「アルゴリズム」
- データ構造は、得たい結果やアルゴリズムを簡単にするための「データの形」を表す
- 一方、アルゴリズムは「情報を処理する手順」を表す
- この講座では「データ処理の手順」を考えることを学ぶ
- 現実の作業手順を分解したり、まとめたりすることを通じて、作業分解を学ぶ
- また、細かく分けた作業をまとめて、再利用したりすること(構造化プログラミング)の概念も体験を通じて学ぶ
1. イントロ (0:00 – 0:05 [5min])
- 期待を高める説明をする
- 例
- プログラミングの基礎中の基礎を学びます
- プロが最もよく使う道具は「紙とペン」です
- なぜならば、処理手順がわからなければ、1行もかけません
- 今日は「作業分解、作業分析」を学びます
- 作業分解を通じて、現代に必須の「構造化」を学びます
- とにかく、楽しんで学びましょう
2. Good & New (0:05 – 0:10 [5min])
- 良い学習の雰囲気を作る
- Good & New などをする
3. 作業分解1 (0:10 – 0:40 [30min])
ワークについて
- まずは、作業分解をやってみる
- 頭で考えても、良いものは作れない
- 試作品を作って、何度も作り直す
- 作り直すたびに、シンプルでわかりやすい処理手順(特にまとめ方)を作る感覚が大切
- このことから、まずは取り組んでもらう
- 「良い練習課題を考えることも大切」を学ぶ
3.1 説明 (2min)
- 情報処理、論理思考は「3つの手順だけ」
- 順次、条件分岐、繰り返し
- これだけで、全ての処理を記述できるとした
- プログラミングも同じ
- 基本的にこの3つに、あらゆる計算、処理、Webページの表示など
- 表現する
- 作業分解する力 = 3つの処理で記述すること
- 早速やってみましょう
- 例 : お茶を人数分入れる
- 大雑把に処理を書けばOK
- そこから細かくしてみよう
- 人数を把握する
- お湯 * 人数分を沸かす
- お茶 * 人数分を用意する
- ポッドを用意する
- 人数分繰り返す
- 細かくしたり、大雑把にしてみたり、大雑把の仕方を工夫したり
- とにかく、まずはやってみよう
- 課題が簡単なら、課題を変更する
3.2 実行 (15min)
- チーム分けする
- 三人ぐらいが適度な人数
- 紙とペンを用意して、書いてもらう
- 声がけをする
- 大雑把に書いてみる
- 細かくする
- 課題の難しさを調整する
3.3 発表(10min)
- 難しく考えず、学んだこと、発見したこと、感じたことをチームで話し合う
- なんとなく「次やるなら」を考え、発表してもらう
- それをざっくバランに発表する
4. 作業分解2(0:40 – 1:15 [35min])
ワーク概要
- 作業分解に、もう一度取り組むことで、より深い理解を促す
- 繰り返す際に、よりよい作業分解をするためのコツを意識する
- それによって、構造化プログラミングに近づく
4.1 説明 (5min)
- 作業分解を行う
- 4つのポイントを意識する
- 大きな作業を作り、それぞれを徐々に小さく分解する
- 理解しやすい、明確で、シンプルな手順にする
- 良い「まとめ」を作る
- 様々な状況の変化(人数が増える、減るなど)に対応できるようにする
- 進行方向について
- 実行、休憩・振り返り、実行、発表
4.2 実行 (7min)
- 実行してもらう
- ファシリテーション
- ポイントを意識すること
- まずは、作業分解すること
- 議論しすぎるより、試作品を作ること
- テーマを柔軟に変更する(難しくしたり、簡単にしたり)
4.3 休憩・振り返り(3min)
- チームで振り返りをする
- ここまでのステップを振り返って、次の10minの取り組み方を考える
- どのように進めるか?を話し合って、再びワークに入る
4.4 実行(10min)
- 実行してもらう
4.5. 発表(10min)
- 各チームで話し合う
- 実際の結果(作ったものを自分たちで評価する)
- よかった点
- 改善点
- 予期せぬこと
- 気づき、学び
- 次やるなら
- 発表する
5. まとめ (1:20 – 1:30 [10min])
5.1 説明 (3min)
- 作業分解をしっかりしていくと、同じ作業が出てくる
- 文字を数えるとか、文字を大きすするなど
- その作業は、再利用といって、別のところで使ったりする
- しっかり作業分解ができれば、良いプログラムが作れる
- また、良い作業分解を学ぶ意識があれば、プロのソースコードから学べる
- これから是非、チームで「作業分解」遊びをしてほしい
- また、今回触れていない「データ構造」についても、アンテナを立てて学んでみよう
- 今日、学んだことを発表しよう
5.2 発表(7min)
- 今日学んだこと
- これから、どのようなことを学ぶのか?