個別指導塾、学習塾のヒーローズ。植田(名古屋市天白区)、赤池(日進市)の口コミで評判!成績が上がる勉強方法が身につく!振替、自習も便利!
// 条件1に該当しない場合の処理

プログラミング言語

【高校生】数式や化学式をキレイに入力する方法

塾長です。

今や日本の学校教育は「生徒1人に1台のコンピューター」を使って授業を進めることが普通になりました。
小学生から大学生まで、授業で何かしらコンピューターを活用するようになっています。

高校で進む授業のITS化

特に高校でコンピューターの活用が急速に進んでいますね。

課題やレポート、補講教材のやり取り、病欠の生徒に補償する録画授業などなど、多種多様な活用が実践されています。

高解像度の画面と高精細なスタイラスペンを使い、画面上に数式を書き込んで問題を解いている姿が、すっかり板についてきました。

やはり私立高校の方が積極的に活用していますね。
授業料とは別に、パソコン代やタブレット代が高価であることがデメリットですが、それに見合う使い方があると言ってよいでしょう。
1台あれば、連絡帳も電子辞書も資料集も不要になって便利です。

一方、公立高校の方は、まだまだ活用を模索中といったところでしょうか。
スタディーサプリを導入しただけで、授業中にITSを活用するまでには至らず、どちらかと言えば慎重な姿勢です。
生徒たちがスマホだけで対応できるメリットがあり、金銭面で大きな心配がありません。

まだまだ日本のITS化は移行期間。
他の先進国より20年近く遅れていますから、テストや入試のあり方はもちろん、価値観も含めて、まだまだ時間がかかりそうです。

紙を無くすためのハードル

紙のノートは便利です。

特に数学。

数式はもちろん、グラフや表をパパっと描けるのがノートの良いところ。
このあたりの入力が素早くできれば、おそらく紙のノートが不要になるでしょう。

高校生は、すぐにノート100冊とか使っちゃいますからね。
紙のノートがなくなるのは、けっこう大きいと思いますよ。

すべて電子化できれば、宿題の提出も採点も、とっても楽になるでしょう。

ノート100冊を買って捨てる負担が無くなるし、情報を一元管理できます。
生徒の勉強が加速するし、先生の業務も効率的になると思います。

再利用できるデータ形式

すると、ここで

「スタイラスペンで数式を入力していますよ!」

という意見があると思います。
確かに数式の入力が電子化されていますよね。

しかし、それは手書きの数式が「画像情報」として保存されるだけです。
画像やPDFで保存された情報は「情報の再利性が低い」という問題があります。

再利用できない情報を保存しても、決して便利にはなりません。
入力の手間が増えるだけです。

文字情報(テキスト)は、検索や切り貼りが直ぐにできるでしょう。
あとから手を加えて少しだけ変える、ということもできます。
ひとたび入力してしまえば、あとで編集も再活用もやりやすくなりますよね。

ところが画像やPDFは、そうしたことが難しいんですよね。
たとえば次のような数式を画像として保存したとします。

$$ \int_{a}^{b} ( x^3 + \frac{1}{2}x^2 – 5x +2 ) dx $$

しかし画像の場合、これを後から「指数関数の式」とか「定積分の式」みたいな検索ができません。

画像のファイル名を数式にして検索できるようにするアイデアがありますが、フォイル名はテキストですし、使用できない文字もあります。
なにより数式を入力する以外にファイル名を決めるという余計な作業が発生してしまいます。
あるいは、画像をAIに認識させて検索するアイデアもありでしょう。しかし、それには膨大な電気代や計算量がかかります。

また数式の一部 $ x^3 + \frac{1}{2}x^2 – 5x +2 $ をコピペして再利用する、なんてことも大変でしょう。

このように画像やPDFは「情報の再利用」がやりにくい、という問題があるのです。
塾長は画像やPDFを「情報の墓場」と呼んでいます(※)。
「情報の墓場」になっているITS化の失敗例が、日本には非常にたくさんあります。

※工学や熱力学の世界では「熱はエネルギーの墓場」と言うそうです。それをヒントにした呼び方です。

それなら紙のノートの方が、パラパラめくれる分だけ検索性が高いよね。
じゃぁ、紙ノートでいいや・・・となってしまいます。

再利用できるデータ形式で入力するためには、テキストとして入力できる方法が良いのです。

そんな方法・・・実は、すでにあります!

理系の大学生であれば、論文を書くときに使います。
でも高校生は知らないでしょう。

数式と表はテキストで入力!

まず高校生には次の2つのキーワードを覚えて欲しいと思います。

  • マークダウン
  • LaTeX(ラテフ・ラテック)

マークダウンとは

マークダウン(Markdown)は「見出し」や「箇条書き」、「表」や「リンク」などと言った文書の書式やスタイルを簡単に記述する記法です。
文中に特定の記号や構文を挿入して、文書の構造やスタイルを指定することができます。
4~5個を覚えれば十分でしょう。

ちなみに、マークダウンファイルの拡張子は “*.md” です。
といっても、中身はただのテキストですから、Windowsなら「メモ帳」、Macなら「テキストエディット」という標準アプリで編集ができます。

