前回、コンセプト作りで「使えるプログラミングスキルを楽しく身に付け、スキルアップできるサイト」(仮)と決めました。
今週は、どのようなプログラミング学習サイトにするかを考えてみました。
コンセプトに合ったサイトにするための洗い出し
最初に、どのようにしたら、楽しめるのか、どうすれば、スキルアップできるかを考えてみした。
楽しめることについて洗い出してみると、次のような感じになりました。
- 成長していることが実感できる
- 作りたいもの、興味があるものを自分自身で設計から開発できる
- ゲーム感覚で学べることができる
- 目標が明確になる
スキルアップに繋がることについて洗い出してみると、次のような感じになりました。
- 既存の開発されたソースコードを解読する
- 自身で考えて開発する
- 間違っている点、改善点を正してもらう
- 開発手法や設計の考え方を覚える
洗い出したものを整理する
洗い出した項目に対して、どのようにしたら実現できるかを考えました。
成長していることが実感できる
自分で考えてソフトを完成させることで達成感を味わってもらうことや、解けなかった問題が理解できるようになることで成長が実感できるのかなと思います。
この点は、学習を進めるごとに問題を解いてもらって、自身のレベルがどれくらいなのかを可視化できるようにするとか、なるべく、自分自身で考えて、設計や実装をできるような流れで学習を進めるようなサイトにするなどがよいかなと思ったりしています。
作りたいもの、興味があるものを自分自身で設計から開発できる
作りたいものや、興味のあるものはひとそれぞれ違うので、興味があるものが作れるようになるための題材を考えるのが大変かもしれません。
いろんな題材を用意して、興味のあるものを選択してもらうのもありかもしれませんが、最初からいくつも題材を用意できないと思うので、実務で役立ちそうなものや、スキルアップに繋がりそうな題材が現実的かなと思いますが、もう少し考えてみます。
自分で設計から実装までを行うのは、作ったものをどのように管理するのかを考えないといけないのですが、Git Hubを使用するのがよいのかなと思っています。
Git Hubでは、作ってもらったものを参照できるようにして、学習サイトのほうでは、仕様やヒントなどを提示したり、進捗管理などしてサポートしていくようなやり方もありかなと考えています。
ゲーム感覚で学べることができる
ゲーム感覚で勉強できてスキルアップに繋がるのであれば、理想的ではありますが、実務で通用するプログラミングスキルが身につくようなものができるのか、よいアイデアがないので今のところ難しそうです。
問題を解いてもらい、レベルアップするとか、アイテムをゲットできるとか、そういったものなら可能かもしれませんが、自分で設計から実装まで行うことを学習サイトのメインとする場合は、ゲーム感覚で学習できるようなものにするのは難しいかなと思っています。
今考えてるのは、問題を解いたり、ほかの方の設計書、ソースコードをレビューしたりすることで、ポイントを貯めて、ランクアップするや、アイテムをゲットできるなど、そういった感じなら面白いかなと考えています。
ただ、難しいので、もう少し考えてみたいと思います。
目標が明確になる
目標が明確になっているとモチベーションも保ちやすくなるので、目標に向かって、最後まで挫折しないでプログラムを完成させることができるのではないかと考えています。
学習サイトで学ぶアプリなどの完成を目指すということが目標になるかもしれませんが、個々で目標が異なると思うので、あらかじめ、受講する目的を登録して、サイトにログインしたときに常に表示できるようにするなどがよいかもしれませんね。
既存の開発されたソースコードを解読する
オープンソースを解読することで、コーディングに活かせることができ、スキルアップに繋がると思っていますが、どのように学習サイトに取り入れたらよいか、難しいです。
できれば、実績のあるオープンソースを解読することが理想ではありますが、学習サイトの題材にするサンプルのソースコードを解読してもらうとか、ほかの人のレビューをするなどが現実的かなと考えていますが、これだと、あまりスキルアップにならない気もしています。
よいアイデアが浮かぶまでは、一旦、サンプルを参考にしてもったり、レビューをしてもらうようにする感じで考えてみます。
自身で考えて開発する
「作りたいもの、興味があるものを自分自身で設計から開発できる」と同じようなことなのですが、なるべく自分自身で考えて設計や実装ができるといいなと思っています。
学習サイトでは、仕様を用意して、それに従って自分自身で作成してもらうように誘導していくようなことを考えています。
ただ、仕様を提示するのみでは、人によって設計の考え方などが違うため、もし間違った考え方で進んでしまうと、軌道修正するのが大変だし、どういった設計をしているのかが把握できなくなるので、仕様のほかに、ソフトウェアの構想や、構造なども細かく提示できるようにすることを考えています。
また、なるべく細かく課題を出せるように考えています。そうすることで、何をどのように進めればよいかがわからなくなると思うので、やることを明確にできるような構成にしようと思います。
間違っている点、改善点を正してもらう
自分自身で作るのみでは、完成することができたとしても、正しい設計なのかがわからず、スキルアップには繋がりにくいので、ユーザーが作ったものを第三者にレビューしてもらえるようにすることを考えています。
ただし、すべて私がレビューしても、人数が増えるとできなくなるので、受講生同士でレビューしてもらうとよいのかなと思っています。ただ、間違った指摘も出てくるかと思いますので、そのあたりは、どうしたらよいか、もう少し考えてみます。
開発手法や設計の考え方を覚える
どうすれば、メンテナンスのしやすい設計ができるのか、どのようにしたらバグを作りこまない設計ができるのかなど、開発の過程で気を付けるべき点があると思います。
現場によって、開発のやり方は異なるため、なかなか経験を積まないとそういった点は見えてこないかもしれませんが、知識として、頭の片隅にでもあると、実務で役立つかなと思うので、開発手法や設計の考え方を覚えるだけでもスキルアップに繋がるのかなと考えています。
設計の考え方などは、サンプルプログラムを解説することで、なぜそのような設計、実装にしたのかをなるべく解説していこうと思います。
考え方は、サンプルで設計書やソースコードを作るうえで、なぜそのような設計、実装にしたかをなるべく解説していこうと思います。
そして、その他にどういった考え方、開発スタイルがあるのかをコラムみたいな感じで紹介するのがよいのかなと考えてみました。
今週、どのようなプログラミング学習サイトを作ろうか、いろいろ考えましたが、なかなか纏まらないため、もう少し考えてみたいと思います。
今週はここまでとします。
次週は、もう少し洗い出した内容をまとめていきたいと思います。
なにかご意見、ご要望等ありましたら、コメントいただけると幸いです。