土曜日, 1月 22, 2022

プログラミングとは

0
プログラミングとは、コンピュータに対して、コンピュータにやって欲しいことを命令を書くことです。コンピュータは命令しなければ何もしないし、して欲しい事を聞くこともないので、人間が何らかの命令をしなければ動きません。コンピュータにやって欲しい事がある場合はプログラミングをします。プログラミングして出来るのがソフトウェアで、アプリ等とも言われています。そのソフトウェアを動かすためのパソコンやスマートフォンの本体のことをハードウェアと言います。 プログラミングをしなくても使えるコンピュータ ここで言うコンピュータのハードウェアは、パソコンやスマートフォンの事です。これらの機器を買ってくると、電源を入れて、アイコンをタップするなどすれば自分がやりたいことが出来るようになっています。これは既にパソコンメーカー、そのスマートフォンにソフトを提供しているメーカーなどが、プログラミングをして使えるソフトを使えるような状態にしているからで、既にプログラミングされた製品を使っている状態です。 つまり、プログラミングは他の人によってされていて、自分ではプログラミングしなくても便利に使えるのが現在のパソコンやスマートフォンです。 自分でプログラミングをする必要はあるのか プログラミングはすべての人には必要ではありません。販売しているパソコンやスマートフォンで使うような高度なソフトは大勢が何ヶ月もかけて作っているので、個人で作ろうと思ってもそう簡単にはできません。 しかし、ちょっとした事なら誰でも簡単にプログラミングできます。 例えば、ある所からある所にデータをコピー作業が沢山ある場合、マウスでデータをコピー、そのデータを貼り付けというのをその回数手動でやらなければいけないような事はよくあります。そのような作業を自分でプログラミングして、一発で終わらせるような事もプログラミングです。 その作業が1回30秒かかっていて、それを120回やらないと行けない場合、手動では1時間かかります。その作業のプログラミングが3分で終わった場合、残りの57分は他のことが出来ます。これを毎日やる場合、1回3分間プログラミングしただけで、月に数十時間節約できます。 このように、プログラミングは人が楽するために使う物で、そのためにプログラミングを学習します。
日本では小学校が2020年度からプログラミング教育が必修化されました。中学校でも2021年度から、高校では2022年度から必修化されたと理解している方が多いですが、中学では2011年度、普通課高校では2003年度から必修化されており、2021年、2022年度からは新しい教育指導要綱での対応になっただけで、基本は変わっていません。 このプログラミング教育のために、自宅での学習の準備をする方もいるようですが、どのような準備が必要になるでしょうか。 プログラミング教育とは プログラミング教育とは論理的思考能力を育てることです。 全員をプログラマーにするという教育ではなく、コンピューターの基本原理を学び、プログラミングの基本となる論理的な思考能力を学び、様々な環境でそれを生かしてもらう事を意図しています。数学で数学者を育ているのではなく、技術で大工を育てようとしているのではないのと同じ考えで、問題解決能力を身につける事などが教育の目的です。 文部科学省の手引き等などでは次のように説明しています。 小学校・総則において,各教科等の特質に応じて,「プログラミングを体験しながら,コンピュータに意図した処理を行わせるために必要な論理的思考力を身に付けるための学習活動 」を計画的に実施することを新たに明記 ・算数,理科,総合的な学習の時間において,プログラミングを行う学習場面を例示中学校・技術・家庭科技術分野において,プログラミングに関する内容を充実 (「計測・制御のプログラミング」に加え,「ネットワークを利用した双方向性のあるコンテンツの プログラミング」について学ぶ)高等学校・全ての生徒が必ず履修する科目(共通必履修科目)「情報I」を新設し,全ての生徒が,プログラミングのほか,ネットワーク(情報セキュリティを含む)やデータベースの基礎等について学ぶ ・「情報II」(選択科目)では,プログラミング等について更に発展的に学ぶhttps://www.mext.go.jp/content/20200608-mxt_jogai01-000003284_004.pdf 具体的に小学校では次のように説明されています。
IT機器はOS毎に環境が異なるため、それぞれのOS向けにソフトを開発する必要があります。Windows、macOS、Android、iPhoneなど向けのソフトは、それぞれの開発環境で、個別に開発するのが通常です。 各環境のアプリを開発には、それぞれの開発環境で開発する必要があり、プログラミング言語もそれぞれ異なるなど、各環境に合わせて個別に開発するのが通常です。それぞれの開発環境で個別に開発するのは単純にそれだけ労力やコストがかかります。そのような労力をかけずに、1つの環境で開発するだけで、複数の環境の開発が出来るクロスプラットフォーム開発もあります。 クロスプロットフォーム(厳密に言えばクロスプラットフォームソフトウェア)とは、AndroidとiPhoneなどOSが異なる環境で、同じ機能を持つソフトが動作するようなことを指す言葉です。マルチプラットフォームなどもほぼ同じ意味ですが、微妙なニュアンスはこの用語を使う方や、コンテキストによって異なります。 例えばAndroidではKotlin、iPhoneではSwiftと、それぞれの言語、開発環境が必要ですが、クロスプラットフォームで開発すれば、1つだけでAndriod向け、iPhone向けに開発が可能です。iPhone向けなら最終的にはMacが必要になりますが、基本的な開発自体はすべて1台のパソコンで可能です。 クロスプラットフォーム開発環境 主なクロスプラットフォームの開発環境は次のようになっています。 XamarinFlutterReact NativeKotlin/Native対応プラットフォームWindows、macOS、iOS、AndroidなどWindows、macOS、iOS、Android、WebなどWindows、macOS、iOS、Android、WebなどWindows、macOS、iOS、Androidなど言語C#DartJavaScriptKotlin主な提供元MicrosoftGoogleFacebookJetBrains それぞれの開発環境、対応プラットフォームなどは異なり、特徴も異なるので、単純にどれが良いか悪いかは判断できません。
コンピューターでのプログラミングは何をするかで難易度が大幅に異なります。マシン語は難易度が相当高く、Cはかなり高く、Pythonはそれほどでもなく、ノーコードは簡単というようなイメージですが、どのくらい難易度が高いのかはプログラミング未経験者の方には全く理解出来ないと思います。 他の世界の難易度と比較してみます。 プログラミングの分類はイメージで実際とは異なる事があります。 料理の難易度車を作る難易度服を作る難易度マシン語魚を釣りに行く、動物を育てる、野菜を種から育てるところから始める鉄、原油、ゴムなどの車に使う素材を探すところから始める綿花、蚕、原油などから素材を作るところから始めるC言語、C++さばいていない魚、ほとんど加工されていない肉の塊、野菜は畑からとってくるなどして、自分で加工して料理をする素材業者に車用の素材を発注して車用の素材を作る糸を編むなどして布にして、染色などは自分で行うJava、C#、Swift魚の切り身、加工後の肉、使いやすいようになっている野菜などの半加工品を買ってきて、自分で暖めたり、味付けなどして自分で作る棒状や板など、ある程度加工されている素材を、自分好みのサイズなどに切るなど、細かな加工をして車に仕上げていく好みの生地を選んで、裁断、縫うなどして服の形にするPython、JavaScript冷凍、レトルトなどから自分で解凍などして並べるパーツを組み合わせて乗りたい車を組み立てる服を加工してオリジナル感を出したりするノーコード並んでる物を選ぶカフェテリア好みのエンジン、シート、色などを車屋に伝えて注文する店で選んで買う使うだけの人お母さんが作ったものを食べるお父さんの車に乗るお母さんが買ってきた服を着る マシン語、機械語 プログラミングでマシン語は、CPU、メモリなどそのコンピュータを全て理解していないと利用出来ませんし、全て1から行わなければならないので、他の難易度で言うと素材集めから始めなければならないような状態です。このレベルになると、専門業者の中のその中の専門家が行うような事になります。プログラミングでは、一般のソフトウェア開発者の場合、ソフトウェアエンジニアリング関連の授業でやったことがある方がいるくらいでしょうか。このあたりを理解している人が本物です。 C言語、C++ ある程度素材が集まり、他の分野なら、専門の業者が行うような事を自分でできるくらいになると、かなり尊敬されるレベルなのではないかと思います。一般的に高速な処理が必要な場合にはこのあたりから行うことが多いです。素材からこだわるプロの料理人、レーシングカーを作るようなレベルになるとこのあたりからでしょうか。車や料理についてある程度わかっていないと、形にもならないように、プログラミングもコンピュータの事を理解していないと出来ないです。 Java、C#、Swift
プログラミングの勉強は本だけでも出来ますし、スマートフォンやタブレットでも出来ます。 しかし、実際にプログラムを作って、その結果を確認するというような事は、パソコンを使わないと出来ません。 このため、パソコン自体の使い方をある程度覚える必要があります。 決して細かなところまですべて覚える必要はありませんが、パソコンで何をするとどうなるのかは理解しないとプログラミングは出来ないです。 プログラミングの勉強をする前に、パソコンの基本的な操作は出来るようにしておきましょう。 特に必要なのはパソコン無いのファイルやフォルダの構造、プログラムのスタートのさせ方、インストール方法といった基本的な事です。 パソコン教室ではWordやExcelの使い方などを中心に教えているようですが、そのような使い方はプログラミングではあまり役に立ちません。WordやExcelで利用出来るVBAでプログラミングの勉強は出来ますが。 自己流で結構ですので、プログラミングの勉強をする前に、パソコンをある程度使えるようにして、プログラミングの勉強している間にもパソコンの機能自体がどうなっているのかある程度理解しておきましょう。 プログラミングを勉強する上でパソコンの使い方、パソコンの機能を知ることは、プログラミングを理解する助けにもなります。