LaTexとは

LaTeXは、文書をキレイに印字するために開発された言語とツールで、主に学術論文や専門書を書くために使われています。
(正確にはTeXがコア機能で、それを使いやすくしたパッケージの1つがLaTeXです)
理系の大学生であれば、卒論や修論を書くのに使う人が多いでしょう。
大学では古くから使われてきた技術です。

実はこのブログでも数式はLaTexの文法を使って書いています。
だから数式の表示が教科書みたいにキレイでしょう。

ワードや一太郎では、数式の入力も表示も一苦労です。
そうしたワープロソフトとはちがい、LaTexは軽量なテキストエディタで編集できます。

ただし少し文法を覚える必要があります。
とはいえ、LaTeXの文法をフルで使うのは、論文を書く人くらいでしょうか。
多くの人は他のツールの中で、数式や化学式を書く文法だけを部分的に使っています。

調べながら使う

マークダウンもLaTeXも、テキストエディタで原稿を書くことができ、重いアプリが不要です。
世界共通の技術であるため、パソコンメーカーやアプリメーカーに依存せず、どこでも使えます。

実は文法も細かく覚える必要はありません。
「マークダウン チート」とか「LaTeX 数式 チート」などと検索すれば、すぐに調べることができます。
要領さえつかんでしまえば、あとは必要な時だけ調べて使えば十分です。

エディタの進化で便利に

さらにテキストエディタの進化で、マークダウンとLaTeXを合わせて使えるようになってきました。
LaTexのうち、数式や化学式を書くための文法が、マークダウンでも使えるようになっています。
正に「良いとこ取り」的な使い方です。

塾長がもっともオススメするエディタは、Visual Studio Code です。
VSCode などと省略して呼ぶこともあります。

無料なのに機能が豊富で動作が軽いです。
Windows でも Mac でも Linux でも動きます。
あらゆるプログラミング言語をサポートしています。

神アプリと言ってよいでしょう。
これを無料で配布しているマイクロソフト社に感謝です。

とりあえず Visual Studio Code をインストールして、ドヤ顔しましょう。

ちなみに、Python や JavaScript のような「テキストプログラミング」をする人にとって、テキストエディタは重要です。
マイクラミングの「プロコース」では Visual Studio Code を推奨しています。

※ Visual Studio Code のインストールや使い方の説明は省きます

数式や化学式をキレイに打つには?

最後に、Visual Studio Code の使い方について補足します。

Visual Studio Code  を使えば、数式をキレイに表示できます。
例えばこんな感じで・・・

$$ S=\frac{1}{3} \pi r^{2}h $$
$$ \sum_{k=1}^{n}k = \frac{n(n+1)}{2} $$
$$ e^{i \pi}=-1 $$
$$ f'(x)=\lim_{h \to 0} \frac{f(x+h)-f(x)}{h} $$

数式を表示できます。
カッコイイでしょ。

Visual Studio Code のメニューで「新しいテキストファイル」を選択肢します。
そしてファイル名の拡張子を “.md” とします。
つまりファイル名の最後に必ず「ドット+m+d」という3文字を半角英数で追加してください。

そうすると、マークダウンやLaTexの文法が使えるようになります。
また画面右上の「プレビュー」ボタンを押せば、表示されるイメージを見ながら編集ができます。

ここまで準備できれば、LaTeX の文法で数式を入力できます。

たとえば上の式は次のように打ちます。

S=\frac{1}{3} \pi r^{2}h
\sum_{k=1}^{n}k = \frac{n(n+1)}{2}
e^{i \pi}=-1
f'(x)=\lim_{h \to 0} \frac{f(x+h)-f(x)}{h}

化学式もできますよ。

$$ \ce{2H2 + O2 -> 2H2O} $$
$$ \ce{NH^+ + H2O <=> NH3 + H3O^+} $$
$$ \ce{2Al + 2NaOH + 6H2O -> 2Na[Al(OH)_4] + 3H2 ^ } $$

これらは、こんなふうに書きます。

\ce{2H2 + O2 -> 2H2O}
\ce{NH^+ + H2O <=> NH3 + H3O^+}
\ce{2Al + 2NaOH + 6H2O -> 2Na[Al(OH)_4] + 3H2 ^ }

ただし構造式やベンゼン環を使った式はマークダウンでは難しいみたいですね。
(複雑な化学式の入力と表示は、LaTeXのchemfigパッケージをサポートした環境が必要です)

最後は物理。

$$ K + U = \frac{1}{2}mv^2 + mgh $$
$$ \Delta \lambda = \lambda’ – \lambda = \frac{h}{mc}(1-cos \phi) $$
$$ \ce{ ^{226}_{88}Ra -> ^{222}_{86}Rn + ^{4}_{2}He } $$

こうした式は、こんな風に入力しています。

K + U = \frac{1}{2}mv^2 + mgh
\Delta \lambda = \lambda’ – \lambda = \frac{h}{mc}(1-cos \phi)
\ce{ ^{226}_{88}Ra -> ^{222}_{86}Rn + ^{4}_{2}He }

