近年、プログラミングに興味を持つ子供や、習い事として検討している親御さんも多いかと思います。しかし、プログラミングとはかなり幅広い言葉で、できることも多種多様。学校での勉強と違い、明確なカリキュラムも存在しないため、学習しようとしても「じゃあ何から始めればいいの?」と路頭に迷うことも珍しくないでしょう。
そこで、「なんとなくプログラミングに興味があるけれど、具体的に何ができるの?」という人のために提案するアクティビティのリストです。
この記事のターゲット
- 完全に初心者だが、プログラミングに漠然と興味がある
- なんとなくプログラミングに興味があるけれど、なにをしたらいいのかわからない
- 上記のような子供をもつ親御さん
小学生と銘打っていますが、中高生でも十分参考にできると思います。
そもそも小学生にとってプログラミングに取り組むこと自体挑戦的なことなので、この記事における難易度が低いからといって簡単とは限りません。
一方、以下のような方にはマッチしないかもしれません。
- 具体的に作りたいものがはっきりしている人
- それに取り組むと良いでしょう。興味関心があるに越したことはありません。
- 大学生・社会人以降
- この記事の内容は簡単すぎるかもしれません。
選定・評価基準
選定基準として、以下の項目を考慮しています。
- 学習の難易度
- 情報量(解説サイトや書籍などの豊富さ)
- (子供にとっての)学習の楽しさ、飽きにくさ
- 自由な発想を実現できる汎用性
子供の好き嫌いや相性などによって評価が変わることが大いにあるでしょうが、ある程度定量的な評価の目安として5段階の評価を作成しました。評価には私の主観が多分に含まれることをご容赦ください。
HSP (Hot Soup Processor)
項目 | 評価 |
---|---|
難易度 | ★★☆☆☆ |
情報量 | ★★★☆☆ |
訴求力 | ★★★★☆ |
汎用性 | ★★★★☆ |
今「HSP」と検索すると「Highly Sensitive Person」の方がヒットするので、「HSP3」か「Hot Soup Processor」と検索すると出てきます。
HSPはBasicライクなプログラミング言語です。恐らくプログラミング言語の中ではトップレベルに簡単なのが特徴です。
また、HSPプログラミングコンテストが毎年開催されています。小学生の出展も多いので、過去の作品を見てみると何ができるかイメージできるでしょう。
メリット
- かなり初心者のための資料が多い
- エディタにドキュメントが標準装備されているという手厚さ
- アプリケーション作成まで可能な汎用性
- スタンドアローンなサンプルがたくさん
- 日本語に優しい
デメリット
- 本格的なプログラミング言語には機能面、パフォーマンス面で劣る
- 環境構築(インストール)が必要
- Windows以外に優しくない
おすすめポイント
文字列でのプログラミング登竜門に最適。GUI作成の容易さはトップクラス。
GUI系プログラミング言語
項目 | 評価 |
---|---|
難易度 | ★☆☆☆☆ |
情報量 | ★★★☆☆ |
訴求力 | ★★☆☆☆ |
汎用性 | ★★☆☆☆ |
Scratch や Blocky、VISCUIT などといった教育目的のプログラミング言語です。特に低学年の児童向けで、プログラミング教室の教材になっていることも多いようです。
あくまで学習用なので、アプリゃゲームをつくるのは困難でしょう。
メリット
- 恐らく一番簡単で、種類も多い
- すぐ見た目に反映されるので、直観的にわかりやすい
- インストール不要なものが多い
デメリット
- できることは少なく、プログラミング言語と言えるかは微妙
おすすめポイント
アルファベットのタイミングが不要。
AtCoder
項目 | 評価 |
---|---|
難易度 | ★★★★☆ |
情報量 | ★★★☆☆ |
訴求力 | ★☆☆☆☆ |
汎用性 | ★☆☆☆☆ |
AtCoderは競技プログラミングのプラットフォームです。
問題の難易度感としては、以下の記事が参考になるでしょう。コンテストでは、灰色の簡単な問題から難しい問題まであるので、まずは灰色の問題に挑戦すると良いでしょう。
AtCoder Problems のような、穴埋めを可視化できるツールもあります。こつこつ積み立てるのが好きな人に向いているでしょう。
▲ コーディングの雰囲気
メリット
- 正解/不正解が明示されるので、進捗がわかりやすい
- 問題単位で取り組むことができ、短時間で結果を得ることができる
- 情報オリンピックなどのコンテストにつながる
- いろんな言語に挑戦できる
- 他人のコードを閲覧して勉強できる
デメリット
- 小学生向けではない。おそらく中高校生くらいの学力が必要
- 一定以上の難易度の問題には数学的な知識が必要
- 見た目が地味で、低学年の子には飽きやすい
- コンテストに挑戦してレートを得たい場合、初心者向けのコンテスト(AtCoder Beginner Contest)の開催時間が主に土曜日の21:00から22:40で、子供に優しくない
- 必ずテストケースが公開されるとは限らない。自分でデバッグする能力が必要
おすすめポイント
一問解くのにかかる時間の速さ。猛者は1分で正答したり、1行で正答したりできる。
Minecraft (Education Edition)
項目 | 評価 |
---|---|
難易度 | ★☆☆☆☆ |
情報量 | ★☆☆☆☆ |
訴求力 | ★★★★★ |
汎用性 | ★★☆☆☆ |
あまり知られていないのですが、MinecraftにはJava版と統合版のほかにEducation版が存在します。文字通り教育目的のもので、プログラミング学習者向けの機能が搭載されています。
非常に優秀な教育プラットフォームで内容も申し分ないのですが、購入のハードルの高さ、不具合、コンテンツの少なさが気になるところです。
メリット
- Minecraftである
- GUI言語(MakeCode)とPython、Javascriptの相互変換が可能
デメリット
- 教材が少なく、コンテンツの作成も困難
- プログラムを書くより普通にプレイしたほうが早いので、遊んでしまいがち
- 日本語訳が適当で、時折元の英語を推測しないと理解できない場合がある
- インストールが難しい
- 有料(サブスクリプション制で、年ごとに課金される)
- Minecraftの中にしかアクセスできない
- マルチプレイするには同じドメインでアカウントを作らないといけない
おすすめポイント
Minecraftという圧倒的な知名度と訴求力。
Roblox、Unity、Unreal Engine
項目 | 評価 |
---|---|
難易度 | ★★★★☆ |
情報量 | ★★★☆☆ |
訴求力 | ★★★☆☆ |
汎用性 | ★★★☆☆ |
これらはゲーム作成プラットフォームです。子供にとってプログラミングの目的としてゲームを挙げる方は多いので、ゲームを作るという意味で最適でしょう。
ただ、ゲームを作るというのは容易ではありません。ゲーム制作に興味を持つ人が多いこともあり、初学者がゲーム制作に挑戦したものの思うようにいかず挫折するといったケースは少なくありません。具体的に作りたいゲームのイメージや、数カ月以上続けられる継続力が必要になるでしょう。
完全に主観ですが、Roblox < Unity < Unreal Engine の順に本格的で難しいです。
Roblox
比較的最近話題になりつつあるプラットフォームです。他の二つとの相違点は、Robloxはユーザーが作成したゲームを投稿するコミュニティの側面があることです。高クオリティのゲームを作るには向いていないでしょうが、最もゲームを作るハードルは低いでしょう。
Unity
ゲームエンジンといえばまず間違いなく挙がるほどの知名度を誇ります。個人開発のゲームならUnity率はかなり高いように感じます。その分初心者向けの解説記事や動画も沢山あり、比較的学習環境には恵まれています。が、基本的なプログラミング言語の理解が要求されているケースが多いので、この記事の他の例よりは難易度は高いでしょう。
Unreal Engine
非常に綺麗な3Dグラフィックが特徴です。
採用されたゲーム例などを見ると、クオリティが非常に高いことが伺えます。(正直プログラミングの学習には難しすぎると思います)
個人的にはc++のコードにアクセスできるというところに着目しています。
メリット
- ゲームが作れる。商用のゲームがこれらのプラットフォームで制作されることも珍しくない
デメリット
- あくまでゲーム作成が主目的なので、プログラミングの学習には適さない
- ゲームを作成するには、相応の作業量と根性が必要
おすすめポイント
本格的なゲームを作れる。
マイコン系
項目 | 評価 |
---|---|
難易度 | ★★★★☆ |
情報量 | ★☆☆☆☆ |
訴求力 | ★★★★☆ |
汎用性 | ★★★☆☆ |
Arduino や micro:bit、Raspberry Piといったマイコン基板や、ライントレースといったロボット系などのプログラムを作成します。LEGOを動かすシステムもあるとか。
メリット
- 物理的に動くものを作れる
デメリット
- 購入が必須
- プログラム自体は通常言語を使用することも多く難易度が高い
- 基板やロボットが多種多様なので情報が少なく、一人での問題解決は困難
おすすめポイント
実際に動くモノを作れるのは他に代えられない魅力。電子工作や3Dモデリングなど別領域にも発展可能。
通常言語
項目 | 評価 |
---|---|
難易度 | ★★★☆☆ |
情報量 | ★★★★☆ |
訴求力 | ★☆☆☆☆ |
汎用性 | ★★★★★ |
一般的にプログラミングと言われる言語を学習します。
小学生にとってはハードルは高いでしょうが、以下など目的がはっきりしているなどのケースでは下手に回り道するより良い選択肢になるでしょう。
- Webページ、ないしは何かしらのWebサービスを作りたい
- AndroidやiOS向けスマホアプリを作りたい
- 販売可能なソフトウェアを作りたい
- 機械学習や画像処理のような重い処理をやりたい
また、この記事の他の内容でも通常言語の知識が必要になるケースもあります。
ちなみにプログラミング言語にはいろんな種類があり、言語によって難易度は変わります。何が最適かは状況によるでしょうが、初学者ならJavascript、Pythonあたりが無難でしょう。
メリット
- 教材がたくさん。本を買ってもいいし、無料の解説サイトや動画も無数にある
- 将来性が抜群。仕事ができる
デメリット
- 言語そのものの学習は特に面白い訳ではない。理科や算数と同レベル
- 比較的難易度が高い
- 環境構築が必要
おすすめポイント
何でもできる汎用性。この世のアプリもソフトもロボットも大体これでできている。プログラマーになれる。
最後に
ここに記載されているものの他にもプログラミングでできることは無数にあります。これからプログラミングという世界に挑戦する人への一助となれば幸いです。