質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

8回答

17577閲覧

プログラムを自動開発できるAIって

Chironian

総合スコア23272

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

16グッド

13クリップ

投稿2016/08/17 02:54

編集2016/08/20 01:01

16

13

ShoheiTaiさんのつぶやきで思い出しました。

以前、こんな議論を見かけました。
最近、ソフトウェア特許を専門に扱っている弁理士の先生と話していて「AIによる自動プログラミングが近いうちに現実的になる」という話がある旨を聞きました。
しかし、正直、現実的ではないような気がして仕方がありませんが、決めつけるのも危険な気がしてます。
本当にAIによるプログラミングの自動化は現実的なところまで来ているのでしょうか?

30年前、大学で人工知能を少し研究してました。(勉強と言った方が近いのですが、一応卒論テーマでしたので。)
当時は人工知能の春と呼ばれていた時期でした。人間の知的活動を自動化する研究ですから、うまく行けばこんなバラ色の未来が見えてくると言われてました。嘘ではないです。でも、見渡せば分かるようにそれは少なくとも30年は未来の話でした。

当時、prologue(プログラミング言語の1つ)による自動プログラミングの論文を読みました。
prologueで書かれたプログラム自動生成プログラムが、yesかnoかの質問を多量に問うてきます。それに回答していくといつかはprologueで書かれたプログラムが完成すると言うものでした。その論文は当時注目されていたものの1つでした。
それから30年経過し、今はどうなっているのでしょうか?

プログラムを開発するということは、クライアントから要求仕様を聞き出し、不足する仕様を自分が持つ業務知識で補って具体化し、設計仕様に落とし込んだ上で開発するものと考えています。
設計仕様に落とし込んだ後の自動化は既に様々なツールがでてますね。今後もどんどん進歩すると思いますが、あまり人工知能の出る幕はないように感じます。きっちり論理的な部分なのでファジーとかニューロとか使えないと思います。
なので、設計仕様に落としこむ部分が人工知能に期待されると思うのですが、そのためには業務知識、および、常識についてのセンスを必要とします。
そのようなレベルに現在の人工知能が近づいているとはとても思えないのです。(自動翻訳も同様なセンスを必要とするのでその精度を見て強く感じてます。)

もし、自動プログラミングに関する人工知能研究についての現状をご存知の方がいらっしゃいましたら、現状のレベルについて教えて頂けないでしょうか?


【追記】
なかなか人工知能の現状についての回答が付かないです。
やはりプログラム開発できる人工知能の出現はまだ夢の話ということかも知れませんね。
でも、意外にそうでもないという可能性も残っていると思いますので、当質問は今しばらくオープンとさせて下さい。


【更に追記】
Mr_Robotoさんからアドバイス頂き追記です。
自動プログラミングに関する人工知能研究についての現状について知っているわけではなくても、雰囲気、もしくは、現状はここまでだろうという推測でもよいので、ご意見頂ければありがたいです。(気持ちを強く持ちたいとの思いも少しあるのです。)

takotakot, stereo_code, ShoheiTai, act823, miyabi-sun, oozorapilot, NatsumiOki, LLman, 5o5o_wagon, SASAHARA, 他6名👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Mr_Roboto

2016/08/20 00:50

意図しているものだとは思いますが、「人工知能研究についての現状をご存知の方が」という一文が回答者の幅を狭めているのですよねぇ。私も気になるのでもう少し回答者の範囲を広げていろいろな人の意見を求めるのもいいのじゃないかなぁと思いますが、いかがでしょう。もちろん私は回答できませんが ^_^;
Chironian

2016/08/20 00:57

Mr_Robotoさん。アドバイスありがとうです。確かにそうかも知れませんね。 少し自由な意見も言える方向に修正してみたいと思います。
guest

回答8

0

ベストアンサー

現役で人工知能を勉強している学生です。

仕事の何もかもが機械に置き換わるというバラ色の未来というのはまだまだ遠い未来の話かもしれませんが,
目的を絞れば,人間がやる単調作業を機械に任せるというのは十分可能になっています。