このように、LaTeXの文法で書くと、教科書や参考書に載っているようなキレイな式が表示されます。
ただし、この文法をサポートしているアプリでなければ、それが表示できません。

もっと知りたい人は、ぜひ検索してみてください。
もちろんAIに質問すれば、ちゃんと答えてくれるでしょう。

これもプログラミング言語?

上で見たようなLaTeXやマークダウン、HTMLなどには、それぞれに文法があります。
その文法に従って記述すれば、コンピューターが想定通りの表示(実行)をしてくれます。

コンピューターに指示を与える、という意味では、LaTeXやマークダウン、HTMLもプログラミング言語と言えるでしょう。

このように、アプリやゲームを作るものだけがプログラミングではありません。
コンピューターを使いこなそうとすれば、何かしらの記述方法、つまり、プログラミング言語が出て来ます。

中には、音楽の楽譜(コード)や体の動きなどをテキストで記述できる言語さえあります。
図形や地図はもちろん、3Dモデルだってテキストと数字だけで表現できます。

このように、世間の「プログラミング言語」とは違うイメージの言語もあります。

コンピューターの世界には、いろいろな言語が存在していますから、
興味のある人は、いろいろ調べてみてください。

 


進学実績

卒塾生(進路が確定するまで在籍していた生徒)が入学した学校の一覧です。
ちなみに合格実績だけであれば更に多岐・多数にわたります。生徒が入学しなかった学校名は公開しておりません。

国公立大学

名古屋大学、千葉大学、滋賀大学、愛知県立大学、鹿児島大学

私立大学

中央大学、南山大学、名城大学、中京大学、中部大学、愛知淑徳大学、椙山女学園大学、愛知大学、愛知学院大学、愛知東邦大学、愛知工業大学、同朋大学、帝京大学、藤田保健衛生大学、日本福祉大学

公立高校

菊里高校、名東高校、昭和高校、松陰高校、天白高校、愛知教育大学附属高校、名古屋西高校、熱田高校、緑高校、日進西高校、豊明高校、東郷高校、山田高校、鳴海高校、三好高校、惟信高校、日進高校、守山高校、愛知総合工科高校、愛知商業高校、名古屋商業高校、若宮商業高校、名古屋市工芸高校、桜台高校、名南工業高校、菰野高校(三重)

私立高校

愛知高校、中京大中京高校、愛工大名電高校、星城高校、東邦高校、桜花学園高校、東海学園高校、名経高蔵高校、栄徳高校、名古屋女子高校、中部第一高校、名古屋大谷高校、至学館高校、聖カピタニオ高校、享栄高校、菊華高校、黎明高校、愛知みずほ高校、豊田大谷高校、杜若高校、大同高校、愛産大工業高校、愛知工業高校、名古屋工業高校、黎明高校、岡崎城西高校、大垣日大高校

(番外編)学年1位または成績優秀者を輩出した高校

天白高校、日進西高校、愛工大名電高校、名古屋大谷高校

※ 成績優秀者・・・成績が学年トップクラスで、なおかつ卒業生代表などに選ばれた生徒

 


名古屋市天白区の植田で塾を探すなら個別指導のヒーローズ!!

★ 直接のお問い合わせ ★
――――――――――――――――――――――
個別指導ヒーローズ 植田一本松校
〒468-0009
名古屋市天白区元植田1-202 金光ビル2F
TEL:052-893-9759
教室の様子(360度カメラ) http://urx.blue/HCgL

プログラミングの勉強は何から始めたらよいですか

塾長です。

これからプログラミングを始めたい人からの質問です。

何から勉強したら良いですか?

こういう質問が増えてきました。

塾長は立場上、中高生やアルバイトの大学生から、こういう質問を受けます。
中には他の塾の先生から「子供にプログラミングを教えた方が良いですか?」というご相談も。

ということで、塾長の立場からアドバイスを書きたいと思います。

この記事の対象

この記事では、特定の産業技術を学ぶことを目的にはしていません。
広く通用する「基礎学力としてのプログラミング」を学びたい人が対象となるでしょう。

逆に「数か月~半年後に仕事ですぐ使えるプログラミング」を学びたい人は、別の記事を探してください。

あくまでも学習塾の先生として書きますね。

プログラミング言語の種類が多すぎる

プログラミングを学ぶ上で、最初に立ちはだかる壁。

それは「どのプログラミング言語を選ぶか?」かもしれません。

せっかく学ぶなら、色々なことができそうな言語を選びたいものです。
しかし、プログラミング言語の種類が多すぎます。

例えば、下の図を見てください。
塾長の独断と偏見でいくつか名前を挙げて描いたのですが、それだけでも、この数です。

もちろん、この図でもまだまだ描き足りません。
「PHPの前にPerl がない」とか「歴史を語るなら Pascal も必須」とか「我が青春の BASIC が無いとは何事だ!」など文句を言われそうです。

要するに、それくらい多くのプログラミング言語があるということです。

それゆえ、選択に迷ってしまうのも無理はないでしょう。
いったい何を選ぶべきやら・・・。

オススメのプログラミング言語は?

そこで塾長は、こんなアドバイスをしています。

