募集人数、9名まで
- 約3ヶ月の長期間の学びの場です。全14回のワークショップを開催します。
- ワークショップの開催時間は、毎週水曜日の「10:30 – 12:30」です。
- 開催期間は、09月18日〜12月22日。
- 参加人数は、最大9名とさせていただきます。人数に達し次第、締め切りますので、参加をご希望の方は以下より、お早めにお申し込みください。
プログラミング入門の設計
こんにちは。
toiee Lab 亀田です。
私は、普段は裏方(学習理論の研究、講座設計、ファシリテーター育成、経営)に徹しています。いつも、小難しいことを考えて、抽象的な概念を扱っています。
しかし、現場に出て「一緒に学ぶこと」を疎かにすると、理論は机上の空論になり、独善的になります。大学では、そのような学問をいくつも見て反面教師にしてきました。
そこで、今回、思い切って「チャレンジ」する意味も込めて、「プログラミングの基礎」のスクラムを主催することに致しました。
とても、ワクワクしています。
プログラミング入門に挫折する2つの理由
現在、プログラミングを学ぶための教材が溢れ変えています。オンラインで「講義ビデオ」を見て学ぶ教材も、数えられないぐらいあります。また、ブラウザ上で説明を読んで、コードを書いて、正解・不正解を判定してもらいながら進める eラーニング教材もたくさんあります。
書籍も花盛りです。入門書は、選べないぐらい販売されています。
それにも関わらず、大多数の人が挫折しています。なぜ、挫折してしまうのでしょうか?
実は「教材が悪いわけではなく」、
- 基礎知識
- 学び方
に問題があります。
入門書以前の基礎知識
例えば、「独習シリーズ」と呼ばれるプログラミング言語の入門書があります。それぞれの言語のスペシャリストかつ多数の執筆経験がある著者が担当した「正当な入門書」が、独習PHPです。
内容は丁寧かつ、正確で、詳細です。
他のプログラミング入門書も、同様に「しっかりとした内容」です。どれを取っても、知識に間違いはありません。なぜなら、プログラミング言語は厳密なルールがあり、誰が書籍を書いても、同じ内容になります。
違いは「例え方」だったり、説明する順番や、レイアウト、書面の都合による詳細度です。基本的に内容は、全て同じです。
つまり「どの本でも、好きな本を買えば良い」わけです。
以上のことから、入門書が問題ではなく、入門書以外の知識に、挫折する原因があります。プログラミング言語そのものではなく、プログラミングを行うための「周辺知識」で混乱し、挫折の原因になります。
例えば、PHPという言語の場合、Webサーバー、クライアントという概念を理解する必要があります。さらに、PHP単独で使うことはなく、HTML・CSSと共に使います。さらにややこしいことに、POST、セッション、クッキーなど「Webサーバー関連、通信」に関する知識が必要となります。
PHP入門の書籍では、Web上で動くなんらかのプログラムを作ることを通じて説明します。その説明の中で、次々と新しい概念が出てきます。
例えるなら、英語の発音を覚えている最中に、「アメリカの文化」「アメリカ人の思考パターン」「アメリカ人らしい言い回しの傾向」という高度な知識(将来は必要だが)が混ざりこんでくるようなものです。
お腹いっぱいになりすぎて、記憶力の限界に達して「わからない」となります。
2つの性質の違うものを同時に学ぶと挫折する
では、どうすれば「周辺知識」問題を解決できるでしょうか?2つの方法があります。
- 周辺知識が出てくるたびに「興味を持って、脱線して、調べて」自分のものにしながら進む
- 先に「言語のことだけ」を学び切ってから、その言語特有のことを学ぶ
PHPという言語を例に説明します。例えば、「PHP言語はサーバーサイドで使われる言語です。Webサーバーが呼び出して・・・」と説明があったとします。次にやるべきことは、「サーバーサイドって何?」と疑問を持って検索して、理解します。さらに、「Webサーバーって何?」「そもそもサーバーって何?」と深く掘り下げたりします。
こうやって「周辺知識」を、自分でどんどん調べながら進めると、挫折しづらくなります。ただし、「周辺知識」を手に入れながら「言語そのものを学ぶ」のは難しいです。同時に2つのこと、しかも全く性質の異なるものを学ぶことになります。
では、もう一方の「言語のことだけ」を学び切ってから、PHP言語を学ぶパターンは、どうでしょうか?
プログラミング言語は、どの言語であろうと「共通部分」があります。共通部分を理解してしまえば、どの言語を学ぶのも楽になります。
まともなプログラマーは、複数の言語を知っており、使いこなせます。多い人なら10言語ほどを使えたりします。ところが、新しい言語を学ぶとき、あまり苦労しません。彼らは「共通部分」を理解しているため、言語特有のことだけを追加で学べば使えるのです。
新しいものを2つ同時に学ぶのは難しいです。挫折しやすくなります。おすすめは、まず「言語を横断した、共通部分」を学んでしまうことです。そして「プログラムって、大体こんな感じ」という概要を掴んでしまいます。
それから、言語特有のことを学べば良いです。その際は、おそらく書籍で学んでいけるでしょう。オンラインでゲーム感覚で、その場でコードを入れて、正誤判定されて、進むようなサービスは不要になっているかもしれません。
あるいは、ゲーム感覚で、一歩ずつ進むことに喜びを感じる方は、この手のサービスを活用すれば、スルスルと楽しく学べるようになるはずです。なぜなら、言語の基礎はわかっているからです。
数学で挫折する理由と同じです
次に学び方で問題となるのが「ステップ by ステップ」です。数学に挫折する人が多いですが、この原因も「ステップ by ステップ」です。
あなたも先生か、親に「一つ一つちゃんとやっておかないと、次のものがわからなくなるよ!」と脅されたことがあると思います。
もちろん、これは事実です。何かを学ぼうと思ったら、前提となる知識がなければ学べません。ただし、ステップ by ステップで「1つ1つ完璧に理解しながら」進むのは間違っています。
なぜなら、プログラミング言語に限らず、知識やスキルというのは「1つ1つは、奥が深い」です。完璧ということはできません。また、「必要性」がわかった時、初めて学べることも多いです。
学び方としては、前から順番よりも、
- どんどん次へ次へと進んでみる
- もう一度、前から学んでみる
- 進んだり、戻ったり、脱線したりして学ぶ
という「行ったり来たり」する学びが必要です。
これをもう少し学習理論的に表現すれば
- 全体像(ゲシュタルト)と部分を行き来して、
- それぞれを明確にしていく
ように学ぶことが必要です。
一人で書籍で学んだり、オンラインでゲーム感覚でこなす時、往々にして前から順番に進むことになります。そして、わからないところが出てきて、止まる。次に進むと、もっとわからない。不安になる。不安に耐えきれず、このままやってもダメなんじゃないか?と思って、損失回避のために「学習をストップ」させてしまいます。
実は大切なことは、「とりあえず、最後までやりきる」ことです。
もう一回は、別の書籍や教材を使うといい
ところで「ざっ」とプログラミングの基礎の一通りを理解したら、自分の学習レベルを確認しつつ、基礎をしっかりさせるために「もう一度」最初から学ぶと良いです。あるいは、2、3回繰り返すと良いです。
この時に役立つのが
- 他の教材
- 一緒に学ぶ仲間
です。
オンラインには、大量の入門コースがあります。大抵は無料で試せます。また、書籍も大量にあります。図書館に行けば、無料で借りることができます。既にある程度わかっている知識を、別の説明を読んで確認すると、面白いほどよく理解できます。
ただし、なんだかんだで、一人で学ぶのは退屈で、忍耐力が必要です。そこで「友達と勉強会」を開くと効率的です。プログラマーの世界に入ればわかりますが、いろんなところで勉強会をしています。
各地で開かれているイベントに顔を出すと良いです。プログラミングの先輩、凄腕の人、プロジェクトマネジャー、デザイナーなど、多くの人と友達になれます。また、イベントのスポンサー(場所を貸してくれている企業)や、参加している人事担当者などと出会うことで、就職先が決まったりします(良くある話です)。
上記のような可能性にアクセスするには、「まず、言語に共通の部分」を一気に学ぶことが近道です。ここさえクリアーできれば、あとは独学が可能です。
スクラムなら、絶対に楽しい
今回、プログラミング教育を構築するにあたり「言語の共通部分」を学べる参考書籍を探しました。残念ながら、そのような書籍を見つけることができませんでした。どの書籍も「言語特有の説明」と「プログラミング言語の共通部分」が、ごちゃ混ぜになっています。
その結果、本当に初心者の人には、とても学びづらい状況でした。
そこで今回は「完全にオリジナル」で、言語共通部分の「概念」を一気に学べるワークショップを設計することにしました。
このワークショップでは、あえて「いろんな言語」で、同じことを学びます。例えば、変数という概念を、Javascript、PHP、Ruby、Python、Java などで学びます。いろんな言語で学ぶことで、「概念」は理解しやすくなります。
一つの言語に精通するのは、後でいくらでもできます。まずは、共通部分を学ぶことが大切です。そのような意図で設計しました。
また、ワークショップ(スクラムラーニング)は、チームで協力して学びます。オンラインワークショップだけでなく、Slackで質問、回答大会を行います。それを通じて、たくさんの具体例、説明を通じて、「ああ、そうか!」と納得することが可能になります。
また、一緒に学んだ人とは、スクラム終了後も繋がってられます(ラーニング・コミュニティにご招待します)。卒業生同士で、時間を決め、もう一度基礎を学ぶのも良いでしょう。あるいは、一緒に別の企業が作成したオンラインコースを学んでも良いと思います。
このように「楽しく、初心者の前のレベル」をしっかり学ぶことができるため、「プログラミングをやってみたいけど・・・」という人は、是非参加してください。
以下がカリキュラムになります。
ワークショップの内容一覧
1. Hello World!!
- プログラムとは?
- 機械語、コード
- コンパイル、インタプリタ
- 言語が色々ある理由
- いろんな言語
- いろんな言語でHello
- 記憶力の問題
2. 学び方1 : Teach Others
- Hello World のいろんなものを行う
- 具体例をたくさん知る
- 自分でまとめる
- 人に教えるつもりで
- ノートを作る、発信する
- 調べまくる、記録する
3. 学び方2 : ルールを自分のものにする
- ルールの3つの段階
- よくわからないけど、こういうものとして覚える
- こう理解しておけば大丈夫
- 裏の仕組み、理由、思想がわかっている
- 必要に応じて理解度を調整する
- 実際に、ルールを理解することをやってみる
- 変数、代入数の変換など
4. テキスト出力
- 様々な言語でやってみる
- デバッグに使えるものをやってみる
- 文字列出力を色々と試す
- エスケープシーケンスなども理解する
- 改行、タブなど
5. 変数
- 宣言、代入、型、計算
- いろんな言語で比較する
- 代入を比較する
- 型を知る
- 演算をやってみる(数値、文字)
6. 配列
- 宣言、代入、型、アクセス、計算
- 多次元配列
- いろんな言語で比較する
- 並べ替え
7. 判定、繰り返し
- 論理式、判定の種類
- 繰り返し処理
8. 関数を使う
- 関数のメンタルモデル
- いろんな関数を使ってみる
- 関数を組み合わせてみる
- 組み込み関数を調べてみる
- ライブラリについて
- ユーザー定義関数
9. 関数を作る
- 変数のスコープ
- 参照渡し、値渡し
- 定義の仕方
- 使い方
- 便利な使い方
10. オブジェクト指向(1)
- クラスのメンタルモデル
- インスタンスとクラス
- 組み込みクラスを使う
11. オブジェクト指向(2)
- クラスを自分で作ってみる
- クラスを継承して、拡張する
12. デザインパターン入門
- シングルトン
- ファクトリー
- わかりやすいものを何かやる
- 自分で学ぶ方法
13. フレームワーク入門
- デザインパターン
- MVCモデル
- 作成する方法
- 自分で学ぶ方法
補足ワークショップ
- Visual Studio Code
- Local by Flywheel
- Homebrew
- ターミナル
- ファイル構造
- Progateで学ぶ方法
スクラムの詳細について
内容
スクラムは、5つのサービスで成り立っています。
- オンライン・ワークショップ(週1回 2時間)
- ワークショップ録画
- オンライン・自習室(随時、参加者が開くこともあります)
- オンライン・お茶会(ワイワイ話す、情報交換のお楽しみ会)
- Slackでコミュニティラーニング
ワークショップと録画
このスクラムは「オンライン」でワークショップを開きます。遠く離れていても、海外からでも参加可能です。必要なものは「パソコン」のみです。
プログラミングの基礎を学ぶ環境は、最初は「オンラインのツール」を利用します。開発環境を作らなくても、すぐに楽しめます。しばらく進んで、慣れてきたら「開発環境」を作ります。
こちらは別途、追加ワークショップとして開催します。
ワークショップは週1回となります。毎回のワークショップは、2時間構成です。2時間のうち、90分がワークショップです。残りの30分は「メタ探求型学習のための時間」になります。
これは、toiee Lab特有の仕組みです。普段の生活、仕事の中で「いかに学ぶか?」というアイデアを出して、実際に取り組んでみて、改善し続けることを支援します。このプロセスを行うことで、ワークショップ以外でも、独学を続けて学べるようになります。
オンライン・自習室とお茶会
こちらは、適当な時間を募集して開催します。参加できなくても、録画をシェアします。
自習室では「復習会」や「開発環境の構築」や「コマンド」や「ファイル構造」などを行う予定です。
お茶会は、隔週に1回のペースで開催します。ここでは、単に仲良くなる、楽しく情報交換するなどを行います。全ては録画してシェアします。
※ 録画は倍速再生できるようにしてお渡ししますので、時間短縮できます
Slackコミュニティで学ぶ
なお、週に1回のワークショップだけでは学習時間が足りません。ご自身の空いている時間を利用してもらうことが必要です。ただし、独学していると混乱したりします。そんな時に便利に使えるのが「コミュニティ」です。
私も参加するコミュニティーで気軽に質問をしてください。私は、既に理解した人が説明、フォローします。もし、あなたが答えられそうな質問がきたら、是非答えてください。人に教える時に、よく学びます。
またSlack上では、「自分なりに学んだこと」や「よく学べた方法」もシェアしていきます。これらを通じて「学ぶヒント」をたくさん得て、どんどん学ぶレベルをアップさせていきます。
とにかくコミュニティーで楽しく学ぶことを目指します。
ワークショップを開催するファシリテーター
スクラム参加者の声
スクラムで良いなと思うことは、自分のペースで学習できること、と学習方法の選択肢がたくさんあること(オーディオ、ビデオ、オンラインワークショップ、オフライン、質問したいときはslackや個別メールも可能)。個人的には、色んな職業&環境&得意分野の方に出会えることもとても面白いです。
自分のペースで学習すること、独学を続けることの難しさは私自身たくさんありましたが(モチベーションが続かない、つまづいた時聞ける人がいない)スクラムではさまざまなレベルの人が集まって一緒に学ぶので、独学でもありチーム学習でもあり、続けていける要素が詰まってるなと感じています。
私は年度末まで未就園児が家にいたので時間や場所を選ばないオーディオやオンラインワークショップは助かりました。オンラインも時間が合わなければ後からアーカイブを見る事が出来るのも助かりました。
時間がなかなかとれないのでオンラインワークはとても助かります。オンラインでしか見たことのない方もでも、同じ方向をめざしているという仲間意識を感じることができるのは嬉しいですね。くじけそうになったときに励ましてもらえる環境があるのが、継続できている理由だと思います。
また、情報過多の時代でどれを信用していいのかわからないことが多いのですが、スクラム内で得た情報は安心できます。わからないときにヘルプを出せるのも嬉しいです。
スクラムの特徴だと思うのですが、学習ファシリテーターの方のワークショップは「教えてもらう授業」よりも自立心が芽生えるような気がします。最近では、ワークショップ以前に自分で調べてみたり、復習として自分で学んだ事をまとめる習慣ができてきたように思います。
オマケですが、私がスクラムに参加している様子を主人(資格取得のための勉強中)が見て、ちょっとやる気が出ている気がします(笑)
スクラムで一番気に入っているのは、「学習が続けやすい環境」が提供される点です。
これまで効率の良い学習法を探して、あれこれ試行錯誤を続けてきました。 結果、「魔法のような勉強法など存在せず、地道にコツコツとやるしかない。でも逆にやりさえすれば、誰でもやったぶんはできるようになる」と今は考えています。
でも、この「地道にコツコツ」がなかなか困難で、ここを気合や根性論だけで乗り切れた試しがありません。そんな難しい学習の継続をサポートするため、時間的にも体力的にも精神的にも負担が少ない学びの環境を提供してくれているのが、スクラムだと思っています。
具体的には、「オンラインで受講できる 」「音声教材が多い」「 チームで行う実習が多い」「仲間との交流が多い」 あたりが重要です。 Scrumの教材やほとんどの実習はネットで入手・参加できるため、どこかの教室に通う必要がありません。
スマホにダウンロードして聞ける音声教材も多いので、車を運転しながら、電車に乗りながら、家事をしながら、散歩しながら、寝ながら。でも、ちょっとずつ勉強ができて助かっています。
オンラインでみんなが集まる実習も毎日のように開催されていて、ネット環境さえあれば自宅でも出先からでも参加できます。自分の性格だと、ただの動画視聴のみでは続かないと思いますが、なにぶんライブの実習は他の参加者もいるので、続ける強制力が働きます。
Slackというチャットアプリにみんなが参加してやりとりしているため、他の人の進捗報告を聞いて「自分もやらねば」と刺激を受けることもしばしばです。
という感じの環境のおかげで、楽しく無理なく学びを継続できています。もともとは「プログラミングができるようになったら面白そう」と興味本位で参加したスクラムですが、学びの過程も面白かったため、すでにモトをとっている気分です(笑)。
期間
今回のワークショップは、14週(約3ヶ月)を予定しています。期間は
- 9月18日(水)スタート(第1回目ワークショップ)
- 12月11日(水) 最終日ワークショップ(第13回目)
- 12月22日(日) 終了(追加で1週間のフォロー)
ワークショップの開催日時は、
- 毎週水曜日 10:30 – 12:30
を予定しています。状況に応じて、他の時間でも開催します。繰り返しになりますが、ワークショップは録画します。録画を見て、作業し、わからないこと、不安なことがあれば、Slackでご質問ください。
お茶会、自習勉強会の開催日時は、参加者にアンケートをとり決定します。お茶会は、全部で4回ほどを予定しています。自習勉強会は、亀田主催は6回を予定しています。内容は、周辺知識(開発環境の構築など)です。
参加人数
今回のスクラムは、私(亀田)が現場で情報収集すること、参加者と学び、気づき、学び、発見を得ることが目的です。大勢の方々に、教育サービスとして提供するのではなく、「少人数に限定」させていただきます。
具体的には、参加人数を「9人」だけとさせて頂きます。
参加費用
toiee Lab は「ダイナミック・プライシング」を採用しています。あなたの現在の状況に合わせて、都合の良い価格で参加していただけるように「あなたが価格」を決定できる仕組みです(上限と下限の範囲で決めます)。
また、参加費用は「一括ではなく、分割」となります。今回のスクラムは「3ヶ月」ですので、3回の分割支払いとなります。
支払い方法は、クレジットカード、銀行振込のどちらかお好きな方をお選びいただけます。
なお、返金はありませんが、途中で退会することは可能です。ただし、内容に不満はなく、経済上の理由での退会を希望される場合は、お気軽に、ご相談ください。柔軟に対応させていただきます。
今回の「toiee Lab代表・亀田」かつ「教材設計者」が主催するスペシャルなスクラムとなります。通常のワークショップよりも、柔軟な対応や追加の情報、資料、教材が得られます。
そこで、プレミアムプライスとさせていただきます。
価格は月額(3ヶ月間のみ)、6万円 – 10万円の範囲で、好きな価格をお選びください。
お申し込み
募集は、終了しました
たくさんのお申し込み、ありがとうございました。
良くある質問と回答
Q. ワークショップ全てに参加しなければ、学べませんか?
いいえ、大丈夫です。ワークショップは全て録画します。それらを視聴し、独学することでも学べます。
スクラムでは、忙しくて、ワークショップにほとんど参加できなかった方もいらっしゃます。その方々は、録画を見て、手を動かして、Slackで質問して解決することで学ぶことができています。
Slackと録画を活用するだけでも、学べることは過去で証明済みです。安心してお申し込みください。
Q. 夜の部、土日の部はありますか?
原則、ありません。私ごとになりますが、「三児のパパ」で、妻があまり体調が良くありません。土日は子供達と過ごすため、ワークショップを開催できません。同様に夜も、時間が作れません。
ただし、お茶会は、夜の部を1度は実行する予定です。
ただし、全てではありませんが、私以外のファシリテーターに依頼して「夜」や「土日」を開催することも検討しています。ただし、お約束はできません。ワークショップに参加して、学ぶことをお考えなら、別の機会(私以外)の開催をご検討ください。
なお、前述の通り「ワークショップ録画」と「Slackだけ」でも学べると思います。むしろ、そのような学び方で学べるかたのデータが欲しいので、チャレンジしてもらって構いません。可能な限りのサポートは致します。
Q. アプリを作れるようになりますか?
このワークショップだけではなりません。アプリを作るには、特定の言語を学ぶ必要があります。例えば、iOSアプリであれば、Swift4を学ぶ必要があります。Swiftの書籍や、オンラインコースは、多々あります。それらから学ぶことができるようになるのが、今回のワークショップです。
ちなみに、iOSアプリの開発情報については、Appleが無料の学校向けの教材を配布しています(iTunes U)。これらをダウンロードして、順番に試すことで、一通りのことが可能です。
また基礎がわかれば、自分が作りたいアプリと似ている「オープンソースプロジェクト」を探します。プロ中のプロが作ったアプリの中身を学びながら、改良して、独自のアプリを作ることができます。
このような学び方が、「基礎の後に行うこと」です。
そのような知識へのアクセスできる切符をお渡しするのが、今回のワークショップの趣旨です。
Q. 言語特有のワークショップの開催はありますか?
はい、予定しています。toiee Labチーム内で必要とすることもあり、以下のものを予定しています。
- PHP言語入門
- WordPress開発基礎
- WordPressテーマ開発
- WordPressプラグイン開発
その他については、プログラマーを toiee Labチームに誘って、随時設計、提供していこうと考えています。
toiee Lab 代表・亀田がワークショップや、Slackコミュニティの運営を行います。なお、私だけでなくtoiee Labファシリテーターがサポートに入り、複数人体制で行います(ワークショップは、私(亀田)が開きます)。
私のプログラミング歴を簡単に紹介しておくと、
私はプロではありません(プログラミングで収入を得ていない)。必要だから、人がいないからプログラムを書いているようなものです。ですので、学ぶ時間を最小にし、必要十分なものだけ作って終わりにしています。
ただし、プロでないのに複数の言語を使え、8年ぶりに復帰しても、すぐに(1ヶ月ほど)何かを構築できるレベルに学べているので、「基礎を教えるにことに十分な実績」はあると思います。
もし、時間があったら・・・iOSアプリ作りたいですね!でも、それよりは、子供向けのプログラミングワークショップや、学校の先生向けを作りたいです。もし、今回の基礎を受けられて、「子供向け」「先生向け」のワークショップを開く側に回りたい人がいらしたら、是非、ご参加ください。そして、お声がけください(一緒にやりましょう!)