中の人の徒然草320
今日も並列処理について考えていたのですが、従来の開発方法を変える必要があるのではないでしょうか?
マルチスレッドプログラミングでは、逐次処理を成功させてからマルチスレッド化していきます。
しかしながら、私はここの部分に疑問を感じます。といいますのも、並列処理をちゃんと考えるのであれば、分析段階から考え、並列処理専用のデザインパターンを適用する必要があるからです。そうしないと、アムダールの法則が示すように、その恩恵は非常に少ないものとなるでしょう。
また、逐次処理を行ってから並列処理を行うということは、分析段階で並列処理用のものと逐次処理用のものを考えて置きながら、いったん逐次処理用の設計を行ってから実装し、テストをパスしたら並列設計を行って実装するのでしょうか?もしくは、並列処理と逐次処理の設計を一度にするのでしょうか・・・ 開発を行った経験がある人は、この様な開発法が上手くいかないことは直ぐにわかると思います。想像しただけでデスマーチの音が聞こえてきます。
第一に、日本の多重下請け構造で、この様な多重開発作業が行えるはずがありません。今までの経験から考えるに、日本の上流は技術的な事を知りません。その上流技術者達が実装面についての知識を要求する並列処理用の分析を行えるとは思えません。そして、その上流が考えた分析結果を下請けは引き受けて、まともなシステムが作れるとはとてもじゃないけど思えません。逐次処理でも問題が多発していたのに、それよりも高度な並列処理システムがうまく構築できることは望めません。
そうすると、今までの日本のIT業界の行動パターンから推測するに、実質分析作業をまで丸投げする事になるでしょう。もしくは、エンドユーザーが並列処理システムを購入できない状況になるでしょう(こっちの可能性が高そう) ではどうすればいいのかといいますと、並列処理指向なオブジェクト指向方法論を模索しつつ、上流は手配師であることに徹したらいいと私は考えております。今までも手配師としか思えない人たちが上流技術者を名乗って(まともな人・会社もいるそうだけど一部だと感じる)、様々なトラブルを生んでいたのですから、余計な事をせずに手配師であることを明らかにして、エンドユーザーと本当にシステム構築をしている会社が開発を進めればいいでしょう。 そうしないと、日本のエンドユーザーだけ逐次処理システムを使っている事になるか、さらなるトラブルが発生してシステムが実現しないでしょう。
マルチコア時代になったのですから、我々の業界も変革するべき時を迎えているといっても過言ではないでしょう。新しい技術があっても、組織がそれに対応できないのであればどうしようもありません。エンドユーザーによりよいものを提供するという当たり前の行為が出来る業界構造に早くなってほしいものです。