全くの初心者であれば、
① スクラッチ
② パイソン
の順に学ぼう!

具体的には、

  • 小学生なら、スクラッチ(Scratch)を学ぼう
  • 中学生なら、スクラッチ(Scratch)、パイソン(Python)の順に学ぼう
  • 高校生なら、パイソン(Python)を学ぼう
  • 迷ったら、パイソン(Python)を学ぼう(※)

・・・スクラッチとパイソンだけやないか!

と突っ込まれそうですが、はい、その通りです。

それには、ちゃんと理由があります。

※ ちなみに就職であれば、希望の職種に合ったプログラミング言語を学びましょう
例えば工業系であればC言語やC++、ゲーム業界であればC++やC#、Java、BluePrintなどです。

最初はニュートラルなプログラミング言語で学ぼう!

プログラミング言語をマスターした先人たちは、口をそろえてこう言います。

1つの言語をマスターすれば、他もだいたい一緒だよ👍

しかし初学者にとって、いきなり悟りの境地を語られても参考になりません。

いや、そういうことは聞いてないから😞

と言われそうです。
初学者がプログラミング言語を選択するときの注意点みたいなものはないのでしょうか?

塾長としては、次のことを注意していただきたいです。

初めて学ぶなら、次の5つの観点でプログラミング言語を選びましょう。

  1. 無料で環境を作れること
  2. すぐに動かせること
  3. ネットで検索すれば、すぐに事例や情報を得られること
  4. マルチパラダイム言語であること(※)
  5. 多くの分野で使われていること

細かい説明は省きますが、これらの条件を無難にクリアしているのがパイソン(Python)です。

そして、その1歩手前の段階で、直感的にすぐ学べるのがスクラッチ(Scratch)です。
ちなみにスクラッチでも上の1~3までを満たします。

これら5つの観点で選べば、次のようなプログラミング言語に出会えるでしょう。

  • 特定の産業分野に偏らない技術を学べる
  • 近代的なプログラミングを学べる

要するに技術的にも時代的にもニュートラルで無難と言うことです。

もちろん、無料で学びやすいことも大切です。

※ マルチパラダイム言語とは、色々なパラダイムでプログラミングができる言語という意味です。
※ パラダイムとは、プログラミングの手法やスタイルのことです。手続き型プログラミング、構造化プログラミング、オブジェクト指向プログラミング、関数型プログラミング、ベクトル型プログラミングなど、色々なパラダイムがあります。

ゼロから学ぶ人にありがちな悩みは?

ここから先は「あるあるネタ」みたいなお話です。
初心者がプログラミングを学ぶときに直面しがちな状況について、少しご紹介しましょう。

共感や同情、失笑など、各々楽しんでいただければと思います。

①お手本のプログラムを見て「だから何?」って思う

たいていのプログラミング言語の本は、次のような章構成になっています。

  1. 環境の構築(インストールなど)
  2. 画面に Hello World! という文字列を表示させる
  3. 変数の種類
  4. 条件分岐と繰り返し
  5. 関数
    ・・・

そして50ページほど進めたあたりで思うのです。

  • 画面に「Hello World!」って表示させたからって、だから何なの?
  • なんか想像してたのと違った。

勉強が先に進んでいる気がしません。
最初は簡単なプログラムから学びますので、大した処理はできません。
そのため最初のうちは

「こんな処理、何の意味があるの?」

と言いたくなるようなプログラムばかり書かされます。
いわゆる「修行」という期間です。

勉強に慣れている人は、修行を乗り越える術を持っているでしょう。
しかし、多くの人にとっては、

「それが将来、どんなことにつながるのか?」

を説明してくれる人が近くにいた方が、希望をもって学べるかもしれません。

②いつま経っても基本ばかり

コンピューターで色々なことができる!

と期待して勉強を始めたのに、いつまで経っても何もできません。

  • 数学のグラフを表示させるにはどうしたら良いの?
  • ゲームを作るにはどうしたらよいの?
  • 人工知能を作るにはどうしたら良いの?

そういうフラストレーションが溜まります。

部活に例えるなら、せっかくテニス部に入ったのに、ラケットを握らず、マラソンばかりやらされる・・・そんな感じでしょうか。

かといって、ページを飛ばして後半の応用へスキップしてしまえば、今度は分からない言葉だらけ。
最初から読み進めていかないと、用語の意味が分からないでしょう。

ちょっとしたプログラムをつくるにも、環境やら文法やら用語やらと、乗り越えるべき「修行」が多いのです。
いきなりC++言語やJavaなどに手を出してしまえば、さらにオブジェクト指向やモジュールの概念なども早い段階から学ぶ必要が出て来ます。

独学ならば、ここで半分の人は心が折れてしまい、挫折してしまうでしょう。

パイソンは修業が少ない!

そんな中で、パイソンは「修行」が少ない言語です。
ゼロとはいきませんが、学ぶにつれて、できることが加速的に広がり、努力が報われやすいでしょう。

また、ネットで検索したり、ChatGPTに問い合わせたりすれば、すぐに答えが見つかるでしょう。
何より、無料でできることの幅がとても広く多いです。

