
IT関連の話しになると、必ずと言っていいほど出てくるのは“プログラマーの仕事は将来なくなるであろう”と言う、話しです。
本当にそうなのでしょうか?
プログラマーだけではなく、IT業界全体に関わる話しなので、少し見ていきましょう。
今後、需要のあるIT人材に関しては、こちらを参照してください。
IT業界の今後の展開

プログラマーが不要になると言われていますが、現状のIT業界は人手不足と言われています。
スマートフォンの普及やIOTなど、ほぼすべての人が毎日、電子機器に触れ、インターネットと使用しています。
パソコンの登場と共に社会のIT化が加速していて、インフラ関係のWeb事業化やVRを始めとする映像技術などプログラマーが関わる仕事はどんどん増えていき、従来、人と同士が直接行っていたことのクラウド化や既存の事業のIT化など仕事の幅も広がっていくと予想されています。
また、プログラマー業界も高齢化の波が訪れていて、2030年には、IT関連業界の高齢化も訪れると予想されています。
売り手市場と言われているように、高齢化と仕事の量を考えても需要が供給を上回っている現在を考えると、プログラマーの将来性は高いと予想できます。
なぜ、プログラマーがなくなると言われているか

では、なぜプログラマーがなくなると言われているのでしょうか。
その理由は、主に
- オフショア開発
- プログラミング自動化
- AIの普及
- 機械学習の普及
が、主な理由です。
それぞれのメリット、デメリットも踏まえて、少し、見てみましょう。
オフショア開発

オフショア開発とは、人件費の高い日本で作るのではなく、人件費の安い海外(主に東南アジア)で開発し、それを日本で売ると言うビジネスモデルです。
どの業種でも、一番費用がかかるのが人件費で、それは、海外でも日本でも同じです。
しかし、日本より物価の安い海外に委託することで、人件費を出来るだけ抑えて開発することで、日本で開発するよりも何倍も安く開発することができます。
これが、オフショア開発です。
オフショア開発の場合は、プログラマーがなくなるのではなく、日本で行うプログラミング業務が少なくなると言った状況になります。
しかし、オフショア開発は様々な問題もあるため、現在の状況では、そこまで積極的に行われていないのが現状です。
ベトナムで開発を行うと想定して、オフショア開発のメリットとデメリットを見てみましょう。
オフショア開発のメリット(ベトナムの場合)

それでは、オフショア開発のメリットを見てみましょう。
それは、主に
- 人件費が安い
- 技術力のある人材を安価で雇える
- 人材を確保しやすい
です。
- 人件費が安い

まず、海外は日本と物価が違うので、日本人を雇うのに比べて、人件費を安く抑えることができます。
そのため、原価を出来るだけ抑えて開発することができ、順調に行えれば、利益を大きく得ることができます。
現状、以前まで、世界の下請け工場と呼ばれていた中国よりも、ベトナムの方が賃金が安く、中国の1/2の賃金で雇うことができ、日本から見ると、日本の1/3程度の賃金でベトナム人技術者を雇うことができます。
- 技術力のある人材を安価で雇える

海外の技術者は、英語を話せる人が多く、技術力の高い技術者を安価で雇うこともできます。
ベトナムでは、技術者向けのセミナーなどが頻繁に行われていて、ベトナム人の勤勉さが伺うことができます。
また、国を挙げてIT人材の育成に力を入れているので、常に一定レベルの技術者も集まってきます。
- 人材を確保しやすい

物価が違うので、日本の新卒者の給与でも質の高い技術者を雇うことができるので、それだけ、人が多く集まりやすくなります。
ベトナムでは、現在、日本企業向けのオフショア開発企業も出てきているので、対応力もあり、日本企業からの仕事を積極的受け入れています。
以上が、オフショア開発のメリットです。
オフショア開発のデメリット(ベトナムの場合)

どの業種でも、人件費が一番コストが高い部分なので、メリットばかりに思えますが、デメリットは何なのでしょう。
それは、主に
- 言語が共通ではない
- 時差がある
- 事前準備が重要
- 文化の違い
- セキュリティの不安
- 人件費以外の費用も掛かる
- 人件費が高騰する可能性がある
- 物価の波がある
- 社会的に不足の事態が発生する可能性がある
です。
それでは、項目ごとのデメリットについて見てみましょう。
- 言語が共通ではない

ベトナムの公用語は、ベトナム語で、日本語が通じない事学習の多く、英語を話せる人も多いですが、その場合、日本側のメンバーも英語を話せる人が必要となり、話せる人が居ない場合は、必要に応じて通訳が必要になります。
- 時差の違い、事前準備が重要、文化の違い