しかしながら自動プログラミングという点に関してChironianさんが勉強されていた昔からある手法で,実際に命令セットを与えて自動でアルゴリズムを作成していく遺伝的アルゴリズム(Prologueのアルゴリズムとの関連はわかりません)というものがありますが,こちらは現在も手法は改良がなされているもののloop文,条件分岐文などを作成するのさえかなり難しく,フィボナッチ数列を解くプログラムを完成させる確率は最近まで30%に満たないという現状でした。部分的な問題では可能という程度です。

ディープラーニングとプログラムのコードを結びつけるモデルもまだほとんど世に出ていないので,なにかブレイクスルーが起きない限りは,入力と出力だけを与えて完全な自動プログラミングを行うのは厳しいでしょう。

というのもディープラーニングは入力に対して出力が1対1に対応する問題にたいしては,強いのですが,確率的に最も高いものに絞り込むだけなのでどうしてその入力に対してそういう答えが出たのかを人間が解釈するのは難しく,自動アルゴリズム作成というより,自動ブラックボックス関数生成といったものに近いからです。
明確にアルゴリズムの挙動が解る遺伝的アルゴリズムの精度が,たかが知れているのでまだまだそういう時代はこないと思っています。最近は遺伝的アルゴリズムの手法にディープラーニングを組み込めないかという試みもなされているようです。
(2042年までにとんでもないブレイクスルーが起こる(技術的シンギュラリティ(特異点)とかいうやつです)と予言はされているので,研究者の間では現状がひっくり返ることが起きる根拠が何かあるのかもしれませんが)

言語の解析に関しては未だかつてないほどのブレイクスルーが起きています。商用化などはされていませんが,未知の言語に対する文節を解析できるアルゴリズムや,特徴を推測する(極論すれば文章からどんな人物像かを当てられる)アルゴリズム等,データとモデル設計さえ妥当であれば,数値上かなりの高い確率で当ててしまうアルゴリズムさえ出てきています。

WatsonしかりCortanaしかりSiriしかり,入力に対する出力がある程度決まっているQ&Aのような入力と答えをマッチさせるような問題を解くことに関しては,ディープラーニングや関連手法はすごい性能を達成しています。
ただディープラーニングでも難しい球拾いをこれからも人間はやり続けていくとおもいます。

他画像処理や音声信号処理などでも人工知能が使われるようになりましたが,こちらは毛色が少し違う話題になってしまうので,省略します。

現状まとめると,人工知能は局所ケースの問題に関してものすごい性能を発揮しますが,その局所的な問題を解くための設計をすることは,苦手です。あまりにも複雑すぎる問題は人工知能で解くことは難しいのですが,人間がある程度簡単な問題(理論的に解けると証明できる問題)まで落とし込んでやれば人工知能がいろんな問題を解決できることがわかったっていう感じになったのが7年前くらい(googleの猫認識)だと思います。

(追記:あまりにも複雑すぎる問題は解けないと書いていますが,ここでいう複雑性とは,人間が考えても答えを出せない問題という意味ではありません。例えば,数種類の項目があるデータがあって,できるだけ似ているものを均等の個数に分かれるようにグループにしたい,という問題は(基本的に)人間には解けません(必要な特徴が解らないなど)が機械は解けます(グループ分けに関係あると思われる特徴まで目星をつけられる)。このように人間が答えを機械に与えられなくてもデータから答えを当てるようなアルゴリズム(教師なし学習)などもあります。ここでいう複雑性とは,入出力が1対多で隠れた条件分岐が複数あったりするような問題のことです。そのような構造を把握するように問題設計するのは不可能ではないもののモデルとして複雑度が増し上手く解きづらい問題になります。ここでいう簡単な問題に落とし込むという作業は,こうした複雑度をできるだけ取り除き綺麗に設計するという意味になります。ディープラーニングは入力と出力を与えれば,そういう複雑すぎる問題にも数の暴力で一定の答えを出してくれますが,入れるデータと出てくるデータの関係性を考えずにデータを突っ込んでも,実データで答え合わせした時に全く意味のない予測を機械がしている可能性などがあります。ただ,何も考えずにデータを突っ込んでも入力と出力のデータに因果関係があれば,答えを当ててしまう可能性があるのもディープラーニングが強力すぎる所以です。)