スクラッチでプログラミングの基礎を学んでいれば、さらに楽になります。
パイソンに移行しても、最初の修行の過程を加速し、短縮できるでしょう。

③マウントを取られる

どの世界もそうですが、自分の価値観を押し付けてくる人がいます。

例えば「スクラッチを学んでいる」と話せば、それは簡単すぎるだの、プログラミングとは言えないだの、上から目線で何か言ってくる人が出てきます。

例えば「パイソンを学んでいる」と言えば、最初はC言語をやるべきだとか、オブジェクト指向を知るべきだとか、パイソンは遅いだとか、言われるかもしれません。

マウントを取る人たちが、さも自信ありげに語ってくるので、聞いていると委縮してしまいますね。

でも安心してください。
結論から言えば、あまり気にしなくて良いです。

難しいことを理解している人がエライなんてことはありません。
パイソンで100秒かかる処理がC言語なら0.1秒で済む、ということが事実だとしても、学ぶ時間が1日でも延長してしまったら意味がありません。

「そういう見方もあるんだな。勉強になるな。」

くらいに受け取っておきましょう。

逆にパイソンを学んでいることでマウントを取る人もいます。

流行の生成系AIをはじめ、人工知能の多くでパイソンが使われているためでしょう。
パイソンをやっていると流行に乗っている気がするのかもしれません。

もちろん、あまり気にしなくて良いです。

④何でそうなるのか想像できない

プログラミングは理系のイメージが強いですが、まったく理系っぽくないと思います。
とくに中学生以上では、数学の文字式の考え方が身についていると、それがかえって足かせになります。

具体的に、よくある混乱をいくつか見てみましょう。

変数の値が勝手に変わる!?

例えば、数学の文字式(代数)の頭では、次のプログラムの意味が全く理解できないはずです。

x=2
x=x+1

1行目で「xは2だ」と言っておきながら、2行目でそれを満たさない方程式が書かれています。
そもそも2行目の方程式は成立していません。
だから、意味が分からなくて混乱するでしょう。

算数や数学の=と、プログラムの=では、意味が全く違います。
それが混乱の原因です。

本に書いてあることを、よーく読まないと、こういう所で落とし穴にはまります。
初学者とは、そういう段階です。

ご存知の通り、プログラムの=は「右辺の値を左辺の変数に代入する」という意味です。
これはつまり、「次の行でxの値が変わってしまう」ことを意味します。
そして、これが混乱の原因になります。

数学では、行目と2行目が同じ文字であれば、同じ値のはずだと見なします。
値が違うのであれば、違う文字を使うからです。

それに比べると、プログラムの変数は、とても奇妙に思えます。
同じ文字なのに、1行目と2行目で値が変わってしまうのですから。

塾長が初めてプログラミングに出会ったのは中1でしたが、当時、

「xに1を足す」という式が「x=x+1」になることが気持ち悪くて、納得するまでとても時間がかかりました。

わざわざ繰り返すのはナゼ?

また「繰り返し文」(反復)の使い方にも慣れが必要でしょう。

例えば数列の問題で、1から10までの整数の合計を変数xに代入することを考えます。
数学であれば、

x=1+2+3+4+5+6+7+8+9+10

ですね。高校生なら

x=$\sum_{k=1}^{10}k$

と書いても良いでしょう。
それがプログラムになると、

x = 0
for i in range(11):
    x = x+i

という表現になります。
これを日本語的に書くと、

xを0に初期化
0~10の整数を順番に変数 i に代入するたびに、
x+ i の計算結果を x に上書きで保存

という意味になります。

数学の式に比べると、なんだか面倒な手順ですよね。

計算を手順に翻訳するのに慣れが必要

このように「計算」を「手順」に翻訳する、という発想の置き換えが必要です。

つまり、プログラミングでは、これまで学校で習ってきた考え方とは異なる、独特の考え方に慣れる必要があります。
日常生活とも違う頭の使い方かもしれません。

こうした発想の置き換えには、少し訓練が必要です。
きっと偏差値の高い人でも、最初の最初は、慣れないかもしれません。

とくに独学の場合は、自分には才能がないと早とちりしてしまいます。
慣れる前に挫折してしまうかもしれません。

「これは誰でも最初はそうだよ。少し慣れが必要だよ。」

そんな助言をしてくれる人が近くにいれば、気持ちが楽になって続けられたかもしれません。

⑤(補足)関数型プログラミング言語

上で見たような課題、つまり、プログラミングの発想が数学と異なり、分かり難いという課題について、
これを解決するプログラミング言語も、あるにはあります。

数学的な発想のまま、変数や関数を使ってプログラミングができる言語です。

それは「関数型プログラミング」というパラダイムの言語です。
Haskell というプログラミング言語がその代表です。

しかし、人によっては、逆に難しい文法に見えるでしょう。
関数型プログラミングは「圏論」と呼ばれる数学が元になっているため、説明が何かと数学的で難しいです。
例えば「モナド」という代表的で必須の概念を理解するのでさえ、多くの人が挫折してしまうでしょう。

