プログラミングは判断能力を鍛える学習
多種多様な場面に対応できる考え方を広めよう
「プログラミング」と聞くと皆様はどのようなイメージを抱きますか?「難しい」「知識が必要」「俺(私)にはできない」と思うひとが多いと思われます。コンピュータのプログラミング言語で考えると、皆様が考えるイメージに該当しますので難しさは出てきます。しかし、今は子どものころからコンピュータに親しみを持ち、コンピュータのマウスやiPadなどを活用して簡単にプログラミングができるように進化しています。キーボードでプログラミング言語をカタカタ入力して勉強する必要性が減っています。
誤解を生まないように補足説明をすると、本格的にプログラムを組むには、プログラミング言語を用いてキーボード等によって文字入力する必要があります。プログラムを組む際に用いるテキストエディタ(文字入力するアプリケーション)によっては、効率よく入力できるように補完機能(文字入力の手助け機能)が付いています。
そもそもプログラミングって何?
プログラミングとは、携帯電話やパソコンなどで使うプログラム(アプリケーションやソフトウェアとも言う)を動かす仕組み作りです。プログラミングは単に「ボタンを押したら動く」「入力情報を送信する」などだけではなく、必要事項が入力されていなかったらエラーを表示させるなど、起こりえる問題に対して対処するよう仕組みを構築する必要があります。
携帯電話がスマートフォンへ変わり、アプリストアなどから希望するアプリケーション(ソフトウェア)をダウンロードし、端末へインストールして活用する時代へ変わりました。
小学生から大人まで幅広く対応
アジャストシステムのプログラミング教室は幅広い年齢層を対象としています。本格的なプログラミング学習はもちろん、義務教育で始まったプログラミング学習にも対応。従来のキーボード入力でプログラムを作る学習をするか、ボタンを選ぶなどの直感的な操作でプログラムを作る学習をするか、お客様が学習方法を選ぶことができるようになっています。
マウスなどでプログラミングをする際は、直感的にプログラミングができるアプリケーションを使っています。使い手が「ボタンを押す」などの操作で「10回繰り返す」のひな形を入力し、繰り返す回数を「5回」などに修正してプログラムを組み進めます。使い手の操作としては簡単ですが、操作の裏ではアプリケーションがエディタに適切なコードを自動入力します。使い手はコード入力の手間を省いて簡単にプログラミングをしているわけです。
義務教育の需要に対応
2020年度から小学校で論理的思考の学習が始まりました。小学校・中学校・高校でプログラミング教育が必修化されました。学習目的は「もし天候が快晴または曇りならば、運動会を実施する。天候が雨ならば、運動会実施は来週に延期する」などの条件判断や思考を育むためです。プログラミングは先に記述した運動会の開催のような、条件分岐および処理ができます。コンピュータの普及により、IT人材の育成を行うねらいが含まれています。プログラミングの学習の中にICT(情報通信技術)の活用を含めていますので、2つのことが並行して学習できます。そのため、論理的思考の教育にプログラミングが注目されています。
プログラミング教育の必修化に伴い、小さなお子様を持つ保護者の方でキッズ・小学生向けのプログラミング教室に通わせたいと思っている方は多いと言われております。あるいはお子様が「プログラミングの勉強をしたい」「コンピュータの勉強をしたい」などと話をしているかもしれません。
コンピュータに親しみを持てるよう分かりやすく
保護者様は「子どもにプログラミングの勉強をさせたい」「子どものお願いに応えてあげたい」と思っていることでしょう。でも、ITに詳しくない保護者の方はプログラミング教室と言っても充分な知識がないため、数あるITスクールの中からプログラミング教室選びに迷われている方も多数いらっしゃるのではないでしょうか。弊社はお客様に理解してもらうことに重点を置いており、専門用語を少なくし、分かりやすい説明を心がけております。コンピュータに親しみを持てるよう、努力いたします。
本格的なプログラミング学習の需要にも対応
最小限必要な環境はテキストエディタ
プログラミングは「テキストエディタ(略称:エディタ)」または「統合開発環境(IDE)」を使用して構文(コード)入力を進めます。統合開発環境はエディタに機械語変換など多彩な機能を追加したアプリケーションです。学習するプログラミング言語により必要な環境(アプリケーション等)は異なるため一概には言えませんが、最小限エディタがあればプログラミングはできます。

