パソコンを使うときに画面のデザインがもう少し使いやすければいいなとか、もう少し操作が便利になったらいいなと思うことはないですか。
自分が納得できるデザインや動きを作ってしまえば、気に入らなくても自分で変えてしまうことができます。自分の思い通りにパソコンを動かしたいと思ったときに必要なのがプログラミングです。
この記事では、プログラミングの歴史から言語の種類、学び方まで入門向けの内容としては大事な要素を盛り込んでいます。これからプログラミングを始める人はぜひ知っておきましょう。
1. プログラミングの歴史
自動計算機の進化により機械式のアナログコンピュータが生まれ、第二次世界大戦のころには機械が電子回路に置き換わったデジタル式の現代のコンピュータの原型が生まれました。
1936年にアラン・チューリングの論文で発表されたチューリングマシンを元にジョン・フォン・ノイマンが、記憶装置にプログラムとデータの両方を格納するアーキテクチャを定義し、現代のほとんどのコンピュータを動作させる基礎が出来上がりました。
1937年にはデジタルコンピュータの父とされているベル研究所のジョージ・スティビッツによって発明されたリレー式計算機「Model K」で初めて計算機に使われたのが2進法です。
コンピュータは条件判断と大きな記憶容量を有効に使い、プログラミングを行うことによって数値計算の自動化だけでなく記号操作の自動化まで可能になりました。
機械が理解できるのは2進数です。この2進数をより簡単に使うために初期のころのプログラミングは16進数を使ってプログラムをメモリー上に格納し、計算結果を記憶しながら条件判断と繰り返しの処理を行います。
やがて、人間の言葉に近い命令を機械の理解できる命令に翻訳して実行するような仕組みが出来上がります。
これがコンピュータシステムのプログラミング言語です。プログラミング言語は人間が理解できる単語や記号、構文を使うことでより判りやすくなり、記述しやすくなりました。
1930年代にパンチカードや紙テープで行われてきたプログラムは、現代では画面からの入力と目的に応じたプログラム言語を使ってプログラミングができるようになりました。
プログラミング言語も単に手続きを記述する時代からライブラリやモジュールを利用する時代に入りプログラミングが効率化されてきました。
ソフトウェア部品を再利用するという考え方はやがてクラス概念を生み出し、今ではWebプログラミングや業務系のシステム、ゲームプログラミングなどはオブジェクト指向のプログラミングが主流となってきました。
さらに、必要機能をまとめ、生産性とメンテナンス性を向上させるために様々な言語やフレームワークが生まれてきています。
コンピュータのプログラミングは機械計算を行う技術から始まり、
電子回路技術の向上によるシステムのデジタル化によってプログラミングの必要性が高まり寄り使いやすく目的を実現しやすい開発言語が生まれ、さらに高度で生産性の高いプログラムの必要に伴いフレームワークが作られてきたのです。
2. プログラミング言語の種類
プログラミング言語は人間がコンピュータに命令を指示するためのものなので曖昧な表現や規則に沿わない文章は解釈されないでエラーとなります。また、プログラムとしてエラーにならなくてもアルゴリズムや考え方が間違っているとシステムは正常に動きません。
プログラミング言語にはそれぞれの目的に向いた使い方があります。どのようなプログラミング言語があるのか見てみましょう。
Java
現在はデータベースを取り扱っているORACLE社が管理、配布を行っている開発sふとウェアで無料で使用することができます。Javaではコンパイルが行われると中間言語が生成されます。
中間言語として生成されたファイルは実行オブジェクトとは違って、単独でプログラムを実行させることができないため、JREと呼ばれるランタイムシステムを先にインストールしておく必要があります。
JREはWindowsやLinux、MacなどのOS向けのものがあり、作成されたプログラムは同じものを様々なOSで利用することができます。
PHP
動的にHTMLデータを生成し、動的なウェブページの作成を実現できるプログラミング言語で、一般的にはWEBサーバーと組み合わせて使われます。
最初は簡単なスクリプトを実行するだけのシステムでしたが、最近ではクラスを実装し複雑なシステムの作成も容易になるとともに、たくさんのフレームワークが産み出され利用されています。
ブログシステムとして有名なWordPressもPHPで作成されていて、プラグインもPHPで作られたりカスタマイズされています。
Ruby
WEBサーバーで動くプログラムで近年よく利用される言語で、Javaなどと同様のオブジェクト指向言語です。業務系のシステム開発では、簡単な記述でシステムが構築できることなどからRuby On Railsというフレームワークを利用して開発されるものが増えてきました。
Python
Linux系のOSの上で簡単な処理を記述するための言語です。GPIOのコントロールなどのプログラムに向いていて、Raspbery PiなどのGPIOのコントロールができるように作られているコンピュータやロボットなどのシステムプログラミングにn利用されることが増えてきました。
JavaScript
JavaScriptはブラウザで利用できるスクリプト言語で、DOMをサポートするオブジェクト指向プログラムです。
名前にJavaという文字が含まれていますが、Java言語とは全く違うものです。
言語仕様はC言語に似た記述を行い、HTMLやCSSと組み合わせることによりWEBブラウザの上で動的表現や表示情報のコントロールなどを行うことができます。
様々なライブラリーやフレームワークが作られているので、開発を行うときにも様々な表現を行うことができます。。
C
数多くあるプログラムの中で、最も基本的で汎用的なプログラミング言語です。
ArduinoやPICマイコンボードなどのプログラムから大型汎用機のプログラムやシステムやOSのプログラムにも使われてきました。
最近はC++が主流になっていますが、最も基礎となる言語として最初に勉強するプログラムとしての人気があります。
BASIC
初心者向け汎用記号命令コード(beginner’s all-purpose symbolic instruction code)の頭文字をとって名付けられた言語で、FORTRANという言語の文法を元にして作られました。
パソコンでのプログラミングで使用されたので、NECや富士通、シャープ、アップルなどの各社で拡張が行われ多くのプログラム作品が生まれました。
SQL
1986年にANSIにより発表された規約で作成されたリレーショナル型のデータベースを管理するための仕組みで、データの操作や定義を行うための非手続き型のデータベース言語で、単独での使用のほか、他の言語に組み込まれて呼び出して使われることがあります。
3. フロントエンドはシステムの顔
コンピュータには入力と出力という二つの機能があります。入出力は画像だけでなく音声やその他のデバイスが使用されることも普通になってきました。
パソコンだけではなく、タブレット型端末や携帯端末といった様々なインターフェイスを持ったデバイスも世の中にあふれています。
こういった機器の表示はグラフィック機能が強力なので、画面の操作がしやすいだけでなく表示や見栄えをよくすることも大切になってきます。
このように、コンピュータと人間が顔を突き合わす場所をインターフェイスと呼び、人間がシステムとの間で情報交換する最前線となります。
フロントエンドのプログラミングでは、こういった最前線での人とコンピュータのやり取りをサポートし、使いやすいものにすることが大切なポイントになります。
WEBのシステムではHTMLが、表示すべき内容を書き出し、CSSによってレイアウトされます。
また、動きのある表示はJavaScriptで動作が記述されます。
フロントエンドのプログラミングをするときには、より使いやすく見栄えの良いデザインに配慮したプログラムを心がけるようにしましょう。
4. バックエンドはシステムの心臓部
バックエンドプログラムは、フロントエンドから送られてくる情報を処理して結果を返すまでの裏方さんの部分です。
受付で申し込みをしたら適切な対応ですぐに処理をして結果を返してくれるといった感じになります。
コンピュータのシステムでは、入力されたデータを記録したり、そのデータで検索をして結果を画面に表示するための情報を送り返したりしてくれます。
一定時間ごとに何らかの処理を行い結果をデータベースに格納したり、メッセージやメールを送信したりといった外からは見えない様々な処理を行っているのがバックエンドの処理です。
複雑な処理や他のシステムとの高度な組み合わせなどにより構築されて、システムの中で最も重要な機能を果たす部分といっても過言ではありません。
そのような作業を行うプログラムでは、データベースに情報を送って必要なデータを出し入れし、HTMLを生成してフロントエンドに送り返します。
プログラムにはWEBサーバーやデータベースサーバーと協調するプログラムが記述できるPHPやRubyといった言語が利用されます。
高速なプログラムが必要な場合はCやJavaといった言語でサーバーサイドの処理プログラムが作成されることもあります。
5. プログラミングが必要な仕事
プログラミングの技術を手に入れることでプログラマーとしての仕事をすることができるようになります。
プログラマーになるとどのような仕事があるのでしょう。いくつか例を紹介していきます。
システムエンジニア
POSシステムや販売や在庫の管理システムのような業務を支援するものから経営分析のような情報処理を行う作業などがあります。
システム設計の段階からテストの段階、システム監査にいたるまで、しっかりとしたプログラミングの知識と能力、それを支えるアルゴリズムと論理的思考が必要となります。WindowsなどのOSの機能を最大限引き出して使いやすく役に立つプログラムの作成をする仕事を行います。
Webエンジニア
WEB関連のプログラムはサーバーを使ったものが多く、フロントエンド処理とそれに対応するバックエンド処理のほか、それらをつなぎ合わせるためのプログラム開発を行うこともあります。
サーバーでは一斉にアクセスが行われる可能性に対応できるプログラミング技術が必要になると共に、フロントエンドとしてホームページの作成技術やデータベースの制御も知識として必要になります。
組み込みエンジニア
ロボットの制御や家電製品や自動車などの組み込みコンピュータのプログラミングなど、ハードウェアに直結したプログラミングの仕事もあります。
主にC言語やJava言語で作成されることが多くなりましたが、アセンブラや専用の言語を使用するものもあります。
6. プログラミングの学び方
プログラミングを学習するときはどのような知識が自分に必要なのか、また何をしたいのかを明確にし、自分の目的に合ったプログラムを勉強する必要があります。
とりあえず勉強しておこうとか理解できそうだから勉強しておこうという考え方では、学んだ知識を仕事に役立てたり、何かを作り出すことはできません。
必ず目標を決めて学習することが大切なのです。
初めてプログラミングを学習する時に気を付けなければならないことは挫折しないことです。
そのため、身の回りで誰かプログラミングに詳しい人がいると質問や相談ができることも多くあります。
プログラミングを学習する前にまずアルゴリズムの勉強をお勧めします。アルゴリズムはすべてのプログラムの学習で役に立ち、プログラミングの考え方の基本となるものです。
独学の方法として書籍やインターネットの無料学習サイトを使う方法があります。
また、それぞれのプログラム言語のレファレンスを準備しておくと良いでしょう。オンラインにリファレンスがある場合は、
必要な内容や場合によってはすべて印刷をしておくほうがいでしょう。
書籍
今は書籍も多く出版され、インターネットの上には無料で学習することができるサイトもあります。
書籍で学習する時には、できるだけ基本が書かれたものと、アプリケーションをテーマに書かれたものを順番に勉強していくと理解がしやすくなります。
インターネットで学習する時でも書籍を併用することで学習の効果が上がります。
翔泳社から出版されている 山田 祥寛著「独習PHP」やマイナビ出版の「CSS,JavaScript,PHPをまるごとマスター」 などが良いでしょう。
オンラインスクール
インターネットではいくつかのオンラインスクールがあります。
こういったスクールではテレビ会議システムやメッセージ機能を使った学習と、個別に相談や指導を行えるように担当者が付くなど、プログラミングを学ぶのに適した環境が提供されています。
オンラインスクールには、TechAcademyやCodeCampをはじめいくつかのスクールがあり、Ruby on RailsやPHP、HTMLなどの技術が学べます。
専門学校・パソコンスクール
社会人対応のプログラミング講座を行っている専門学校も増えてきました。専門学校ではカリキュラムに基づいて学生の教育を担当する先生が指導に当たってくれるので安心感があります。
日本工学院などの専門学校では社会人対応の講座を持っているところもあり、プログラミングを学部ことができます。
また、KENスクールやAVIVA(アビバ)などのパソコンを教えていたスクールなどでもプログラミング教育を始めているところがあります。
専門学校は、体系的に学ぶことのできるカリキュラムが充実しており、講師も専門的に教えることを仕事としている先生が多いので、安心して勉強できる反面、時間がかかるのと時間に融通が利きにくいという特区性があります。
また、パソコンスクール系の教室などでは講師の質にばらつきがあり、業務知識が豊富でも教育に対するノウハウや意識の低い講師もおおく見受けられるので、しっかりとした学習環境を見極めることが大切です。
プログラミングができるようになることで コンピュータの利用範囲や可能性は大きく広がります。
自分でプログラミングができると、仕事としての価値も大きくなり年収のアップにもつながり、何よりも自分自身の価値を大きく意味のあるものに変えていく原動力となります。
学び方や学ぶ機会もたくさん手に入る現代で、優秀なシステムエンジニアが必要な時代に役に立つのがプログラミングです。知識を身に着けて活用してみませんか。