実は気づかないうちに利用している…!?明日人に話せる現代社会を支えるプログラミングの知識をキャッチアップ

皆さんにとってプログラミングとはどのようなものでしょうか?

・専門の人達がやっている高度な技術

・最近では小学校のカリキュラムに組み込まれたもの

・何かが動いているけど何がどのように動いているのか分からない謎のもの

おおかたプログラミングに馴染みのない人が抱く印象はこんなところだろうと思います。しかし、プログラミングは皆さんの生活を支えていると言っても過言ではありません。

その証拠に皆さんが、この記事を読んでいるということは、既にプログラミングされたものに触れているということになります。

そう、まずWindowsやiOS、Androidといった端末そのものがプログラミングによって動いているからです。

いきなりパソコンやOSといった話をしても話が入ってこないかもしれないので、幾つか身近な事例を紹介して、プログラミングを身近に感じて頂きます。

プログラミングが利用されている分野として一番多いものが業務系アプリケーションであるため、やや業務寄りの内容になっておりますが、ゲームやホームページと言った趣味の分野についても幾つか例を挙げております。

1:プログラミングが使われているもの

ここでは皆さんが必ず1度は使ったことがあるであろう身近なものにどのようにプログラミングが使われているか説明します。

プログラミングは確かに難しいものですが、習得をすることによりこれらのものが開発できるようになります。

ホームページ

 まず、皆さんが1日1回は必ず使うツールとしてインターネットがあります。

その中でWebニュースを見たり、グルメサイトで予約を行ったりするときに必ず見るものがホームページになります。ホームページというと、Wordで作れたり、ホームページを作成してくれるソフトが存在するのであまりプログラミングとして認識する人は少ないですが、会員入口を作ったり、文字や画像を動かして豪華に見せるためにはやはりプログラミングの知識が必要になります。

ホームページ開発で使われている主な言語としては、HTML、JavaScript、Java、C#、VB、PHPなど多数ありますが、これを全て習得する必要があるわけではありません。

極端な話、簡単なホームページであればHTMLさえ覚えてしまえば作れるようになります。JavaScriptも覚えておけばHTMLでは表現出来ないような細かい動作も作れるようになります。

では他の言語は何のためにあるのかというと、HTMLとJavaScriptだけでは表現できない機能というものがあります。例えば後述の「通販」でも記載しますが、現在の在庫数を取得したり、会員サイトであればその人が本当に会員かデータを照合したりその役目は多種多様です。

基本的にJavaもC#もVBもPHPも実現できる機能に差はありません。

何が違うのかというと、「会社の文化」(その会社がどの言語を採用しているか)でしかないと言えます。

一般的にはPHPはエンターテインメント(ゲーム系のサイトやアミューズメントなど)で使われているケースが多いですが、証券や医療、デパートの管理システムでも実際には使われています。

他方で、業務系向けとされるJavaやC#、VBがゲーム系で使われている事例もあります。

このように、プログラミング言語には柔軟性があり、「このホームページだからこの言語」というのはあまり無いです。もちろん適した言語、作りやすい言語はありますが HTML、JavaScriptに加えて、どれかの言語の基礎を覚えるだけでかなり手の込んだホームページが作れるようになります。

通販(ECサイト)

 次に皆さんの身近にある例としては通販というものがあります。Amazonや楽天といった店舗が出店しているものから、Yahoo!オークション、メルカリなどオンラインで色々な人が売買するサイト、アプリではかなり高度なプログラミングが行われています。

個人情報の暗号化、クレジットカードの暗号化についてはかなり高度な知識が要求されます。

その他にも、売れたときに在庫を引き落とす、キャンセルや返品の時には在庫を増やすといった内容は人間の手を介しているわけではなく、全てプログラムによって制御されています。

またAmazonや楽天といった大手通販では、店に売上情報が送信されたり、在庫がどこにあるかを通知したりする機能も存在し、殆どプログラムにより自動化されています。

その他にもアメリカ最大手のウォールマートが開始し、Amazonも追従しているドローン宅配についても、GPSと顧客の個人情報から自動で配送できるようにプログラミングがされています。(ただ、高層ビルによるGPS誤作動やドローンの高度限界を超えた階層への配送など課題は存在します)

SNSアプリ

 皆さんにとっては最もなじみ深いアプリであるSNSアプリ(Line、Message、Instagramなど)もプログラミングの産物になります。

SNSアプリは通信であったり、複数の異なるキャリア(iPhoneやAndroid、パソコン)でも送受信が出来るなど機種に依存しない文字入出力と通信をできるようにした画期的なアプリケーションになります。

令和の現代では信じられない人もいるかもしれませんが、つい15~20年前まで「機種依存文字」というものが存在し、A社の携帯からB社の携帯にメールをした場合に正しく表示されなかったり、そもそも正しく配信されないことがありました。

この飛躍的な進歩を支えてきたのもプログラミングにより細かい制御ができるようになったほか、記号や機種依存文字について開発時に細かい取り決めが行われたからに他なりません。

ゲーム

 IT業界に飛び込む人のうち、ゲームを作れるようになりたくてプログラマになった人は数多くいます。