残念ながら、関数型プログラミング言語を初心者が分かりやすく学べる環境は、今のところ、ほとんどありません。
一部の才能あるプログラマや研究者たちが「簡単だよ」と言っているような状況です。
まだまだ初心者には手が出ません。

また関数型プログラミング言語は、産業界では極めてマイナーなプログラミング言語です。
関数型プログラミングができても、それで職を探すとなれば、かなり狭き門になるでしょう。

作るために学ぼう

プログラミングは体で覚えた方が早い、とよく言われます。

実際、多くの人は、本を読んだだけでは身につかないでしょう。

ちょっと書いてみて、すぐ動かして、すぐ確かめる

そういう環境を最初に作ることが、とても大切です。
そういう意味でも、スクラッチやパイソンは環境を作りやすいでしょう。

さらに、具体的に何かを作りながら学ぶと、もっと効果的です。

  • 神経衰弱やジャンケンのような簡単なゲームを作ってみる
  • 学校で習った数学や理科の公式をプログラムにしてみる
  • エクセルの情報からグラフを作って表示するような、簡単な統計処理をしてみる

など、何か具体的に作るものを決め、それを作るために学ぶ、というスタンスにしましょう。

英語の習得は、外国人の友達をつくって、その人と会話するために学ぶのが速いらしいです。
映画や海外ドラマが好きな人は、それをネイティブに視聴するのを目的にするようです。

それと同じように、プログラミング言語を学ぶときも、

「これを作りたい」
「コンピューターをこう動かしたい」

という具体的な目標を立て、実際、すぐに作り始めるとよいでしょう。

目的と手段を分けよう

最後に、プログラミングを学ぶ上で、意外と見落としがちなポイントを1つ。
それは

「今のプログラムは手段の1つ」

ということです。

一般に、1つの目的を実現するために、取れる手段は複数あるものです。
プログラミングの方法もまた、何通りか考えられます。

答えは1つではありません。
また、今の答えが最善とも限りません。

そこが、これまで学校で学んできた5教科と決定的に違うところです。

目的を達成できれば、方法は違っていても良い!

それがプログラミングを学ぶ醍醐味と言えましょう。

そのため1度は完成したプログラムでも、

「他にも方法があるかも?」

と思案したり、他の生徒の方法を参考に、新しいアイデアを追加して改善したりできます。
それがまさに、

答えのない問題にチャレンジし、最適解を出す。
最適解を改善し、よりよい解にする。

という活動です。

もしもプログラミングの勉強が、

✖ テキストや模範解答を写すだけ

のような学びであれば、それ悲しいことです。

そのような勉強であれば、
これまで通り、5教科の勉強を頑張った方が良いでしょう。

ちょっと動かし、間違え、それを修正して、また動かしてみる。

プログラミングでは、そのようなトライ&エラーを多く経験することが、そのまま学びになります。
間違えたらバツではなく、「できるだけ前段階で多くの間違えを間違えを経験しておく」という発想に切り替えるとよいでしょう。

もっとも、これは試験対策や入試対策でも同じことですね。

あとがき

技術の世界は世代交代が速いです。

子供たちが社会に出る7年後や10年後。
その頃に、どんな技術がトレンドになっているのか、予想がつきません。

プログラミング言語も同様です。
「このプログラミング言語なら将来安心だ」というものはありません。

応用的な知識ほど、時代の流行に左右されます。

ですから就職が近いほど、その時に必要な知識を身に着けるのが良いです。

逆に言えば、まだまだ就職が遠い若い内は、流行に左右されない基礎学力を学ぶ方が良いでしょう。

それに、基礎学力のある人は、応用的な知識を独学で身に着けてしまいます。
大学生や社会人には学習塾がないでしょう。
不要だからです(不要なレベルでないと困ります)。

学校では基礎学力を学ぶのが良いと思います。

そしてプログラミングも同様です。

何の仕事に就くか分からない内から、特定の産業技術を学んでも、仕方ありません。
ですから、できるだけニュートラルなプログラミング言語で学ぶことをオススメしています。

もちろん趣味であれば、特定の産業技術でも大いに結構。
もっとも趣味であればプログラミングを「勉強する」とは言わないでしょう。

 


進学実績

卒塾生(進路が確定するまで在籍していた生徒)が入学した学校の一覧です。
ちなみに合格実績だけであれば更に多岐・多数にわたります。生徒が入学しなかった学校名は公開しておりません。

国公立大学

名古屋大学、千葉大学、滋賀大学、愛知県立大学、鹿児島大学

私立大学

中央大学、南山大学、名城大学、中京大学、中部大学、愛知淑徳大学、椙山女学園大学、愛知大学、愛知学院大学、愛知東邦大学、愛知工業大学、同朋大学、帝京大学、藤田保健衛生大学、日本福祉大学

公立高校

菊里高校、名東高校、昭和高校、松陰高校、天白高校、愛知教育大学附属高校、名古屋西高校、熱田高校、緑高校、日進西高校、豊明高校、東郷高校、山田高校、鳴海高校、三好高校、惟信高校、日進高校、守山高校、愛知総合工科高校、愛知商業高校、名古屋商業高校、若宮商業高校、名古屋市工芸高校、桜台高校、名南工業高校、菰野高校(三重)