なので,現在も人間側が機械が問題を解けるようにするための設計(よくチューニングやモデリングと呼ばれます)を行う人は今後も働き続け,その需要は高まり続けるとおもいます。(といっても,実はこのチューニングを自動化する手法を研究する分野もあり,こちらも限定された問題に対してはうまくいくという研究結果が出ています。)
この問題設計が高度な数学的な専門知識を要し,難しいため,データサイエンティストという人たちの必要が叫ばれるようになったって感じですね。

参考になりましたでしょうか?

追記

そういえば最近NodeRedのような結線プログラミングが流行っていますが,あのような形式であれば,Nodeを組み合わせて,プログラムを作るような自動プログラミングはある程度できるんじゃないかなぁと思いました。(loopノードを人間が用意できるため)自動プログラミングに限らずいろいろ面白そうな話題はあるので,調べられてみると面白いと思います。

投稿2016/08/21 17:51

編集2016/08/21 18:51
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chironian

2016/08/22 01:21 編集

素晴らしい回答ありがとうございます。 > 入力と出力だけを与えて完全な自動プログラミングを行うのは厳しいでしょう。 まさにこれがprologueの自動プログラミングだったと記憶してます。 十分な数の入力と出力のセットを与えることを手動で行うのは正直不可能と思います。 会計処理プログラムをそのようにして開発するなんて気が遠くなります。 その入出力の集合を自動生成できたら、その自動化したプログラム≒目的のプログラムと思いますし。 > 人間がある程度簡単な問題(理論的に解けると証明できる問題)まで落とし込んでやれば > 人工知能がいろんな問題を解決できることがわかったっていう感じになったのが > 7年前くらい(googleの猫認識)だと思います。 このおかげで、非常によく分かりました。 解けることが分かる問題まで落とし込むことはできず、落とし込まれた問題を解くことについてはかなり進歩しているということですね。 ということは、「クライアントから要求仕様を聞き出し、不足する仕様を自分が持つ業務知識で補って具体化し、設計仕様に落とし込む」部分については手付かずという感じですね。なるほど納得です。 プログラム開発の最大の肝はこの設計仕様に落としこむ部分と考えていますので、人工知能がプログラマを置き換えることは、当面あり得そうにないですね。 逆に人工知能が進歩することで、プログラムをより簡単に開発できるようになっていきそうです。言われたことしかできないプログラマは淘汰されていくのかも知れませんね。常に新しい技術へ自ら挑戦する気概を失わないようにしたいものです。 【追記】 > といっても,実はこのチューニングを自動化する手法を研究する分野もあり,こちらも限定された問題に対してはうまくいくという研究結果が出ています。 あっと、この部分を読み落としてました。手付かずではないのですね。 > この問題設計が高度な数学的な専門知識を要し,難しいため,データサイエンティストという人たちの必要が叫ばれるようになったって感じですね。 う~ん、例えば、会計処理プログラムの仕様書を作るというイメージとはかけ離れていそうですね。こちらは業務モデルを生成する問題なのでモデリングの自動化に当たりそうに感じます。チューニングとモデリングでは方向性がかなり異なるので、やはり手付かずということっぽいですね。
Mr_Roboto

2016/08/22 13:44

おおお、無事に解決されたのですね、良かったです ^^ 私も興味深く読みました。tkowさんありがとうございます。
退会済みユーザー

退会済みユーザー

2016/08/23 00:37 編集

>会計処理プログラムの仕様書を作るというイメージとはかけ離れていそうですね。 これはその通りですね。AIはある目的を達成しうる無数の手段から最も効率のいい方法を見つけるということを実現することに対しては強いのですが,何について最も効率良くなるようにするかは人間が決めることです。 さらにその効率良く解くための設定(更新式の導出)も人間が行います。目的について最もいい結果を機械は学習してくれますが,何を学習させるかは人間がまだまだ決めてあげなければいけないようです。 watsonのように自発的に言語獲得をしていく人工知能が世に出始めたのもかなりのブレイクスルーではありますが,獲得させた手段をどのような目的に使うかはまだまだ人間の仕事になります。 会計処理プログラムの仕様書を作成するというような目的を自発的に設定するような仕事は人工知能でやるとすれば,数ある仕様書で使われる表現を学習させその中で正しい仕様の部分だけを抽出し組み合わせるという行為を機械に学習させる必要が有りますがこの学習アルゴリズムを仮に実装できたとして,この組みわせるという行為の精度を100%にすることは事実上不可能です。(人間が100%ミスをしないのと同じように) 言語の性質上組み合わせはすぐにコンピュータでも手の負えないデータ量に達するため,限定的な表現を学習させるに止まると思います。 逆にその範囲で大丈夫であれば自動的に文章を書かせることが可能です。例えば社内文書などある程度お決まりの文章を機械に生成させるのはできると思います。ただどうしても上述の組み合わせ爆発問題のため言葉遣いまで人間と同じようにするのは難しいので,8割方機械にやらせて人間が添削するという時代が続くんじゃないかと思います。
Chironian

