人工知能(AI)の技術が進歩することによって、プログラミングも自動化されプログラマという職もなくなる、という話を時々聞きます。
本当でしょうか、これからのプログラミングはどうなっていくのでしょか?
そのあたりの話を整理してみます。
プログラミングに対する考察
プログラミングはAIによって自動化されるのか?
問い)プログラミングはAIによって完全自動化されて、プログラミングの仕事は近い将来なくなるのか?
結論)プログラミングがAIによって完全自動化されることは、近い将来にはありません。
ただし、プログラミングするときに、どういうコーディングがよりよいかなどを教えてくれるなど、AIと共存することでよりよいプログラムができるようにはなっていきます。
人工知能(AI)は思考しているのではなく、反応しているだけ
コンピュータそのものは、単純な演算処理-ビット演算-を超高速で指示された通りに実施しているだけで、そこには思考というものがないものです。
いかにも自ら考えて対応しているように見えるものでも、何らかの情報に基づいて反応しているだけなのです。
LINEボット
LINEにも登場しているBOTは、確かにAIの技術を取り入れたプログラムもあって、その中にはいかにも人間が相手してくれるように見えるものもありますが、人からのトリガーに対して、反応しているだけなのです。
そして、その反応のもととなるのは、たとえばインターネットの情報なのです。
ボットによって作りは違うでしょうが、たとえば一時大流行したマイクロソフトが提供している女子高生りんな(今は女子高生を卒業して画家&シンガーになったようです)などは、インターネット上にある膨大なデータから、反応パターンを学習しており、ある問いかけに対して、それらしい反応を返しているというもののようです。
例えば、「こんにちは」という入力にたいしての出力として、ふさわしそうなものをいくつも学習してあるわけです。
好き、嫌い、天気、旅行、勉強など、当初は女子高生設定だし、ありそうな対象で学習しておけば、ある程度の会話は成立しそうです。
友達になれば、こちら側の会話パターンも学習するので、より人間らしい反応になるようです。
試しにやってみました。
ちゃんと会話が成立しますね(笑)。
他にも試しましたが、あいさつは完璧で、わからない話題については突然、「どこどこに行きたい」などの関係ない話題にそらされます。
もっとも、人間でも同じかもしれないから、人間らしいといえば人間らしいし、よくできています。
よくできているものの、汎用的に反応させようとするとここが現時点。
マイクロソフトがりんなにどこまで力を入れているかはわかりませんが、GoogleアシスタントやAmazonアレクサなど、商品化されて改良を続けている製品、音声はしっかり認識しますが、音声という入力に反応して変換、その変換結果に対して、検索したりニュースを流したりと反応してくれるというのが現時点。
もちろん、それでも実用的で十分に便利です。
高速処理できるコンピュータが反応によって人間らしくふるまうということは、こういうことなのです。
将棋と人工知能
ボットはそうかもしれないけど、考えるといえばその代表ともいえる将棋は既に人間を超えているのでは?
その通りです。人間よりも強くなったかも知れません。
それでも先ほどのLINEボットと基本的な原理は一緒です。
9×9マスの中の限られた指し手に対して、どのような手をさせば勝つ可能性が高いかの統計データ(機械学習しています)で確率が高い手を指す。
これを高速処理で実現しています。
天候、株式なども同じだし、医学や農業での活用も対象分野は違えど同じ原理ですね。
天候は気温、湿度、人工衛星からの気圧の配置情報時期等の各種情報からの確率推測できるし、株式も景気の情報から推測可能になります。
医学、農業は、蓄積された病巣の画像からパターンを学習しておけば、病気の可能性があるかどうかを確立認識できます。
プログラミングは自動化できるか
人工知能(AI)では、何ができるのか?
超高速な処理ができるという強みを活かして、必要なパターンで反応しているのです。
「何かをやりたい」という入力に対して、学習対象が大量にあって学習できるものであれば、こちらのほうがよさそうという結果は出せるということです。
十分に狭い領域、専門性が高い領域であればあるほど、対象が絞りやすく学習しやすかったりします。
反面、広範囲で何をやったらいいのか絞り込めないものは、まだまだ自動化は難しいという状況です。
プログラミングの領域では人工知能(AI)は何ができるか
それでは、プログラムが何らかの情報に基づいて自動化されるかをここまでで把握した学習の原理をあてはめて考察してみます。
プログラミングを推測させるのであれば、プログラミングした大量のソースコードを学習させて、より良いコード、そうではないコードに分類、よいコードの特徴を洗い出す、ということはできそうです。
実際調べると、日本ではネット上では見つかりませんでした(研究しているところはあると思います)が、MITが取り組んでいる情報がMIT NEWSとしてでていました。
文字列の変換や数値変換等のごくプログラムをよくすることは実現できているようです。
プログラムを学ぶことでAIはどこに向かうのか?(Toward artificial intelligence that learns to write code)
ここでは、 SketchAdaptというプログラムコードを書くAIが紹介されています。
論文もでていましたが、その原理は、プログラムのコードを入力としてパターン学習という内容でした。
非常にちいさな部分のプログラムの書き方についてのプログラムしているときに「こうするといいか」を教えてくれる技術は、数年後にはでてくるかも知れないですね。
プログラミングは自動化されるか?
現状の人工知能(AI)のプログラム自動化の取組は上記の状況です。
先にも書きましたが、コンピュータとは指示されて動くものです。
指示されて動くものに対して、指示が必要で、それを行っているのがプログラミングというものなのです。
コンピュータというしくみから考えて、指示そのものがとってかわられるということは、まだまだこない、その状態になるには、単純な技術的な問題だけではなく、社会的な問題、倫理的な問題も横たわってきます。
そう考えると、プログラミングが人工知能(AI)に置き換わることはしばらくはこないというのが結論で、ただ、プログラミングそのものは、AIによってよりサポートされて生産性もあがりよいコーディングができるようにはなっていきます。
実際これまでの歴史でも、一からひとつづつコーディングしていたのが、いまはインテリセンスといって、単語単位ではコードを補完してくれるようになっています。
現在では、一文字いれると、その後に続く単語やプログラミング構文の候補をだしてくれます。
これが、ある程度書くとこれから記述すべきプログラムの候補を出してくれるようになるかもしれません。
ただ、そうなったからといって、プログラミングという仕事はなくなる?
なくなりませんね。
より人工知能(AI)を活用して、効率よく仕事がはかどるようになるだけです。
IT、プログラミングの分野は、今後ますます世の中で必要になっていく分野だと考えています。
時代に乗り遅れないためにもプログラミングを身につけておくことは、必要なことだと思っています。
おすすめの教育
最後までお読みいただき、ありがとうございました。