「テキストエディタ」を連想できない方がいると思うので補足しますと、Windowsで言うアクセサリの「メモ帳」がテキストエディタに該当します。メモ帳はプログラミング言語によっては不要な機能が機能がついているため、プログラミングにメモ帳を使用することはお薦めしません。Windows10では改良がされました。
エディタは文字入力専用なので、太字や下線などの装飾はできません。文字の大きさや色、字体などの変更はエディタで一括設定になります。エディタによっては「コード中のメモ書きは灰色」など作り手が見やすいように設定されていたり、使い手が個別設定変更できるエディタもあります。
有名なエディタとしてはサクラエディタやBrackets、秀丸エディタ、Notepad++、Vim、Emacs、Sublime Textなどがあります。
余談になりますが、ExcelやCalcなどの表計算ソフトで作成したファイルを保存する際に、どの表計算ソフトでも開ける互換性の高い「CSV形式」という保存方法があります。CSVは「Comma Separated Values」の略で、各項目がカンマ(,)で区切られた文字列の集合体です。CSVファイルは表計算ソフトで開いて編集できますが、実態としてはエディタで作成するようなテキスト形式のファイルとして保存されています。そのため、セルの結合や装飾、計算式、画像などは保存できません。
コンパイラ方式で必要な統合開発環境(IDE)
統合開発環境はシステム開発に必要なエディタ、変換(コンパイル)、不具合修正(デバッガ)の3つの機能が1セットになった統合型のアプリケーションです。JavaやCなどの多数言語に対応しています。機能追加でインタプリタ方式のPHPやPythonなどにも対応できるものがあります。
コンパイラ方式のJavaやCなどのプログラミング言語の記述は人間が認識・解読・入力できるためのものです。コンピュータはエディタでプログラミングコードを記述しただけではプログラムが機能しません。コンピュータがコンパイラ方式のプログラミング言語を処理できるようにするには、プログラミングコードをコンピュータが処理できるように変換(コンパイル)する必要があります。プログラミングコードはコンパイルすることにより、コンピュータが人間の記述した指示書を理解できるようになり、円滑に指示通り処理ができるようになります。
有名な統合開発環境(IDE)としてはEclipse、Visual Studio Code、NetBeans、Xcode、IntelliJ IDEA、Unity、Android Studioなどがあります。
インタプリタ方式とコンパイラ方式
プログラミング言語を分類に分けると大きく2種類になります。
即時に処理を実行するインタプリタ方式
1つはインタプリタ方式。エディタに記述した言語をそのままコンピュータが1行ずつ読み取り、コンピュータがその都度処理できる機械語へ変換します。身近なところで例えると、Webページや人工知能(AI)などが該当します。
一定の間隔や任意の時に蓄積した処理をまとめて実行するコンパイラ方式
もう1つはコンパイラ方式。エディタに記述した言語を、最初にコンピュータが処理できる機械語へ一括変換し、それからコンピュータに読み取らせます。身近なところで例えると、MacOS Xやゲームソフトなどが該当します。ちなみに、コンパイラはエンジニア等が記述したソースコードを機械語に変換するコンピュータプログラムのことで、コンパイルはプログラミング言語で記述されたプログラムコードを機械語へ変換することです。言葉は似ていますが、意味が異なります。
少々例外ではありますが、プログラミング言語「Java」はインタプリタ方式とコンパイラ方式の中間に位置します。Javaは「動作環境を選ばない」という特徴を持っており、コンピュータに「Java仮想マシン」のプログラムが入っていれば実行できます。
プログラミング対応言語は多彩
弊社代表の渡邉はプログラマとしてシステム開発経験があります。ゆえにプログラミングに必要な言語は多数対応しています。言語の仕様が変わっており、即座に対応できない場合がありますが、調べて対応できます。
- Java
- C
- Ruby
- Python
- PHP
- HTML
HTML言語はWebページを制作する際に必要な記述構文です。正確には「プログラミング言語」には含まれず、「マークアップ言語」に含まれます。ブログやSNS等の構築でPHPなどが必要ですが、単体では機能できません。PHPはHTMLと併せて構文を記述できる必要があります。
プログラミング言語は日進月歩で、日々変わっています。同じプログラミング言語でも、バージョンによって仕様が異なる場合があります。バージョンアップしたことで機能が追加されることがあれば、機能の使い方や考え方が変わったり、以前は使えた記述が廃止されることもあります。また、昔からある言語がれば、新しい言語が登場することもあります。現役のシステム開発者であれば最新環境に即座に対応できると思いますが、それでも開発者によって対応できる言語は異なります。なぜならプログラミング言語は数多くあるからです。プログラマでも普段使っている言語は即座に対応できても、以前学習したけれど使っていない言語だと環境が変わっていて対応できないことがあります。
プログラミングコードは美しく
「プログラミングに求められるのは技術力」とイメージしている方が多いと思います。「簡潔に高度な処理が組めればいい」と思われているようです。確かにコンピュータの世界では技術力が求められるのは事実です。
弊社としましてはプログラムの中身はもちろんですが、見た目にも意識しています。「見た人が見やすく、分かりやすいプログラミングコードを」を心がけています。「プログラミングコード」を単に「コード」と言うことがあります。独り単独でコード入力するなら見た目は気にしなくてもいいかもしれません。でも、他者と協力して作ったり、情報を他者に引き継いだりと、制作者以外の者がコードを見る場合があります。他者がコードを見た際に、コードがゴチャゴチャして見づらかったり、1行の文字数が数百字あったり、変数名の意味が分からなかったり、コードの始まりと終わりが分からなかったり(例:{ ~})、プログラムが正常に作動しなかったり、コードの内容が理解しづらかったりしたら、不便さを感じます。コードが見にくい反面、ファイル容量が多少軽くなることはあります。
class month {public static void main ( String[] args ) {int a = 30; // The value of days
in a month.
String b = "1ヵ月は" + a + "日です。";
// Register the character string in the variable. Combine strings and variables.System.out.println ( a ); // Output of variables.}
}
上記に「Java」というプログラミング言語を用いて、「Javaの悪いコード記述例」を載せました。ご覧いただいたお客様はいかがお思いですか?人によっては「プログラミングできないから、こんなものを見ても分からないよ!」と思うかもしれません。でも、プログラミング言語の内容は分からなくても、「文章の見やすさ」の判断はできるかと思います。「文章の見やすさ」を基準にして上記のコードを再度ご覧いただくと、いかがでしょうか。
「冒頭から余白が空き過ぎている」「文章が長い」「体裁が悪い」など様々なご意見があるかと思います。誰が見ても違和感を感じる記述は、エンジニアやプログラマが見たら更に大変です。なぜならエンジニアやプログラマは記述内容の理解・把握し、情報の活用・出力先などを読み取る必要があるためです。
コードの記述が悪いと不具合発生へ
変数名が意味不明
int a = 30;
String b = "1ヵ月は" + a + "日です。";
System.out.println ( b );
変数名とは「入力された値が何を意味するものか」を表す代名詞のようなものです(意味を持たせない場合があります)。上記のような変数名「a」と「b」はそれぞれ何を意味するものか分かりません。「aは30なんだな」と思っても、それが何を意味するのか想像できません。ほんの数行の簡単なプログラムでも、変数名を用いると、それが何を意味し、どのように活用しているのか分かりやすくなります。もちろん、膨大なプログラムとなると変数名は重要となります。
覚え書きや復元に有効な「コメントアウト」
実は「Javaの悪いコード記述例」は不具合を起こす記述となっています。コードを記述する際に、「この部分は何に使うのか」などの覚え書きを記述することがあります。「コメントアウト」と言い、「//」などの後に記述された1行分の内容はプログラム実行には反映させない(無効化)ことができます。コメントアウトは単に覚え書きで記述する場合と、コードの記述書き換え後に不具合が生じたら、すぐに元に戻せるように記述を残す場合があります。
コメントアウトが途中で終了している
// The value of days
in a month.
上記は1行目のコメント「// The value of days in a month.」が途中で改行されているため、コンピュータは2行目の「in a month.」を実行指示と解釈して読み込んで実行しようとします。実際には実行プログラムのコードとして記述していないため、エラーとなってしまいます。
コメントアウトの中にプログラムコードが記述されている
// Register the character ~ variables.System.out.println ( month ); // Output of variables.}
4行目のコメント「// Register the character string in the variable. Combine strings and variables.System.out.println ( month ); // Output of variables.}」に至っては、記述ミスが2点あります。
System.out.println ( month );
記述ミス1点目。上記の記述は2行目に書かれた「String month = “1ヵ月は” + days + “日です。”;」を画面に出力するコードです。すでに記載した通り、「コメントアウトは『//』などの後に記述された1行分」ですから、画面に出力する上記のコードが無効化されてしまい、画面に出力させることができません。
// Output of variables.}
記述ミス2点目。実はこれも1点目同様のコメントアウトによる不具合です。コードを記述する際は「始まり」と「終わり」を記述する必要があります。例のJavaの場合、始まりは「{」で、終わりは「}」など、必ず「{ ~ }」「( ~ )」のように囲む必要があります。終わりを示す「}」がコメントアウトにより無効化しているため、コンピュータはプログラムの終了が判断できず、不具合を起こします。
コードの美しさはコンピュータにも人間にも優しい
変数名と値が連想しやすかったり、内容が変わるところで改行したり、1行100字以内にしたり、コメントアウトをしてメモを記載したりして、短時間で理解できるようにします。また、コードの始まりと終わりを一区切りとして、中身はタブを使って字送りして整形すると、見やすくなります。
class month {
public static void main ( String[] args ) {
int days = 30; // The value of days in a month.
String month = "1ヵ月は" + days + "日です。"; // Register the character string in the variable. Combine strings and variables.
System.out.println ( month ); // Output of variables.
}
}
弊社プログラミング学習教材
小学生向け球体型プログラミングロボット「Sphero(スフィロ)」
アジャストシステムでは小学校教育に先駆けて、ロボットプログラミング講座を始めました。球体型プログラミングロボット「Sphero」は球体型と言う通り、「ボールロボット」と言えます。パソコンなどの端末を用いてSpheroに発色やジャンプ、回転などのプログラムを組み込むことができます(対応したアプリケーションが必要です)。自分の思い通りにロボットを動かせたときの仕組み作りの達成感には「やりがい」を覚えることでしょう。
端末からスフィロを操作するには無線通信のBluetoothが必要です。Spheroを操作していて、Spheroが壁などに衝突すると、端末から操作する方向とは違う方向へ進む場合があります。Spheroが意図した方向に動かすには、方向のコントローラーで調整する必要があります。
遊びとプログラミングを組み合わせ、楽しみながらプログラミングが身に着く『Sphero』は、2013年9月、アメリカで誕生いたしました。iPhoneやアンドロイドのスマートフォンやiPadなどのタブレットに対応し、そのスマホを使ってラジコンのようにロボットを操作できるため、すぐに世界中で大ヒットとなりました。今では世界中の教育現場で『Sphero』を使用したプログラミング教育が行われております。
現在は様々なバージョンで発売されており、初代「Sphero2.0」「SPRK+」の他、スターウォーズとのコラボ商品も人気があります。 価格もそれによって違っておりますので、お好きなタイプを選ぶといいですね。プログラミングロボット『Sphero』を購入しても、ご自身でお子さまに教えるのが不安な保護者の方は、プログラミング教室をご利用ください。
プログラミングロボット『Sphero』を使って楽しみながらロボットプログラムを学んでいきます。プログラミングが初めての小学生にも優しく指導いたしますのでご安心ください。
プログラミング教育用に開発された「Scratch(スクラッチ)」
2013年リリースのScratch2.0ではインストール不要のウェブアプリケーションとなり、2019年リリースのScratch3.0ではHTML5に対応することでサポート対象にタブレットやスマートフォンが加わりました。対応OSはWindows、Mac、Linux、Raspberry Pi、Android、iPadなどと幅広いため、導入しやすくなっております。
プログラミング教育用に開発されたアプリケーション。主に8歳から16歳までの子どもを対象として開発されていますが、大人も活用することができます。教育用のため、視覚的に認識してボタンを追加するなど、直感的に扱うことができます。例えば、「前へ進む」ボタンを追加して何回進むか、あるいは「回転する」ボタンでは何回繰り返すかなど、回数指定ができます。
立体型ゲームの世界を冒険できる「Minecraft(マインクラフト)」
ゲームソフトとして存在し、遊んでいるお子様がいることでしょう。立体的なゲームの中の自由な世界で冒険をしたり、建物を建てたりして街づくりができますし、戦闘することも可能となっております。遊び方のモード切り替えが可能ですので、自分で街づくりをする創作活動はもちろん、敵と戦う冒険活動もできます。
また、通信環境を活用すれば複数人で環境を共有して遊ぶことができます。サーバにアクセスすることで地球上の仲間たちと繋がり、一緒に楽しむことができます。仲間と協力して遊ぶことができれば、敵同士として競り合うことも可能です。
マインクラフトは単純に遊ぶだけでなく、プログラミング教材としても活用できます。必要な文字列でコンピュータを実行するコマンド操作に対応しています。
その他参考資料のプログラミング教材
ネット上のプログラミング教材「Hour of Code(アワー オブ コード)」
インターネット環境が整っていれば使えるソフトウェアが増えています。また、新型コロナウイルスの感染拡大により普及したクラウドコンピューティング。クラウド化によりパソコンなどの端末にソフトウェアがインストールされていなくてもプログラムを動かすことができます。
Hour of Codeは「Minecraft」や「Scratch」などプログラミング教育に用いられるようなソフトウェアが端末のブラウザ経由で使うことができます。
組み立て式ロボット「Rapiro(ラピロ)」
Rapiroは簡単に言うと電子工作ロボットです。Rapiroはガンダムのように必要な部品を組み立てて完成すれば、既存のプログラムが使えるため、すぐに動かして遊ぶことができます。Rapiroの面白さはそれだけではなく、電子回路基板に端末を接続して設定したり、プログラムを組んだりして自己流に機能を拡張できます。電子回路基板は2種類あり、1つはパソコンやテレビなど既存のままのものと、もう1つはプログラミングなどで動作変更できるものがあります。動作変更できる基板は「マイコン(マイクロコントローラまたはマイクロコンピュータの略称)」と呼ばれる電子チップを搭載しており、その基板を「マイコンボード」と言います。
Rapiroの電子回路基板はマイコンボードを使っています。Rapiroは「Arduino」と言う、マイコンボードと統合開発環境(IDE)の2つが1セットになった電子工作セットに互換性があります。IDEは新規プログラムを作る際に必要となる3つの機能(プログラミングに必要な文字列「コード」入力、コンピュータが動作するようにコードを機械語へ変換、コード不具合修正の補助)を1つのシステムにまとめたものです。Arduino IDEをパソコンなどの端末に入れて、端末とRapiroを接続し、Arduino IDEを起動してもらうとRapiroのプログラムを書き換えることができるようになります。
Rapiroは機能を拡張できます。別売りの数あるLinuxの1つ「Raspberry Pi(略称:ラズパイ)」を搭載することで、外部媒体のカメラをRapiroへ接続すると監視カメラとして活用できます。プログラミングによって高度な処理が可能となります。
プログラミング教育に対応した「KidsRuby(キッズルビィ)」
アプリケーションの名前から分かるように、子ども向けのアプリケーションです。日本人Matzこと、まつもとゆきひろ氏が開発したプログラミング言語「Ruby」を活用した、プログラミング教育用アプリケーションです。「KidsRuby」を活用してプログラミングの学習ができるのはもちろん、学習のサポートをしてくれます。公式サイトは英語ですが、プログラムは日本語に対応しています。ただ、全体的に更新作業が滞っているようです。