ここをクリックしてお気軽にお問い合わせください!

システム開発で有効なディープラーニングの使い方。

ディープラーニングと言う新しい技術があります。
Wikipediaによると、

ニューラルネットワークの多層化、特に3層以上のものに対し、1990年代に進められた脳、特に視覚野の研究[疑問点 – ノート]や、「たった一つの学習理論(英語: One Learning Theory)」、ブルーノ・オルスホーゼンによるスパース・コーディング理論を基にしたアルゴリズムが実装されたものを指す。

なんか難しいですね。要はコンピュータに沢山の経験をさせて、人工知能の礎としようって事です。最近では、囲碁の戦いで人間と人工知能「AlphaGO」との対戦があって、人工知能が勝ったと言う話題がありましたね、あの人口知能がディープラーニングで経験したと言うものです。

…人工知能やロボットの活躍で色々な職業が不要になると言われています。僕はそれでもSIerの仕事は無くならないと思っています。理由は、

  • 日本の場合、顧客の要件が曖昧でよく変化する。
  • 企業特有の商習慣はディープラーニングに向いていない(日本でパッケージビジネスが上手くいかない理由。)
  • 仕様書とプログラム両方を納品する必要がある。その際、顧客によるレビューがある。
  • 仕様書がプログラムを意識して構造的に書けるようにならないと仕様書からプログラムを自動生成するのは難しいし、それを意識するようになると仕様書がプログラム言語を日本語にしたままとなる矛盾が起こる。

Original

でも、ディープラーニングがSIerにとって有効になる点が一つあると思います。それはズバリ「テスト」です。
あらゆるプログラムのテストケースをディープラーニングすることにより、テストケース作成を自動化する事が可能になります。これで、想定外のテストケースなど、品質検査のテストケースがスキルによらずに均一なテストケースを作成する事が可能となります。

ちなみに、現在、「テストスクリプト」を記述すれば自動的にテストを実施してくれるツールがすでに存在するので、ディープラーニングで結果をその言語のテストスクリプトにして流す事によって、テストを完全に自動化する事が可能となります。

なので、夜間、帰る前に完成したプログラムを指定しておくことにより、朝、出社した時に結果をエビデンス付きで得る事が出来るようになると思います。

ただし、プログラムの精度が低いと、何度もテストを行うことになるので、単純なバグを出すテストは自分で行う必要があるかもしれません。基本的にバグを1件見つけるとその後のテストの精度が落ちる(信憑性が無くなる)ので、その都度停止してしまう事になると思います。
ある程度のバグを潰してから最終的にディープラーニングテストを行うのが良いのではないでしょうか?

「バグも自動で治せるようになるのではないか?」との思想も浮かびそうですが、それは危険です。そもそも、「何を持って不具合なのか」がわかりにくいのです。

  • プログラムの単純ミス
  • 仕様書の記述ミス
  • 要件定義のミス

と単純バグ以外はどんどん上流にさかのぼっていく傾向にあります。なので、そこはコンピュータを過信しない方が良いという訳です。

プログラマーが不要になる世界がくると僕たちの職は奪われますが、いわゆる「社畜、IT土方」も必要なくなりますので、結果的に良いのかもしれないですね。

どちらにせよ、後5年位は様子を見る事になりそうです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です