プログラミング自動化と言う夢
つい最近ある記事にも出てきていたので気になったのですが、直接プログラミングを行わずに仕様書を記述するだけでよいというソリューションが発表されていました。言葉をそのまま受け取れば、開発における認識の違いを埋めることができる素晴らしいものなのでしょうが、実際に現場にいる私たちにとっては当然のように眉唾ものです。
IT 化を行うにあたりよく目的の一つとしてあげられることに自動化がありますが、プログラミングという領域において未だそれは成しえてません。システムを考えることを生業としている私たちですが、その私たちの仕事は型にはめて自動化できるものではない、というのを皆さん重々承知のことだと思います。
よくプログラマーの仕事は、SE が書き上げた仕様書をプログラミング言語に翻訳する事だ、と言われることがあります。確かに作業としてはその通りなのですが、その難易度は一般的な翻訳とは趣が異なっているので一概に比較できるものではありません。むしろ全くの別物と考えてもよいくらいです。
もともとこのような話は以前より繰り返し聞こえています。仕様書を書くだけで成果物が全て作成される夢のシステム、実際にそれを用いて使えるものができればよいのですが、少なくとも私がこの業界に入ってからそのような代物は目にしたことも聞いたこともありません。
それでもなお、同じことをやりつづけようというのは何故なのでしょうか。
それは私たち自身が、実際に作業を行っている工程に疑問を感じているからなのではないでしょうか。
ユーザーから要件を聞き出しそれを要件定義という形でとりまとめる。その要件を元にもう少し細かい箇所まで目をやった仕様書を作成する。さらにそれを実態となるアプリに近い形での詳細設計を行う。勿論それに付随するのは試験の仕様で、これも仕様書と言う形で作り上げています。それぞれの工程を見る限りはさほど問題がないように感じるのですが、実際に作業を行っている私たちは、心のどこかでその作業内容や方法に疑問を感じているのではないでしょうか。
こんなことをやって何になるんだろう、この作業が本当に役に立つのだろうか。
調子のよい時はあまり考えなかったことも、モチベーションが下がったり調子を崩したなどで少し遠くから見ているとそのような疑問が頭には浮かんできます。何故 Excel に仕様を書き続けなくてはいけないのか、そのような疑問は不満へとつながりゆくゆくはチーム全体的に悪い空気が蔓延します。それでも決して各工程を見直すことは行いません。この方法がベストであるから、この方法は理由があるから採用しているのだから、みんなそうしているから。言い方は様々でしょうが、結果としてこれらの工程を執り行う方法から見直すといった事は、よほどのことがない限り行われません。
現在の IT 業界は言ってしまうとこのように自分たちの作業を見直すこともできない業界です。そのような業界で全てを自動化する事ができるか、と聞かれて「できる」と言える人はいないでしょう。
仕様書に関しては思うところがありますので、またいつか別の機会としますが、そのような状況な IT 業界です。先にあげたソリューションは果たしてどこまでできるのか、またそれは使えるものを生み出せるのか、結局は形を変えたプログラミングなのではないか、色々な疑問がありますが更なる情報が出てくることを期待したいものです。
私個人としてはプログラミングを完全に自動化することは、まだまだ先の未来だと考えています。それこそ人工知能が当然となり、AI が自ら考え新しい物を作り出すことができるようにならなければ、それは不可能ではないかと思います。エンジニアとして「そこまで簡単な仕事はしていない!」という気持ちもありますし、生産性をあげるといった目的のために手をつけるべきはそこではない、とも考えます。
見直そうと思えば多くの箇所が見直すことができる、私の中ではそのような考えがあり、見直す対象というのはなにも実際の開発に限ったものではありません。運用フェーズに入ってからも見直すことができる箇所は色々ありますし、受注にいたるまでの過程や、一緒に開発を行う人材についてなど、色々なものが見直すことができると思います。必要なのはこの見直すという行為であり、実情に合わせもっとも適していると思われる形を採用する事、それが大切なのではないでしょうか。その形の一つに自動化、という選択肢があるかも知れませんが少なくともそれは今ではないと思います。
もしプログラミングを自動化できたのであれば、それはそもそも型にはまった部分だったのか、それほど難しい箇所ではなかったため、私にはそう思えます。開発以外の箇所で自動化は進められるようになってきましたが、まだまだ私たちが行うプログラミングという世界は、そこまで簡単なことばかりではありません。一つの事を行うにも、複数の方法がある以上、まだまだ機械化できる時代は程遠いと言わざるを得ないでしょう。もしかするとこれは単なるプライドなのかもしれませんが、まだまだ私はそのプライドが技術者にとって非常に大切な物ではないか、そう感じるのです。
夢を見ることは悪い事ではありません。将来のためにも夢は必要です。ですがそれを実現するためにあまりにも多くの労力を投入してしまうのは、少々考え物ではないでしょうか。