私立高校

愛知高校、中京大中京高校、愛工大名電高校、星城高校、東邦高校、桜花学園高校、東海学園高校、名経高蔵高校、栄徳高校、名古屋女子高校、中部第一高校、名古屋大谷高校、至学館高校、聖カピタニオ高校、享栄高校、菊華高校、黎明高校、愛知みずほ高校、豊田大谷高校、杜若高校、大同高校、愛産大工業高校、愛知工業高校、名古屋工業高校、黎明高校、岡崎城西高校、大垣日大高校

(番外編)学年1位または成績優秀者を輩出した高校

天白高校、日進西高校、愛工大名電高校、名古屋大谷高校

※ 成績優秀者・・・成績が学年トップクラスで、なおかつ卒業生代表などに選ばれた生徒

 


名古屋市天白区の植田で塾を探すなら個別指導のヒーローズ!!

★ 直接のお問い合わせ ★
――――――――――――――――――――――
個別指導ヒーローズ 植田一本松校
〒468-0009
名古屋市天白区元植田1-202 金光ビル2F
TEL:052-893-9759
教室の様子(360度カメラ) http://urx.blue/HCgL

プログラミング言語って何? お勧めはどれ?

プログラミングに夢中な生徒の写真

こんにちは!塾長の松下です。

昨日の午前中は、ヒーローズ西春校に行ってきました!

この夏から西春校さんもプログラミング教室を始めます。その準備を手伝ってきました。いよいよ北名古屋市のみなさんもマインクラフトでプログラミングを学べるようになりますよ!
乞うご期待です!!

午後からは植田一本松校でいつも通りプログラミング教室をしました。生徒がミッションを早くクリアしたので、残り時間を自由にしました。やっぱり子供たちは溶岩とかTNTが大好き。「数千個のTNTを爆発させる」というプログラムを作って遊んでいました。

プログラミングに関係する国家資格

IT系の国家資格と言えば、次の3つを押さえておく必要があります。この順番にレベルアップします。

  1. ITパスポート
  2. 基本情報技術者
  3. 応用情報技術者

中でもプログラミングの技能を問われるのが「基本情報技術者」です。毎年多くの人が受験します。

基本情報技術者とは?

主にプログラムの設計、開発を行う技術者の知識や技量を証明する資格です。国家試験に合格するともらえます。英検で言えば2級くらいに相当します。

商業高校や工業高校では、高校2年生くらいから学校で受験を勧められます。普通科でも科学部やデータサイエンス部など、IT系に興味のある人ならチェレンジすることがあるでしょう。もちろん、通信系やIT系に就職したら、会社から受験を勧めらることが多いです。

【悲報】COBOLが消えました。今後はPythonで。

これに関して、少し前、今年1月24日に衝撃的なニュースがありました。

2019年秋期の試験を最後にCOBOL(コボル)が廃止されるというのでます。代わりに2020年春期からはPython(パイソン)になるそうです。情報ソースは情報処理推進機構によるコチラの発表です。

え、コボル?、パイソン?

という人も多いでしょう。COBOLやPythonはプログラミング言語の種類です。

プログラミング言語とは?

例えば、ブログは日本語で書きます。曲は音符で書きます。計算は数式で書きます。化学変化は化学反応式で書きます。このように、何かを書き表すとき、それに合った表現方法(言語)が存在します。

コンピューターも同じで、コンピューターを使う目的ごとに表現方法や文法があります。それがプログラミング言語です。たくさんの種類があり、目的に応じて使い分けられています。

ところが国家資格で使えるプログラミング言語は、たったの4つしかありません。

国家試験で使えるプログラミング言語

基本情報技術者の資格試験では、プログラミングの技能が問われます。自分の得意なプログラム言語を選択して受験することができます。ただし、その選択肢が4つしかありません。しかも来年からそれが変わります。

これまでは次の4種類でした。

COBOL、Java、C言語、アセンブラ言語(CASL II)から1つ選択

それが2020年の春から

Python、Java、C言語、アセンブラ言語(CASL II)から1つ選択

に変更されます。国家資格を取れる4つのプログラミング言語から、COBOLが姿を消し、Pythonが登場したのです。こえれは事実上、

「COBOLはもう古い。」「Pythonがメジャーになった。」

と国が認めたに等しいです。だからニュースなんですね!

上で挙げた5つのプログラミング言語について、それぞれの特徴を簡単に説明します。

  • COBOL: 大型コンピュータで経理や成績管理といった事務処理をするのが得意
  • Python: どのパソコンでも動き、科学技術計算や人工知能による情報処理が得意
  • Java: どのパソコンでも動き、操作画面やゲームを作るのが得意
  • C言語: OSの開発、機械操作のアプリ、高機能で高速なアプリの開発が得意
  • CASL: ハードウェア本来の性能を引き出すのが得意

私が大学生のころまでは、COBOLを使えれば就職に有利でした。大企業の多くが大型コンピューターを持っていて、それを使うために必要だったからです。ところが、ここ数十年でデーターベースの技術が一般化し、同時にパソコンの性能が飛躍的に良くなってしまい、大型コンピューターが不要になってしまいました。今ではCOBOLで仕事をしている人を、ほとんど見かけません。