しかし、ゲームプログラミングはかなりここで挙げたどの例よりも高度な知識が要求され、挫折する人が多いのもまた事実です。

数当てゲームやハングマンといった簡単なゲームであれば、情報処理を専攻した人やちょっとプログラミングを勉強した人なら簡単に作れますが、最近のゲームはVRであったり、グラフィックが凝っていたりしているので数当てゲームが作れる程度のスキルでは当然ながら作ることは不可能です。

今まで挙げたものは、実はC#、VB、PHPといった技術のどれかを習得すれば作れるようにはなるのですが、ゲームではUnity(C#)、UnrealEngine(C++)、C言語、Python、Swiftなど担当する機能によってそれぞれ異なる言語スキルが必要になります。

皆さんが「このゲーム面白い!」と感じるものは、それだけ裏で細かいシナリオが作成され、そのシナリオを実現するために複雑なプログラムが組まれていることになります。

ゲームプログラマに問われる知識は実際にプレイヤに見えるフロントエンドのプログラマか、通信やデータ連携、セキュリティを担保するサーバサイドのプログラマで大きく異なります。

そのため、学生の文系・理系の進路のように大体の人はサーバサイドかフロントエンドで進路が分かれます。逆に言えば、そこまで注力をしないとならないほど技術のハードルは高いということになります。

Windows環境における初心者向けプログラミング言語

こちらで取り上げてきた例はあくまでもプログラミングを習得できればできるようになるものであり、これを読んでいる皆さんは、「プログラミングに興味がある」、「プログラミングを習得したいけど何から始めればいいだろう」と悩んでいる人が大半だと思います。

そこでWindowsユーザであれば初心者でも勉強するために適した言語を幾つかピックアップしてみました。「勉強するために適した」の基準は以下の通りです。

・Windows環境で動作すること

・エラー情報が分かりやすいこと

・Windowsユーザであればコストが掛からない、もしくは低コストであること

・動作が目に見えてわかること

ExcelVBA

 Windowsを利用している人の殆どはMicrosoft Officeがインストールされているかと思います。

これから新規インストールをご検討されている方は、クラウド環境で動作するOfficeにOffie365というものがあり、そのライセンス料は1カ月1,200円程であり、安価でインストールできるため入れておいて損はありません。

OfficeのExcelにはマクロという一定の操作を自動で実行させる機能が存在します。これがプログラミングとどういう関係があるかというと、実はマクロはVBという言語で動いています(厳密にはVBA)。

このVBAの何がいいかというと、構文を間違えているとその場でVBのエディタ画面が間違いを指摘してくれたり、「こういう風に書く」ということを予測変換してくれる(これを専門用語ではインテリセンスと呼びます)ので初心者でも本当に基本の構文を覚えてしまえば誰でも一定水準のプログラムが作れるようになります。

また、Excelの画面で自分が作ったマクロがすぐに動作するので、プログラムが動作する仕組みが目に見えてわかります

1つでも動くプログラムが完成したら、そのプログラムを少しずつ拡張すれば知らず知らずのうちに結構大きなプログラムが完成するようになり、それだけプログラミングのスキルも身に付きます。

Officeが入っている人はマクロやVBのエディタを無料で使うことが出来ますし、Officeが入っていない人も、Office365をインストールすれば最初の1カ月は無料などコストを抑えて本格的なプログラミングができるようになります

Windows Shell スクリプト

 Windows ShellスクリプトとはWindowsに標準提供されている機能をプログラムで実行するものです。皆さんがフォルダを開いたり、ファイルを開いたりするときにアイコンをダブルクリックすると思いますが、実はあれはフォルダやファイルをアイコンとして見える形にしただけであって、その裏ではWindows ShellスクリプトやバッチファイルというWindowsのコマンドが実行されています

簡単な例を挙げると、何かソフトをインストールするときに、黒い画面が幾つか立ち上がるのを見たことがある人は多いと思います。

一瞬なので、何が表示されているのか分からないと思いますが、あれは実行したファイルが存在するフォルダに移動して、インストールのコマンドや実行ファイル(xx.exe)を実行しています。

Windows Shellスクリプトの言語はVBScriptという言語で書かれていて、その構文は殆どVBと同じです。

なので、VBが多少わかるようになればWindowsをカスタマイズしたり、機能を拡張することができるようになります。

エディタもVisual Studio、Microsoft Excelのマクロ編集といった汎用的な開発環境(IDE)やサクラエディタ、秀丸エディタでも編集が可能です。

ただし、コマンドを間違えたときに下手するとWindowsをクラッシュ(壊れる)させてしまう危険性もあるため、まずは慣れるまで「フォルダの中のファイル一覧を表示する」、「特定のアイコンをクリックしたらWindowsを再起動する」など簡単なところから徐々に慣れていくといいでしょう。

HTML

 HTMLとはHyper Text Markup Languageの略で、主にホームページを作成するときに使う言語になります。実はHTMLは結構奥が深く、何年もWebプログラマとして仕事をしている人でも完全に理解している人はあまり居ません。