2016/08/23 00:43

Watson、ググッてみました。http://robotstart.info/2016/02/23/kozaki_shogeki-no9.html 「自然言語分類(Natural Language Classifier)」は字面からですが「文脈」を把握する技術のように感じました。私はこの技術の先に会話の具体的な意味を理解する(話されている内容を既知のモデルに当てはめて、例えば行間を読む)技術がありそうな気がしてます。 行間が読めるようになったら意訳が可能になると思いますし、更に超発展すれば仕様書も書けそうに思います。 うまいことWatsonが商業的にも成功したら、ブレークスルーも有り得るかも? 今からの30年は少し期待できそうですね。
退会済みユーザー

退会済みユーザー

2016/08/23 14:58 編集

ちょうどタイムリーな記事を見つけました。 (postd)(http://postd.cc/teaching-an-ai-to-write-python-code-with-python-code/) LSTMはニューラルネットを使った言語学習モデルですが,人が書いたコードからスニペットを出力できるようです。 ただし,やはりこれも現状人間がある程度目的設定を与えてやらないと,目的のない構文を出力するだけになりそうです。しかしながら,定型文を学習できるということは,それらの中から人間がフィルターをかけるようにする,フィルターをアルゴリズムに組み込むだけで,全自動とは行かないまでも自動スニペット生成のような有用なものができそうな気がします。 さらに組み合わせ学習ができるので,機械学習の他の様々な方法が適用できそうです。 ここ数年の進歩の速さから言って30年前は広大だった夢も現実味を帯びてきたという所でしょうか。
guest

0

人工知能系京大発ベンチャーを営んでいる者です。

以下、

ソフトウェア開発 = 仕様策定 + プログラミング

と捉えて、回答します。


本当にAIによるプログラミングの自動化は現実的なところまで来ているのでしょうか?

プログラミングの自動化はまだ現実的なところまで来ていません。
しかし、一部のプログラミング工程の自動化はすでに実現されています。プログラミングには、テスト・リファクタリングといった工程が含まれます。

最近、プログラミングの自動化を目指すDiffBlueという企業が22,000ドルの投資を受けたことで取り上げられていました。
オックスフォード大学の教授が立ち上げたスタートアップで、現在はテストコードの自動生成やソースコードのリファクタリング(外部から見たプログラムの振る舞いは変えないで、内部構造を整理すること)をAIが自動で行なってくれる製品を提供しているようです。今後は、プログラミングの自動化を目標にしているそうです。

DiffBlueに関しては、次の記事が参考になると思います。
プログラミングは人口知能(AI)で自動化されるのか。オックスフォード大発のDiffblueがやばいサービスを出したらしい。

DiffBlueが役に立つかどうかは試したことがないのでわからないですが、一部の工程が自動化されつつあるのは事実です。


当時、prologue(プログラミング言語の1つ)による自動プログラミングの論文を読みました。
prologueで書かれたプログラム自動生成プログラムが、yesかnoかの質問を多量に問うてきます。それに回答していくといつかはprologueで書かれたプログラムが完成すると言うものでした。その論文は当時注目されていたものの1つでした。
それから30年経過し、今はどうなっているのでしょうか?

ソースコードの自動プログラミングの現状はあまりよく知りませんが、調べたことと私の意見を概説します。

単に自動プログラミングと言っても、IDEの自動補完やスニペット展開のような非常に小さいプログラム生成から、仕様を策定すれば自動で完全なプログラムを生成するものまであります。本回答では、後者について言及します。

例えば、Full-Automatic Implementation of Protocol Programs for OSI Application Protocols over ROSEという論文では、プロトコル(プログラム間の通信方式)の仕様から完全なプログラムを自動生成する方法について論じられています。

この論文では、次のようなアプローチをとっています。

  • プログラムを自動生成するためには仕様記述言語によって、プログラムの仕様を決定する。
  • その仕様を満たすプログラムが自動で生成される。

自動プログラミングの現実的な方法は、この論文のように仕様記述言語によって仕様を記述することであるように思われます。ただし、このアプローチではAIは出てきません。

ところで、一般的にある仕様を満たすプログラムの書き方は一意ではありません。つまり、ある仕様を満たすプログラムの書き方は複数通り存在します。プログラムの書き方によって、実行速度やメモリ効率が変わってきます。ここにAIが入り込む余地があるのではないかと考えます。

仕様記述による自動プログラミングは決定的な(確率的ではない)プロセスをとりますが、例えば強化学習(より良い結果を選択するように学習する機械学習手法)のような確率的なアプローチをとって、なるべくパフォーマンスの高い実装を選択ようにするといった工夫をすれば、より役に立つ自動プログラミングが可能になるのではないかと思います。


なので、設計仕様に落としこむ部分が人工知能に期待されると思うのですが、そのためには業務知識、および、常識についてのセンスを必要とします。

私は、ソフトウェア開発の中で、設計仕様に落とし込む部分が人工知能に期待されるとは考えていません。また、設計仕様に落とし込む部分を人工知能がこなすのは、まだ難しいと思います。私は、プログラミングが自動化されることが期待されると考えています。

また、プログラミングが自動化されることによってソフトウェア開発の敷居が低くなると思います。その結果、今までは外注がされていたようなソフトウェア開発の一部が、社内でも低コストで実施可能になる可能性があるのではないかと思います。


もし、自動プログラミングに関する人工知能研究についての現状をご存知の方がいらっしゃいましたら、現状のレベルについて教えて頂けないでしょうか?

DiffBlueの参考記事の中にもあるように

また、2017年2月28日には、マイクロソフトがケンブリッジ大学の技術者と協力し、コードを自動生成する「DeepCoder」を開発しているとのこと。ただ、現状は5行分のコードを書くことで精一杯とのこと。

AIによる自動プログラミングはまだまだ難しいようです。

しかし、DiffBlueのようにテストやリファクタリングなどの一部の工程を自動化することはある程度可能になって来ているというのが現状です。

また、人工知能とは関係ありませんが、仕様を記述すれば完全なソースコードを生成できるという話もあります。

より最先端の技術に関して知りたければ、「Automatic Programming」や「Automatic Program Generation」で調べればたくさん情報が出てきますよ。


追記

AIは自律的に何をすればいいか考えられるわけではないので、結局どんなプログラムがほしいのかを人間が教えてあげる必要があります。そのためには仕様を作成する必要があり、その部分を自動化するのは現状難しいと思います。

また、仕様からプログラムを生成するのに必要な技術はAIではないと思います。必要な技術はすでに揃っているように思われます。事実、特定の分野では上の論文のように自動プログラミングが実現されています。ではなぜ自動プログラミングが普及しないのかと思いますが、その答えを私は知りません。一つの可能性としては、仕様記述言語の標準化が進んでいないことに原因があるのかもしれません。何か新しくわかったことがあれば、またその時に追記します。

投稿2017/10/12 22:51

編集2017/10/12 23:16
Takahito_Ogawa

総合スコア229

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chironian

2017/10/13 00:04

回答ありがとうございます。 > 一部の工程が自動化されつつあるのは事実です。 昔、8進数でマシン語を直接プログラムしていた時代があります。 今は、8進数に比べると遥かに自然言語に近く、人が理解し易いソースコードを書けば、コンピュータが適切に解釈して実行できるようにしてくれます。 このように「一部の工程が自動化されつつある」のは、コンピュータの出現当初からです。コンピュータ自体が人の知的活動の一部を自動化する道具ですし、ある意味当たり前かも知れません。 今騒がれているAIが、今までのプログラミングにおけるコンピュータの進歩に対して何が違うのか、実はこの分野では正直大差ないのでは?との疑問からの当質問でした。 もし、仕様策定を自動化できるなら、それはまじで凄いことと思うのですが、残念ながらまだまだのようですね。実はちょっと安心しました。 > 仕様記述言語の標準化 たぶん「仕様記述言語」=「プログラミング言語」と言っても良いと思いますよ。 誤解の余地なく仕様を記述できれば、それは既にプログラムです。後はそれを解釈/実行できるコンパイラやインタプリタを作ればOKです。多くの人が投資したくなる程優れた言語ならば、実現できる筈です。 誤解の余地のある仕様書を解釈し、常識やセンス、現実的な量の質問等により不足を補うようなプログラムの開発は、従来の手でプログラムする方法では難しいように感じてます。なんとなくですが、AI的な手法によりいつかできるようにならないかな?と期待しています。
guest

0

久しぶりにこの質問が上がっていたので、最近見たニュースを貼り付けておきます。

New AI can 'clone' the basic software that brings a video game to life after watching the original for just TWO MINUTES

ソースまでちゃんと辿っていないので、実際にどんなものなのか不明ですが、記事を見る限りは仕様の確認から、コーディングまで出来て楽しそうです。

投稿2017/10/12 23:48

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chironian

2017/10/13 00:18

回答ありがとうございます。 > 「この技術は、フレーム遷移のセットを最もよく予測できるルールを検索する、比較的簡単な検索アルゴリズムに依存しています」 (by google翻訳) う~ん、イキナリgoogle翻訳の精度に驚いてしまいました。(最近また精度が上がってきているような気がしてます。) それはさて置き、ゲーム画面を観察してフレーム遷移を予測するAIっぽいですね。帰納的に動作するので確かに仕様策定に近そうです。リアル世界に適用できるようになってきたら化けるかも?
guest

0

今さらですが興味のあるテーマなので、多少意見を書かせていただきます。

設計仕様に落としこむ部分が人工知能に期待されると思うのですが、
そのようなレベルに現在の人工知能が近づいているとはとても思えないのです。

ご質問で仰るとおり、自動プログラミングはいまだに実現できておりません。

コードを自動生成するツールならすでにありますが、
それが要求する仕様書は実質的な日本語プログラミングになります。
結局、その仕様書自体は自動生成できずに人間が書くのです。


現在の人工知能というのは、

流行のディープラーニングも含めたニューラルネットのように
規則があるか(猫と犬の画像など、明確に判定できる違いがある)、

遺伝的アルゴリズムのように
基準があるか(コストなど解を評価できるスコアがある)、

エキスパートシステムのように、
枠組があるか(チェスや将棋のように問題が限定されている)、

いずれにしろ、1の基盤があって、2、3……と増やせても、
人間のような0を1にする、無からの創造性はありません。

言い換えると、人工言語(機械語)が扱える問題であれば、
解ける速度や領域は加速度的にどんどん広がっていますが、
一方で人工言語と自然言語の溝はぜんぜん埋まっていません。

これは、チューリングマシンの停止性問題やフレーム問題など、
無限が絡む扱いをどう処理するかの問題が根底にあると考えます。

ですからもしかりに、人間並みの人工知能が実現できるとしたら、
たとえばハードウェアにバイオテクノロジーが使われるだとか、
少なくとも現在のノイマン型のチューリングマシンに還元できない、
まったく別の新しいシステムではないかと個人的に考えています。


なお、本回答は否定的な印象になってしまったかもしれませんが、
WatsonにはPrologも(部分的ですが)使われているらしいです。

メディアではディープラーニングだけが注目されていますが、
その点で前世紀のAIの冬を越えて進歩した部分も確実にあります。

(顧客の)自然言語から要件定義の全体を直接作成するのは無理でも、
エキスパートシステムを部分的に適用できる箇所は出るかもしれません。
たとえば、過去の事例を参照して自動で見積もりするとか、いろいろ。

そうかんたんにシンギュラリティまで実現できないと思いますが、
数十年先は誰も予想できないので、可能性はあるのかもしれません。

投稿2016/09/03 19:41

LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chironian

2016/09/04 01:49

回答、ありがとうございます。 > これは、チューリングマシンの停止性問題やフレーム問題など、 > 無限が絡む扱いをどう処理するかの問題が根底にあると考えます。 なるほど、組合せ爆発を起こさない仕組みが見つかっていないということですね。 人はそれを経験的に行ってます。人工知能も同様に、知識ベースや学習によって積極的に枝刈りする仕組みを実装するのが現実的なように思います。 赤ちゃんが喋り始めるまでの学習過程を人工知能がシミュレートできるようになれば、たぶんできるのなか?とか思ってます。
Takahito_Ogawa

2017/10/12 23:51

量子コンピュータ・DNAコンピュータは徐々に実現が近づいていますね。 最近で面白かったのは、非決定性チューリングマシンのDNAコンピューティングによる実現可能性を指摘した論文です。 - (量子コンピュータより高速な"非決定性万能チューリングマシン"は可能-英大)[http://news.mynavi.jp/news/2017/03/08/142/] - (英大学、量子コンピュータを超える「非決定性万能チューリングマシン」の実現可能性を指摘)[http://pc.watch.impress.co.jp/docs/news/1047398.html] 要は、組合せ爆発を起こすような解放でも短時間で計算可能になるマシンが作れるかも、という話です。
guest

0

私的に学んでいるだけの素人ですが私も同意見です。
非現実的な夢物語だとしか思えません。

技術的には可能なのは確かでしょうが人工知能に人間相当の知能を持たせるためのリソースを誰が用意できるのか疑問です。

言語を扱う人工知能のように、正しい知識を網羅的に集めた辞書と、言語がどう扱われるかをしめす物語があれば学習も可能でしょう。
しかし、プログラムの一覧が載っている辞書なんてありませんし、作ろうと思っても辞書のように体系的にまとめられるのはごく限られた分野だけでしょう
また、プログラムが何を求められ、どのように作られ、どう扱われているか、プログラムが用いられる文脈を人工知能に入力するのは至難の技だと思います。

学習材料さえあれば、その知識の中から人間の質問や要望に適した答えを返すのは人工知能なら簡単だと思いますが
人間相当の知能になるまで学習できるリソースを収拾するためにはあと10年くらいはかかりそうな気がします。

投稿2016/08/19 14:14

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chironian

2016/08/19 14:35

回答ありがとうございます。 1つ教えて下さい。tomsさんの言う「リソース」は具体的には何を指してますか? 高々10年くらいで「人間相当の知能になるまで学習できるリソースを収拾できる」可能性があるのでしたら、その「リソース」が何なのか非常に興味深いです。
退会済みユーザー

退会済みユーザー

2016/08/20 02:34

10年と書いたのは適当な数字で少なくともそれぐらいかかりそうだなとなんとなく思っただけです。 プログラムの辞書になり得るのはオープンソースのプログラムだと思いますが現状ではすべての分野を網羅するには数が少なすぎる。 プログラムが用いられる文脈を示す何か、については現時点では具体的なものは存在しないと思います。 要求、設計、製造、保守、運用、といったプログラムに関わるすべてを記録できる統一システム開発言語のようなものを作り世間に浸透させることから始めるのでは? 10年間で作られる世界中のプログラムすべてが閲覧可能なオープンソースで、 それらが作られ使われる背景まですべてを文書として記録できたなら 人並み以上の人工知能ができるかもしれませんが、完全に夢物語です。
Chironian

2016/08/20 13:24

なるほど、プログラムとその開発と運用過程における全ての状況を記録したドキュメントが「リソース」なのですね。 それを十分に集めることができれば自動プログラミングができるようになると。 しかし、仮に欲しいプログラムに近いプログラムが存在し、それを見つけることができたとしても、カスタマイズする必要がほとんどの場合に発生すると思います。 そのカスタマイズを自動化できれば、それは自動プログラミングと思いますが、単にプログラムとその状況全てを記録したドキュメントがあったとしても、カスタマイズの自動化にはあまり有用ではないように感じます。 ところで、汎用なプログラムは設定によってある程度カスタマイズできます。 ユーザの希望を聞いて設定する作業を自動化できたら、それは一種の自動プログラミングと言えそうな気がしてきました。 しかし、少なくともここ数十年程度では無理っぽい気がします。
Mr_Roboto

2016/08/21 11:46

評価は高いのに他の回答が付かないのがとても残念ですねぇ ということで、アクティブに上げるためににコメントしてみます。
guest

0

ちなみに「日本語設計書からプログラムソースを100%自動生成」できる商品があるようです。
FUJITSU Software Interdevelop Designer

投稿2016/08/18 03:12

HiroshiWatanabe

総合スコア2160

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chironian

2016/08/18 08:11

情報提供ありがとうございます。 内容的には設計仕様を作った後、詳細設計しますが、その詳細設計書を日本語で記述すればプログラムを自動生成すると言うもののようですね。
yuba

2016/08/19 03:02

この富士通のやつが出てきたときには、エンジニア界隈では冷ややかに見られていましたね。 それも当然で、詳細設計書というのは実質的にはプログラムであるので、人間がプログラミングしていることには変わりがありませんから。
guest

0

画像デザインからHTMLを自動生成するのは既に出来ています

https://ledge.ai/pix2code-on-floydhub/

最新のVisual Studioは行単位でコード生成してくれます

https://forest.watch.impress.co.jp/docs/news/1218129.html 

昨年の2020年にOpenAIのGPT-3がプログラムの自動生成に使えるのではと話題になっています
https://techtarget.itmedia.co.jp/tt/spv/2010/26/news03.html

投稿2021/01/31 00:24

編集2021/01/31 00:38
SadahikoHantani

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chironian

2021/01/31 07:51

SadahikoHantaniさん 情報ありがとうございます。 画像からのHTML自動生成やIntelliCodeは、一種のコーディング・ツールと感じました。 「クライアントから要求仕様を聞き出し、不足する仕様を自分が持つ業務知識で補って具体化し、設計仕様に落とし込む」的なツールとはかけ離れている印象です。 「クライアントから要求仕様を聞き出す」ためには自然言語をきっちり理解する能力が必須なのでGPT-3にちょっと期待したのですが、この記事(https://techtarget.itmedia.co.jp/tt/news/2010/26/news03.html)の例を見る限り、まだまだコーディング・ツールの域を出ていない感じです。(自然言語でプログラムを書いているだけ) 「クライアントから要求仕様を聞き出す」って本当に難しいです。自分の思いを過不足なく正確に表現することなかなかできませんのでクライアントの要求仕様も不完全なのが「普通」です。その不完全な要求仕様の不足部分を業務知識で補いつつ、それでも分からない部分は問い合わせて補完する能力が必須ですから、まだまだ遠い印象です。
guest

0

▼プログラミングするプログラム -自動プログラム作成最前線-
http://id.nii.ac.jp/1001/00160296/

では現在の動向が簡潔に、6ページでまとまっています。

本文PDFは情報処理学会の会員でなければ648円必要になりますが
実用になった FlashFill や自然言語を用いた AnyCode 等が紹介され、
Chironian さんの要求にはよく合った文献だと思われます。

投稿2017/01/06 03:52

yorihito_tanaka

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chironian

2017/01/06 04:41

情報提供、ありがとうございます。 自動プログラミングは「学習や自然言語処理などによりユーザの意図をより正確に推測できるようになってきたこと」がキーの技術と考えています。3番目とは言え挙げられていますので現在の動向が見えてきそうですね。後日見てみたいと思います。 ところで、goolgeの翻訳精度がAI技術で去年の年末から上がっているそうです。(今朝の朝日新聞で知りました。遅すぎ。微妙に良くなったような気もしてましたが、気が付かなかった。orz) Watsonで使われている技術と似た技術を使っているようです。真の意味での自然言語理解ができるようになったら、後は組み合わせ問題だけですからハードウェアの進歩により自動プログラミング可能になる筈。ちょっとワクワクします。 まだ文脈把握が少し進んだ程度のようなのでまだまだ遠そうですが、もしも、本当に自然言語理解できるAIが来たら、多くのプログラマの仕事の質が変わってしまいそうな予感がします。
Chironian

2017/01/06 05:54 編集

後日といいつつ、見てみました。簡潔にまとまっていて有り難い資料でした。 この資料にも書かれていましたが、やはりポイントは下記3点ですね。 > ・ユーザの意図をシステムに伝えるのが難しい. > ・考えられ得る答えの候補が膨大. > ・大きなプログラムにスケールしない. 後半の2つは結局規模の問題で同じことなので、「ユーザの意図の把握」と「膨大な組み合わせから答えを導く問題」に帰着します。後者は囲碁でコンピュータが人に勝つなど確実に進歩しつつあると思います。前者はWatsonのような文脈把握技術が進んできているので進捗はあるようですね。 でも、この資料を見る限り、やっばりまだまだ遠そうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問