AIに負けない人材を作る、という号令の下、学校は教育大改革のまっただ中にあります。
コロナの影響があまりに大きいためみんな忘れてしまっている感がありますが、こうしている間にもAIは日々とんでもないスピードで進化しています。多くの職種が、AIに取って代わられる危険にさらされている状況に変わりはありません。
プログラマーも、そうした職種のひとつと言われています。
コードを自動生成するAIは、すでに存在します。
これからプログラミングを学ぼうと思っていたけれど、大丈夫なんだろうか?
そんなあなたの不安に答えます。
AI(人工知能)とは何か
AIの定義はいろいろあります。定まったものはないようですが、簡単に言えば、コンピューターで知能を再現しようとするものです。
機械を人間に近づけようとする試みの一環と言ってよいでしょう。
AI研究は理論先行で、技術的な困難さから長い間下火でしたが、コンピューターの性能向上とインターネットの登場によって一挙に花開きました。現在の隆盛は、皆さんご存じの通りです。
もはや学問的な興味の域に留まらず、人間の役に立つものとして開発が加速されています。
人間にしかできないと思われていたことが次々とAIにもできるようになり、分野によってはAIが人間をはるかに凌駕するまでになっています。中でも、AIが囲碁の世界チャンピオンに勝ったときは衝撃的でした。世間のAIへの関心が一挙に高まりました。
AIが知能において完全に人類を越える「シンギュラリティ」が遠からず起きるという説があります。本当にそんなことが起きるかはわかりませんが、もし起きたらどうなるかということは、人間の知性では予想困難です。
AIは自動化が得意
AIの特徴のひとつが「自律性」です。人間の指示や操作がなくても複雑な仕事をやってのけます。
AIの仕事として最も目立つもののひとつが、車の自動運転です。人間が運転しなくてもよくなる日が来るのもそう遠くないのではないか、と期待されます。
今は人間が行っている仕事も、将来はAIによって自動化されるのではないか、という危機感を持つ人も多いでしょう。
機械学習との関係
機械学習というのは、プログラムにデータを与えて、性能を向上させることです。AIの性能向上のために行われるのが、まさにこれです。
機械学習には、大量のデータが必要です。そしてインターネットが、大量のデータ収集を容易にしました。
例えば手書き文字の読取りプログラムを向上させるために、大量の手書き文字データを与えて読取らせ、正解率が向上するように改善する、ということを繰り返します。この過程を自動化することにより、放っておいても精度が上がっていくのです。
ディープラーニングとの関係
ディープラーニング(深層学習)は、機械学習の一種です。
階層化された大量のパラメーターを機械学習により改善することで、著しい性能の向上が可能になります。ニューラルネットワークという、人間の脳を模したモデルを使っています。
現在のAIの隆盛は、まさにこのディープラーニングのおかげです。特に画像認識において威力を発揮し、もはやAIは人間よりも優れた目を持っているとも言われています。
スマホで音声検索をするとき、以前よりだいぶ認識精度が上がったと思いませんか?これもディープラーニングの恩恵です。
非常に多くのパラメーターを何度も改良することによって学習させるのですが、それらのパラメーターの意味は人間には分かりません。中身はブラックボックスです。従って「なぜ」そういう答えになるのか、ということもわかりません。
人間は「なぜ」を求めますから、その点に不安を覚える人も多いようです。
プログラミングはAIによって自動化されるのか
AIによるプログラミングの自動化が、盛んに研究されています。果たしてそんなことができるのでしょうか?
結論を言えば、プログラミングの自動化は、できます。現に実用化されつつあります。
コードを書くことなくアプリケーションが作れる、とうたっているサービスはたくさんあります。その中には、AI技術で自動化の度合いを高めようとしているものもあります。
ここでは、「コーディング無しのプログラミング」を実現する3つのサービスを紹介します。
AIによる自動化の例
AppSheet
Googleが提供する、業務アプリを簡単に作れるサービスです。
プログラミングすることなく、スマホアプリやWebアプリを作ることができます。豊富に用意されているサンプルアプリから作りたいものに近いものを選び、設定をすればアプリが完成します。
ToDoリストやタスクマネジャーといった一般的なものから、顧客管理や注文管理、マーケティングプロジェクトなど、様々な業務にまつわるサンプルアプリが提供されています。
さらに、AppSheetは、データを与えてやればAIがそれに適したアプリの大枠を作ってくれる、という機能も持っています。
Power Apps
Microsoftが提供するサービスです。業務用Webアプリを開発できます。
開発は、ブラウザ上でボタンなどのユーザーインターフェイスを決め、Power Fxというシンプルな言語でExcelの関数を入力するような感じで記述するという形で進めます。簡潔なコーディングで作成できる「ローコード」の開発環境です。
さらに、このほどMicrosoftは、AIを使ってそのPower Fxのコードを自動生成できる新機能を発表しました。
これにはGPT-3という最新のAIが使われています。これは、英語などの自然言語を扱うものです。お題に沿って自然な文章を生成したり、文章を要約したり、といったことができます。1750億個という、圧巻のパラメーター数を誇ります。
これにより、やりたいことを自然言語で書いて与えれば、それを実現するPower Fxのコードが吐き出されるようになります。つまり、「ノーコード」でのアプリ開発が可能になります。
SourceAI
自然言語からプログラムのソースコードを生成するサービスです。
これにもまた、GPT-3が使われています。
自然言語でやりたいことを入力すると、それを実現するプログラムのコードが生成されます。様々なプログラミング言語に対応しています。
ホームページには、「ユーザーによって入力された数の階乗を計算せよ」という英語の文と、それがSourceAIによってPythonのコードに変換されたものが例として載っています。
プログラミングの需要は残り続ける
AIを使ったプログラミングの自動化は、すでに実用段階に入っています。特に自然言語からプログラムコードを生成する技術は、驚異です。
それでは、プログラマーの仕事はこの世からなくなってしまうのでしょうか?
そんなことはありません。少なくとも今すぐにはなくなりません。今後もプログラマーという職業は残り続けるでしょう。
その理由は、以下の通りです。
AIを開発するのにプログラミングが必要だから
AI自体がプログラムです。それを作るのは人間です。プログラミングを自動化するAIも、誰かが書いたプログラムです。
AIの開発需要がある限り、プログラマーは必要です。
それでは、プログラマーが自動プログラミングAI作る目的は何でしょうか?
自分の職業をこの世から完全に消すためでしょうか?
企業から依頼されたから、研究のため、知的なチャレンジ──いろんな理由があるでしょうが、大きいのは「楽をするため」ではないでしょうか。
今のAIブームが始まるずっと前から、コードを自動生成するプログラムはありました。IDEの機能としては当たり前のものです。多少の設定をしてやれば、定型的な部分を自動で書いてくれます。プログラマーはロジック部分を書くことに専念できます。
優れたプログラマーは、繰り返しの作業を嫌います。そういうものがあったら、それをやってくれるツールを探したり、自分でツールを書いたりします。楽をするためにあらゆる努力をするのです。
AIによる自動プログラミングも、そうした行為のひとつなのではないでしょうか。
簡単なロジックはAIに任せて、プログラマーはもっと高度な部分を作る、と。
自動プログラミングAIの開発者も、よもやそれによってプログラマーの仕事が完全に奪われるとは思っていないでしょう。
AIによる開発は、規模・分野に限りがあるから
上でも見た通り、プログラマーでなくとも業務アプリが開発できるサービスがいろいろあります。
それでは、そういったサービスにプログラマーの仕事はすべて奪われてしまうのでしょうか?そんなことはありません。
それらのサービスで作られるのは、主に小規模な、ちょっとした業務改善アプリが中心です。
プロの開発者に頼むほどではないけれど、自分たちで作るのは難しい、ということで我慢して手作業でやっていたような仕事をするものです。そういう「すき間」を埋めるものです。
大規模な開発となれば、今後も人間がやり続けることになるでしょう。
また、AIの自動プログラミングは何でも作れるものではありません。既存のデータを学習して作るので、開発事例が多いオフィス業務系は得意なものの、今までになかったようなソフトを作るのは苦手であると考えられます。
AIの生成するコードは完璧ではないから
AIには、人間が持つような「論理的思考力」がありません。統計学的に見てもっとも正解である確率が高い答えを出すのが基本です。
そのやり方では、100%正しいコードを生成するのは難しいでしょう。そして、間違いが作り込まれたとき、AIにはなぜそれが間違っているのか説明できません。
やはり、人間が論理の目でチェックすることが必要です。そしてそれは、プログラムが読めるプログラマーの仕事です。
こちらの記事では、プログラミングの需要がなぜこれから高くなっていくのかについて解説しています。興味のある方はぜひこちらも参考にしてみてください。
AIを作る職業とプログラミング言語は?
プログラミングを自動化し始めるまでに研究が進んでいるAIですが、AIを作ったり利用したりするのはどのような職業なのでしょうか。職業に加えて、これらの業務でよく使われる、AIを作るプログラミング言語を紹介します。
AIを作る・使う職業
データサイエンティスト
データサイエンティストとは、企業などが収集したビッグデータから必要な情報を収集・抽出し、分析を行うことで企業活動を支援する職業になります。
このビッグデータの収集や抽出の際にAIを利用します。プログラミングの知識以外にも統計学や数学の知識も必要になります。
機械学習エンジニア
機械学習は、AIを構成する1つの技術です。機械学習エンジニアは、企業やクライアントのニーズに合わせて機械学習アルゴリズムの開発や実装を行います。
不必要なデータまで学習しようとすると、企業やクライアントの本当の悩みを解決できるデータを得ることができない場合があります。そのため、必要なデータを適切な環境で収集する必要があり、機械学習エンジニアがそれを担当しています。
AIエンジニア
AIエンジニアとは、機械学習やデータ解析などを専門としており、AIの開発を行うエンジニアです。具体的には、企業や医療の分野での課題を特定し、AIにデータを学習させて、いち早くデータを解析して対応していきます。
AIエンジニアも、AIやプログラミングの知識だけでなく、数学や統計学の知識なども必要となります。
これらは、AIを作る・使う職業でした。この他にも、プログラミングを使う職業は多く存在します。興味のある方はこちらの記事を参考にしてみてください。
AIを作るプログラミング言語
Python
PythonはAI関連の専門的なライブラリの豊富さやシンプルなコードが書けることが特徴的なプログラミング言語です。主にAIやロボット、機械学習などの分野で使用されています。
これに加えて、シンプルなコードであるPythonは大規模なWebアプリケーション開発にも使用されており、インスタグラムやユーチューブなどにも使用されています。
R
Rは、統計解析向けのプログラミング言語です。データ解析を専門とするプログラミング言語なので、他の開発にはあまり使われていません。
しかし、AIや機械学習の分野では必須の分野である統計学を扱うならRは身につけるべきですし、統計学の専門的な知識と併せて使用することになるので、Rを使う仕事は高収入である傾向があります。
他にも、プログラミング言語はたくさんあります。その特徴に合わせて、使われている分野や場面が変わってきます。興味のある方はぜひこれらの記事もご覧になってください。
AIに仕事を奪われないエンジニアになるために
AIによる自動プログラミングが発達しても、当分の間は人間のプログラマーの仕事がなくなることはないでしょう。
しかし、仕事のやり方が大幅に変わることは考えておかなければなりません。生き残るためには、さらに手広いスキルセットが必要になってくることが予想されます。
ただ、それは今に始まったことではありません。IT業界は常にそういう場であり続けてきました。それが、AIの登場によって加速されるだけのことです。
さてそれでは、具体的に何をしたらよいのでしょうか。
ほかのスキルと掛け合わせる
AIの時代、プログラミングのスキルだけでは心許なくなってくるかもしれません。プログラミングと他に1つ2つ、何かスキルが欲しいところです。
Web開発関連なら、コーディングだけでなくデザインも、さらにはWebマーケティングにまでレンジを広げてみてはいかがでしょうか。
営業や経理などの業務知識も、役に立ちます。
ハードルは高いですが、数学や統計学の知識を深めてデータサイエンティストやAI開発者を目指すのも有望です。
貪欲に学び続けることが、ますます必要になっていくでしょう。
上流工程を目指す
システム開発には、要件定義や設計といった上流工程が必要です。ここの部分は、なかなかAI任せにはできないのではないでしょうか。
クライアントと話し合って必要な機能を決め、使いやすく設計する、というのはまさに人間がやるべき仕事でしょう。
今後、AIの自動生成によってコーディングの仕事は減っていくことが予想されますが、そのときに上流工程に携わっていれば、容易に仕事を失うことはないでしょう。
上流工程に携わるためには、プログラミングの技術力だけでなく、プロジェクトを管理する能力が求められます。設計も学ばなければなりません。開発全体にわたる高いスキルが必要です。
要するに、エンジニアとして「出世」しよう、ということです。
コミュニケーション能力を高める
AI時代に仕事で一番求められるのは、コミュニケーション能力と言われています。
それはIT業界も例外ではないでしょう。上で言った上流工程のSEを目指すためにも、高いコミュニケーション能力は必要です。
相手の話をよく聞く、伝えるべきことを相手が容易に理解できるように伝えるなど、コミュニケーションの基本をおさえることは、人と人が協力して働くときには必須です。AIではまかないきれない大規模開発も、コミュニケーションあってこそです。
AIが人間を永遠に越えられないことがあるとすれば、それは「対人」の能力ではないでしょうか。AIに最も仕事を奪われにくいのは、コミュニケーション能力の高い人ということになるでしょう。
まとめ
AIがどれだけ発達しようとも、人間の仕事が全くなくなることはないでしょう。
AIによる自動プログラミングは敵ではなく、仕事を楽にしてくれる仲間と考えるほうがいいのではないでしょうか。
AIの得意ジャンル、不得意ジャンルを見極めて生き残り戦略を練るのも大切ですが、AIを意識するあまり自分の学びたいことややりたい仕事をあきらめるのは、本末転倒でしょう。