ただ、プログラマを志す人であれば誰でも一度は自分のホームページを持つことに憧れがあるはずです。

初心者はまずはHTMLの書き方や仕組みを理解して、画面に「Hello World」と表示させたり、その文字の大きさや色を変えたりするところから始めると比較的すんなり入れます。そしてHTMLである程度好きに組めるようになったときに、ボタンを押したときにどのような動作をさせるのかといった細かいところをJavaScriptで組む練習をします。

1日の勉強量や習熟度にもよりますが、大抵の人は数カ月以内にある程度のクオリティのホームページが作れるようになります

ホームページを作った後はそれをカスタマイズしたり、記事を追加してブログを作ってみたり、ボタンをクリックするだけの簡単なゲームを作ってみたり、発展する方法は無限大です。

実はこれまで説明してきたことがある程度できるようになると、Webプログラマとしての道が開けてきて、VBとHTMLの知識から、ASP.NETというWebプログラミング環境で色々なサイトが組めるようになります。

ASP.NETに於ける開発の一例として、ECサイトであったり、会員向けサイトがあります。他にも習熟度を高めていけば簡単なブラウザゲームを作ることも可能になります。

プログラミングを覚えるメリット

プログラミングを覚えうと沢山のメリットがあります。SEやプログラマではない職場でプログラミングが出来る人が一目置かれるという経験はないでしょうか。では、なぜ一目置かれるのかを順を追って説明致します。

事務作業もプログラムを覚えると楽になる

 一目置かれる主たる理由は事務作業が楽になることで業務の効率化が図れる事ではないでしょうか。

確かにプログラムを作る最初のうちは時間がかかるかもしれません。しかし、そのプログラム二よりその後の作業スピードが数倍に効率化されます。

なぜExcelで表計算をするのかと言われたら、恐らく「見やすいから」、「計算が正確だから」など幾つもの答えがあると思います。

では、例えば「フォルダの中に100個くらいあるファイルの一覧を出してほしい」と言われたらどうするでしょう。100個を一つ一つ手打ちで書いていたら何時間も掛かってしまう上に、読み間違えや入力ミスが発生するかもしれません。

しかし、マクロやWindows Shellスクリプトの知識が多少でもあれば、ファイル一覧を取得するプログラムなど10分もあれば作れてしまいます

そうすると、10分だけ時間を使い、何時間もかかる作業がすぐ終わり、次の仕事に取り掛かることができます。

SEやプログラマの間では有名な言葉ですが「Let the computer do dirty jobs」(汚い・煩雑な仕事はコンピュータにやらせろ)という言葉があり、それを実現した人は仕事ができる人間だと思われます。

論理的思考力が身に付く

プログラミングを習得することで論理的思考力が身に付きます。プログラムとはよくも悪くも皆に平等で「思った通り」に動いてくれず「書いた通り」に動きます(これも有名なプログラマの格言です)。

いくら「こういう風に動いてほしいのに!こうなることを期待したのに!」と言っても動いてくれません。

そういう時にちゃんと自分が書いたプログラムを客観的に分析する力が問われます。

「こうなるから、ここで変な動きをする。だからここを直せばOKだ」という三段論法が成り立ちます。簡単に三段論法と記載しましたが、まさにこれが論理的思考力です。

論理的思考力が養われれば、相手に伝えたいことを順を追って説明ができるようになったり、仕事でも色々細かい分析ができるようになります。

仕事に利益が出ていないときも「なんで利益がでないんだ!」と怒ったり嘆くことは簡単です。

しかしそれだけでは感情論や根性論になってしまい、その場しのぎで改善はする可能性はありますが抜本的解決は出来ません。

そういう時に論理的思考力がある人は問題点を分析して、どこで利益を無くしているのか、なぜ利益が出ていないのか、何を解決するべきかというのが分かってきます。

プログラミングが少しできるだけで仕事の幅が広がる

 プログラミングが少しできるだけで仕事の幅が広がります。実際に中小企業の事務の主婦パートがプログラミングを少し覚えて、作業を効率化させて論理的に会社の経営状況を理解できるようになって、取締役まで上り詰めたという事例もあります。

プログラミングは確かに習得するのは難しい事ですが、キャリアパスを大きく広げてくれる一つの要素になります。

私はプログラマではないから関係ない」と思う人も多いかもしれませんが、実はそういう人のちょっとした意見や発想の転換から生まれたアプリが大成功を収めたというケースもあります。

簡単な一例を挙げると、現代では小学生も当たり前のように使っているパソコンは元々戦争の道具でした。ENIACと呼ばれるパソコンでミサイルの弾道を計算するために作られたものです。

それを一般家庭用に普及したApple社やMicrosoft社、Redhat社が大成功を収めたということになります。

最後に

スマホを始め、身の回りの殆どの物にプログラミングが使われており、プログラミングされたものが現代社会の基盤を支えていると言っても過言ではありません。

逆を付けば、プログラミングを勉強することでビジネスチャンスや皆さんのキャリアパスは無限に存在することになります。

そのビジネスチャンスやキャリアパスを活かすか殺すかは皆さん次第ということになります。