非ITエンジニア(初心者)がプログラミングで何か実現するにはそれなりに多くの知識が必要になってきます。
そもそも「ビットとは?」や「ネットワークとは?」などプログラミングを始めたけど分からない…
とプログラミングとは別のところで躓くことが多くあります。私も学生の時、コンパイルエラーで挫折しました。ファイルの取り扱い(ディレクトリ、パス)等、曖昧なままだと躓くことを経験しました。
そこで、挫折してプログラミングを途中でやめてしまう方が一人でも減るように理解しておくと良い情報理論を中心にまとめました(私自身もまだまだ勉強中の身ですが)。
ここでは、全くの初学者がプログラミング学習を行う上でプログラミングの知識だけではなく、一緒に知っておくと良い基礎的な情報理論(知識)について、概要を解説しています。
この記事の対象
情報理論とは
情報理論の始まりは、シャノンが1948年に「通信の数学的理論」と題する論文だとされています。
つまり、情報理論とは数学的に示している通信全般のことを指しています。
では、なぜ情報理論を学ぶと良いのかということですが、現代ではPC、スマホ、タブレット等の電子機器が普及しています。
当然、電子機器は情報を扱っています。その上にプログラミングというものが存在します。そこで情報自体を「理論」として理解することでプログラミング自体の理解が深まると考えられるからです。
本サイトでは「情報理論」はプログラミングに役立つこと全般(ITリテラシー)という意味で取り扱っています。よって、学問としての情報理論については紹介していないのでご了承下さい。
学問としての「情報理論」を勉強したい方は以下の書籍がおすすめです。
情報理論を学ぶメリット
プログラミング初学者が情報理論を学ぶメリットには以下があります。
1つ目に情報理論は「情報そのもの」を扱う分野なので、情報の単位から通信方式等、広く学ぶことがプログラミングの本質を理解することに直結します。プログラミングは情報を操作する行為なので、情報理論(ハードウェア、ソフトウェア視点)を学ぶことがプログラミングの本質を学ぶことに繋がります。
2つ目にプログラミングでのエラー時、解決する糸口や道筋を立てられるようになります。プログラミングで何を実現するかにもよりますが、サーバーやネットワークについて知っているとエラー時、自力で解決することができ、効率良くプログラミング作業ができます。
3つ目に情報強者になれます。漠然とした言い回しになってしまいましたが、情報理論を勉強すると1次情報を確認する癖が付きます。本当にこれ正しいの?という視点で物事を見るのでITリテラシーが向上します。
ちなみに、このブログの内容についても疑いながら読んで下さい(細心の注意を払っていますが)。
勉強のゴール
プログラミング初学者が最低限押さえておきたいITリテラシーを身につける方法としては、「ITパスポート」「基本情報技術者試験」を取得するのが効率的で勉強の指標になります。どちらの資格も国家試験になり、履歴書にも書けるのでおすすめする理由の1つです。
ITパスポートと基本情報技術者試験の位置づけは以下の通りです。
項目 | 内容 |
ITパスポート | 対象者像は「職業人が共通に備えておくべき情報技術に関する基礎的な知識をもち、情報技術に携わる業務に就くか、担当業務に対して情報技術を活用していこうとする者」。 |
基本情報技術者試験 | 対象者像は「高度 IT 人材となるために必要な基本的知識・技能をもち,実践的な活用能力を身に付けた者」。 |
ITパスポートを指標にする ⇒ 社会人におすすめ
ITパスポートは「ITを利用する全ての人」向けの国家試験です。指標にするメリットは「試験範囲」が関係しています。
ITパスポートの試験範囲は大きく分けて、3つの分野から構成されています。
ストラテジ系はITを利用する企業・団体の運用方法、マネジメント系はITを利用する企業・団体における組織・個人の管理方法、テクノロジ系はIT全般の技術的なことについて問われます。
これらの3つの要素を広く学べることが最大のメリットになります。
テクノロジ系でIT全般の基礎知識を吸収しつつ、社会人として必須のマネジメント、経営戦略等の基礎知識を学べるのが利点です。
以下にITパスポートについてまとめています。良かったら、ご参照下さい。
基本情報技術者試験を指標にする ⇒ 技術者におすすめ
基本情報技術者試験はITパスポートに比べて難易度が高く、より高度な問題が出題されます。位置づけとしてはシステム設計や開発に携わる業種の方が対象です。
試験の区分はITパスポートと同じで「ストラテジ系」「マネジメント系」「テクノロジ系」になります。
ITパスポートに比べると計算問題が増えたりしますが、メリットとしてはアルゴリズムやPCの細かな動きを勉強できるので、コンパイラ言語のC言語などを学ぶ際に効率的にプログラミングができるようになります。
以下に基本情報技術者試験についてまとめています。良かったら、ご参照下さい。
最低限知っておきたい基本的な知識
最低限、押さえておきたいことは以下の3つです。
上記の3つは、理解しておくとプログラミングのエラー時、解決の糸口として効力を発揮することがあります。
情報の単位 ⇒ bitとbyteの理解
情報は0と1のbitから成り立っており、bitが8つになったものがbyteになります。2の8乗(=256)通りの情報を示すことが可能です。
メリット
単位を理解しておくことで「stack overflow」などのエラー時、見直すべき箇所を予測できます。
0始まり
情報は0始まりです。
メリット
例えば、配列における指定間違い時、本来参照したい場所と違うところを参照していた、などはあるあるです。このような時、エラーに対して自力で解決できるヒントになりますので、理解しておくのが重要です。
文字コード
文字コードには、日本語を含む文字列を表現するために用いられるShift_JIS、UTF-8などがあります。
メリット
プログラミングを行っていると文字化けすることがあります。これは文字コードの指定を変えることで解決する場合がほとんどです。文字化けするときは文字コードを見直すと良いです。
独学で習得するための書籍とオンライン講座
実際に情報系の勉強をする際、お金をかけずとも学ぶことが十分に可能です。例えば、大学の講義を無料で見ることができます。
おすすめの書籍
以下、独学でプログラミングを学ばれている方におすすめの情報系知識を深められる書籍です。良かったら勉強のお供にして下さい。
一般書籍
小学生~大人まで万人向けにかかれている「楽しい調べ学習シリーズ」の通信のしくみバージョン。図が豊富なので理解しやすいです。
ブルーバックスから出版されている「冗長性」をキーワードに情報技術全般について解説されています。
専門的ですが、数式等は少ないので、教養を深める位置づけとして一読するのがおすすめです。
専門書
プログラミングを行う上では避けては通れないのがPCに関する知識です。動作原理からディジタル回路まで語られており、大学1年生レベルの内容です。
大学1年生レベルの入門書です。コンピュータの仕組みからデザイン設計まで広く触れられているので万能な入門書です。
情報を取り扱う上で知っておきたい、情報セキュリティに関する内容です。これからプログラミングを通してアプリやサイトを作成する前に読んでおくて良い一冊です。
おすすめのオンライン講座・サイト
オンライン講座で大学レベルの情報系の勉強ができるおすすめのサイトを紹介しています。適宜、ご参照下さい。
一般社団法人日本オープンオンライン教育推進協議会(JMOOC)が無料で大学の講座を提供しているサイトがJMOOCになります。大学の講義を無料で学べるのでおすすめです。情報系だけではなく、経済、工学、数学等の様々な分野を学べるのも最高です。
MITの講義が無料で見れるOpen Courseです。こちらも情報工学だけではなく、電気や数学、物理、経済等の一流の先生たちによる講義を無料で学ぶことができます。講義は英語なので、英語で専門を学びたい人にはおすすめのサイトです。
「IPA」はIT人材の育成や啓蒙を行っている独立行政法人になります。リンク先ではOSSやLinuxについて説明している資料があるので、少し踏み込んだ勉強をしたい方にはおすすめです。どれも無料です。