プログラミング言語にも栄枯盛衰があるのですね。

マイクラミングを支えるプログラミング言語たち

ちなみに、私たちのプログラミング教室「マイクラミング」を支えるプログラミング言語たちは、次のようになっています。

  • JavaScript: スクラッチの機能を拡張する部分と、生徒がログインする画面の開発に使いました
  • Python: スクラッチとマインクラフトをつなげる機能の開発に使いました
  • PHP: 生徒がログインする画面のサーバー開発に使いました
  • SQL: 生徒情報などを管理する機能の開発に使いました

JavaScriptはJavaの縮小版です。ブラウザの中だけで動作します。PHPやSQLなど国家資格には関係ないプログラム言語が出てきましたね。プログラム言語はとても種類が多いのです。私はマイクラミングを開発するために、これら全てのプログラミング言語を勉強しました。勉強は一生続くのです。

ちなみにマインクラフトそのものはJavaで作られているそうですよ。

そして生徒の皆さんが使うプログラミング言語はScratch(スクラッチ)です。

Scratchの次はPythonかJavaを学ぼう

来年度から小学校で、更に年度から中学校でプログラミング教育が必須化されます。

おそらく多くの小学校では Scratch(スクラッチ)というプログラミング言語が使われるでしょう。今まで色々な学校現場で使われてきた実績がありますし、何より無償で使えるからです。

もちろん私たちのプログラミング教室「マイクラミング」もスクラッチです。小学2年生から高校生まで通っています。

しかし、残念ながら、この Scratch(スクラッチ)では国家試験を受験できません。国家試験はプロの能力試験なので、プロが使わない言語では受験できないのです。
ただし、民間の試験ならあります。Scratchで能力を試したければ民間試験でチャレンジしましょう。

スクラッチが得意なのは、あくまでも学校教育や趣味の領域です。ですから、スクラッチでプログラミングを練習したら「次のステップ」へ進みましょう。

Scratchの次のステップとしてお勧めなのは、Python(パイソン)またはJava(ジャバ)です。

どちらも無料で始めることができます。また解説書やインターネット上の情報が豊富で調べやすいです。

どちらかというと、理系の学生はPython、ゲーム制作などクリエイターになりたい人はJavaを学んでみるとよいでしょう。

ただし就職してからPythonやJavaを使うかどうかは分かりません。しかし1つのプログラミング言語に精通しておけば、他のプログラミング言語を学ぶのが簡単になります。プログラミング言語には共通する考え方が多いからです。

C言語やCASLはお勧めじゃないの?

C言語は文法が多くて細かいです。難しいというよりは、めんどくさいです。ちょっとした処理を実現するにも、何十行ものプログラミングが必要になります。
「こういう時はこう作れ」的な定石をたくさん覚える必要があります。そして後述する「オブジェクト指向」に対応するためにC++言語という拡張版も学ぶ必要があります。
歴史の長い言語なので学びが多い一方、書籍が多すぎてピンキリです。良書を探すのに苦労します。身近に知見者がいれば、聞くのが一番でしょう。
そんなこんなで、マスターするまでの道のりが長いです。
その代わり、マスターしたら超強力なプログラミング言語になります。その道のプロになると決めたら取り組んでみてください。

CASLはマイコンなどのハードウェアを使うためのプログラミング言語です。ハードウェアの知識が必要になりますから、これも初学者にはお勧めしません。また実際に何かを作ろうとするとCASLは使えません。ハードウェアのメーカーごとにプログラミング言語が違うからです。CASLは練習用の言語と割り切った方が良いでしょう。

オブジェクト指向を学べ

それから、プログラミング言語とは別に、「オブジェクト指向」という考え方を、しっかり学んでおくことをおすすめします。

オブジェクト指向は、人間が物事の構造や関係をとらえる様子を、整理したり正確に記述したりするための技術です。

現代のプログラミング言語のほとんどは、その根底にオブジェクト指向があります。大きなプログラムや複雑なプログラムを考える時ほど、オブジェクト指向が必須になってきます。ぜに学んでみてください。きっと頭の中がすっきりするでしょう。

まとめ

国家資格の「基本情報処理技術者」を受験できるプログラミング言語は4つしかありません。そして今年でCOBOLが廃止され、来年からPythonが追加されます。

来年から小学校で必須化されるプログラミング教育ではScratchが大活躍します。

しかし仕事でScratchは使えません。ステップアップにはPythonかJavaが塾長のおすすめです。

プログラミング言語と並行して「オブジェクト指向」を学ぶと良いでしょう。頭を整理するのに役立つ技術です。

 


名古屋市天白区の植田で塾を探すなら、日進市赤池で塾を探すなら、個別指導のヒーローズ!!

★ 直接のお問い合わせ ★
――――――――――――――――――――――
個別指導ヒーローズ 植田一本松校
〒468-0009
名古屋市天白区元植田1-202 金光ビル2F
TEL:052-893-9759
教室の様子(360度カメラ) http://urx.blue/HCgL