学習方法/高校情報
令和四年度からは、『社会と情報』・『情報の科学』から『情報Ⅰ』(必須)・『情報Ⅱ』(選択)への移行しました[1]。
本書はまだ、『社会と情報』と『情報の科学』当時の記載が中心であることに注意してください。
この教科について
編集高校の「情報」教科では、データの圧縮のしくみや、エラー訂正のしくみといった情報科学・情報工学および関係する数学、あるいは関する法律など社会的な知見など、中学より高度な内容を学びます。
単なるマウスの使い方、キーボードの使い方などは中学校卒業までに習っている前提で教科書は書かれています。
大学入試の新共通試験に『情報I』が加わりましたが、内容は情報科学と数学、および関係する法律など社会科的な知識です。基本的にはマウスやキーボードの操作は、共通試験には出ません。国の大学入試センターから共通試験サンプル問題などが公開されていますので、もし疑うなら確認できます(ただし、前提知識になる可能性はあります。ですが学校で普通に実習などをしていれば操作知識については対応できる範囲内でしょう)。
実際、旧科目名の『社会と情報』及び『情報の科学』を踏襲したものになっています。
共通試験での実習の出題の有無の、傾向と対策
編集文科省の指導要領などでは実習なども要求されていますが、しかし大学入試の新共通試験(センター試験)では、けっして直接的には、Officeソフトの Word の使い方とか Google アプリの使い方 などといった実習で遭遇するだろう特定アプリの操作については、出ないことに注意してください。(大学入試センターのサンプル問題で確認できます。)
教科書会社が Word や PowerPoint などの実習用の教材も出していますが、しかしあれは検定教科書ではありません。「副教材」とか「副読本」とか言われる教材です。副教材の内容は、基本的には大学入試には直接は出ません。
出題傾向については、センター試験時代の『情報関係基礎』のような出題を基本的には踏襲していくものと思われます。過去問については、 情報処理学会で、センター試験『情報関係基礎』の過去問がアーカイブされています。(なお、新共通試験の対応する情報の科目名は『情報Ⅰ』になるものと思われます。)
ただし、直接的には共通試験では問わなくても、もしかしたら設問文などの状況設定で、実習のような状況設定にする可能性は今後はあります。
たとえば
次の事例を読んで、設問に答えなさい。 【タロウくんの高校の事例】 タロウくんは、文化祭の紹介ホームページを作る際、つぎのような事に注意してプロトタイプを作りました。(以下略) ・・・
みたいな、実習体験を前提にした複合問題が出題される可能性です。文化祭に限らず体育祭とか部活動とか委員会とか生徒会とか、どこの高校にも基本的には存在するはずの活動なので(養護学校など一部は例外もあるかもしれないが)、いろんな出題パターンの可能性が考えられます。
なので、高校の各所での実習も、ちゃんと参加しましょう。
ほか、指導要領とは別に、文科省のGIGAスクール構想のための大量の公費の補助金によって、公立高校にもICT化の補助金が多く与えられましたので、もはや「わが校は貧乏」というイイワケは通じず、「うちはお金が無くてパソコンの勉強ができなかったので、コンピュータの実習が苦手なんです~」みたいなイイワケは通じない時代になっています。
まあ、ふつうに校内の活動などの実習などに参加していれば、共通試験対策としては、特に問題は無いと思います。あくまで情報I・IIは情報科学などを学ぶ科目ですので。
さらにほか、2020年の新型コロナ問題もあって、学生ならビデオ会議ツールの使い方とか、リモート学習とかも、マジメな学生なら練習してあるはずです。受験対策としては、操作に深入りする必要はありませんが、しかし余裕を見てそういうのも時々は勉強・おさらいするのも良いでしょう。
旧科目について
編集令和3年度(2021年度)までは、普通科高校の情報科目には『社会と情報』『情報の科学』の2つの科目がありました。 『情報の科学』のほうが技術的詳細について説明されていました。
- 浪人生の読者へ
- 『情報の科学』は細かいぶん、初心者には雑多な情報も多く、初心者はまず『社会と情報』から読むことを勧めます。
- 教科書は、それぞれの科目とも2回か3回か読めば充分でしょう。ただし、計算例など教科書中にあれば、理解しつつ計算練習してください。ただし、情報科のほうではそんなに膨大に計算練習する必要いはありません。(もっと計算練習したいなら、数学の検定教科書のほうを学ぶべきです。)
- 社会人の読者へ
- これら検定教科書に書かれている内容のうち技術的な部分の入門は、おおむね情報処理技術者試験の区分の1つ「基本情報技術者試験」の入門的内容に相当します。(発展的な内容については、必ずしも一致しません。)
- もし大人がこのページを読んでるなら、それら技術者試験の市販の解説書の内容がすでに分かっているならば、ITリテラシーの自学自習の目的としては、旧カリキュラム『情報の科学』『社会と情報』の検定教科書を買う必要はありません。
勉強法
編集検定教科書を使う
編集この教科にかぎらず、基礎的な情報科学・情報工学について自習する場合は、しばらくは検定教科書および参考書(情報Iの共通テスト対策本(センター対策)が出ています)を中心に読んで勉強せざるを得ないでしょう。
書店に行っても、手頃なコンピューター学の入門書が置いてない場合が多いでしょう。浪人生などは、教科書取り扱い店で、高校の情報科目の検定教科書を注文する必要があるかもしれない[2]。(ただし現役高校生は、学校の必履修科目として『情報I』を習うので、教科書を入学時・進級時などに購入するので、独自の追加の注文は不要です。)
いちおう、2024年の現在では、情報Iの参考書は出版され始められているのですが(国の方針などにより新共通試験で国公立大受験に『情報I』科目がほぼ必須科目になった)、しかし高校『情報I』科の参考書市場がまだ始まったばかりなので、参考書のデキは未知数です。
さらに、2022年に情報I・IIに教科が改訂されたばかりなので、まだ参考書は教科の改訂への対応が追い付いていません。
2024年の現在、『情報I』の新共通試験の対策のための参考書が出版されています。高校生は、検定教科書のほかの勉強をしたければ、この参考書を読むのが良いでしょう。
2023年は、情報II の参考書が出ないまま終わりました。高校で『情報II』を習わない多くの高校の人が、どうしても『情報II』も勉強したければ教科書取扱店で注文することになりますが、しかし情報IIは教科書会社ごとに内容のバラツキが多いのが現状(2024年の時点)です。新共通試験(センター試験の後継)には今のところ、情報IIは要求されていません。
PC操作本や資格試験本などは不要
編集- PC操作本が不要なワケ
初心者むけのPC操作はすでに小中で習っています。高校のパソコン操作は、基本的に、これらで十分です。あまり操作の難しいものは、そもそも学習対象として不適切です。(この科目は、けっして操作を覚える科目ではなく、情報科学を理解する科目だからです。)
また、どうしてもPC操作の書籍が必要でも、普通が学校のPコンピュータ室に数冊ほどのPC操作の解説本が置いてありますので、それで十分です。
- 資格試験本が不要
資格試験と言っても、機器の操作を要求するものや、『ITパスポート』や『基本情報技術者試験』など色々とあります。とりあえず、本節では、『ITパスポート』および『基本情報技術者試験』など、座学的な知識を問う資格について、高校生の学習との関連を述べます。
とりあえず、高校の情報科の学習には、上記の資格試験本は不要です。なぜなら、高校生にとっては(大学生にとっても)上述の資格試験本は、雑多な内容が多いからです。
「基本情報技術者試験」の試験対策本が書店に置いてあっても、中学を卒業したばかりの初心者には、その対策本はレベルが合っていない。また、『ITパスポート』も『基本情報技術者試験』の資格対策本も、初心者にとっては雑多な知識が多く、なぜかというと社会人が細かいIT知識を把握してるかの確認の試験です。社会人にとっては資格試験本の構成は「網羅的である」という長所になりますが、しかし高校生にとっては「雑多である」という欠点になります。よって、高校生にとって上記(『ITパスポート』など)の資格試験本は時間的に無駄です。
理科系の大学生の学習ですら、上記のような資格試験本は、後回しです。どうしても高校生が『ITパスポート』などに深入りしたければ止めませんが、それに高卒就職する人もいるので大学生を手本にする必要もないですが、自己責任で判断してください。
ほか
編集- 参考書が入手できない地域の場合
検定教科書と『情報I』参考書を除けば、「基本情報技術者試験」対策本以外に、他に高校生向けの情報科学的な教育内容の書籍が書店に売ってないのが現状です。もしどうしても情報科の検定教科書および参考書が購入できない場合には、「基本情報技術者試験」の参考書を買って読むのが次善の策でしょう。
- プログラミング本ではコンピュータの仕組みが無いので単独では学習に不適
たとえ「C言語入門」のようなプログラミング入門書が書店に置いてあっても、それらの書籍はプログラミング言語の知識しか解説しておらず、コンピュータの仕組みはあまり説明してない、ネットワークの仕組みも説明していない、などの欠点があります。なので、教科書・参考書も勉強すべきです。
もっとも、余裕があればプログラミングの練習もしても構いません。しかし、「コンピュータの仕組みを説明していない」などの抜けがある事は自覚して、参考書など他の書籍で知識をおぎないましょう。
- 操作マニュアル本ではITの仕組みが分からない
ほか、書店によっては、Windowsの使い方の書籍とか、そういう特定の商品の使い方の操作マニュアル的な入門書しか置いてない場合もありえます。単なる操作マニュアル本ではせっかく読んでもたいしてコンピュータの理解が身につかないです。
計算もする
編集二進数の計算など、この単元には、計算する部分もあります。
なので、検定教科書を見ながらでいいので、実際に紙に書くなどして計算してみましょう。
おそらく入試などでも、計算問題なども問われると思います。
ただし、統計などは膨大なデータを扱うため、手計算は難しいので、そういう単元では数値計算ではコンピュータを使っても仕方ないものです。(数学でも同様でしょう)
ただし、式変形などの計算練習は、手で行いましょう。
情報IとIIの境界は不明瞭
編集情報科目はあまり、情報Iと情報IIの境界が明確ではありません。たとえば、ある教科書会社の教科書では情報IIに書かれていた内容が、ほかの教科書では情報Iの教科書に書かれているような場合もあります。
この事は、新共通試験などの受験対策としての学習方法としては、参考書を中心に学習するのが安全でしょう。
情報Iの教科書会社は6社もあるので[3]、参考書を使わずに教科書1冊だけを使うのは入試対策としては危険です。
自分の使った情報Iの会社の教科書では習っていない知識でも、他社の情報Iでは教えられている可能性があり、そのため新共通試験に出題される可能性があるからです。
大学入試センターや各大学は、あなたの高校で使っているたった1社の教科書には合わせてくれません。大学などにとって各社の検定教科書は、6分の1の重みでしかありません。(たとえアナタの人生では高校の授業は1分の1の重みのかけがえのない体験でも、大学側にとっては6分の1以下です。)
もっとも、「境界が不明瞭」とはいっても、さすがに高校3年で習うような高度な数学を使うような話題は、情報IIに回されていますが。
高校は有料ソフト環境が充実
編集学校にも寄りますが、ふつうの高校で導入されているソフトは、けっこう高度です。
たとえば、Microsoft 365 とか、個人で購入しようとすると、買えなくはないのですが、しかし一人でクラウド利用するのは、うまい使い道がなかなか思いつきません。なお、都立校全校が Microsoft 365 for Education を導入しています[4]。
ほか、まだ東京限定の話題ですが、東京の全公立高校に、フォトショップなどAdobeのクリエイティブソフトが導入されています[5]。
ICT環境には地域差があるので、共通試験では前提知識にはならないですが、しかし個人で買うと高額になりそうなソフトが学校では使えますので、なるべく在学中に操作方法などを練習しておきましょう。
学割(がくわり)とか、一括購入などによる値引きなどによって、学校はソフトウェアを格安で購入しているのです。学生は、この機会を利用しましょう。
無料ソフトはあとからでも使えます。それよりも、高校在学中は、校内の有料ソフトを使いましょう。なお、高校に限らず、大学でも同様です。
Googleアプリは一般向けには「無料」と思われていますが、じつは Google アプリにも有料アプリがあります。 Google Classroom とか Google Workspace とか組織運営系のアプリは有料のものもあります。仮に無料プランを使うにしても、卒業後に個人でこれらを経験するのは難しいので、なるべく学生のうちに積極的に校内のICT活動などには協力しましょう。
もっとも、ソフトウェアは卒業後もお金を払えば買えるので、それよりも部活動・委員会活動などのような高校時代でないと活動の難しい活動のほうを優先すべきですが。とはいえ、ソフト代もそこそこ高いので、時間に余裕のある範囲で、校内のICt活動に協力するのが良いでしょう。
こういう事が分かってくると、プログラミングの勉強でも、Scratch(スクラッチ)とか JavaScript は無料ソフトで実習できるので、勉強はやや後回しで良い、というのも分かります。それよりも有料ソフトの Excelが必要な VBA のほうを優先して勉強したほうが、資金的にも効率が良いです。もっとも、人工知能ブームで Python のほうを習う高校も多いかもしれませんが。
旧科目の検定教科書の内容
編集『社会と情報』の内容
編集『社会と情報』では、以下の話題を説明していました。
- 文字の符号化のJISコードやASCII[6]、Unicodeなどの紹介
- 音のサンプリングを例に標本化定理を紹介
- 情報量のビットやバイトの概念
- 2進数や16進数
- 色のRGBとCMYKについて。
- 画像のベクター画像ラスター画像のちがい
- データの圧縮と解凍
- エラー訂正のしくみ。
- 暗号化の原理をシーザー暗号を例にして説明。鍵暗号についても紹介。計算量的安全性を持つ暗号などについては紹介せず。
- 電子署名やファイアウォール、SSLなど、セキュリティに関する技術や用語など。
- 著作権法など。
- フィッシング詐欺などサイバー犯罪の手口。
- 表計算ソフトの使用法について、巻末などで紹介。
『情報の科学』の内容
編集『情報の科学』では、さらに以下の話題を説明していました。
- フローチャートの概念
- CPUのレジスタにおけるREADやWRITEやADDなどの処理[7]。
- POPやSMTPなどのメールサーバ概論
- IPアドレス、グローバルIPアドレスやプライベートIPアドレスについて
- 公開鍵暗号や共通鍵暗号の初歩(計算量的安全性を持つ暗号概論)。さらに発展項目としてRSA暗号の原理が紹介されています。
- 検索における「AND検索」や「OR検索」をベン図で説明しています[8])
- リレーショナルデータベースを、「キー」や「レコード」や「ソート」などの用語
- さらにリレーショナルデータベースの「結合」「射影」などの処理の用語も紹介。
- 表計算ソフトの、加法、減法や総和など、の基本的な演算のしかた。
- 表計算ソフトのマクロ
- 統計数学の「分散」「標準偏差」などを、表計算ソフトを活用して計算する方法。
- 統計の結果を、円グラフや棒グラフなどで、表計算ソフトを活用して表示する方法。
- JavaScriptなどスクリプト言語を例に、アルゴリズムやフローチャートなどの説明。
- プログラミングの、if文やwhile文やfor文などの制御構造を、JavaScriptやエクセルマクロなどのコードを通して実例を紹介。
- プログラミングの、「配列」機能。
- HTMLについて。マークアップ言語。
- WIKI(ウィキ)システム。
- 一部の教科書
雑記
編集「PDCA法」とか、あまりコンピュータと関係のない話題も、これら情報科の科目の教科書では、扱われています。技術系の試験などに出てくる用語なので、そのような用語も覚えておきましょう。
コンビニエンスストアの「POS」システムなどの社会科でも習う用語も情報科では習います。
習わないこと
編集C言語やBASICなどプログラミングについては普通科の旧「情報」科(『社会と情報』『情報の科学』)では習っていません。ただ「C言語」という名称だけなら紹介している検定教科書がありますし組み込みソフトなどでC言語が使われる用途もある事も検定教科書で紹介されています。
また、BASICで書かれた簡単なプログラム文は中学校の技術科で紹介されています。
ただし、情報I・II時代の新・情報の検定教科書は、pythonまたはJavaScriptまたはVBAなどに対応しています。
しかし、使用言語が統一されていないなどの問題もあり、共通試験ではそれら特定の言語の知識は問われません。共通試験では、実在しない架空のプログラミング言語「DNCL」が使われます。一説には、「大学入試センター言語」 Daigaku Nyuusi Center Gengo の略だろうとも言われています。
プログラミング言語を勉強したい場合
編集なにを学ぶ?
編集高校レベルの初心者にとって、プログラミング言語の文法を完全に習得するのは難しいことです。なぜなら、高校生活では他にも5つの教科に時間を割かなければならず、熟練したプログラミングスキルを身につけるためには時間が足りないからです。現代のプログラミング言語は非常に多機能であり、初学者にとっては敷居が高いことがあります。
同様に、Officeソフトウェア(ワープロソフトや表計算ソフトなど)の高度な使用方法に深入りすることも控えた方が良いでしょう。これらのソフトウェアは基本的な使い方は比較的簡単ですが、高度な機能や操作になると中学生や高校生には難しいこともあります。高校生活は多くの教科に対処しなければならないため、時間が制約されます。
ワープロソフトや表計算ソフトなどは、最低限必要なスキルを高校の情報科目の実習や教育の一環として自然に学べ、しかも高校の教育で深化させることができます。例えば、Excelのグラフを作成するために使用される最小二乗法など、高度な数学や情報科学のコンセプトを、高校の情報科のカリキュラムで学びます。
そのため、最初に高校の検定教科書を学び、基本的なスキルを習得することをお勧めします。高校のカリキュラムは、必要な知識やスキルを提供してくれるでしょう。
どう学ぶか
編集ゲーム会社の任天堂のゲームデザイナーの人が推奨している方法なのですが、娯楽的なソフトウェアを制作する際のコツとして、
いきなりツールの細かい仕様などを覚えるのではなく、最低限の操作を覚えて、まずソフトウェア開発ツールを使ってみて、色々と試すのがコツとの事です。
普通科高校で習うようなソフトウェアなら、ネットワーク系のソフトウェア以外なら、失敗しても、けが人などが出るような事故は起きないはずです。(例外として、製造業の組み込み機器などは、先に仕様を細かく理解する必要がある。しかし、普通科高校の範囲を大きく越えるので、普通科高校では気にする必要は無い。)
たとえば、君たち、デジタル家電を買ってきて使う際、説明書を読まずに、まず触ってみて、操作してみる人が大半でしょ? という感じです。可能なら、家電販売店で操作しますし。
ネット上には、質の悪い教材もあります。一見すると情報量が多いように見えても、実際にソフトをまともに触ってない人が、ネット上の情報をひろってきた仕様書を書き換えただけの、中身を水増ししただけの解説サイトみたいなのも多くあります。おそらく、文章量に応じて、どこかの広告会社から報酬でも出るのでしょうか?
プログラミングには最低限の操作のため読まないといけない情報もありますが、それ以外は、後回しにしましょう。
例外的に、安全に関する事は先に勉強する必要がありますが、そういうのは、高校レベルのプログラミング練習では、まず無いでしょう。仮にあったとしても、安全のための勉強は、けっして長々としたツール仕様書を読む事ではありません。安全講習というのは、安全のための操作を覚えたり、事故の事例やその回避策を覚える事であり、けっして安全講習の法律の条文を覚える事ではないので。
実際にツールを操作してみて、気になった事は試してみて、それでも、どうしても分からない事があって必要なことなら、そこでマニュアル類などを調べましょう
やたらと長い仕様書を読ませるようなマニュアルは、少なくとも中高生むけの教材としては、インチキでしょう。
実用的なアプリは時間不足で作れない
編集高校生は、時間不足のため、実用的なアプリを作るのが、とても困難です。
仮に市販の入門書にあるような初級レベルの文法を一通りマスターしていても(実際はそれすら時間的に難しい)、実務的なプログラミングではバグを1つ直すのにすら、数時間も試行錯誤が必要です。その数時間を他教科にあてれば、英単語を何十個も勉強できます。
プログラミングの教本にあるようなコード入力のデバッグ(バグ発見だけでなく実際にバグを修正する事までを含む)の場合なら、正しい答えがその教本に書いてあるので、デバッグは十数分ていどの短時間で終わります。
しかし実務では教本は無いので、つまり正解のプログラムは本には無いので、デバッグに何時間もの時間が掛かります。
バグのあるコードを書いた本人ですら、過去の自分の先入観のマチガイとの格闘になり、バグ修正のために関係しそうなコードを探して読み直したり、数値などを変えてみたりと、色々な作業をするので、デバッグに何時間も時間が掛かります。
それでも、数時間でひとつのバグを修正できれば、まだ運の良いほうです。大人でも、学校がないから朝から晩までデバッグに時間を使えても、半日もデバッグに時間が掛かる場合や、下手したら数日間もデバッグが掛かる場合などもあります。
2020年代の現状、日本国では、高校生のプログラミングの実務能力を測定するような試験などは、存在しません。せいぜい、プログラミングの文法の理解を問う練習問題を出すような資格試験が存在する程度です。
そもそも日本の理系大学は、情報工学科ですら、情報科目ではなく数学や物理を入試科目にしている大学すら、多く存在します。
早い話、日本の大学は、残念ながら、ろくにプログラミングを教育するレベルに到達していません。
せっかく、高校生が長時間のデバッグの実務経験を持っていても、日本の大学入試などでは、それを確認する方法がありません。
大卒の学歴が無いと、情報系でも就職先が限られ、製造業の組み込みソフトは就職がまず不可能ですし、金融機関も就職が不可能でしょう。運が良ければ(そして人当たりが良ければ)、中小のゲーム会社に拾ってもらえるかもしれませんが(専門外なので、よく知りません。自己責任で)、このように学歴が無いと就職先が大幅に狭まる可能性があります。
また、都心の場合の大企業系列の(非・コンテンツ産業の)一般のIT企業の場合、大企業系列の自称「IT企業」が、実際は技術分野の代理店みたいな仕事をしている場合があります(IT業務はそのうちの一部)。どういう事かというと、地方と違って機械工場や電子部品工場などの工場が都心はないので(工場があるのは八王子とか、あっちのほうになる)、代わりにIT企業が地元の大手企業や大学などを相手にした技術系の代理店業務をしていたりするのです。このため、プログラミング能力だけでなく理系の営業マン(技術営業)のようなスキルと志望が必要だったりします。なので、就職では、まるで商社マンのように大卒が求められたりする場合もあるのです、都心の大企業系の自称「IT企業」の一部では。
世間の想像する「プログラマー」とは、まったく業務内容が違っている場合もあります。
実際のアプリ制作などでは、OSごとのAPIなども学んでコーディングする必要もあったりと、時間がとても掛かります。
残念ながら、日本の大学入試は、そういった実務能力までは測定できません。仮にそこまでのプログラミングスキルをもつ若者が大学入学をしても、自分よりもレベルの低い授業を受けることになります。
プログラミングは、「狭く深い」実務経験が要求されます。しかし日本の学歴評価は、広く浅い知識が要求されます。
本来なら、中卒くらいの最低限の知識だけ確認をして、あとは、どういう学問があるかといった目次的な教科書レベルの基礎知識だけを学んで、それ以降は目指す分野での実務的な経験を深めるべきでしょうが、しかし日本の教育制度は、全くそれを評価できる体制になっていません。
「総合型選抜」(いわゆる「AO入試」)というのがありますが、あれらは基本、部活などの大会の好成績(全国大会など)を受験で優遇するものです。
プログラミングは、競技になっている能力が限られるので(いちおう、パソコン甲子園とか情報オリンピックとかあります)、とても不利です。
本来、小中高生にプログラミングを練習させる時間を確保させたいなら、大学受験の内容を大幅に削減しなければなりません。
細かい暗記問題などは本来、情報が必要ならば資料を確認すれば済むので、入試問題から排除するか、大幅に暗記事項の入試問題を減らさなければなりません。少なくとも「情報学科」「情報学部」などを名乗るなら本来、そうでなくてはなりません。しかし、日本の大学は出来ていません。文科省に率先して従うべき国立大学にすら、その能力がありません。そういう能力に欠けた人こそが大学教授になっています。
少子化によって多少はマシになったとはいえ、英米人ですら読むのに手こずる英文、科学者や技術者ですら解くのに悩む受験数学の問題、そういうのはいまだに残っています。
最初に学ぶプログラミング言語
編集プログラミングで、特にやりたいことが決まっていなく、とりあえずプログラミングっぽいことをしてみたいというような初心者が学ぶプログラミング言語は、文法が簡単で、解説が豊富で、なおかつ汎用性があるものがいいだろう。
そのようなものとして、Python がよく挙げられます。Pythonはメジャーなプログラミング言語で英語はもちろん日本語での解説も充実している。Pythonには豊富なライブライリーがあり、数値計算、機械学習、統計、ゲーム、サーバーなど幅広い範囲のプログラミングが出来る。
ただし、実際にサーバーを制御するには、プログラミング知識以外にもサーバー関係の規格なども学ぶ必要があるので、サーバーまでは時間的に経験できないか、もし指導者のもとで経験できても十分な試行錯誤ができない。
機械学習やゲームも同様である。ゲーム専門学校生ですら簡単なゲームを作るのに2~3か月くらい掛かります。高校生は国数英理社などの他の授業があるので、時間不足のため、とりあえず動くゲームは1年間くらいで何とか作れても、細部までは作りこめないでしょう。
ほかに初心者向きの言語としては JavaScript などがある。
なお、進学校のパソコン部の作っているゲームを文化祭で見ましたが、高校生が言うには、「Visual C++ のようなC言語によるゼロからのゲーム制作は、わが校では時間的に難しい」との事です。よって進学校でゲーム制作する場合、ゲームエンジンやゲーム制作ツールを使って制作することになります(ゲームエンジンは言語にC#やC++を採用しているが、その話は置いておく。高校生が言ったのは、OSのAPIを使ってのプログラミングという意味かと)。どうしてもC言語で作るとしても、ジャンルがシューティング・ゲームなどのように状態遷移の比較的に少ないジャンルに限られるでしょう。
ターン制RPGやシミュレーションをC言語でゼロから作るのは、時間的にほぼ無理です。あるとしたら、先輩から代々、引き継いだプログラムでしょう。どうしてもRPGをC言語で作る場合、時間的な都合により、状態遷移の数が、かなり限られます。
見た感じ、一例ですが、低学年ではシューティングなど簡単なゲームを習作として作り、高学年になると簡単なアクションゲームの制作にステップアップ、という感じです。
なお、映像美みたいなのを追求するのは無理なようです。マウスで3分で描いたようなシューティング機体の絵が、黒い背景中で動くのが関の山。音楽も無音。オタク産業はよく「人を楽しませるのが大事(だいじ)」とか言いますが、そんなのよりも、まず先に「とりあえずでいいので、プレイヤーが遊べるように作る」のが先です。人を楽しませるのは、もっと後。そういうのはプロに就職したい人が考えれればいい。
けっして、昭和の時代の、「高校生が作ったミニゲームをパソコン雑誌のゲーム賞に投稿して受賞」とか言う過去の話を、現代でも真に受けてはいけません。昭和の当時は大学進学率が低かったので、高卒就職組たちは大学受験勉強をせずにソフトウェア制作に時間を当てられたのです。進学校では、そういうのは時間的に無理です。
昭和の当時の高卒は、2000年以降の大卒(学部卒)みたいな立場です。
昭和・平成初期の進学校のパソコン部って、そういうのじゃなくって、たとえば昔の数学の教科書にあったBASICの数学計算のプログラムを勉強したりとか、そういうのです。
たとえば1990年代の書籍のBASIC教本には、『ハノイの塔』とかああいう数理パズルのアルゴリズムが、BASICのプログラムで書いてありました。2020年代の進学校のパソコン部は、そういうのをゲームエンジンとかでやるのです。ほら、Visual C++ だと画像表示が難しすぎるので(あのAPIを覚えたくない)、今だと逆にゲームエンジンで画像表示するほうがラクなのです。
JavaScriptによるwebブラウザでの表示でも、ハノイの塔の表示は出来ますが、しかし文化祭などでwebブラウザを使うにはセキュリティの問題が生じます。一般的に、中高・大学の文化祭でパソコン部を見学しても、JavaScriptのプログラムは見られません。基本的には、C言語系でのプログラムが文化祭でのパソコン部の展示の定番です。
ほか、理科の物理や化学にあるような計算を数値計算してみて考察したりとか、そういうの。昭和の中高によっては「パソコン部」がそもそも無くて、代わりに「科学部」「理科部」のなかに、パソコン(NECのPC88とかです)が置いてあって、その科学部でBASICとか勉強していたような時代もあります。平成初期の1995年にwindowsが出ましたが、しばらく皆は、PC-98や富士通FM-V などを使っていた。
進学校のパソコン部で念頭に置いているのは、そういう昭和の科学部・理科部にあったPC-88みたいなのです。
高校生は独学で JavaScript を学ぶことは適切か?
編集初心者むけとして有名な言語に、「JavaScript」(ジャバ スクリプト)というプログラミング言語があります。
JavaScriptは、ウェブブラウザで動作するので、最も広く普及しているプログラミング言語の一つといえます。
誕生当初 Netscape Navigator に実装された JavaScript は、まさに初心者むけの言語でした。その後、JavaScriptの普及とともにブラウザベンダーは競うように新機能を追加し、機能が増えるのだけなら良いのですが、ブラウザによって機能があったりなかったり、微妙な差異があり、プログラマはその違いに苦慮する状況が生まれました。
また、ウェブブラウザ上のJavaScriptを学ぶには、HTMLとCSSをある程度は習得しておく必要があります。HTMLもかつては初心者向けの技術でしたが、しかし2020年代の現代ではHTMLが高度化しており、もはや多くの高校生にとってHTMLは身近な学習対象ではないので、ここにも一つJavaScriptを学ぶにあたってのハードルがあります。他方、JavaScriptをウェブコンテンツに組み込んでダイナミックなウェブサイトを作ることは、大きのモチベーションの1つになりえます。
高校生が、もし学校でJavaScriptを習えるのなら、その機会を利用したほうが良いでしょう(多くの検定教科書は、Python や VBA とともに JavaScript を紹介しています)。
なお、JavaScript と Java(ジャバ) とは、異なるプログラミング言語です。混同しないように注意しましょう。Javaの複雑な文法と膨大なライブラリクラスは初心者むきではありません。
入門書の探し方
編集書店では、プログラミング言語の初心者向けの書籍 と 専門家向けの書籍 が同じ棚にあることが珍しくないので気をつけましょう。残念ながらこれは図書館にも言えます。
「比喩が分かりやすい本」ではなく、「一通り文法事項が順序立てて説明してある本」と評されている書籍の購入を勧めます(※要出典)。「具体例な開発例が分かりやすい本」ではなく「一通り文法事項が順序立てて説明してある本」を買いましょう(※要出典)。
入門書の読み方
編集あるプログラミング言語の入門書一冊で、そのプログラミング言語のすべてを理解しきることは望むべきでありません。 プログラムの勉強ではPCを用意しプログラム開発環境を用意し、プログラムを入力し動作させるのがよいでしょう。
paiza.IOやWandboxのようなオンライン開発実行環境も機能が年々向上しており、オンライン開発実行環境とタブレットやスマホの組み合わせでプログラミング環境を作ることが可能です。
英語の勉強
編集プログラミングの学習に英語は欠かせないと言ってもいいだろう。なぜなら、プログラムの語句は英語の単語から来ているものがほとんどだし、エラーが英語で書かれており、ライブラリのチュートリアルなどは有名なものを除けば、ほとんどが英語で書かれていて、日本語訳や日本語での説明が不足している場合が多いからである。そのため、英文を尻込みせずに読める程度の英語力は身につけている方が望ましい。
高校のIT教育は高度
編集ネット上ではよく、「日本の中学高校のIT教育は時代おくれ!」とかの揶揄がありますが、しかし2020年代に関する限り、間違っています。なぜなら、実教出版の『情報II』の教科書でも言及されているのですが、近年の高校教科書の内容は、少し前まで大学で教えていた内容です。2010年代まで大学で教えていた内容のいくつかが、高校の『情報II』に降りてきています。さらにGIGAスクール構想の実行によるIT端末の普及で、各高校のIT化が十分に進みました。
上記のような教育改革の成功のため、高校のIT教育は現状、学校にもよりますが多くの高校で、けっこう高度な教育内容になっています。
もしかしたら、一般的な中小企業のサラリーマンよりも、高校の情報科の教師のほうがITスキルが高い可能性があります。たとえば、世間の多くの人は、Google Classroom または同等の Google Workspace とかのグループウェアを使えませんし、そもそもグループウェアという技術の存在自体を知らなかったりします。
なのに、よくネットでは時代遅れの大人が、「高校の勉強よりも、家で動画サイトを見てるほうがITの勉強になる」とか、「家でゲームしてるほうがITの勉強になる」とか知ったかぶりが色々とありますが、2020年代の実情をとらえてない知ったかぶりの情報弱者です。
別に動画サイトやゲームプレイの趣味があっても構いませんが、しかし高校の情報科目の勉強は普通にしておきましょう。
YouTuber を目指しているとかゲーム作家を目指しているとかならともかく、単に一般的なIT技術者(プログラマーも含む)を目指すなら、現状、べつに動画サイトをやたら見る必要は無いですし、ゲームを大量にプレイする必要もないのが現状です。
ただし、必要ないのは、あくまで、高校のIT系の勉強の話です。
学校の指導などで、たとえば社会科(地歴公民)など別教科の教師から「このニュース動画を家で見といて」とか「この歴史動画を家で見といて」とか言われたら、指示にしたがって家で動画を見てください。同様、「このゲーム(たとえば経営シュミレーションゲ・ームなど)を夏休みの終わりまでに10時間以上、プレイして」とか指導されたら、指示にしたがってプレイしましょう。
※ 範囲外: 初心者のためのプログラミングの練習方法
編集※ 本節の内容は高校の範囲を越えてるので練習しなくて良いです。高校卒業後の進学後などに参考になればさいわいです。
まず、上述したように学習環境が必要です。 どうやって実際にプログラミング言語を勉強するかというと、プログラミング言語の入門書を最初のコードが出て来るまで読み進めて実際に入力しプログラムを実行するという流れになります。 この最初のコードを入力するときは、とりあえず何も考えずに入力してみてください。そして書籍の指示にしたがった方法でプログラムの書かれたファイルを実行してみてください。 たとえば、ある入門書の最初のコードで(※ 下記のコードの例は「C++」言語の場合)、
#include <iostream>
using namespace std;
int main()
{
cout << "ようこそ!" << endl;
cout << "プログラミングの世界へ!" << endl;
return 0;
}
とあれば、それをそのまま入力して、コンパイル、リンクし、実行形式を得て、実行形式を実行してみます。
まず、エラーがなく正常にリンクされるまでコードを修正します。
これを実行すると、
ようこそ! プログラミングの世界へ!
と2行で表示されます。
しかし、ほとんどの初心者は何らかの入力ミスをしている事が多く、ファイルをコンパイルしてもエラーが起きてしまい、実行形式を得ることができないか実行できても期待どおりに動かす事ができません。
エラーがあれば、書籍に書かれたコードをよく見ながらコードを修正します。よくある間違いとしては、半角と全角の混合やタイプミスです。プログラムの英数字を全角で書いてしまうとエラーが出てしまうので注意しましょう。特に、全角スペースと半角スペースは見分けがつきづらいので厄介です。
もし、エラーせずにプログラムをコンパイル、リンク、実行できたのなら、すでにアナタは、入力したそのコードの仕組みをだいたい分かっていますので、本wikibooksで説明する次の作業に移ります。
「次の作業」とは、もし入力したコードが、エラーもなくプログラムが正常に実行されれば、 今度は、さきひど入力したコードをコピーして別のファイルをつくり、数分ほど、さきほど入力したコード中にある「ようこそ!」などの文章などを、自分で思うままに書き換えてみてください。 (書き換え前の書籍どおりのコードと、書き換え後の自分流のコードの2種類を、パソコンに保管しておく。) 上記のコードの場合なら、たとえば「<< endl」を省略してみたら、どうなるかとかを、自分流コードで試してみるのです。なお「<< endl」とは「改行する」という意味です。 じっさい、たとえばあるプログラミング言語で、さきほどのコードから「<< endl」を除いてみたコード
(コード)
#include <iostream>
using namespace std;
int main()
{
cout << "ようこそ!";
cout << "プログラミングの世界へ!";
return 0;
}
を実行すると
(実行結果)
ようこそ!プログラミングの世界へ!
というふうに、改行されずに、1行でつづけて表示されるはずです。
あるいは、「ようこそ」を「おはよう」に書き換えてみて、
#include <iostream>
using namespace std;
int main()
{
cout << "おはよう!";
cout << "プログラミングの世界へ!";
return 0;
}
を実行すると
(実行結果)
おはよう!プログラミングの世界へ!
というふうに、表示が確認することを、たしかめると、良いでしょう。
いっぽう、コードの理解できない部分は、書き換える必要がありません。
たとえば
#include <iostream>
using namespace std;
int main()
が何なのかを理解できないだろうし、ここは、まだ書き換えなくても良いのです。
このように、
- まずは書籍のコードを書き写して実行してみたあとに、正常に実行できるようになったら、
- 今度は、自分のコードを理解できる範囲で書き換えてみて、自分の理解を確かめてみてください。
なぜ、わざわざ自分なりに書き換えてみてまで、自分の理解を確かめる必要があるのかというと、その理由は、将来、プログラミングの入力エラーを自分が起こしたときに原因を特定できるようにするために、今のうちに色々と試してみて、どこを書き換えると結果がどう変わるかを確認しておく必要があるからです。
また、大学などに進学してプログラミング科目を習う場合の定期テストでも、定期テストでは授業であつかったコードがそのまま出題される事はないので、自分でコードを書き換えてみて確かめるようにしないと、そのプログラミング科目の定期テストの問題が解けずに不合格になってしまう可能性もあります。
なお、大学の場合、その授業の毎時間のさいごに、その授業のコードを提出する場合があるので、授業用のコードは書き換えずに、授業用コードを自分流コードにコピーペーストして、その自分流コードを書き換えてみて試行錯誤しましょう。
プログラミングの学習では、正解のコードを、覚えることは、けっして、学習の目的ではありません。そもそもコードは、無限のパターンがあるので、覚えようと思っても不可能です。
プログラミングの学習は、もしもミスのあるコードを書いてしまった場合に、そのミスを探し当てられるようになるために試行錯誤することが、学習の目的なのです。
さて、書籍での学習で、数分ほどの書き換えによるコードの試行錯誤が終わったら、書籍をそのまま次のページへと読み進んでください。 そして、また新しいコードが出てきたら、同様に入力してプログラムを実行してみます。なお、新しいコードの入力の際、たいていは、前のページで入力した前回のコードに近いコード前回のコードをコピーペーストして、それをもとに、いまのページの新コードへと書き換えても、かまいません。
いちいち、まったくゼロから新コードを書き始める必要は、ありません。 けっして「コピーペーストをして入力作業を減らしても、技術が身に付くのだろうか?」と心配する必要はありません。なぜなら、たいていの初心者は、たとえコピーペーストをして作業を減らした場合ですら、入力ミスをしてしまうことが多く、なにがしかのエラーを起こしてしまうからです。
裏をかえせば、コピーペーストをして入力作業を減らしてもエラーを起こさずに正常にプログラムを実行できるようなコードをすぐに書けるなら、すでにアナタは、そのページの新コードが、だいたい分かっているのです。 ともかく、コードを実行してみてエラーが出ても、エラーがなくなるまで直しましょう。もし、エラーがなく正常にプログラムが実行されたら、また自分流に書き換えを数分ほどしてみて、試行錯誤します。 それが終わったら、次のページへと読み進めます。
高校生の範囲なら、このような練習方法でも、充分です。 もし高校でJavaScriptや(プログラミング言語ではないが)HTMLなどを習う場合の練習方法も、だいたい、このような感じで練習すれば、高校生なら充分でしょう。
(※ 範囲外)高校生でも使えそうなテキストエディタ
編集プログラミング用のテキストエディタですが、家でプログラミングする場合は、windows標準のメモ帳(notepad)とは別に、新規ダウンロードして用意したほうが便利です。
なぜなら、読みやすい設定が、一般の日本語を読みたい場合と、プログラムをしたい場合とで、それぞれ異なるからです。一行当たりの文字数や、Tabボタン使用時の文字数の間隔など、読みやすい設定がそれぞれ異なります。
Windowsの場合、日本語で読みやすい設定にメモ帳が設定されています。このため、標準設定では、ややプログラミングがしづらいです。かといって、メモ帳の設定を変えてしまうと、今度は日本語が読みづらくなってしまいます。よって、メモ帳とは別のテキストエディタが追加で必要になります。
そのため、cppファイル(C++の拡張子が .cpp )などプログラム用のファイルの読み書きでは、新規追加したテキストエディタで開くようにするほうが便利でしょう。
Windowsで使えて初心者でも使えそうなので昔から有名なのだと、w:サクラエディタとかw:TeraPadなどがあります。
秀丸エディタは昔から有名ですが、しかし有料です。
Vim とか emacs というエディタは、初心者は使えないので、しばらくは放置しておいてください。
BracketsやAtomなどのエディタは、比較的に新しくてWindows以外でも使えるエディタもありますが、しかしやや動作スペックが重いです。お使いのパソコンが型落ちなどで非力な場合、サクラエディタやTeraPadなどで代用することになります(Windowsユーザーの場合)。
脚註
編集- ^ 今後の学習指導要領改訂スケジュール平成28年8月26日 中央教育審議会 教育課程部会 資料3
- ^ 検定教科書の購入方法については、記事『小学校・中学校・高等学校の学習/検定教科書の購入方法』を参考のこと。
- ^ 『高等学校 情報|教科別発行教科書の紹介|教科書|一般社団法人教科書協会』 2024年02月28日に確認
- ^ 『東京都教育委員会が2022年4月から都立全校に Adobe Creative Cloud Expressを導入』2022年3月24日 14時00分
- ^ 『東京都教育委員会が2022年4月から都立全校に Adobe Creative Cloud Expressを導入』2022年3月24日 14時00分
- ^ ASCIIコードと表記されることがあるが、ASCIIはAmerican Standard Code for Information Interchangeのアクロニムのなので「ASCIIコード」では「情報交換用米国標準コードコード」となってしまう。
- ^ アセンブリ言語を扱っているが、しかし「アセンブリ」の用語は教科書にはみられない。
- ^ 「ベン図」という用語は、教科書にはみられない。
- ^ 9.0 9.1 日本文教出版