ベトナムと日本では、時差が2時間あり、打ち合わせなどの時間を事前に決めないと、文化と習慣の違いで打ち合わせがうまく行かない場合があります。
また、文化が違うため、日本では通じる曖昧な表現は誤った解釈やそもそも通じない場合があり、事前にどこをどのようにし、どこまで行うなどの細かい打ち合わせが必要になります。
品質に対する考えも違うため、事前にどの程度のモノを作りたいかなどを具体的にする必要があります。
また、日本側では問題と感じる事でも、ベトナム側では問題ではないなど認識の違いも多く、また、上下関係を重んじる文化が強いため、現場で改善しなければ問題があっても、日本側に改善を要求したり、上の立場の人に伝えたりすることがうまく行かない場合が多いです。
- セキュリティの不安

日本とベトナムでは、物事に対する意識が違うため、開発している部屋(場所)のセキュリティや開発情報、状況の管理を徹底して教える必要があり、外部に漏れないためにも、セキュリティ面でも意思の疎通が必要になります。
必要に応じて、セキュリティ維持に関わる費用を出す必要もあります。
- 人件費以外の費用も掛かる、人件費が高騰する可能性がある、物価の波がある

人件費以外には、サーバーなどのシステム設備費やインターネットの契約などをする必要もあります。
また、パソコンを動かすための電気代なども必要になり、場合によっては、パソコンのリース契約などの必要もあります。
物価が違うので、人件費の急激な高騰などの可能性があり、ベトナムでは現状の問題はありませんが、委託先によっては一人当たりの報酬の増加などの要望もあるでしょう。
- 社会的に不足の事態が発生する可能性がある

ベトナムは比較的、治安も政治的な状態も安定していますが、社会的な体制が日本とは違うので、社会的な予想できない問題が発生し、開発が中止される場合もあります。
また、地理も日本とは違うので、日本では何も発生していなくても、ベトナムで地震などの自然災害が発生した場合にも開発の中止などもあります。
以上が、オフショア開発のメリットとデメリットです。
オフショア開発のまとめ

人件費が安くなるのは最大のメリットであり、全体のコストを抑えることができるので、デメリットで掲げた点に注意すれば大きな利益を出すことができます。
しかし、オフショアを行う企業が増えれば、委託する国の人件費の上昇は必ず発生するので、人件費が高騰すればオフショアを行うメリットも少なくなってしまいます。
日本で、オフショア開発がそこまで盛んに行われていないのには、人件費の高騰の問題が非常に大きく、人件費の横ばいになっています。
なので、日本からプログラミング業務がなくなることも、仕事に困るほど少なくなることもないでしょう。
プログラミングの自動化

プログラミングは、プログラミング言語と呼ばれるソースコードで書かれていますが、ソースコードは、アルファベットと記号で構成され、システムを作るためのコードは、基本的な文法(規則)が存在します。
なので、開発したい目的物がはっきりしていれば、基本的な部分をコピーすることで誰でもWebサイトやアプリを開発することができます。
これをより簡単に行うためのアプリやツールは既に開発されていて、そのことをプログラミングの自動化と呼んでいます。
基本的な部分が同じなので、デザインなどを選択すれば誰でもECサイトを構築したり、簡単なアプリを開発することができます。
アプリやツールがより多くの言語や文法などを扱うことができれば、より複雑で高度なモノも誰でも簡単に作成することができるので、プログラマーの存在が不要になるのではと言われています。
では、プログラミングの自動化のメリットとデメリットを見てみましょう。
プログラミングの自動化のメリット

それでは、プログラミング自動化のメリットを見てみましょう。
それは、主に
- 開発時間の短縮
- 開発コストの削減
- 一定の品質を確保できる
- 特定部分のヒューマンエラーの排除
です。
- 開発時間の短縮、開発コストの削減

プログラミングは、プログラミング言語によって違いはありますが、文法(規則)が決まっていて、同じことの繰り返しをしています。
プログラミング言語は、英語(アルファベット)と記号によって構成されていて、国が違っていても同じ言葉(アルファベット)で書かれています。
なので、どのような人がプログラミングを行っても、同じ様なモノを作る場合は、一定の法則に乗っ取って作成されます。
現在では、簡単な部分や基本的に共通している部分などは、テンプレート化されたシステムやアプリから自動的に作成することができます。
自動的に作成する部分が多ければ多いほど、作成する工程の省略をすることができ、開発時間を短縮することができます。
また、作成する工程を省略することができれば、その分だけ、作成に関わる人件費を削減することができます。
- 一定の品質を確保できる、特定部分のヒューマンエラーの排除

テンプレートがあれば、一定水準のモノを作成しやすくなるので、プログラミング初心者が作成する場合でも一定の品質を確保することができるようになります。
また、共通部分や基本的な部分を自動的に作成してくれるので、人が一から関わって行わない場合は、特定部分のヒューマンエラーを排除することができ、一部工程の省略にもつながります。
プログラミングの自動化のデメリット

工程数を少なくすることは、全体のコストと作成にかかる時間を短縮することができるので、かなり大きなメリットです。
では、デメリットはどのような部分でしょう。
それは、主に
- 導入の準備が必要
- 完全な自動化はできない
- プログラマーは必要になる
です。
- 導入の準備が必要

