資料3 アプリケーション開発の在り方について(検討用資料)

1. 論点整理

(1) 共通認識

  1. (まる1) アプリケーションの開発は,ハードウェアの技術動向も踏まえ,システム整備と並行した開発が必要であり,計算機科学者とアプリケーション開発者が密にコンタクトしながら開発する体制を整え,組織的に行っていくことが重要である。
  2. (まる2) ポストペタフロップス時代のプログラミングを考えると,研究者が個人で大きなアプリケーションを開発することは難しくなり,各分野の状況を踏まえつつ,各分野で共用できるような基盤的なアプリケーションソフトウェアを開発し,活用する仕組みを作るべきである。
  3. (まる3) 一方で,ユーザがプログラミングしやすい環境の整備も重要であり,ライブラリやミドルウェアを整備するとともに,高性能のコンパイラの開発も必要である。このことはスパコン利用の裾野の拡大や,若手研究者育成の観点からも意義がある。
  4. (まる4) アプリケーションソフトウェアを開発する人材については,サイエンスとしての成果だけではなく,ソフトウェア開発に対する評価も考える必要がある。
  5. (まる5) 開発したアプリケーションを産業界で利用するためには,開発者の視点のみではなく,ユーザである産業界やさらには社会のニーズを反映して開発すべきであり,ニーズとシーズのバランスが重要となる。また,ユーザから開発者にフィードバックしていく体制の整備も必要である。
  6. (まる6) 我が国で開発したアプリケーションについては,開発した個人に維持管理を頼るのではなく,コミュニティで維持管理していく体制を構築しつつ,国内外での普及,さらには国際標準を目指すことが重要である。

(2) 検討課題

  1. (まる1) 今後のアプリケーション研究開発の体制やスケジュールなどの具体的な方策については,更なる検討が必要である。

2. 前回の主な意見(事務局による整理)

(1) アプリケーションの開発体制について

  • これからの投資は研究者コミュニティに向けられるべきであり,そのコミュニティがアプリケーション育成の主導権を持つとともに,もっと他分野に対してもオープンにする必要があるのではないか。
  • アプリケーションを開発した後の検討も必要であり,ソフトウェア自体を成果とするのか,又はアルゴリズムのようなものを成果として残すのかということを明確にした上で開発しないと,成果がうまく使えないことになる。このためには研究者がアプリケーション開発の位置づけを明確にすることが必要ではないか。
  • アプリケーションのコミュニティで開発されるソフトウェアでも,メンテナンスや開発の方法論はソフトウェアエンジニアリングの考え方を取り入れていく必要がある。そのためには,アプリケーションの研究者と計算機科学の研究者との協力が重要であり,アプリケーションの課題を計算機科学の研究者に対してオープンにしてもらうことが必要ではないか。
  • アプリケーションの開発(特に最適化)は計算機の開発と同時に,かつ,計算機側と密な議論を重ねながら共同作業で進めるべきではないか。
  • 国際標準を目指すべき基盤的アプリケーションの開発には,ハードウェアを選ばないアプリケーションの汎用性,あるいはアプリケーションの下方展開という観点が必要なのではないか。
  • 企業で利用できるような基盤的なシミュレーションソフトウェアは,インタフェースの開発などを含めて行わないと使えない。そのような開発は,ベンダにも加わってもらわないとできないのではないか。
  • アプリケーション開発を行う人材についても,国際協力をしていかないと,今後立ち行かなくなる分野があり,国としての戦略が必要ではないか。

(2) ライブラリ,ミドルウェアについて

  • ライブラリやミドルウェアが重要だということは共通認識としてある。ライブラリは特定の分野に限らず共通に使えるものなので,エクサに向けて早く開発を進めるべきではないか。
  • エクサに向けたソフトウェア開発ではエクサ特有の技術が入ってくるので,よりライブラリが重要になってくる。どこかがいいライブラリを開発すればそれを共有できるので,基盤的なライブラリの開発が重要ではないか。
  • ライブラリの重要性には二つの意味があり,シェアをすることにより効率よくプログラミングができることと,ライブラリを使うことにより性能向上が期待できることである。性能向上が見込めるならば,ユーザはそのライブラリを使うのではないか。
  • ライブラリが,自分たちで一から書いたものより速くなるとは一概には思わないが,アプリケーションの研究者や若い人たちが,エクサの時代に成果を出していくためには,ライブラリやミドルウェアが必要なのではないか。
  • 誰もがライブラリを使わずに速いコードを書けるわけではなく,今後はライブラリを使わないと速くならないようになってくるため,ライブラリも共通のインタフェースにしていくべきではないか。
  • ライブラリは重要だが,分野によっては使用したいアプリケーションの仕様に合わない場合もあるのではないか。

(3) その他

  • 「高性能のコンパイラ」にはハードウェアの性能を極限まで引き出すという意味と,使いやすく共通性が高いという意味がある。その意味で,高機能な言語をサポートすべきだということを明確にしてはどうか。
  • HPCから一般ITへのコントリビューションという視点も必要であり,HPCで作られたソフトウェア技術が,一般のクラウドや携帯端末にも応用されるような,アプリケーション開発の波及効果を考える必要がある。そうすれば,若い人たちも引きつけやすいのではないか。
  • 地震防災分野では,ツールの継続的開発,活用のための取り組みとして,プログラム開発を各大学や研究機関が独自に行うのではなく,基盤的な手法は一箇所で集中的に開発して共有し,それをもとに各大学が地域ごとに適用する構造化を検討している。

お問合せ先

研究振興局情報課計算科学技術推進室

電話番号:03-6734-4275
メールアドレス:hpci-con@mext.go.jp

(研究振興局情報課計算科学技術推進室)