プログラミングってよくわからない?
実際に何をやっているの?
最近注目されているSE(システムエンジニア)やPG(プログラマー)という職業ですが、「そもそもプログラミングとは?」といった疑問を抱えている方も多いですね。
今回は、そういった方へ向けて「プログラミングの基礎知識と裏事情」についてを現役のシステムエンジニアが、わかりやすくご紹介します。
なんのためのプログラミング
そもそも、プログラミングは何のためにするのでしょうか?
私たちのようにエンジニアであれば、「そんなの決まってるじゃん・・・」と思うかも知れませんが、今までそういったことに縁がない人からすれば、何をどうすればどういったことができるのか、検討がつかないものです。
プログラムという言葉は、IT関係意外でも幅広く使われています。例えば、小学校の運動会や文化祭へ行くと、プログラムを配られますね。実はこれと役割自体は同じで、その対象が人間ではなく機械だということです。そして、プログラミングはそのプログラム(指示書)を作るための行為そのものを指していると考えてもらえば良いでしょう。
機械に対する指示書
では、どうやって機械にプログラミングで指示を出せばよいのでしょうか?
これは、プログラミング言語によっても違いますし、機械の種類によっても異なります。ここも人間世界に置き換えると、すんなりと理解できるでしょう。
日本語の学習をしたことのない、生まれも育ちもフランスで、両親もその両親もフランス生まれフランス育ちの人に対して、日本語で指示を出すのは難しいですね。おそらく指示を出すためには英語かフランス語を選択することになりますよね。
環境やその相手によって指示の出し方は異なるように、プログラムも言語やその対象によって異なります。
また、指示書を作ったは良いものの、それをそのまま自分の机の上に置いていれば、その指示に従う人はいませんね。見てもらうためには手渡しをしたり、メールで送ったり、決められた場所へ置く必要があります。
プログラミングをしても同じで、コードを書いたからといって、いきなり機械は動いてくれません。その機械が読める場所に置いてあげることで、初めて成立するのです。
単純なことを機械頼み
では、実際にどういったことができるのでしょうか?
基本的には「なんでもできる」と言われています。もちろん、物理法則を無視したようなことなど実現不可能なものはありますが、人ができる作業のほとんどを機械化することは可能なのです。
最近の企業であれば、単純な作業やデータの管理はシステム化しています。ここにももちろんプログラミングが用いられています。
新しい社員さんが入ってきて、履歴書をファイルへ入れたりする業務がありますね。少数精鋭の会社であればそこまで負担では無いかも知れませんが、100人、1000人と増えていけば、紙ベースの場合だと管理することだけで精一杯になります。
それを、パソコンでデータ入力をして保存ができれば、検索するのも簡単ですし、在籍年数を自動で計算してくれたり、その人の出勤状況なども連携させれば、わざわざ給与計算をせずとも月末になれば給料計算を自動でさせることも可能です。
このとき、機械からすれば作られたプログラムを元に作業をしているだけに過ぎません。
- 名前が入力されたら保存をする
- 退勤入力がされたら、その日の出勤時間の差を勤務時間とする
- 月末になったら、その人の勤務時間と基本給を使って計算をする
簡単に言えば、こういった指示をプログラミングしておくことで、機械は忠実に守ってやってくれるのです。
しかし、機械は臨機応変に対応することができませんので、指示がなければ動いてくれません。
例えば、基本給が1円で設定されていた場合、人であれば「おかしい」と感じて正しい基本給を確認してから給与計算をするはずです。ですが、機械は基本給が1円ということに対しては「おかしい」と判断してくれません。そう判断してもらうためには、「基本給が〇〇円以下の場合はおかしい」という指示をしておかなければならないのです。
それらを踏まえると、本当に機械頼みで良いのかと議論されることもありますが、指示さえ的確に与えられていれば、人間が1日でやるような作業も数秒で終わらせてくれることもあります。
単純作業であればあるほど機械へ与える指示書は簡潔になるので、機械からすれば得意分野です。プログラミングができれば、あなたに機械という部下ができ、あなたが知識をつければ付けるほど、その部下は優秀になるということです。
英語や数学は必要か
プログラミングというと、多くの人が「英語は必要?」「数学は必要?」という問いを投げかけてきます。真っ黒の画面に英語や数字を打ち込んでいる姿を見れば、そう思うのは無理ありませんね。
もちろん知識があれば役立ちますが、必要だと言うレベルではありません。
税関で止められました
私はシステムエンジニアという職業ですので、ほぼ毎日のようにプログラミングをしています。ですが、英語は全くと言っていいほど喋れませんし、英語の本を読んでも9割何が書いているのか理解できません。
私は初めて海外へ行った時に、入国審査で問われる質問(英語)の意味がわからなすぎて15〜30分ぐらい税関で止められたぐらいの英語力です。ですが、そのときも私はバリバリのプログラマーをしていました。
プログラミングでは確かに英語を使います。ですが、使う単語のほとんどが生活で使わないものであり、そこまで数が多いわけでもありません。
なので、drink(ドリンク)やworld(ワールド)といったような単純な英単語を覚えるぐらいの要領で、やっていれば身につきます。そして言語と大きく違うところは、会話としては使わないので、わからなければ調べながらで事足りるのです。
ですが、英語ができればかなりのアドバンテージになります。
なぜなら、世の中には他の人が書いたプログラムがネット上に数多く公開されており、それを見て参考にしたり、勉強することがほとんどです。日本語の説明がついたものより、英語で書かれた情報の方が何倍も多く、プログラミング言語は国に関係ないので、それらを参考にする際に英語が読めるのと読めないのでは大きな差があるのです。
体育科出身です
では、数学についても考えてみましょう。
確かに、プログラミングで計算を用いるケースは多くありますが、そのほとんどが四則演算ができれば十分対応可能なレベルです。中には、複雑な数式を用いて組まれるものもありますが、その割合は多くありませんし、そういった計算が必要になったタイミングで覚えれば十分です。
私は普通高校に通わず、体育科という専門の高校に通っていました。そのため、数学Ⅰと数学Aは学びましたが、高校2年生になれば数学の授業はなくなり、そこから全く数式と縁の無い生活をしてきました。
もちろん、それまでの数学に関しても、決して点数が良かったことはありませんし、数学Ⅰと数学Aでどういった内容があるのかどころか、中学でやった数学の内容すらほとんど覚えていません。
ですが、数式を使ったプログラムも書けますし、複雑なものであってもそのタイミングで覚えれば十分に使いこなすことができます。
プログラミングでは論理的思考が求められるので、数学が得意であればきっとプラスになりますが、「文系だから」「数学は苦手」ということはほとんどハンデになりません。
知られていない意外なコト
「仕事でプログラミングをやっている」と言えば、多くの人が「毎日黒い画面に向かってコードを打ち込んでる」といったようなイメージを抱いてくれます。
ですが実際は、書類を作ったり、打ち合わせをしたり、開発する環境を準備したり、地味な作業の割合がほとんどだったりします。
今回は、その中でも意外と割合の多い書類作業について触れてみましょう。
書類作りをやってます
プログラムを組むといっても、いきなり黒い画面に向かって英数字を打ち込んでいくわけではありません。
どういったプログラムにするのか、そのためには何が必要か、画面はどんなものにするのか、必要な機能は何か、どういった組み方をすれば良いかなど、仕様を決めたりプログラムや画面の設計書や定義書を作ったりする作業が、プログラミングを始める前の大部分となります。
中には、そういった書類作業は別の人がやって、出来上がった仕様書通りにプログラミングをするだけのポジションを与えられた人もいます。よくプログラマーと呼ばれている人がそれに該当します。ですが、少数精鋭でやる場合には書類作業も各自で担っているケースは多く、そこそこの時間を要しています。
また、プログラムを組み終わったら、それが正常に稼働しているかをテストしたり、使い方の書類を作成したりしなければなりません。
規模によっても異なりますが、プログラミングの時間以外にもそういった作業が多く存在しているのです。
アップデートが欠かせません
プログラマー、システムエンジニアは技術職ですが、手に職つけたからと言って一生安泰とはいかない世界です。
なぜなら、日々言語は新しくなり、フレームワークやライブラリなど開発を便利にサポートしてくれるようなものもどんどん登場することで、新しいユーザーは自分たちよりも新しい技術を備えて乗り込んでくるからです。
ですが、過去学んだことが無駄になるようなことはほとんどありません。ベースとなる知識があれば、新しいものを導入するのに時間や費用といったコストが掛からなかったり、新しいものを使う上でも過去の知識が必要だったりすることがほとんどだからです。
ですが流行がある以上、常にアップデートしながら新しいものを取り入れなければ置いていかれてしまうため、日々仕事と隣合わせとなって勉強がついてまわります。
プログラミングができれば便利な半面、それを仕事にする場合は常に勉強するという前向きな姿勢が求められるのです。
まとめ
いかがだったでしょうか。
今回は「プログラミングとは?基礎知識と裏事情」についてご紹介しました。
もしプログラミングというものが分かり、興味を持ってくれた方は、ぜひ学習を初めてみてはいかがでしょうか?
そういった方は、短期間で稼げるシステムエンジニアになる方法についてもまとめていますので、一度目を通してみてください。
IT社会となった現代では、プログラミングスクールや書籍、独学など色んな方法でスキルを習得して、多くの方が活躍しています。
将来プログラミングをする仕事についてみたい、趣味や副業でプログラミングを勉強したいという方は、ぜひ参考にしてみてくださいね。