プログラミングの自動化が出来れば、プログラマーの負担も少なくなり、それだけ他の仕事に回す時間を確保することができますが、自動化を行うためには事前準備が不可欠になります。
簡単なWebサイトを作るようであれば、手順に従って行うので、誰でも簡単に作成することができますが、近年流行りの超高速開発ツールを使用して作成しても、要件定義は使用者自身が行う必要があります。
また、他のシステムと連携させる部分をツールで自動化させることは、現場では困難とされています。
- 完全な自動化はできない

ソースコードを自動で作成してくれる超高速開発ツールを正しく使用できれば、使用者が自分の手でプログラミングを行わなくてもシステムを開発することができます。
しかし、ツールで作成するコードと人が作るコードには若干の差が生じてしまい、システムの保守運用に大きな影響を与えてしまいます。
また、ソースコードの大部分をツールに任せて開発を行うと、システム改修を考慮していないモノが完成してしまい、システムの保守運用コストが増加してしまう恐れがあります。
- プログラマーは必要になる

上記、2つの項目を見ても分かるかと思いますが、システムの構造を理解して正常に動作するモノを開発するためにもプログラミングに関する知識が必要になります。
システムをツールで開発し、保守運用や改修を外部発注することも可能ですが、その分、コストが増大してしまい、ツールを使用して開発する意味がなくなってしまいます。
また、部分的にツールを使用する場合でも、残りの部分を完成させるためにプログラミングを行える必要があり、プログラマーの存在は不可欠になります。
以上が、プログラミング自動化のメリットとデメリットになります。
プログラミングの自動化のまとめ

開発ツールを使用することで、プログラミング初心者でも、簡単に開発することができるように見えますが、実際には、プログラミングに関する知識は必要不可欠です。
なので、現状の開発ツールでは、プログラマーが不要になるほどの精度のモノでもないので、プログラマーの仕事がなくなることはありません。
AIの普及

AIブームが再び火をつけ始めて、まだ、新しいですね。
昔の人は、21世紀になれば車が空を飛ぶと、夢見た様に、AIが人間の仕事を奪って、人が働くことはなくなってしまうとも言われていました。
しかし、実際には、AIにとって仕事を奪われることもなく、昔の人からしたらAIと呼ばれる部分は、現代から見ると、ただの機械化の一つです。
AIも同じ機械であり、人の手によって作られています。
AIは、機械学習と深層学習を元にしたデータと人が書いたソースコードを元に作成されています。
そして、AIの中に、機械学習があり、機械学習の中に、深層学習がある構造になっています。
AIがプロの囲碁棋士を打ち負かしたなどの話もありますが、機械学習で得られたデータを元に結果を導いているモノで、実際には、機械学習と違いはありません。
では、AIの定義とはどのようなモノかを現状の情報を元に表現すると、人間が行っている知的な作業を機械が行うこと、を言います。
ただし、実際には、AIの定義は決まってはなく、時代によって、ニュアンスや具体的な捉え方も変わっています。
なので、AIによってプログラマーの仕事がなくなるのではなく、機械学習によって仕事の量が少なくなると言った方が、出来るだけ正しくなります。
ドラえもんの様に、人間的に本当に振舞うロボットの作り方は、現在では、誰にも分ってはなく、今後も、開発されることは、ほぼ無いと言えるでしょう。
機械学習の普及

上記の部分でも登場した機械学習です。
機械学習とは、予め決められたアルゴリズムと人間が機械に入れたデータを元に、目的に合った独自の推論(結果)を立てることの出来るシステムのことを言います。
例えば、カメラの画像を元に人の人数や性別などを見分けるシステムを開発するとしましょう。
システムには、予め、男性なら男性の、女性なら女性の一定の特徴と人の形などの特徴をソースコードとして記述しておきます。
そこに、画像を読み込ませ、機械が出してきた結果が間違いなら、その分を訂正し繰り返して行くことで、より、高精度の結果を出すことができるようになります。
機械学習を実行するためには、膨大なデータを人間の手によって覚えさせ、機械の出した結果と照らし合わせてることを繰り返すことによって、人間が行った結果に出来るだけ近い結果を出すことができるようになります。
機械学習を実行するためには、膨大な時間が必要で、機械学習をどの分野に導入すれば利益につながるかを正しく判断し、目的に即したシステムを開発することができなければ、無益なモノとなってしまいます。
機械学習の普及によって、訪れる未来は、プログラマーがなくなるのではなく、プログラマーの業務量や仕事の幅が少なくなると言った方が正しいと言え、プログラマーと呼ばれる仕事が機械学習によってなくなることはありません。
まとめ

プログラマーがなくなると言われている理由を、現状の状況を元に説明しましたが、いかがでしたでしょうか。
結論から言うと、プログラマーがなくなることはありません。
昔から、プログラマーがなくなると言われていますが、プログラマーと言う職種がなくなったことは一度もなく、現状では、IT人材の不足から、プログラマーの存在は、より、必要不可欠の存在です。
プログラマーがなくなるのではなく、プログラマーの業務量が少なくなったり、新規参入がしやすくなると言った方が正しいと言えます。